import java.util.Arrays ;
import java.util.ArrayList ;
class Main {
public static void test02( ) {
// String[] a = {"CARE", "NOPE", "NO", "RACE"};
"A" ,"ABILITY" ,"ABLE" ,"ABOUT" ,"ABOVE" ,"ABSENCE" ,"ABSOLUTELY" ,"ACADEMIC" ,"ACCEPT" ,"ACCESS" ,"ACCIDENT" ,"ACCOMPANY" ,"ACCORDING" ,"ACCOUNT" ,"ACHIEVE" ,"ACHIEVEMENT" ,"ACID" ,"ACQUIRE" ,"ACROSS" ,"ACT" ,"ACTION" ,"ACTIVE" ,"ACTIVITY" ,"ACTUAL" ,"ACTUALLY" ,"ADD" ,"ADDITION" ,"ADDITIONAL" ,"ADDRESS" ,"ADMINISTRATION" ,"ADMIT" ,"ADOPT" ,"ADULT" ,"ADVANCE" ,"ADVANTAGE" ,"ADVICE" ,"ADVISE" ,"AFFAIR" ,"AFFECT" ,"AFFORD" ,"AFRAID" ,"AFTER" ,"AFTERNOON" ,"AFTERWARDS" ,"AGAIN" ,"AGAINST" ,"AGE" ,"AGENCY" ,"AGENT" ,"AGO" ,"AGREE" ,"AGREEMENT" ,"AHEAD" ,"AID" ,"AIM" ,"AIR" ,"AIRCRAFT" ,"ALL" ,"ALLOW" ,"ALMOST" ,"ALONE" ,"ALONG" ,"ALREADY" ,"ALRIGHT" ,"ALSO" ,"ALTERNATIVE" ,"ALTHOUGH" ,"ALWAYS" ,"AMONG" ,"AMONGST" ,"AMOUNT" ,"AN" ,"ANALYSIS" ,"ANCIENT" ,"AND" ,"ANIMAL" ,"ANNOUNCE" ,"ANNUAL" ,"ANOTHER" ,"ANSWER" ,"ANY" ,"ANYBODY" ,"ANYONE" ,"ANYTHING" ,"ANYWAY" ,"APART" ,"APPARENT" ,"APPARENTLY" ,"APPEAL" ,"APPEAR" ,"APPEARANCE" ,"APPLICATION" ,"APPLY" ,"APPOINT" ,"APPOINTMENT" ,"APPROACH" ,"APPROPRIATE" ,"APPROVE" ,"AREA" ,"ARGUE" ,"ARGUMENT" ,"ARISE" ,"ARM" ,"ARMY" ,"AROUND" ,"ARRANGE" ,"ARRANGEMENT" ,"ARRIVE" ,"ART" ,"ARTICLE" ,"ARTIST" ,"AS" ,"ASK" ,"ASPECT" ,"ASSEMBLY" ,"ASSESS" ,"ASSESSMENT" ,"ASSET" ,"ASSOCIATE" ,"ASSOCIATION" ,"ASSUME" ,"ASSUMPTION" ,"AT" ,"ATMOSPHERE" ,"ATTACH" ,"ATTACK" ,"ATTEMPT" ,"ATTEND" ,"ATTENTION" ,"ATTITUDE" ,"ATTRACT" ,"ATTRACTIVE" ,"AUDIENCE" ,"AUTHOR" ,"AUTHORITY" ,"AVAILABLE" ,"AVERAGE" ,"AVOID" ,"AWARD" ,"AWARE" ,"AWAY" ,"AYE" ,"BABY" ,"BACK" ,"BACKGROUND" ,"BAD" ,"BAG" ,"BALANCE" ,"BALL" ,"BAND" ,"BANK" ,"BAR" ,"BASE" ,"BASIC" ,"BASIS" ,"BATTLE" ,"BE" ,"BEAR" ,"BEAT" ,"BEAUTIFUL" ,"BECAUSE" ,"BECOME" ,"BED" ,"BEDROOM" ,"BEFORE" ,"BEGIN" ,"BEGINNING" ,"BEHAVIOUR" ,"BEHIND" ,"BELIEF" ,"BELIEVE" ,"BELONG" ,"BELOW" ,"BENEATH" ,"BENEFIT" ,"BESIDE" ,"BEST" ,"BETTER" ,"BETWEEN" ,"BEYOND" ,"BIG" ,"BILL" ,"BIND" ,"BIRD" ,"BIRTH" ,"BIT" ,"BLACK" ,"BLOCK" ,"BLOOD" ,"BLOODY" ,"BLOW" ,"BLUE" ,"BOARD" ,"BOAT" ,"BODY" ,"BONE" ,"BOOK" ,"BORDER" ,"BOTH" ,"BOTTLE" ,"BOTTOM" ,"BOX" ,"BOY" ,"BRAIN" ,"BRANCH" ,"BREAK" ,"BREATH" ,"BRIDGE" ,"BRIEF" ,"BRIGHT" ,"BRING" ,"BROAD" ,"BROTHER" ,"BUDGET" ,"BUILD" ,"BUILDING" ,"BURN" ,"BUS" ,"BUSINESS" ,"BUSY" ,"BUT" ,"BUY" ,"BY" ,"CABINET" ,"CALL" ,"CAMPAIGN" ,"CAN" ,"CANDIDATE" ,"CAPABLE" ,"CAPACITY" ,"CAPITAL" ,"CAR" ,"CARD" ,"CARE" ,"CAREER" ,"CAREFUL" ,"CAREFULLY" ,"CARRY" ,"CASE" ,"CASH" ,"CAT" ,"CATCH" ,"CATEGORY" ,"CAUSE" ,"CELL" ,"CENTRAL" ,"CENTRE" ,"CENTURY" ,"CERTAIN" ,"CERTAINLY" ,"CHAIN" ,"CHAIR" ,"CHAIRMAN" ,"CHALLENGE" ,"CHANCE" ,"CHANGE" ,"CHANNEL" ,"CHAPTER" ,"CHARACTER" ,"CHARACTERISTIC" ,"CHARGE" ,"CHEAP" ,"CHECK" ,"CHEMICAL" ,"CHIEF" ,"CHILD" ,"CHOICE" ,"CHOOSE" ,"CHURCH" ,"CIRCLE" ,"CIRCUMSTANCE" ,"CITIZEN" ,"CITY" ,"CIVIL" ,"CLAIM" ,"CLASS" ,"CLEAN" ,"CLEAR" ,"CLEARLY" ,"CLIENT" ,"CLIMB" ,"CLOSE" ,"CLOSELY" ,"CLOTHES" ,"CLUB" ,"COAL" ,"CODE" ,"COFFEE" ,"COLD" ,"COLLEAGUE" ,"COLLECT" ,"COLLECTION" ,"COLLEGE" ,"COLOUR" ,"COMBINATION" ,"COMBINE" ,"COME" ,"COMMENT" ,"COMMERCIAL" ,"COMMISSION" ,"COMMIT" ,"COMMITMENT" ,"COMMITTEE" ,"COMMON" ,"COMMUNICATION" ,"COMMUNITY" ,"COMPANY" ,"COMPARE" ,"COMPARISON" ,"COMPETITION" ,"COMPLETE" ,"COMPLETELY" ,"COMPLEX" ,"COMPONENT" ,"COMPUTER" ,"CONCENTRATE" ,"CONCENTRATION" ,"CONCEPT" ,"CONCERN" ,"CONCERNED" ,"CONCLUDE" ,"CONCLUSION" ,"CONDITION" ,"CONDUCT" ,"CONFERENCE" ,"CONFIDENCE" ,"CONFIRM" ,"CONFLICT" ,"CONGRESS" ,"CONNECT" ,"CONNECTION" ,"CONSEQUENCE" ,"CONSERVATIVE" ,"CONSIDER" ,"CONSIDERABLE" ,"CONSIDERATION" ,"CONSIST" ,"CONSTANT" ,"CONSTRUCTION" ,"CONSUMER" ,"CONTACT" ,"CONTAIN" ,"CONTENT" ,"CONTEXT" ,"CONTINUE" ,"CONTRACT" ,"CONTRAST" ,"CONTRIBUTE" ,"CONTRIBUTION" ,"CONTROL" ,"CONVENTION" ,"CONVERSATION" ,"COPY" ,"CORNER" ,"CORPORATE" ,"CORRECT" ,"COS" ,"COST" ,"COULD" ,"COUNCIL" ,"COUNT" ,"COUNTRY" ,"COUNTY" ,"COUPLE" ,"COURSE" ,"COURT" ,"COVER" ,"CREATE" ,"CREATION" ,"CREDIT" ,"CRIME" ,"CRIMINAL" ,"CRISIS" ,"CRITERION" ,"CRITICAL" ,"CRITICISM" ,"CROSS" ,"CROWD" ,"CRY" ,"CULTURAL" ,"CULTURE" ,"CUP" ,"CURRENT" ,"CURRENTLY" ,"CURRICULUM" ,"CUSTOMER" ,"CUT" ,"DAMAGE" ,"DANGER" ,"DANGEROUS" ,"DARK" ,"DATA" ,"DATE" ,"DAUGHTER" ,"DAY" ,"DEAD" ,"DEAL" ,"DEATH" ,"DEBATE" ,"DEBT" ,"DECADE" ,"DECIDE" ,"DECISION" ,"DECLARE" ,"DEEP" ,"DEFENCE" ,"DEFENDANT" ,"DEFINE" ,"DEFINITION" ,"DEGREE" ,"DELIVER" ,"DEMAND" ,"DEMOCRATIC" ,"DEMONSTRATE" ,"DENY" ,"DEPARTMENT" ,"DEPEND" ,"DEPUTY" ,"DERIVE" ,"DESCRIBE" ,"DESCRIPTION" ,"DESIGN" ,"DESIRE" ,"DESK" ,"DESPITE" ,"DESTROY" ,"DETAIL" ,"DETAILED" ,"DETERMINE" ,"DEVELOP" ,"DEVELOPMENT" ,"DEVICE" ,"DIE" ,"DIFFERENCE" ,"DIFFERENT" ,"DIFFICULT" ,"DIFFICULTY" ,"DINNER" ,"DIRECT" ,"DIRECTION" ,"DIRECTLY" ,"DIRECTOR" ,"DISAPPEAR" ,"DISCIPLINE" ,"DISCOVER" ,"DISCUSS" ,"DISCUSSION" ,"DISEASE" ,"DISPLAY" ,"DISTANCE" ,"DISTINCTION" ,"DISTRIBUTION" ,"DISTRICT" ,"DIVIDE" ,"DIVISION" ,"DO" ,"DOCTOR" ,"DOCUMENT" ,"DOG" ,"DOMESTIC" ,"DOOR" ,"DOUBLE" ,"DOUBT" ,"DOWN" ,"DRAW" ,"DRAWING" ,"DREAM" ,"DRESS" ,"DRINK" ,"DRIVE" ,"DRIVER" ,"DROP" ,"DRUG" ,"DRY" ,"DUE" ,"DURING" ,"DUTY" ,"EACH" ,"EAR" ,"EARLY" ,"EARN" ,"EARTH" ,"EASILY" ,"EAST" ,"EASY" ,"EAT" ,"ECONOMIC" ,"ECONOMY" ,"EDGE" ,"EDITOR" ,"EDUCATION" ,"EDUCATIONAL" ,"EFFECT" ,"EFFECTIVE" ,"EFFECTIVELY" ,"EFFORT" ,"EGG" ,"EITHER" ,"ELDERLY" ,"ELECTION" ,"ELEMENT" ,"ELSE" ,"ELSEWHERE" ,"EMERGE" ,"EMPHASIS" ,"EMPLOY" ,"EMPLOYEE" ,"EMPLOYER" ,"EMPLOYMENT" ,"EMPTY" ,"ENABLE" ,"ENCOURAGE" ,"END" ,"ENEMY" ,"ENERGY" ,"ENGINE" ,"ENGINEERING" ,"ENJOY" ,"ENOUGH" ,"ENSURE" ,"ENTER" ,"ENTERPRISE" ,"ENTIRE" ,"ENTIRELY" ,"ENTITLE" ,"ENTRY" ,"ENVIRONMENT" ,"ENVIRONMENTAL" ,"EQUAL" ,"EQUALLY" ,"EQUIPMENT" ,"ERROR" ,"ESCAPE" ,"ESPECIALLY" ,"ESSENTIAL" ,"ESTABLISH" ,"ESTABLISHMENT" ,"ESTATE" ,"ESTIMATE" ,"EVEN" ,"EVENING" ,"EVENT" ,"EVENTUALLY" ,"EVER" ,"EVERY" ,"EVERYBODY" ,"EVERYONE" ,"EVERYTHING" ,"EVIDENCE" ,"EXACTLY" ,"EXAMINATION" ,"EXAMINE" ,"EXAMPLE" ,"EXCELLENT" ,"EXCEPT" ,"EXCHANGE" ,"EXECUTIVE" ,"EXERCISE" ,"EXHIBITION" ,"EXIST" ,"EXISTENCE" ,"EXISTING" ,"EXPECT" ,"EXPECTATION" ,"EXPENDITURE" ,"EXPENSE" ,"EXPENSIVE" ,"EXPERIENCE" ,"EXPERIMENT" ,"EXPERT" ,"EXPLAIN" ,"EXPLANATION" ,"EXPLORE" ,"EXPRESS" ,"EXPRESSION" ,"EXTEND" ,"EXTENT" ,"EXTERNAL" ,"EXTRA" ,"EXTREMELY" ,"EYE" ,"FACE" ,"FACILITY" ,"FACT" ,"FACTOR" ,"FACTORY" ,"FAIL" ,"FAILURE" ,"FAIR" ,"FAIRLY" ,"FAITH" ,"FALL" ,"FAMILIAR" ,"FAMILY" ,"FAMOUS" ,"FAR" ,"FARM" ,"FARMER" ,"FASHION" ,"FAST" ,"FATHER" ,"FAVOUR" ,"FEAR" ,"FEATURE" ,"FEE" ,"FEEL" ,"FEELING" ,"FEMALE" ,"FEW" ,"FIELD" ,"FIGHT" ,"FIGURE" ,"FILE" ,"FILL" ,"FILM" ,"FINAL" ,"FINALLY" ,"FINANCE" ,"FINANCIAL" ,"FIND" ,"FINDING" ,"FINE" ,"FINGER" ,"FINISH" ,"FIRE" ,"FIRM" ,"FIRST" ,"FISH" ,"FIT" ,"FIX" ,"FLAT" ,"FLIGHT" ,"FLOOR" ,"FLOW" ,"FLOWER" ,"FLY" ,"FOCUS" ,"FOLLOW" ,"FOLLOWING" ,"FOOD" ,"FOOT" ,"FOOTBALL" ,"FOR" ,"FORCE" ,"FOREIGN" ,"FOREST" ,"FORGET" ,"FORM" ,"FORMAL" ,"FORMER" ,"FORWARD" ,"FOUNDATION" ,"FREE" ,"FREEDOM" ,"FREQUENTLY" ,"FRESH" ,"FRIEND" ,"FROM" ,"FRONT" ,"FRUIT" ,"FUEL" ,"FULL" ,"FULLY" ,"FUNCTION" ,"FUND" ,"FUNNY" ,"FURTHER" ,"FUTURE" ,"GAIN" ,"GAME" ,"GARDEN" ,"GAS" ,"GATE" ,"GATHER" ,"GENERAL" ,"GENERALLY" ,"GENERATE" ,"GENERATION" ,"GENTLEMAN" ,"GET" ,"GIRL" ,"GIVE" ,"GLASS" ,"GO" ,"GOAL" ,"GOD" ,"GOLD" ,"GOOD" ,"GOVERNMENT" ,"GRANT" ,"GREAT" ,"GREEN" ,"GREY" ,"GROUND" ,"GROUP" ,"GROW" ,"GROWING" ,"GROWTH" ,"GUEST" ,"GUIDE" ,"GUN" ,"HAIR" ,"HALF" ,"HALL" ,"HAND" ,"HANDLE" ,"HANG" ,"HAPPEN" ,"HAPPY" ,"HARD" ,"HARDLY" ,"HATE" ,"HAVE" ,"HE" ,"HEAD" ,"HEALTH" ,"HEAR" ,"HEART" ,"HEAT" ,"HEAVY" ,"HELL" ,"HELP" ,"HENCE" ,"HER" ,"HERE" ,"HERSELF" ,"HIDE" ,"HIGH" ,"HIGHLY" ,"HILL" ,"HIM" ,"HIMSELF" ,"HIS" ,"HISTORICAL" ,"HISTORY" ,"HIT" ,"HOLD" ,"HOLE" ,"HOLIDAY" ,"HOME" ,"HOPE" ,"HORSE" ,"HOSPITAL" ,"HOT" ,"HOTEL" ,"HOUR" ,"HOUSE" ,"HOUSEHOLD" ,"HOUSING" ,"HOW" ,"HOWEVER" ,"HUGE" ,"HUMAN" ,"HURT" ,"HUSBAND" ,"I" ,"IDEA" ,"IDENTIFY" ,"IF" ,"IGNORE" ,"ILLUSTRATE" ,"IMAGE" ,"IMAGINE" ,"IMMEDIATE" ,"IMMEDIATELY" ,"IMPACT" ,"IMPLICATION" ,"IMPLY" ,"IMPORTANCE" ,"IMPORTANT" ,"IMPOSE" ,"IMPOSSIBLE" ,"IMPRESSION" ,"IMPROVE" ,"IMPROVEMENT" ,"IN" ,"INCIDENT" ,"INCLUDE" ,"INCLUDING" ,"INCOME" ,"INCREASE" ,"INCREASED" ,"INCREASINGLY" ,"INDEED" ,"INDEPENDENT" ,"INDEX" ,"INDICATE" ,"INDIVIDUAL" ,"INDUSTRIAL" ,"INDUSTRY" ,"INFLUENCE" ,"INFORM" ,"INFORMATION" ,"INITIAL" ,"INITIATIVE" ,"INJURY" ,"INSIDE" ,"INSIST" ,"INSTANCE" ,"INSTEAD" ,"INSTITUTE" ,"INSTITUTION" ,"INSTRUCTION" ,"INSTRUMENT" ,"INSURANCE" ,"INTEND" ,"INTENTION" ,"INTEREST" ,"INTERESTED" ,"INTERESTING" ,"INTERNAL" ,"INTERNATIONAL" ,"INTERPRETATION" ,"INTERVIEW" ,"INTO" ,"INTRODUCE" ,"INTRODUCTION" ,"INVESTIGATE" ,"INVESTIGATION" ,"INVESTMENT" ,"INVITE" ,"INVOLVE" ,"IRON" ,"IS" ,"ISLAND" ,"ISSUE" ,"IT" ,"ITEM" ,"ITS" ,"ITSELF" ,"JOB" ,"JOIN" ,"JOINT" ,"JOURNEY" ,"JUDGE" ,"JUMP" ,"JUST" ,"JUSTICE" ,"KEEP" ,"KEY" ,"KID" ,"KILL" ,"KIND" ,"KING" ,"KITCHEN" ,"KNEE" ,"KNOW" ,"KNOWLEDGE" ,"LABOUR" ,"LACK" ,"LADY" ,"LAND" ,"LANGUAGE" ,"LARGE" ,"LARGELY" ,"LAST" ,"LATE" ,"LATER" ,"LATTER" ,"LAUGH" ,"LAUNCH" ,"LAW" ,"LAWYER" ,"LAY" ,"LEAD" ,"LEADER" ,"LEADERSHIP" ,"LEADING" ,"LEAF" ,"LEAGUE" ,"LEAN" ,"LEARN" ,"LEAST" ,"LEAVE" ,"LEFT" ,"LEG" ,"LEGAL" ,"LEGISLATION" ,"LENGTH" ,"LESS" ,"LET" ,"LETTER" ,"LEVEL" ,"LIABILITY" ,"LIBERAL" ,"LIBRARY" ,"LIE" ,"LIFE" ,"LIFT" ,"LIGHT" ,"LIKE" ,"LIKELY" ,"LIMIT" ,"LIMITED" ,"LINE" ,"LINK" ,"LIP" ,"LIST" ,"LISTEN" ,"LITERATURE" ,"LITTLE" ,"LIVE" ,"LIVING" ,"LOAN" ,"LOCAL" ,"LOCATION" ,"LONG" ,"LOOK" ,"LORD" ,"LOSE" ,"LOSS" ,"LOT" ,"LOVE" ,"LOVELY" ,"LOW" ,"LUNCH" ,"MACHINE" ,"MAGAZINE" ,"MAIN" ,"MAINLY" ,"MAINTAIN" ,"MAJOR" ,"MAJORITY" ,"MAKE" ,"MALE" ,"MAN" ,"MANAGE" ,"MANAGEMENT" ,"MANAGER" ,"MANNER" ,"MANY" ,"MAP" ,"MARK" ,"MARKET" ,"MARRIAGE" ,"MARRIED" ,"MARRY" ,"MASS" ,"MASTER" ,"MATCH" ,"MATERIAL" ,"MATTER" ,"MAY" ,"MAYBE" ,"ME" ,"MEAL" ,"MEAN" ,"MEANING" ,"MEANS" ,"MEANWHILE" ,"MEASURE" ,"MECHANISM" ,"MEDIA" ,"MEDICAL" ,"MEET" ,"MEETING" ,"MEMBER" ,"MEMBERSHIP" ,"MEMORY" ,"MENTAL" ,"MENTION" ,"MERELY" ,"MESSAGE" ,"METAL" ,"METHOD" ,"MIDDLE" ,"MIGHT" ,"MILE" ,"MILITARY" ,"MILK" ,"MIND" ,"MINE" ,"MINISTER" ,"MINISTRY" ,"MINUTE" ,"MISS" ,"MISTAKE" ,"MODEL" ,"MODERN" ,"MODULE" ,"MOMENT" ,"MONEY" ,"MONTH" ,"MORE" ,"MORNING" ,"MOST" ,"MOTHER" ,"MOTION" ,"MOTOR" ,"MOUNTAIN" ,"MOUTH" ,"MOVE" ,"MOVEMENT" ,"MUCH" ,"MURDER" ,"MUSEUM" ,"MUSIC" ,"MUST" ,"MY" ,"MYSELF" ,"NAME" ,"NARROW" ,"NATION" ,"NATIONAL" ,"NATURAL" ,"NATURE" ,"NEAR" ,"NEARLY" ,"NECESSARILY" ,"NECESSARY" ,"NECK" ,"NEED" ,"NEGOTIATION" ,"NEIGHBOUR" ,"NEITHER" ,"NETWORK" ,"NEVER" ,"NEVERTHELESS" ,"NEW" ,"NEWS" ,"NEWSPAPER" ,"NEXT" ,"NICE" ,"NIGHT" ,"NO" ,"NOBODY" ,"NOD" ,"NOISE" ,"NONE" ,"NOR" ,"NORMAL" ,"NORMALLY" ,"NORTH" ,"NORTHERN" ,"NOSE" ,"NOT" ,"NOTE" ,"NOTHING" ,"NOTICE" ,"NOTION" ,"NOW" ,"NUCLEAR" ,"NUMBER" ,"NURSE" ,"OBJECT" ,"OBJECTIVE" ,"OBSERVATION" ,"OBSERVE" ,"OBTAIN" ,"OBVIOUS" ,"OBVIOUSLY" ,"OCCASION" ,"OCCUR" ,"ODD" ,"OF" ,"OFF" ,"OFFENCE" ,"OFFER" ,"OFFICE" ,"OFFICER" ,"OFFICIAL" ,"OFTEN" ,"OIL" ,"OKAY" ,"OLD" ,"ON" ,"ONCE" ,"ONE" ,"ONLY" ,"ONTO" ,"OPEN" ,"OPERATE" ,"OPERATION" ,"OPINION" ,"OPPORTUNITY" ,"OPPOSITION" ,"OPTION" ,"OR" ,"ORDER" ,"ORDINARY" ,"ORGANISATION" ,"ORGANISE" ,"ORGANIZATION" ,"ORIGIN" ,"ORIGINAL" ,"OTHER" ,"OTHERWISE" ,"OUGHT" ,"OUR" ,"OURSELVES" ,"OUT" ,"OUTCOME" ,"OUTPUT" ,"OUTSIDE" ,"OVER" ,"OVERALL" ,"OWN" ,"OWNER" ,"PACKAGE" ,"PAGE" ,"PAIN" ,"PAINT" ,"PAINTING" ,"PAIR" ,"PANEL" ,"PAPER" ,"PARENT" ,"PARK" ,"PARLIAMENT" ,"PART" ,"PARTICULAR" ,"PARTICULARLY" ,"PARTLY" ,"PARTNER" ,"PARTY" ,"PASS" ,"PASSAGE" ,"PAST" ,"PATH" ,"PATIENT" ,"PATTERN" ,"PAY" ,"PAYMENT" ,"PEACE" ,"PENSION" ,"PEOPLE" ,"PER" ,"PERCENT" ,"PERFECT" ,"PERFORM" ,"PERFORMANCE" ,"PERHAPS" ,"PERIOD" ,"PERMANENT" ,"PERSON" ,"PERSONAL" ,"PERSUADE" ,"PHASE" ,"PHONE" ,"PHOTOGRAPH" ,"PHYSICAL" ,"PICK" ,"PICTURE" ,"PIECE" ,"PLACE" ,"PLAN" ,"PLANNING" ,"PLANT" ,"PLASTIC" ,"PLATE" ,"PLAY" ,"PLAYER" ,"PLEASE" ,"PLEASURE" ,"PLENTY" ,"PLUS" ,"POCKET" ,"POINT" ,"POLICE" ,"POLICY" ,"POLITICAL" ,"POLITICS" ,"POOL" ,"POOR" ,"POPULAR" ,"POPULATION" ,"POSITION" ,"POSITIVE" ,"POSSIBILITY" ,"POSSIBLE" ,"POSSIBLY" ,"POST" ,"POTENTIAL" ,"POUND" ,"POWER" ,"POWERFUL" ,"PRACTICAL" ,"PRACTICE" ,"PREFER" ,"PREPARE" ,"PRESENCE" ,"PRESENT" ,"PRESIDENT" ,"PRESS" ,"PRESSURE" ,"PRETTY" ,"PREVENT" ,"PREVIOUS" ,"PREVIOUSLY" ,"PRICE" ,"PRIMARY" ,"PRIME" ,"PRINCIPLE" ,"PRIORITY" ,"PRISON" ,"PRISONER" ,"PRIVATE" ,"PROBABLY" ,"PROBLEM" ,"PROCEDURE" ,"PROCESS" ,"PRODUCE" ,"PRODUCT" ,"PRODUCTION" ,"PROFESSIONAL" ,"PROFIT" ,"PROGRAM" ,"PROGRAMME" ,"PROGRESS" ,"PROJECT" ,"PROMISE" ,"PROMOTE" ,"PROPER" ,"PROPERLY" ,"PROPERTY" ,"PROPORTION" ,"PROPOSE" ,"PROPOSAL" ,"PROSPECT" ,"PROTECT" ,"PROTECTION" ,"PROVE" ,"PROVIDE" ,"PROVIDED" ,"PROVISION" ,"PUB" ,"PUBLIC" ,"PUBLICATION" ,"PUBLISH" ,"PULL" ,"PUPIL" ,"PURPOSE" ,"PUSH" ,"PUT" ,"QUALITY" ,"QUARTER" ,"QUESTION" ,"QUICK" ,"QUICKLY" ,"QUIET" ,"QUITE" ,"RACE" ,"RADIO" ,"RAILWAY" ,"RAIN" ,"RAISE" ,"RANGE" ,"RAPIDLY" ,"RARE" ,"RATE" ,"RATHER" ,"REACH" ,"REACTION" ,"READ" ,"READER" ,"READING" ,"READY" ,"REAL" ,"REALISE" ,"REALITY" ,"REALIZE" ,"REALLY" ,"REASON" ,"REASONABLE" ,"RECALL" ,"RECEIVE" ,"RECENT" ,"RECENTLY" ,"RECOGNISE" ,"RECOGNITION" ,"RECOGNIZE" ,"RECOMMEND" ,"RECORD" ,"RECOVER" ,"RED" ,"REDUCE" ,"REDUCTION" ,"REFER" ,"REFERENCE" ,"REFLECT" ,"REFORM" ,"REFUSE" ,"REGARD" ,"REGION" ,"REGIONAL" ,"REGULAR" ,"REGULATION" ,"REJECT" ,"RELATE" ,"RELATION" ,"RELATIONSHIP" ,"RELATIVE" ,"RELATIVELY" ,"RELEASE" ,"RELEVANT" ,"RELIEF" ,"RELIGION" ,"RELIGIOUS" ,"RELY" ,"REMAIN" ,"REMEMBER" ,"REMIND" ,"REMOVE" ,"REPEAT" ,"REPLACE" ,"REPLY" ,"REPORT" ,"REPRESENT" ,"REPRESENTATION" ,"REPRESENTATIVE" ,"REQUEST" ,"REQUIRE" ,"REQUIREMENT" ,"RESEARCH" ,"RESOURCE" ,"RESPECT" ,"RESPOND" ,"RESPONSE" ,"RESPONSIBILITY" ,"RESPONSIBLE" ,"REST" ,"RESTAURANT" ,"RESULT" ,"RETAIN" ,"RETURN" ,"REVEAL" ,"REVENUE" ,"REVIEW" ,"REVOLUTION" ,"RICH" ,"RIDE" ,"RIGHT" ,"RING" ,"RISE" ,"RISK" ,"RIVER" ,"ROAD" ,"ROCK" ,"ROLE" ,"ROLL" ,"ROOF" ,"ROOM" ,"ROUND" ,"ROUTE" ,"ROW" ,"ROYAL" ,"RULE" ,"RUN" ,"RURAL" ,"SAFE" ,"SAFETY" ,"SALE" ,"SAME" ,"SAMPLE" ,"SATISFY" ,"SAVE" ,"SAY" ,"SCALE" ,"SCENE" ,"SCHEME" ,"SCHOOL" ,"SCIENCE" ,"SCIENTIFIC" ,"SCIENTIST" ,"SCORE" ,"SCREEN" ,"SEA" ,"SEARCH" ,"SEASON" ,"SEAT" ,"SECOND" ,"SECONDARY" ,"SECRETARY" ,"SECTION" ,"SECTOR" ,"SECURE" ,"SECURITY" ,"SEE" ,"SEEK" ,"SEEM" ,"SELECT" ,"SELECTION" ,"SELL" ,"SEND" ,"SENIOR" ,"SENSE" ,"SENTENCE" ,"SEPARATE" ,"SEQUENCE" ,"SERIES" ,"SERIOUS" ,"SERIOUSLY" ,"SERVANT" ,"SERVE" ,"SERVICE" ,"SESSION" ,"SET" ,"SETTLE" ,"SETTLEMENT" ,"SEVERAL" ,"SEVERE" ,"SEX" ,"SEXUAL" ,"SHAKE" ,"SHALL" ,"SHAPE" ,"SHARE" ,"SHE" ,"SHEET" ,"SHIP" ,"SHOE" ,"SHOOT" ,"SHOP" ,"SHORT" ,"SHOT" ,"SHOULD" ,"SHOULDER" ,"SHOUT" ,"SHOW" ,"SHUT" ,"SIDE" ,"SIGHT" ,"SIGN" ,"SIGNAL" ,"SIGNIFICANCE" ,"SIGNIFICANT" ,"SILENCE" ,"SIMILAR" ,"SIMPLE" ,"SIMPLY" ,"SINCE" ,"SING" ,"SINGLE" ,"SIR" ,"SISTER" ,"SIT" ,"SITE" ,"SITUATION" ,"SIZE" ,"SKILL" ,"SKIN" ,"SKY" ,"SLEEP" ,"SLIGHTLY" ,"SLIP" ,"SLOW" ,"SLOWLY" ,"SMALL" ,"SMILE" ,"SO" ,"SOCIAL" ,"SOCIETY" ,"SOFT" ,"SOFTWARE" ,"SOIL" ,"SOLDIER" ,"SOLICITOR" ,"SOLUTION" ,"SOME" ,"SOMEBODY" ,"SOMEONE" ,"SOMETHING" ,"SOMETIMES" ,"SOMEWHAT" ,"SOMEWHERE" ,"SON" ,"SONG" ,"SOON" ,"SORRY" ,"SORT" ,"SOUND" ,"SOURCE" ,"SOUTH" ,"SOUTHERN" ,"SPACE" ,"SPEAK" ,"SPEAKER" ,"SPECIAL" ,"SPECIES" ,"SPECIFIC" ,"SPEECH" ,"SPEED" ,"SPEND" ,"SPIRIT" ,"SPORT" ,"SPOT" ,"SPREAD" ,"SPRING" ,"STAFF" ,"STAGE" ,"STAND" ,"STANDARD" ,"STAR" ,"START" ,"STATE" ,"STATEMENT" ,"STATION" ,"STATUS" ,"STAY" ,"STEAL" ,"STEP" ,"STICK" ,"STILL" ,"STOCK" ,"STONE" ,"STOP" ,"STORE" ,"STORY" ,"STRAIGHT" ,"STRANGE" ,"STRATEGY" ,"STREET" ,"STRENGTH" ,"STRIKE" ,"STRONG" ,"STRONGLY" ,"STRUCTURE" ,"STUDENT" ,"STUDIO" ,"STUDY" ,"STUFF" ,"STYLE" ,"SUBJECT" ,"SUBSTANTIAL" ,"SUCCEED" ,"SUCCESS" ,"SUCCESSFUL" ,"SUCH" ,"SUDDENLY" ,"SUFFER" ,"SUFFICIENT" ,"SUGGEST" ,"SUGGESTION" ,"SUITABLE" ,"SUM" ,"SUMMER" ,"SUN" ,"SUPPLY" ,"SUPPORT" ,"SUPPOSE" ,"SURE" ,"SURELY" ,"SURFACE" ,"SURPRISE" ,"SURROUND" ,"SURVEY" ,"SURVIVE" ,"SWITCH" ,"SYSTEM" ,"TABLE" ,"TAKE" ,"TALK" ,"TALL" ,"TAPE" ,"TARGET" ,"TASK" ,"TAX" ,"TEA" ,"TEACH" ,"TEACHER" ,"TEACHING" ,"TEAM" ,"TEAR" ,"TECHNICAL" ,"TECHNIQUE" ,"TECHNOLOGY" ,"TELEPHONE" ,"TELEVISION" ,"TELL" ,"TEMPERATURE" ,"TEND" ,"TERM" ,"TERMS" ,"TERRIBLE" ,"TEST" ,"TEXT" ,"THAN" ,"THANK" ,"THANKS" ,"THAT" ,"THE" ,"THEATRE" ,"THEIR" ,"THEM" ,"THEME" ,"THEMSELVES" ,"THEN" ,"THEORY" ,"THERE" ,"THEREFORE" ,"THESE" ,"THEY" ,"THIN" ,"THING" ,"THINK" ,"THIS" ,"THOSE" ,"THOUGH" ,"THOUGHT" ,"THREAT" ,"THREATEN" ,"THROUGH" ,"THROUGHOUT" ,"THROW" ,"THUS" ,"TICKET" ,"TIME" ,"TINY" ,"TITLE" ,"TO" ,"TODAY" ,"TOGETHER" ,"TOMORROW" ,"TONE" ,"TONIGHT" ,"TOO" ,"TOOL" ,"TOOTH" ,"TOP" ,"TOTAL" ,"TOTALLY" ,"TOUCH" ,"TOUR" ,"TOWARDS" ,"TOWN" ,"TRACK" ,"TRADE" ,"TRADITION" ,"TRADITIONAL" ,"TRAFFIC" ,"TRAIN" ,"TRAINING" ,"TRANSFER" ,"TRANSPORT" ,"TRAVEL" ,"TREAT" ,"TREATMENT" ,"TREATY" ,"TREE" ,"TREND" ,"TRIAL" ,"TRIP" ,"TROOP" ,"TROUBLE" ,"TRUE" ,"TRUST" ,"TRUTH" ,"TRY" ,"TURN" ,"TWICE" ,"TYPE" ,"TYPICAL" ,"UNABLE" ,"UNDER" ,"UNDERSTAND" ,"UNDERSTANDING" ,"UNDERTAKE" ,"UNEMPLOYMENT" ,"UNFORTUNATELY" ,"UNION" ,"UNIT" ,"UNITED" ,"UNIVERSITY" ,"UNLESS" ,"UNLIKELY" ,"UNTIL" ,"UP" ,"UPON" ,"UPPER" ,"URBAN" ,"US" ,"USE" ,"USED" ,"USEFUL" ,"USER" ,"USUAL" ,"USUALLY" ,"VALUE" ,"VARIATION" ,"VARIETY" ,"VARIOUS" ,"VARY" ,"VAST" ,"VEHICLE" ,"VERSION" ,"VERY" ,"VIA" ,"VICTIM" ,"VICTORY" ,"VIDEO" ,"VIEW" ,"VILLAGE" ,"VIOLENCE" ,"VISION" ,"VISIT" ,"VISITOR" ,"VITAL" ,"VOICE" ,"VOLUME" ,"VOTE" ,"WAGE" ,"WAIT" ,"WALK" ,"WALL" ,"WANT" ,"WAR" ,"WARM" ,"WARN" ,"WASH" ,"WATCH" ,"WATER" ,"WAVE" ,"WAY" ,"WE" ,"WEAK" ,"WEAPON" ,"WEAR" ,"WEATHER" ,"WEEK" ,"WEEKEND" ,"WEIGHT" ,"WELCOME" ,"WELFARE" ,"WELL" ,"WEST" ,"WESTERN" ,"WHAT" ,"WHATEVER" ,"WHEN" ,"WHERE" ,"WHEREAS" ,"WHETHER" ,"WHICH" ,"WHILE" ,"WHILST" ,"WHITE" ,"WHO" ,"WHOLE" ,"WHOM" ,"WHOSE" ,"WHY" ,"WIDE" ,"WIDELY" ,"WIFE" ,"WILD" ,"WILL" ,"WIN" ,"WIND" ,"WINDOW" ,"WINE" ,"WING" ,"WINNER" ,"WINTER" ,"WISH" ,"WITH" ,"WITHDRAW" ,"WITHIN" ,"WITHOUT" ,"WOMAN" ,"WONDER" ,"WONDERFUL" ,"WOOD" ,"WORD" ,"WORK" ,"WORKER" ,"WORKING" ,"WORKS" ,"WORLD" ,"WORRY" ,"WORTH" ,"WOULD" ,"WRITE" ,"WRITER" ,"WRITING" ,"WRONG" ,"YARD" ,"YEAH" ,"YEAR" ,"YES" ,"YESTERDAY" ,"YET" ,"YOU" ,"YOUNG" ,"YOUR" ,"YOURSELF" ,"YOUTH"
} ;
int answer = 0 ;
for ( int i = 0 ; i< a.length ; i++ ) {
for ( int j= i+ 1 ; j< a.length ; j++ ) {
if ( anagram( a[ i] , a[ j] ) ) {
// System.out.println("anagrams: " + a[i] + " " + a[j]);
// System.out.println("iswordpair: " + iswordpair(a[i],a[j]));
if ( iswordpair( a[ i] ,a[ j] ) ) answer++;
} else {
//System.out.println("NOT anagrams: " + a[i] + " " + a[j]);
}
}
}
System .
out .
println ( "this is the answer: " + answer
) ; }
int n = countdistinct( s) ;
int power
= ( int ) Math .
pow ( 10 ,n
- 1 ) ; int m
= ( int ) Math .
ceil ( Math .
sqrt ( power
) ) ; // System.out.println("this is last (its square should be last valid): " + last);
while ( m++ <= last) {
// System.out.println("this is m: " + m);
// map CARE using digits in m*m
int z = countdistinctInInt( m* m) ;
if ( z != n) {
// System.out.println("integer has wrong number of distinct digits");
continue ;
}
// map m*m to CARE, then to RACE
// so CARE is: 1024, RACE: R points to CARE->1024...
// A points to CARE->1024...
boolean result = mapToAnagram( s,t,m* m) ;
// System.out.println("map to anagram... " + result );
if ( result) {
System .
out .
println ( "got a pair!!!!!! " + s
+ " " + t
) ; return true ;
}
}
//checked them all without success
return false ;
}
public static int [ ] codeArray
( String s,
int n
) { int [ ] u= intToArray( n) ;
int [ ] answer = new int [ s.length ( ) ] ;
// distinct letters will map to n
for ( int j= 1 ; j< v.length ; j++ ) {
if ( distinct.contains ( v[ j] ) ) {
} else {
distinct = distinct + v[ j] ;
}
}
int [ ] answer2 = new int [ s.length ( ) ] ;
//System.out.println("distinct: " + distinct);
//loop through each in s, look up in distinct
for ( int j= 0 ; j< s.length ( ) ; j++ ) {
char target = s.charAt ( j) ;
for ( int k= 0 ; k< distinct.length ( ) ; k++ ) {
if ( target == distinct.charAt ( k) ) {
answer2[ j] = u[ k] ;
}
}
}
//System.out.println("code array: " + Arrays.toString(answer2));
return answer2;
}
public static boolean mapToAnagram
( String s,
String t,
int n
) { // System.out.println("BEGIN mapToAnagram " + s + " " + t + " " + n);
// int [] u= intToArray(n);
int [ ] u = codeArray( s, n) ;
// System.out.println("this is n: " + n);
// System.out.println("this is array: " + Arrays.toString(u));
// System.out.println("...this is array length: " + u.length);
//loop through t, using s for the integer code
int base
= ( int ) Math .
pow ( 10 ,
( int ) Math .
log10 ( n
) ) ; int answer = 0 ;
// go through each character of t...
for ( int j= 0 ; j< t.length ( ) ; j++ ) {
char c1 = t.charAt ( j) ;
int code = - 1 ;
// ...and find it in s
for ( int k= 0 ; k< s.length ( ) ; k++ ) {
if ( c1 == s.charAt ( k) ) {
code = u[ k] ;
break ;
}
}
// System.out.println(c1 + " matches " + code);
answer += base * code;
base /= 10 ;
}
// System.out.println("this is the answer: " + answer);
return isSquare( answer) ;
}
public static boolean isSquare( int x) {
double sqrt
= Math .
sqrt ( x
) ; return ( sqrt
== Math .
floor ( sqrt
) ) ; }
public static int [ ] intToArray( int x) {
int [ ] u
= new int [ 1 + ( int ) Math .
log10 ( x
) ] ; int j= u.length - 1 ;
while ( x> 0 ) {
u[ j-- ] = x% 10;
x -= x% 10;
x /= 10 ;
}
return u;
}
public static int countdistinctInInt( int x) {
int [ ] u = new int [ 10 ] ;
while ( x> 0 ) {
u[ x% 10] ++;
x -= x% 10;
x /= 10 ;
}
int n = 0 ;
for ( int j= 0 ; j< u.length ; j++ ) {
if ( u[ j] > 0 ) n++;
}
return n;
}
if ( u.length != v.length ) {
return false ;
}
for ( int j= 0 ; j< u.length ; j++ ) {
if ( u[ j] .compareTo ( v[ j] ) != 0 ) {
return false ;
}
}
return true ;
}
public static void test01( ) {
String [ ] a
= { "CARE" ,
"NOPE" ,
"NO" ,
"RACE" } ; // step one: create an array of sorted words (CARE--> ACER)
for ( int j= 0 ; j< a.length ; j++ ) {
list.add ( v) ;
}
// step through: loop through each word, and simply print out whether its anagram exists in set
for ( int j= 0 ; j< a.length ; j++ ) {
// System.out.println("process word: " + a[j]);
for ( int k= 0 ; k< list.size ( ) ; k++ ) {
if ( k== j) continue ;
// System.out.println(k + " " + list.get(k));
boolean same = true ;
for ( int i= 0 ; i< v.length ; i++ ) {
//String s2 = list.get(k)[i];
//String s1 = v[i];
//System.out.println(s1 + " " + s2 + " " + (s1.compareTo(s2)));
if ( v[ i] .compareTo ( list.get ( k) [ i] ) != 0 ) {
same= false ;
break ;
}
}
if ( same) {
// System.out.println(a[j] + " does have an anagram\n");
// CARE is being compare to RACE
// for each square number of length 4, map...
int ndistinct = countdistinct( a[ j] ) ;
// System.out.println("distinct: " + ndistinct);
//process(a[j], list.get(k), ndistinct);
}
}
}
}
public static int countdistinct
( String s
) { char [ ] alpha = new char [ 26 ] ;
int [ ] seen = new int [ 26 ] ;
for ( int j= 0 ; j< s.length ( ) ; j++ ) {
char c = s.charAt ( j) ;
// System.out.println(a[j] + " " + c);
seen[ c- 65 ] ++;
}
int n= 0 ;
for ( int j= 0 ; j< seen.length ; j++ ) {
if ( seen[ j] > 0 ) n++;
}
return n;
}
public static void main
( String [ ] args
) { System .
out .
println ( "begin main" ) ; //test01();
test02( ) ;
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheXM7CmltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwpjbGFzcyBNYWluIHsKCgogcHVibGljIHN0YXRpYyB2b2lkIHRlc3QwMigpewovLyAgU3RyaW5nW10gYSA9IHsiQ0FSRSIsICJOT1BFIiwgIk5PIiwgIlJBQ0UifTsKU3RyaW5nW10gYSA9IHsKIkEiLCJBQklMSVRZIiwiQUJMRSIsIkFCT1VUIiwiQUJPVkUiLCJBQlNFTkNFIiwiQUJTT0xVVEVMWSIsIkFDQURFTUlDIiwiQUNDRVBUIiwiQUNDRVNTIiwiQUNDSURFTlQiLCJBQ0NPTVBBTlkiLCJBQ0NPUkRJTkciLCJBQ0NPVU5UIiwiQUNISUVWRSIsIkFDSElFVkVNRU5UIiwiQUNJRCIsIkFDUVVJUkUiLCJBQ1JPU1MiLCJBQ1QiLCJBQ1RJT04iLCJBQ1RJVkUiLCJBQ1RJVklUWSIsIkFDVFVBTCIsIkFDVFVBTExZIiwiQUREIiwiQURESVRJT04iLCJBRERJVElPTkFMIiwiQUREUkVTUyIsIkFETUlOSVNUUkFUSU9OIiwiQURNSVQiLCJBRE9QVCIsIkFEVUxUIiwiQURWQU5DRSIsIkFEVkFOVEFHRSIsIkFEVklDRSIsIkFEVklTRSIsIkFGRkFJUiIsIkFGRkVDVCIsIkFGRk9SRCIsIkFGUkFJRCIsIkFGVEVSIiwiQUZURVJOT09OIiwiQUZURVJXQVJEUyIsIkFHQUlOIiwiQUdBSU5TVCIsIkFHRSIsIkFHRU5DWSIsIkFHRU5UIiwiQUdPIiwiQUdSRUUiLCJBR1JFRU1FTlQiLCJBSEVBRCIsIkFJRCIsIkFJTSIsIkFJUiIsIkFJUkNSQUZUIiwiQUxMIiwiQUxMT1ciLCJBTE1PU1QiLCJBTE9ORSIsIkFMT05HIiwiQUxSRUFEWSIsIkFMUklHSFQiLCJBTFNPIiwiQUxURVJOQVRJVkUiLCJBTFRIT1VHSCIsIkFMV0FZUyIsIkFNT05HIiwiQU1PTkdTVCIsIkFNT1VOVCIsIkFOIiwiQU5BTFlTSVMiLCJBTkNJRU5UIiwiQU5EIiwiQU5JTUFMIiwiQU5OT1VOQ0UiLCJBTk5VQUwiLCJBTk9USEVSIiwiQU5TV0VSIiwiQU5ZIiwiQU5ZQk9EWSIsIkFOWU9ORSIsIkFOWVRISU5HIiwiQU5ZV0FZIiwiQVBBUlQiLCJBUFBBUkVOVCIsIkFQUEFSRU5UTFkiLCJBUFBFQUwiLCJBUFBFQVIiLCJBUFBFQVJBTkNFIiwiQVBQTElDQVRJT04iLCJBUFBMWSIsIkFQUE9JTlQiLCJBUFBPSU5UTUVOVCIsIkFQUFJPQUNIIiwiQVBQUk9QUklBVEUiLCJBUFBST1ZFIiwiQVJFQSIsIkFSR1VFIiwiQVJHVU1FTlQiLCJBUklTRSIsIkFSTSIsIkFSTVkiLCJBUk9VTkQiLCJBUlJBTkdFIiwiQVJSQU5HRU1FTlQiLCJBUlJJVkUiLCJBUlQiLCJBUlRJQ0xFIiwiQVJUSVNUIiwiQVMiLCJBU0siLCJBU1BFQ1QiLCJBU1NFTUJMWSIsIkFTU0VTUyIsIkFTU0VTU01FTlQiLCJBU1NFVCIsIkFTU09DSUFURSIsIkFTU09DSUFUSU9OIiwiQVNTVU1FIiwiQVNTVU1QVElPTiIsIkFUIiwiQVRNT1NQSEVSRSIsIkFUVEFDSCIsIkFUVEFDSyIsIkFUVEVNUFQiLCJBVFRFTkQiLCJBVFRFTlRJT04iLCJBVFRJVFVERSIsIkFUVFJBQ1QiLCJBVFRSQUNUSVZFIiwiQVVESUVOQ0UiLCJBVVRIT1IiLCJBVVRIT1JJVFkiLCJBVkFJTEFCTEUiLCJBVkVSQUdFIiwiQVZPSUQiLCJBV0FSRCIsIkFXQVJFIiwiQVdBWSIsIkFZRSIsIkJBQlkiLCJCQUNLIiwiQkFDS0dST1VORCIsIkJBRCIsIkJBRyIsIkJBTEFOQ0UiLCJCQUxMIiwiQkFORCIsIkJBTksiLCJCQVIiLCJCQVNFIiwiQkFTSUMiLCJCQVNJUyIsIkJBVFRMRSIsIkJFIiwiQkVBUiIsIkJFQVQiLCJCRUFVVElGVUwiLCJCRUNBVVNFIiwiQkVDT01FIiwiQkVEIiwiQkVEUk9PTSIsIkJFRk9SRSIsIkJFR0lOIiwiQkVHSU5OSU5HIiwiQkVIQVZJT1VSIiwiQkVISU5EIiwiQkVMSUVGIiwiQkVMSUVWRSIsIkJFTE9ORyIsIkJFTE9XIiwiQkVORUFUSCIsIkJFTkVGSVQiLCJCRVNJREUiLCJCRVNUIiwiQkVUVEVSIiwiQkVUV0VFTiIsIkJFWU9ORCIsIkJJRyIsIkJJTEwiLCJCSU5EIiwiQklSRCIsIkJJUlRIIiwiQklUIiwiQkxBQ0siLCJCTE9DSyIsIkJMT09EIiwiQkxPT0RZIiwiQkxPVyIsIkJMVUUiLCJCT0FSRCIsIkJPQVQiLCJCT0RZIiwiQk9ORSIsIkJPT0siLCJCT1JERVIiLCJCT1RIIiwiQk9UVExFIiwiQk9UVE9NIiwiQk9YIiwiQk9ZIiwiQlJBSU4iLCJCUkFOQ0giLCJCUkVBSyIsIkJSRUFUSCIsIkJSSURHRSIsIkJSSUVGIiwiQlJJR0hUIiwiQlJJTkciLCJCUk9BRCIsIkJST1RIRVIiLCJCVURHRVQiLCJCVUlMRCIsIkJVSUxESU5HIiwiQlVSTiIsIkJVUyIsIkJVU0lORVNTIiwiQlVTWSIsIkJVVCIsIkJVWSIsIkJZIiwiQ0FCSU5FVCIsIkNBTEwiLCJDQU1QQUlHTiIsIkNBTiIsIkNBTkRJREFURSIsIkNBUEFCTEUiLCJDQVBBQ0lUWSIsIkNBUElUQUwiLCJDQVIiLCJDQVJEIiwiQ0FSRSIsIkNBUkVFUiIsIkNBUkVGVUwiLCJDQVJFRlVMTFkiLCJDQVJSWSIsIkNBU0UiLCJDQVNIIiwiQ0FUIiwiQ0FUQ0giLCJDQVRFR09SWSIsIkNBVVNFIiwiQ0VMTCIsIkNFTlRSQUwiLCJDRU5UUkUiLCJDRU5UVVJZIiwiQ0VSVEFJTiIsIkNFUlRBSU5MWSIsIkNIQUlOIiwiQ0hBSVIiLCJDSEFJUk1BTiIsIkNIQUxMRU5HRSIsIkNIQU5DRSIsIkNIQU5HRSIsIkNIQU5ORUwiLCJDSEFQVEVSIiwiQ0hBUkFDVEVSIiwiQ0hBUkFDVEVSSVNUSUMiLCJDSEFSR0UiLCJDSEVBUCIsIkNIRUNLIiwiQ0hFTUlDQUwiLCJDSElFRiIsIkNISUxEIiwiQ0hPSUNFIiwiQ0hPT1NFIiwiQ0hVUkNIIiwiQ0lSQ0xFIiwiQ0lSQ1VNU1RBTkNFIiwiQ0lUSVpFTiIsIkNJVFkiLCJDSVZJTCIsIkNMQUlNIiwiQ0xBU1MiLCJDTEVBTiIsIkNMRUFSIiwiQ0xFQVJMWSIsIkNMSUVOVCIsIkNMSU1CIiwiQ0xPU0UiLCJDTE9TRUxZIiwiQ0xPVEhFUyIsIkNMVUIiLCJDT0FMIiwiQ09ERSIsIkNPRkZFRSIsIkNPTEQiLCJDT0xMRUFHVUUiLCJDT0xMRUNUIiwiQ09MTEVDVElPTiIsIkNPTExFR0UiLCJDT0xPVVIiLCJDT01CSU5BVElPTiIsIkNPTUJJTkUiLCJDT01FIiwiQ09NTUVOVCIsIkNPTU1FUkNJQUwiLCJDT01NSVNTSU9OIiwiQ09NTUlUIiwiQ09NTUlUTUVOVCIsIkNPTU1JVFRFRSIsIkNPTU1PTiIsIkNPTU1VTklDQVRJT04iLCJDT01NVU5JVFkiLCJDT01QQU5ZIiwiQ09NUEFSRSIsIkNPTVBBUklTT04iLCJDT01QRVRJVElPTiIsIkNPTVBMRVRFIiwiQ09NUExFVEVMWSIsIkNPTVBMRVgiLCJDT01QT05FTlQiLCJDT01QVVRFUiIsIkNPTkNFTlRSQVRFIiwiQ09OQ0VOVFJBVElPTiIsIkNPTkNFUFQiLCJDT05DRVJOIiwiQ09OQ0VSTkVEIiwiQ09OQ0xVREUiLCJDT05DTFVTSU9OIiwiQ09ORElUSU9OIiwiQ09ORFVDVCIsIkNPTkZFUkVOQ0UiLCJDT05GSURFTkNFIiwiQ09ORklSTSIsIkNPTkZMSUNUIiwiQ09OR1JFU1MiLCJDT05ORUNUIiwiQ09OTkVDVElPTiIsIkNPTlNFUVVFTkNFIiwiQ09OU0VSVkFUSVZFIiwiQ09OU0lERVIiLCJDT05TSURFUkFCTEUiLCJDT05TSURFUkFUSU9OIiwiQ09OU0lTVCIsIkNPTlNUQU5UIiwiQ09OU1RSVUNUSU9OIiwiQ09OU1VNRVIiLCJDT05UQUNUIiwiQ09OVEFJTiIsIkNPTlRFTlQiLCJDT05URVhUIiwiQ09OVElOVUUiLCJDT05UUkFDVCIsIkNPTlRSQVNUIiwiQ09OVFJJQlVURSIsIkNPTlRSSUJVVElPTiIsIkNPTlRST0wiLCJDT05WRU5USU9OIiwiQ09OVkVSU0FUSU9OIiwiQ09QWSIsIkNPUk5FUiIsIkNPUlBPUkFURSIsIkNPUlJFQ1QiLCJDT1MiLCJDT1NUIiwiQ09VTEQiLCJDT1VOQ0lMIiwiQ09VTlQiLCJDT1VOVFJZIiwiQ09VTlRZIiwiQ09VUExFIiwiQ09VUlNFIiwiQ09VUlQiLCJDT1ZFUiIsIkNSRUFURSIsIkNSRUFUSU9OIiwiQ1JFRElUIiwiQ1JJTUUiLCJDUklNSU5BTCIsIkNSSVNJUyIsIkNSSVRFUklPTiIsIkNSSVRJQ0FMIiwiQ1JJVElDSVNNIiwiQ1JPU1MiLCJDUk9XRCIsIkNSWSIsIkNVTFRVUkFMIiwiQ1VMVFVSRSIsIkNVUCIsIkNVUlJFTlQiLCJDVVJSRU5UTFkiLCJDVVJSSUNVTFVNIiwiQ1VTVE9NRVIiLCJDVVQiLCJEQU1BR0UiLCJEQU5HRVIiLCJEQU5HRVJPVVMiLCJEQVJLIiwiREFUQSIsIkRBVEUiLCJEQVVHSFRFUiIsIkRBWSIsIkRFQUQiLCJERUFMIiwiREVBVEgiLCJERUJBVEUiLCJERUJUIiwiREVDQURFIiwiREVDSURFIiwiREVDSVNJT04iLCJERUNMQVJFIiwiREVFUCIsIkRFRkVOQ0UiLCJERUZFTkRBTlQiLCJERUZJTkUiLCJERUZJTklUSU9OIiwiREVHUkVFIiwiREVMSVZFUiIsIkRFTUFORCIsIkRFTU9DUkFUSUMiLCJERU1PTlNUUkFURSIsIkRFTlkiLCJERVBBUlRNRU5UIiwiREVQRU5EIiwiREVQVVRZIiwiREVSSVZFIiwiREVTQ1JJQkUiLCJERVNDUklQVElPTiIsIkRFU0lHTiIsIkRFU0lSRSIsIkRFU0siLCJERVNQSVRFIiwiREVTVFJPWSIsIkRFVEFJTCIsIkRFVEFJTEVEIiwiREVURVJNSU5FIiwiREVWRUxPUCIsIkRFVkVMT1BNRU5UIiwiREVWSUNFIiwiRElFIiwiRElGRkVSRU5DRSIsIkRJRkZFUkVOVCIsIkRJRkZJQ1VMVCIsIkRJRkZJQ1VMVFkiLCJESU5ORVIiLCJESVJFQ1QiLCJESVJFQ1RJT04iLCJESVJFQ1RMWSIsIkRJUkVDVE9SIiwiRElTQVBQRUFSIiwiRElTQ0lQTElORSIsIkRJU0NPVkVSIiwiRElTQ1VTUyIsIkRJU0NVU1NJT04iLCJESVNFQVNFIiwiRElTUExBWSIsIkRJU1RBTkNFIiwiRElTVElOQ1RJT04iLCJESVNUUklCVVRJT04iLCJESVNUUklDVCIsIkRJVklERSIsIkRJVklTSU9OIiwiRE8iLCJET0NUT1IiLCJET0NVTUVOVCIsIkRPRyIsIkRPTUVTVElDIiwiRE9PUiIsIkRPVUJMRSIsIkRPVUJUIiwiRE9XTiIsIkRSQVciLCJEUkFXSU5HIiwiRFJFQU0iLCJEUkVTUyIsIkRSSU5LIiwiRFJJVkUiLCJEUklWRVIiLCJEUk9QIiwiRFJVRyIsIkRSWSIsIkRVRSIsIkRVUklORyIsIkRVVFkiLCJFQUNIIiwiRUFSIiwiRUFSTFkiLCJFQVJOIiwiRUFSVEgiLCJFQVNJTFkiLCJFQVNUIiwiRUFTWSIsIkVBVCIsIkVDT05PTUlDIiwiRUNPTk9NWSIsIkVER0UiLCJFRElUT1IiLCJFRFVDQVRJT04iLCJFRFVDQVRJT05BTCIsIkVGRkVDVCIsIkVGRkVDVElWRSIsIkVGRkVDVElWRUxZIiwiRUZGT1JUIiwiRUdHIiwiRUlUSEVSIiwiRUxERVJMWSIsIkVMRUNUSU9OIiwiRUxFTUVOVCIsIkVMU0UiLCJFTFNFV0hFUkUiLCJFTUVSR0UiLCJFTVBIQVNJUyIsIkVNUExPWSIsIkVNUExPWUVFIiwiRU1QTE9ZRVIiLCJFTVBMT1lNRU5UIiwiRU1QVFkiLCJFTkFCTEUiLCJFTkNPVVJBR0UiLCJFTkQiLCJFTkVNWSIsIkVORVJHWSIsIkVOR0lORSIsIkVOR0lORUVSSU5HIiwiRU5KT1kiLCJFTk9VR0giLCJFTlNVUkUiLCJFTlRFUiIsIkVOVEVSUFJJU0UiLCJFTlRJUkUiLCJFTlRJUkVMWSIsIkVOVElUTEUiLCJFTlRSWSIsIkVOVklST05NRU5UIiwiRU5WSVJPTk1FTlRBTCIsIkVRVUFMIiwiRVFVQUxMWSIsIkVRVUlQTUVOVCIsIkVSUk9SIiwiRVNDQVBFIiwiRVNQRUNJQUxMWSIsIkVTU0VOVElBTCIsIkVTVEFCTElTSCIsIkVTVEFCTElTSE1FTlQiLCJFU1RBVEUiLCJFU1RJTUFURSIsIkVWRU4iLCJFVkVOSU5HIiwiRVZFTlQiLCJFVkVOVFVBTExZIiwiRVZFUiIsIkVWRVJZIiwiRVZFUllCT0RZIiwiRVZFUllPTkUiLCJFVkVSWVRISU5HIiwiRVZJREVOQ0UiLCJFWEFDVExZIiwiRVhBTUlOQVRJT04iLCJFWEFNSU5FIiwiRVhBTVBMRSIsIkVYQ0VMTEVOVCIsIkVYQ0VQVCIsIkVYQ0hBTkdFIiwiRVhFQ1VUSVZFIiwiRVhFUkNJU0UiLCJFWEhJQklUSU9OIiwiRVhJU1QiLCJFWElTVEVOQ0UiLCJFWElTVElORyIsIkVYUEVDVCIsIkVYUEVDVEFUSU9OIiwiRVhQRU5ESVRVUkUiLCJFWFBFTlNFIiwiRVhQRU5TSVZFIiwiRVhQRVJJRU5DRSIsIkVYUEVSSU1FTlQiLCJFWFBFUlQiLCJFWFBMQUlOIiwiRVhQTEFOQVRJT04iLCJFWFBMT1JFIiwiRVhQUkVTUyIsIkVYUFJFU1NJT04iLCJFWFRFTkQiLCJFWFRFTlQiLCJFWFRFUk5BTCIsIkVYVFJBIiwiRVhUUkVNRUxZIiwiRVlFIiwiRkFDRSIsIkZBQ0lMSVRZIiwiRkFDVCIsIkZBQ1RPUiIsIkZBQ1RPUlkiLCJGQUlMIiwiRkFJTFVSRSIsIkZBSVIiLCJGQUlSTFkiLCJGQUlUSCIsIkZBTEwiLCJGQU1JTElBUiIsIkZBTUlMWSIsIkZBTU9VUyIsIkZBUiIsIkZBUk0iLCJGQVJNRVIiLCJGQVNISU9OIiwiRkFTVCIsIkZBVEhFUiIsIkZBVk9VUiIsIkZFQVIiLCJGRUFUVVJFIiwiRkVFIiwiRkVFTCIsIkZFRUxJTkciLCJGRU1BTEUiLCJGRVciLCJGSUVMRCIsIkZJR0hUIiwiRklHVVJFIiwiRklMRSIsIkZJTEwiLCJGSUxNIiwiRklOQUwiLCJGSU5BTExZIiwiRklOQU5DRSIsIkZJTkFOQ0lBTCIsIkZJTkQiLCJGSU5ESU5HIiwiRklORSIsIkZJTkdFUiIsIkZJTklTSCIsIkZJUkUiLCJGSVJNIiwiRklSU1QiLCJGSVNIIiwiRklUIiwiRklYIiwiRkxBVCIsIkZMSUdIVCIsIkZMT09SIiwiRkxPVyIsIkZMT1dFUiIsIkZMWSIsIkZPQ1VTIiwiRk9MTE9XIiwiRk9MTE9XSU5HIiwiRk9PRCIsIkZPT1QiLCJGT09UQkFMTCIsIkZPUiIsIkZPUkNFIiwiRk9SRUlHTiIsIkZPUkVTVCIsIkZPUkdFVCIsIkZPUk0iLCJGT1JNQUwiLCJGT1JNRVIiLCJGT1JXQVJEIiwiRk9VTkRBVElPTiIsIkZSRUUiLCJGUkVFRE9NIiwiRlJFUVVFTlRMWSIsIkZSRVNIIiwiRlJJRU5EIiwiRlJPTSIsIkZST05UIiwiRlJVSVQiLCJGVUVMIiwiRlVMTCIsIkZVTExZIiwiRlVOQ1RJT04iLCJGVU5EIiwiRlVOTlkiLCJGVVJUSEVSIiwiRlVUVVJFIiwiR0FJTiIsIkdBTUUiLCJHQVJERU4iLCJHQVMiLCJHQVRFIiwiR0FUSEVSIiwiR0VORVJBTCIsIkdFTkVSQUxMWSIsIkdFTkVSQVRFIiwiR0VORVJBVElPTiIsIkdFTlRMRU1BTiIsIkdFVCIsIkdJUkwiLCJHSVZFIiwiR0xBU1MiLCJHTyIsIkdPQUwiLCJHT0QiLCJHT0xEIiwiR09PRCIsIkdPVkVSTk1FTlQiLCJHUkFOVCIsIkdSRUFUIiwiR1JFRU4iLCJHUkVZIiwiR1JPVU5EIiwiR1JPVVAiLCJHUk9XIiwiR1JPV0lORyIsIkdST1dUSCIsIkdVRVNUIiwiR1VJREUiLCJHVU4iLCJIQUlSIiwiSEFMRiIsIkhBTEwiLCJIQU5EIiwiSEFORExFIiwiSEFORyIsIkhBUFBFTiIsIkhBUFBZIiwiSEFSRCIsIkhBUkRMWSIsIkhBVEUiLCJIQVZFIiwiSEUiLCJIRUFEIiwiSEVBTFRIIiwiSEVBUiIsIkhFQVJUIiwiSEVBVCIsIkhFQVZZIiwiSEVMTCIsIkhFTFAiLCJIRU5DRSIsIkhFUiIsIkhFUkUiLCJIRVJTRUxGIiwiSElERSIsIkhJR0giLCJISUdITFkiLCJISUxMIiwiSElNIiwiSElNU0VMRiIsIkhJUyIsIkhJU1RPUklDQUwiLCJISVNUT1JZIiwiSElUIiwiSE9MRCIsIkhPTEUiLCJIT0xJREFZIiwiSE9NRSIsIkhPUEUiLCJIT1JTRSIsIkhPU1BJVEFMIiwiSE9UIiwiSE9URUwiLCJIT1VSIiwiSE9VU0UiLCJIT1VTRUhPTEQiLCJIT1VTSU5HIiwiSE9XIiwiSE9XRVZFUiIsIkhVR0UiLCJIVU1BTiIsIkhVUlQiLCJIVVNCQU5EIiwiSSIsIklERUEiLCJJREVOVElGWSIsIklGIiwiSUdOT1JFIiwiSUxMVVNUUkFURSIsIklNQUdFIiwiSU1BR0lORSIsIklNTUVESUFURSIsIklNTUVESUFURUxZIiwiSU1QQUNUIiwiSU1QTElDQVRJT04iLCJJTVBMWSIsIklNUE9SVEFOQ0UiLCJJTVBPUlRBTlQiLCJJTVBPU0UiLCJJTVBPU1NJQkxFIiwiSU1QUkVTU0lPTiIsIklNUFJPVkUiLCJJTVBST1ZFTUVOVCIsIklOIiwiSU5DSURFTlQiLCJJTkNMVURFIiwiSU5DTFVESU5HIiwiSU5DT01FIiwiSU5DUkVBU0UiLCJJTkNSRUFTRUQiLCJJTkNSRUFTSU5HTFkiLCJJTkRFRUQiLCJJTkRFUEVOREVOVCIsIklOREVYIiwiSU5ESUNBVEUiLCJJTkRJVklEVUFMIiwiSU5EVVNUUklBTCIsIklORFVTVFJZIiwiSU5GTFVFTkNFIiwiSU5GT1JNIiwiSU5GT1JNQVRJT04iLCJJTklUSUFMIiwiSU5JVElBVElWRSIsIklOSlVSWSIsIklOU0lERSIsIklOU0lTVCIsIklOU1RBTkNFIiwiSU5TVEVBRCIsIklOU1RJVFVURSIsIklOU1RJVFVUSU9OIiwiSU5TVFJVQ1RJT04iLCJJTlNUUlVNRU5UIiwiSU5TVVJBTkNFIiwiSU5URU5EIiwiSU5URU5USU9OIiwiSU5URVJFU1QiLCJJTlRFUkVTVEVEIiwiSU5URVJFU1RJTkciLCJJTlRFUk5BTCIsIklOVEVSTkFUSU9OQUwiLCJJTlRFUlBSRVRBVElPTiIsIklOVEVSVklFVyIsIklOVE8iLCJJTlRST0RVQ0UiLCJJTlRST0RVQ1RJT04iLCJJTlZFU1RJR0FURSIsIklOVkVTVElHQVRJT04iLCJJTlZFU1RNRU5UIiwiSU5WSVRFIiwiSU5WT0xWRSIsIklST04iLCJJUyIsIklTTEFORCIsIklTU1VFIiwiSVQiLCJJVEVNIiwiSVRTIiwiSVRTRUxGIiwiSk9CIiwiSk9JTiIsIkpPSU5UIiwiSk9VUk5FWSIsIkpVREdFIiwiSlVNUCIsIkpVU1QiLCJKVVNUSUNFIiwiS0VFUCIsIktFWSIsIktJRCIsIktJTEwiLCJLSU5EIiwiS0lORyIsIktJVENIRU4iLCJLTkVFIiwiS05PVyIsIktOT1dMRURHRSIsIkxBQk9VUiIsIkxBQ0siLCJMQURZIiwiTEFORCIsIkxBTkdVQUdFIiwiTEFSR0UiLCJMQVJHRUxZIiwiTEFTVCIsIkxBVEUiLCJMQVRFUiIsIkxBVFRFUiIsIkxBVUdIIiwiTEFVTkNIIiwiTEFXIiwiTEFXWUVSIiwiTEFZIiwiTEVBRCIsIkxFQURFUiIsIkxFQURFUlNISVAiLCJMRUFESU5HIiwiTEVBRiIsIkxFQUdVRSIsIkxFQU4iLCJMRUFSTiIsIkxFQVNUIiwiTEVBVkUiLCJMRUZUIiwiTEVHIiwiTEVHQUwiLCJMRUdJU0xBVElPTiIsIkxFTkdUSCIsIkxFU1MiLCJMRVQiLCJMRVRURVIiLCJMRVZFTCIsIkxJQUJJTElUWSIsIkxJQkVSQUwiLCJMSUJSQVJZIiwiTElFIiwiTElGRSIsIkxJRlQiLCJMSUdIVCIsIkxJS0UiLCJMSUtFTFkiLCJMSU1JVCIsIkxJTUlURUQiLCJMSU5FIiwiTElOSyIsIkxJUCIsIkxJU1QiLCJMSVNURU4iLCJMSVRFUkFUVVJFIiwiTElUVExFIiwiTElWRSIsIkxJVklORyIsIkxPQU4iLCJMT0NBTCIsIkxPQ0FUSU9OIiwiTE9ORyIsIkxPT0siLCJMT1JEIiwiTE9TRSIsIkxPU1MiLCJMT1QiLCJMT1ZFIiwiTE9WRUxZIiwiTE9XIiwiTFVOQ0giLCJNQUNISU5FIiwiTUFHQVpJTkUiLCJNQUlOIiwiTUFJTkxZIiwiTUFJTlRBSU4iLCJNQUpPUiIsIk1BSk9SSVRZIiwiTUFLRSIsIk1BTEUiLCJNQU4iLCJNQU5BR0UiLCJNQU5BR0VNRU5UIiwiTUFOQUdFUiIsIk1BTk5FUiIsIk1BTlkiLCJNQVAiLCJNQVJLIiwiTUFSS0VUIiwiTUFSUklBR0UiLCJNQVJSSUVEIiwiTUFSUlkiLCJNQVNTIiwiTUFTVEVSIiwiTUFUQ0giLCJNQVRFUklBTCIsIk1BVFRFUiIsIk1BWSIsIk1BWUJFIiwiTUUiLCJNRUFMIiwiTUVBTiIsIk1FQU5JTkciLCJNRUFOUyIsIk1FQU5XSElMRSIsIk1FQVNVUkUiLCJNRUNIQU5JU00iLCJNRURJQSIsIk1FRElDQUwiLCJNRUVUIiwiTUVFVElORyIsIk1FTUJFUiIsIk1FTUJFUlNISVAiLCJNRU1PUlkiLCJNRU5UQUwiLCJNRU5USU9OIiwiTUVSRUxZIiwiTUVTU0FHRSIsIk1FVEFMIiwiTUVUSE9EIiwiTUlERExFIiwiTUlHSFQiLCJNSUxFIiwiTUlMSVRBUlkiLCJNSUxLIiwiTUlORCIsIk1JTkUiLCJNSU5JU1RFUiIsIk1JTklTVFJZIiwiTUlOVVRFIiwiTUlTUyIsIk1JU1RBS0UiLCJNT0RFTCIsIk1PREVSTiIsIk1PRFVMRSIsIk1PTUVOVCIsIk1PTkVZIiwiTU9OVEgiLCJNT1JFIiwiTU9STklORyIsIk1PU1QiLCJNT1RIRVIiLCJNT1RJT04iLCJNT1RPUiIsIk1PVU5UQUlOIiwiTU9VVEgiLCJNT1ZFIiwiTU9WRU1FTlQiLCJNVUNIIiwiTVVSREVSIiwiTVVTRVVNIiwiTVVTSUMiLCJNVVNUIiwiTVkiLCJNWVNFTEYiLCJOQU1FIiwiTkFSUk9XIiwiTkFUSU9OIiwiTkFUSU9OQUwiLCJOQVRVUkFMIiwiTkFUVVJFIiwiTkVBUiIsIk5FQVJMWSIsIk5FQ0VTU0FSSUxZIiwiTkVDRVNTQVJZIiwiTkVDSyIsIk5FRUQiLCJORUdPVElBVElPTiIsIk5FSUdIQk9VUiIsIk5FSVRIRVIiLCJORVRXT1JLIiwiTkVWRVIiLCJORVZFUlRIRUxFU1MiLCJORVciLCJORVdTIiwiTkVXU1BBUEVSIiwiTkVYVCIsIk5JQ0UiLCJOSUdIVCIsIk5PIiwiTk9CT0RZIiwiTk9EIiwiTk9JU0UiLCJOT05FIiwiTk9SIiwiTk9STUFMIiwiTk9STUFMTFkiLCJOT1JUSCIsIk5PUlRIRVJOIiwiTk9TRSIsIk5PVCIsIk5PVEUiLCJOT1RISU5HIiwiTk9USUNFIiwiTk9USU9OIiwiTk9XIiwiTlVDTEVBUiIsIk5VTUJFUiIsIk5VUlNFIiwiT0JKRUNUIiwiT0JKRUNUSVZFIiwiT0JTRVJWQVRJT04iLCJPQlNFUlZFIiwiT0JUQUlOIiwiT0JWSU9VUyIsIk9CVklPVVNMWSIsIk9DQ0FTSU9OIiwiT0NDVVIiLCJPREQiLCJPRiIsIk9GRiIsIk9GRkVOQ0UiLCJPRkZFUiIsIk9GRklDRSIsIk9GRklDRVIiLCJPRkZJQ0lBTCIsIk9GVEVOIiwiT0lMIiwiT0tBWSIsIk9MRCIsIk9OIiwiT05DRSIsIk9ORSIsIk9OTFkiLCJPTlRPIiwiT1BFTiIsIk9QRVJBVEUiLCJPUEVSQVRJT04iLCJPUElOSU9OIiwiT1BQT1JUVU5JVFkiLCJPUFBPU0lUSU9OIiwiT1BUSU9OIiwiT1IiLCJPUkRFUiIsIk9SRElOQVJZIiwiT1JHQU5JU0FUSU9OIiwiT1JHQU5JU0UiLCJPUkdBTklaQVRJT04iLCJPUklHSU4iLCJPUklHSU5BTCIsIk9USEVSIiwiT1RIRVJXSVNFIiwiT1VHSFQiLCJPVVIiLCJPVVJTRUxWRVMiLCJPVVQiLCJPVVRDT01FIiwiT1VUUFVUIiwiT1VUU0lERSIsIk9WRVIiLCJPVkVSQUxMIiwiT1dOIiwiT1dORVIiLCJQQUNLQUdFIiwiUEFHRSIsIlBBSU4iLCJQQUlOVCIsIlBBSU5USU5HIiwiUEFJUiIsIlBBTkVMIiwiUEFQRVIiLCJQQVJFTlQiLCJQQVJLIiwiUEFSTElBTUVOVCIsIlBBUlQiLCJQQVJUSUNVTEFSIiwiUEFSVElDVUxBUkxZIiwiUEFSVExZIiwiUEFSVE5FUiIsIlBBUlRZIiwiUEFTUyIsIlBBU1NBR0UiLCJQQVNUIiwiUEFUSCIsIlBBVElFTlQiLCJQQVRURVJOIiwiUEFZIiwiUEFZTUVOVCIsIlBFQUNFIiwiUEVOU0lPTiIsIlBFT1BMRSIsIlBFUiIsIlBFUkNFTlQiLCJQRVJGRUNUIiwiUEVSRk9STSIsIlBFUkZPUk1BTkNFIiwiUEVSSEFQUyIsIlBFUklPRCIsIlBFUk1BTkVOVCIsIlBFUlNPTiIsIlBFUlNPTkFMIiwiUEVSU1VBREUiLCJQSEFTRSIsIlBIT05FIiwiUEhPVE9HUkFQSCIsIlBIWVNJQ0FMIiwiUElDSyIsIlBJQ1RVUkUiLCJQSUVDRSIsIlBMQUNFIiwiUExBTiIsIlBMQU5OSU5HIiwiUExBTlQiLCJQTEFTVElDIiwiUExBVEUiLCJQTEFZIiwiUExBWUVSIiwiUExFQVNFIiwiUExFQVNVUkUiLCJQTEVOVFkiLCJQTFVTIiwiUE9DS0VUIiwiUE9JTlQiLCJQT0xJQ0UiLCJQT0xJQ1kiLCJQT0xJVElDQUwiLCJQT0xJVElDUyIsIlBPT0wiLCJQT09SIiwiUE9QVUxBUiIsIlBPUFVMQVRJT04iLCJQT1NJVElPTiIsIlBPU0lUSVZFIiwiUE9TU0lCSUxJVFkiLCJQT1NTSUJMRSIsIlBPU1NJQkxZIiwiUE9TVCIsIlBPVEVOVElBTCIsIlBPVU5EIiwiUE9XRVIiLCJQT1dFUkZVTCIsIlBSQUNUSUNBTCIsIlBSQUNUSUNFIiwiUFJFRkVSIiwiUFJFUEFSRSIsIlBSRVNFTkNFIiwiUFJFU0VOVCIsIlBSRVNJREVOVCIsIlBSRVNTIiwiUFJFU1NVUkUiLCJQUkVUVFkiLCJQUkVWRU5UIiwiUFJFVklPVVMiLCJQUkVWSU9VU0xZIiwiUFJJQ0UiLCJQUklNQVJZIiwiUFJJTUUiLCJQUklOQ0lQTEUiLCJQUklPUklUWSIsIlBSSVNPTiIsIlBSSVNPTkVSIiwiUFJJVkFURSIsIlBST0JBQkxZIiwiUFJPQkxFTSIsIlBST0NFRFVSRSIsIlBST0NFU1MiLCJQUk9EVUNFIiwiUFJPRFVDVCIsIlBST0RVQ1RJT04iLCJQUk9GRVNTSU9OQUwiLCJQUk9GSVQiLCJQUk9HUkFNIiwiUFJPR1JBTU1FIiwiUFJPR1JFU1MiLCJQUk9KRUNUIiwiUFJPTUlTRSIsIlBST01PVEUiLCJQUk9QRVIiLCJQUk9QRVJMWSIsIlBST1BFUlRZIiwiUFJPUE9SVElPTiIsIlBST1BPU0UiLCJQUk9QT1NBTCIsIlBST1NQRUNUIiwiUFJPVEVDVCIsIlBST1RFQ1RJT04iLCJQUk9WRSIsIlBST1ZJREUiLCJQUk9WSURFRCIsIlBST1ZJU0lPTiIsIlBVQiIsIlBVQkxJQyIsIlBVQkxJQ0FUSU9OIiwiUFVCTElTSCIsIlBVTEwiLCJQVVBJTCIsIlBVUlBPU0UiLCJQVVNIIiwiUFVUIiwiUVVBTElUWSIsIlFVQVJURVIiLCJRVUVTVElPTiIsIlFVSUNLIiwiUVVJQ0tMWSIsIlFVSUVUIiwiUVVJVEUiLCJSQUNFIiwiUkFESU8iLCJSQUlMV0FZIiwiUkFJTiIsIlJBSVNFIiwiUkFOR0UiLCJSQVBJRExZIiwiUkFSRSIsIlJBVEUiLCJSQVRIRVIiLCJSRUFDSCIsIlJFQUNUSU9OIiwiUkVBRCIsIlJFQURFUiIsIlJFQURJTkciLCJSRUFEWSIsIlJFQUwiLCJSRUFMSVNFIiwiUkVBTElUWSIsIlJFQUxJWkUiLCJSRUFMTFkiLCJSRUFTT04iLCJSRUFTT05BQkxFIiwiUkVDQUxMIiwiUkVDRUlWRSIsIlJFQ0VOVCIsIlJFQ0VOVExZIiwiUkVDT0dOSVNFIiwiUkVDT0dOSVRJT04iLCJSRUNPR05JWkUiLCJSRUNPTU1FTkQiLCJSRUNPUkQiLCJSRUNPVkVSIiwiUkVEIiwiUkVEVUNFIiwiUkVEVUNUSU9OIiwiUkVGRVIiLCJSRUZFUkVOQ0UiLCJSRUZMRUNUIiwiUkVGT1JNIiwiUkVGVVNFIiwiUkVHQVJEIiwiUkVHSU9OIiwiUkVHSU9OQUwiLCJSRUdVTEFSIiwiUkVHVUxBVElPTiIsIlJFSkVDVCIsIlJFTEFURSIsIlJFTEFUSU9OIiwiUkVMQVRJT05TSElQIiwiUkVMQVRJVkUiLCJSRUxBVElWRUxZIiwiUkVMRUFTRSIsIlJFTEVWQU5UIiwiUkVMSUVGIiwiUkVMSUdJT04iLCJSRUxJR0lPVVMiLCJSRUxZIiwiUkVNQUlOIiwiUkVNRU1CRVIiLCJSRU1JTkQiLCJSRU1PVkUiLCJSRVBFQVQiLCJSRVBMQUNFIiwiUkVQTFkiLCJSRVBPUlQiLCJSRVBSRVNFTlQiLCJSRVBSRVNFTlRBVElPTiIsIlJFUFJFU0VOVEFUSVZFIiwiUkVRVUVTVCIsIlJFUVVJUkUiLCJSRVFVSVJFTUVOVCIsIlJFU0VBUkNIIiwiUkVTT1VSQ0UiLCJSRVNQRUNUIiwiUkVTUE9ORCIsIlJFU1BPTlNFIiwiUkVTUE9OU0lCSUxJVFkiLCJSRVNQT05TSUJMRSIsIlJFU1QiLCJSRVNUQVVSQU5UIiwiUkVTVUxUIiwiUkVUQUlOIiwiUkVUVVJOIiwiUkVWRUFMIiwiUkVWRU5VRSIsIlJFVklFVyIsIlJFVk9MVVRJT04iLCJSSUNIIiwiUklERSIsIlJJR0hUIiwiUklORyIsIlJJU0UiLCJSSVNLIiwiUklWRVIiLCJST0FEIiwiUk9DSyIsIlJPTEUiLCJST0xMIiwiUk9PRiIsIlJPT00iLCJST1VORCIsIlJPVVRFIiwiUk9XIiwiUk9ZQUwiLCJSVUxFIiwiUlVOIiwiUlVSQUwiLCJTQUZFIiwiU0FGRVRZIiwiU0FMRSIsIlNBTUUiLCJTQU1QTEUiLCJTQVRJU0ZZIiwiU0FWRSIsIlNBWSIsIlNDQUxFIiwiU0NFTkUiLCJTQ0hFTUUiLCJTQ0hPT0wiLCJTQ0lFTkNFIiwiU0NJRU5USUZJQyIsIlNDSUVOVElTVCIsIlNDT1JFIiwiU0NSRUVOIiwiU0VBIiwiU0VBUkNIIiwiU0VBU09OIiwiU0VBVCIsIlNFQ09ORCIsIlNFQ09OREFSWSIsIlNFQ1JFVEFSWSIsIlNFQ1RJT04iLCJTRUNUT1IiLCJTRUNVUkUiLCJTRUNVUklUWSIsIlNFRSIsIlNFRUsiLCJTRUVNIiwiU0VMRUNUIiwiU0VMRUNUSU9OIiwiU0VMTCIsIlNFTkQiLCJTRU5JT1IiLCJTRU5TRSIsIlNFTlRFTkNFIiwiU0VQQVJBVEUiLCJTRVFVRU5DRSIsIlNFUklFUyIsIlNFUklPVVMiLCJTRVJJT1VTTFkiLCJTRVJWQU5UIiwiU0VSVkUiLCJTRVJWSUNFIiwiU0VTU0lPTiIsIlNFVCIsIlNFVFRMRSIsIlNFVFRMRU1FTlQiLCJTRVZFUkFMIiwiU0VWRVJFIiwiU0VYIiwiU0VYVUFMIiwiU0hBS0UiLCJTSEFMTCIsIlNIQVBFIiwiU0hBUkUiLCJTSEUiLCJTSEVFVCIsIlNISVAiLCJTSE9FIiwiU0hPT1QiLCJTSE9QIiwiU0hPUlQiLCJTSE9UIiwiU0hPVUxEIiwiU0hPVUxERVIiLCJTSE9VVCIsIlNIT1ciLCJTSFVUIiwiU0lERSIsIlNJR0hUIiwiU0lHTiIsIlNJR05BTCIsIlNJR05JRklDQU5DRSIsIlNJR05JRklDQU5UIiwiU0lMRU5DRSIsIlNJTUlMQVIiLCJTSU1QTEUiLCJTSU1QTFkiLCJTSU5DRSIsIlNJTkciLCJTSU5HTEUiLCJTSVIiLCJTSVNURVIiLCJTSVQiLCJTSVRFIiwiU0lUVUFUSU9OIiwiU0laRSIsIlNLSUxMIiwiU0tJTiIsIlNLWSIsIlNMRUVQIiwiU0xJR0hUTFkiLCJTTElQIiwiU0xPVyIsIlNMT1dMWSIsIlNNQUxMIiwiU01JTEUiLCJTTyIsIlNPQ0lBTCIsIlNPQ0lFVFkiLCJTT0ZUIiwiU09GVFdBUkUiLCJTT0lMIiwiU09MRElFUiIsIlNPTElDSVRPUiIsIlNPTFVUSU9OIiwiU09NRSIsIlNPTUVCT0RZIiwiU09NRU9ORSIsIlNPTUVUSElORyIsIlNPTUVUSU1FUyIsIlNPTUVXSEFUIiwiU09NRVdIRVJFIiwiU09OIiwiU09ORyIsIlNPT04iLCJTT1JSWSIsIlNPUlQiLCJTT1VORCIsIlNPVVJDRSIsIlNPVVRIIiwiU09VVEhFUk4iLCJTUEFDRSIsIlNQRUFLIiwiU1BFQUtFUiIsIlNQRUNJQUwiLCJTUEVDSUVTIiwiU1BFQ0lGSUMiLCJTUEVFQ0giLCJTUEVFRCIsIlNQRU5EIiwiU1BJUklUIiwiU1BPUlQiLCJTUE9UIiwiU1BSRUFEIiwiU1BSSU5HIiwiU1RBRkYiLCJTVEFHRSIsIlNUQU5EIiwiU1RBTkRBUkQiLCJTVEFSIiwiU1RBUlQiLCJTVEFURSIsIlNUQVRFTUVOVCIsIlNUQVRJT04iLCJTVEFUVVMiLCJTVEFZIiwiU1RFQUwiLCJTVEVQIiwiU1RJQ0siLCJTVElMTCIsIlNUT0NLIiwiU1RPTkUiLCJTVE9QIiwiU1RPUkUiLCJTVE9SWSIsIlNUUkFJR0hUIiwiU1RSQU5HRSIsIlNUUkFURUdZIiwiU1RSRUVUIiwiU1RSRU5HVEgiLCJTVFJJS0UiLCJTVFJPTkciLCJTVFJPTkdMWSIsIlNUUlVDVFVSRSIsIlNUVURFTlQiLCJTVFVESU8iLCJTVFVEWSIsIlNUVUZGIiwiU1RZTEUiLCJTVUJKRUNUIiwiU1VCU1RBTlRJQUwiLCJTVUNDRUVEIiwiU1VDQ0VTUyIsIlNVQ0NFU1NGVUwiLCJTVUNIIiwiU1VEREVOTFkiLCJTVUZGRVIiLCJTVUZGSUNJRU5UIiwiU1VHR0VTVCIsIlNVR0dFU1RJT04iLCJTVUlUQUJMRSIsIlNVTSIsIlNVTU1FUiIsIlNVTiIsIlNVUFBMWSIsIlNVUFBPUlQiLCJTVVBQT1NFIiwiU1VSRSIsIlNVUkVMWSIsIlNVUkZBQ0UiLCJTVVJQUklTRSIsIlNVUlJPVU5EIiwiU1VSVkVZIiwiU1VSVklWRSIsIlNXSVRDSCIsIlNZU1RFTSIsIlRBQkxFIiwiVEFLRSIsIlRBTEsiLCJUQUxMIiwiVEFQRSIsIlRBUkdFVCIsIlRBU0siLCJUQVgiLCJURUEiLCJURUFDSCIsIlRFQUNIRVIiLCJURUFDSElORyIsIlRFQU0iLCJURUFSIiwiVEVDSE5JQ0FMIiwiVEVDSE5JUVVFIiwiVEVDSE5PTE9HWSIsIlRFTEVQSE9ORSIsIlRFTEVWSVNJT04iLCJURUxMIiwiVEVNUEVSQVRVUkUiLCJURU5EIiwiVEVSTSIsIlRFUk1TIiwiVEVSUklCTEUiLCJURVNUIiwiVEVYVCIsIlRIQU4iLCJUSEFOSyIsIlRIQU5LUyIsIlRIQVQiLCJUSEUiLCJUSEVBVFJFIiwiVEhFSVIiLCJUSEVNIiwiVEhFTUUiLCJUSEVNU0VMVkVTIiwiVEhFTiIsIlRIRU9SWSIsIlRIRVJFIiwiVEhFUkVGT1JFIiwiVEhFU0UiLCJUSEVZIiwiVEhJTiIsIlRISU5HIiwiVEhJTksiLCJUSElTIiwiVEhPU0UiLCJUSE9VR0giLCJUSE9VR0hUIiwiVEhSRUFUIiwiVEhSRUFURU4iLCJUSFJPVUdIIiwiVEhST1VHSE9VVCIsIlRIUk9XIiwiVEhVUyIsIlRJQ0tFVCIsIlRJTUUiLCJUSU5ZIiwiVElUTEUiLCJUTyIsIlRPREFZIiwiVE9HRVRIRVIiLCJUT01PUlJPVyIsIlRPTkUiLCJUT05JR0hUIiwiVE9PIiwiVE9PTCIsIlRPT1RIIiwiVE9QIiwiVE9UQUwiLCJUT1RBTExZIiwiVE9VQ0giLCJUT1VSIiwiVE9XQVJEUyIsIlRPV04iLCJUUkFDSyIsIlRSQURFIiwiVFJBRElUSU9OIiwiVFJBRElUSU9OQUwiLCJUUkFGRklDIiwiVFJBSU4iLCJUUkFJTklORyIsIlRSQU5TRkVSIiwiVFJBTlNQT1JUIiwiVFJBVkVMIiwiVFJFQVQiLCJUUkVBVE1FTlQiLCJUUkVBVFkiLCJUUkVFIiwiVFJFTkQiLCJUUklBTCIsIlRSSVAiLCJUUk9PUCIsIlRST1VCTEUiLCJUUlVFIiwiVFJVU1QiLCJUUlVUSCIsIlRSWSIsIlRVUk4iLCJUV0lDRSIsIlRZUEUiLCJUWVBJQ0FMIiwiVU5BQkxFIiwiVU5ERVIiLCJVTkRFUlNUQU5EIiwiVU5ERVJTVEFORElORyIsIlVOREVSVEFLRSIsIlVORU1QTE9ZTUVOVCIsIlVORk9SVFVOQVRFTFkiLCJVTklPTiIsIlVOSVQiLCJVTklURUQiLCJVTklWRVJTSVRZIiwiVU5MRVNTIiwiVU5MSUtFTFkiLCJVTlRJTCIsIlVQIiwiVVBPTiIsIlVQUEVSIiwiVVJCQU4iLCJVUyIsIlVTRSIsIlVTRUQiLCJVU0VGVUwiLCJVU0VSIiwiVVNVQUwiLCJVU1VBTExZIiwiVkFMVUUiLCJWQVJJQVRJT04iLCJWQVJJRVRZIiwiVkFSSU9VUyIsIlZBUlkiLCJWQVNUIiwiVkVISUNMRSIsIlZFUlNJT04iLCJWRVJZIiwiVklBIiwiVklDVElNIiwiVklDVE9SWSIsIlZJREVPIiwiVklFVyIsIlZJTExBR0UiLCJWSU9MRU5DRSIsIlZJU0lPTiIsIlZJU0lUIiwiVklTSVRPUiIsIlZJVEFMIiwiVk9JQ0UiLCJWT0xVTUUiLCJWT1RFIiwiV0FHRSIsIldBSVQiLCJXQUxLIiwiV0FMTCIsIldBTlQiLCJXQVIiLCJXQVJNIiwiV0FSTiIsIldBU0giLCJXQVRDSCIsIldBVEVSIiwiV0FWRSIsIldBWSIsIldFIiwiV0VBSyIsIldFQVBPTiIsIldFQVIiLCJXRUFUSEVSIiwiV0VFSyIsIldFRUtFTkQiLCJXRUlHSFQiLCJXRUxDT01FIiwiV0VMRkFSRSIsIldFTEwiLCJXRVNUIiwiV0VTVEVSTiIsIldIQVQiLCJXSEFURVZFUiIsIldIRU4iLCJXSEVSRSIsIldIRVJFQVMiLCJXSEVUSEVSIiwiV0hJQ0giLCJXSElMRSIsIldISUxTVCIsIldISVRFIiwiV0hPIiwiV0hPTEUiLCJXSE9NIiwiV0hPU0UiLCJXSFkiLCJXSURFIiwiV0lERUxZIiwiV0lGRSIsIldJTEQiLCJXSUxMIiwiV0lOIiwiV0lORCIsIldJTkRPVyIsIldJTkUiLCJXSU5HIiwiV0lOTkVSIiwiV0lOVEVSIiwiV0lTSCIsIldJVEgiLCJXSVRIRFJBVyIsIldJVEhJTiIsIldJVEhPVVQiLCJXT01BTiIsIldPTkRFUiIsIldPTkRFUkZVTCIsIldPT0QiLCJXT1JEIiwiV09SSyIsIldPUktFUiIsIldPUktJTkciLCJXT1JLUyIsIldPUkxEIiwiV09SUlkiLCJXT1JUSCIsIldPVUxEIiwiV1JJVEUiLCJXUklURVIiLCJXUklUSU5HIiwiV1JPTkciLCJZQVJEIiwiWUVBSCIsIllFQVIiLCJZRVMiLCJZRVNURVJEQVkiLCJZRVQiLCJZT1UiLCJZT1VORyIsIllPVVIiLCJZT1VSU0VMRiIsIllPVVRIIgogfTsKICBpbnQgYW5zd2VyID0gMDsKICBmb3IgKGludCBpID0gMDsgaTxhLmxlbmd0aDtpKyspewogICBmb3IgKGludCBqPWkrMTtqPGEubGVuZ3RoO2orKyl7CiAgICBpZiAoYW5hZ3JhbShhW2ldLCBhW2pdKSl7Ci8vICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImFuYWdyYW1zOiAiICsgYVtpXSArICIgIiArIGFbal0pOyAgIAovLyAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpc3dvcmRwYWlyOiAiICsgaXN3b3JkcGFpcihhW2ldLGFbal0pKTsKICAgICBpZiAoaXN3b3JkcGFpcihhW2ldLGFbal0pKSBhbnN3ZXIrKzsKICAgIH0gZWxzZSB7CiAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIk5PVCBhbmFncmFtczogIiArIGFbaV0gKyAiICIgKyBhW2pdKTsgICAKICAgIH0KICAgfQogIH0KICBTeXN0ZW0ub3V0LnByaW50bG4oInRoaXMgaXMgdGhlIGFuc3dlcjogIiArIGFuc3dlcik7CiB9CiBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXN3b3JkcGFpcihTdHJpbmcgcywgU3RyaW5nIHQpewogIGludCBuID0gY291bnRkaXN0aW5jdChzKTsKICBpbnQgcG93ZXIgPSAoaW50KU1hdGgucG93KDEwLG4tMSk7CiAgaW50IG0gPSAoaW50KU1hdGguY2VpbChNYXRoLnNxcnQocG93ZXIpKTsKICBpbnQgbGFzdCA9IChpbnQpTWF0aC5mbG9vcihNYXRoLnNxcnQoTWF0aC5wb3coMTAsbiktMSkpOwovLyAgU3lzdGVtLm91dC5wcmludGxuKCJ0aGlzIGlzIGxhc3QgKGl0cyBzcXVhcmUgc2hvdWxkIGJlIGxhc3QgdmFsaWQpOiAiICsgbGFzdCk7CiAgd2hpbGUgKG0rKyA8PSBsYXN0KXsKLy8gICBTeXN0ZW0ub3V0LnByaW50bG4oInRoaXMgaXMgbTogIiArIG0pOwogCiAgLy8gbWFwIENBUkUgdXNpbmcgZGlnaXRzIGluIG0qbQogICBpbnQgeiA9IGNvdW50ZGlzdGluY3RJbkludChtKm0pOwogICBpZiAoeiAhPSBuKXsKLy8gICAgU3lzdGVtLm91dC5wcmludGxuKCJpbnRlZ2VyIGhhcyB3cm9uZyBudW1iZXIgb2YgZGlzdGluY3QgZGlnaXRzIik7CiAgICBjb250aW51ZTsKICAgfQogIC8vIG1hcCBtKm0gdG8gQ0FSRSwgdGhlbiB0byBSQUNFCiAgLy8gc28gQ0FSRSBpczogMTAyNCwgUkFDRTogUiBwb2ludHMgdG8gQ0FSRS0+MTAyNC4uLgogIC8vICAgICAgICAgICAgICAgICAgICAgICAgIEEgcG9pbnRzIHRvIENBUkUtPjEwMjQuLi4KICAgYm9vbGVhbiByZXN1bHQgPSBtYXBUb0FuYWdyYW0ocyx0LG0qbSk7Ci8vICAgU3lzdGVtLm91dC5wcmludGxuKCJtYXAgdG8gYW5hZ3JhbS4uLiAiICsgcmVzdWx0ICApOwogICBpZiAocmVzdWx0KXsKCVN5c3RlbS5vdXQucHJpbnRsbigiZ290IGEgcGFpciEhISEhISAiICsgcyArICIgIiArIHQpOwogICAgcmV0dXJuIHRydWU7CiAgIH0gIAogIH0KICAvL2NoZWNrZWQgdGhlbSBhbGwgd2l0aG91dCBzdWNjZXNzCiAgcmV0dXJuIGZhbHNlOwogfQoKCnB1YmxpYyBzdGF0aWMgaW50W10gY29kZUFycmF5KFN0cmluZyBzLCBpbnQgbil7CglpbnQgW10gdT0gaW50VG9BcnJheShuKTsKCglpbnQgW10gYW5zd2VyID0gbmV3IGludFtzLmxlbmd0aCgpXTsKCglTdHJpbmcgW10gdiA9IHMuc3BsaXQoIiIpOwoKCS8vIGRpc3RpbmN0IGxldHRlcnMgd2lsbCBtYXAgdG8gbgoJU3RyaW5nIGRpc3RpbmN0ID0gIiI7Cglmb3IgKGludCBqPTE7ajx2Lmxlbmd0aDtqKyspewoJCWlmIChkaXN0aW5jdC5jb250YWlucyh2W2pdKSl7CgoJCX0gZWxzZSB7CgkJCWRpc3RpbmN0ID0gZGlzdGluY3QgKyB2W2pdOwoJCX0KCQkKCX0KCQoJaW50IFtdIGFuc3dlcjIgPSBuZXcgaW50W3MubGVuZ3RoKCldOwovL1N5c3RlbS5vdXQucHJpbnRsbigiZGlzdGluY3Q6ICIgKyBkaXN0aW5jdCk7CgoKCS8vbG9vcCB0aHJvdWdoIGVhY2ggaW4gcywgbG9vayB1cCBpbiBkaXN0aW5jdAoJZm9yIChpbnQgaj0wO2o8cy5sZW5ndGgoKTtqKyspewoJCWNoYXIgdGFyZ2V0ID0gcy5jaGFyQXQoaik7CgkJZm9yIChpbnQgaz0wO2s8ZGlzdGluY3QubGVuZ3RoKCk7aysrKXsKCQkJaWYgKHRhcmdldCA9PSBkaXN0aW5jdC5jaGFyQXQoaykpewoJCQkJYW5zd2VyMltqXT11W2tdOwoJCQl9CgkJfQoJCQoJfQoKLy9TeXN0ZW0ub3V0LnByaW50bG4oImNvZGUgYXJyYXk6ICIgKyBBcnJheXMudG9TdHJpbmcoYW5zd2VyMikpOwoKCXJldHVybiBhbnN3ZXIyOwoJCn0KCiBwdWJsaWMgc3RhdGljIGJvb2xlYW4gbWFwVG9BbmFncmFtKFN0cmluZyBzLCBTdHJpbmcgdCwgaW50IG4pewovLyAgIFN5c3RlbS5vdXQucHJpbnRsbigiQkVHSU4gbWFwVG9BbmFncmFtICIgKyBzICsgIiAiICsgdCArICIgIiArIG4pOwovLyAgaW50IFtdIHU9IGludFRvQXJyYXkobik7CiBpbnQgW10gdSA9IGNvZGVBcnJheShzLCBuKTsKLy8gIFN5c3RlbS5vdXQucHJpbnRsbigidGhpcyBpcyBuOiAiICsgbik7Ci8vICBTeXN0ZW0ub3V0LnByaW50bG4oInRoaXMgaXMgYXJyYXk6ICIgKyBBcnJheXMudG9TdHJpbmcodSkpOwovLyAgU3lzdGVtLm91dC5wcmludGxuKCIuLi50aGlzIGlzIGFycmF5IGxlbmd0aDogIiArIHUubGVuZ3RoKTsKICAvL2xvb3AgdGhyb3VnaCB0LCB1c2luZyBzIGZvciB0aGUgaW50ZWdlciBjb2RlCgogIGludCBiYXNlID0gKGludClNYXRoLnBvdygxMCwoaW50KU1hdGgubG9nMTAobikpOwogIGludCBhbnN3ZXIgPSAwOwoKLy8gZ28gdGhyb3VnaCBlYWNoIGNoYXJhY3RlciBvZiB0Li4uCiAgZm9yIChpbnQgaj0wO2o8dC5sZW5ndGgoKTtqKyspewogICBjaGFyIGMxID0gdC5jaGFyQXQoaik7CiAgIGludCBjb2RlID0gLTE7CgovLyAuLi5hbmQgZmluZCBpdCBpbiBzCiAgIGZvciAoaW50IGs9MDtrPHMubGVuZ3RoKCk7aysrKXsKICAgIGlmIChjMSA9PSBzLmNoYXJBdChrKSl7CiAgICAgY29kZSA9IHVba107CiAgICAgYnJlYWs7CiAgICB9CiAgIH0KLy8gICBTeXN0ZW0ub3V0LnByaW50bG4oYzEgKyAiIG1hdGNoZXMgIiArIGNvZGUpOwogICBhbnN3ZXIgKz0gYmFzZSAqIGNvZGU7CiAgIGJhc2UgLz0xMDsKICB9Ci8vICBTeXN0ZW0ub3V0LnByaW50bG4oInRoaXMgaXMgdGhlIGFuc3dlcjogIiArIGFuc3dlcik7ICAgCiAgcmV0dXJuIGlzU3F1YXJlKGFuc3dlcik7CiB9CiBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNTcXVhcmUoaW50IHgpewogIGRvdWJsZSBzcXJ0ID0gTWF0aC5zcXJ0KHgpOwogIHJldHVybiAoc3FydCA9PSBNYXRoLmZsb29yKHNxcnQpKTsKIH0KIAogcHVibGljIHN0YXRpYyBpbnRbXSBpbnRUb0FycmF5KGludCB4KXsKICBpbnRbXSB1ID0gbmV3IGludFsxKyhpbnQpTWF0aC5sb2cxMCh4KV07CiAgaW50IGo9dS5sZW5ndGgtMTsKICB3aGlsZSh4PjApewogICB1W2otLV09eCUxMDsKICAgeCAtPSB4JTEwOwogICB4IC89MTA7CiAgfQogIHJldHVybiB1OwogfQogcHVibGljIHN0YXRpYyBpbnQgY291bnRkaXN0aW5jdEluSW50KGludCB4KXsKICBpbnRbXSB1ID0gbmV3IGludFsxMF07CiAgd2hpbGUoeD4wKXsKICAgdVt4JTEwXSsrOwogICB4IC09IHglMTA7CiAgIHggLz0xMDsKICB9CiAgaW50IG4gPSAwOwogIGZvciAoaW50IGo9MDtqPHUubGVuZ3RoO2orKyl7CiAgIGlmKHVbal0+MCluKys7CiAgfQogIHJldHVybiBuOwogfQogcHVibGljIHN0YXRpYyBib29sZWFuIGFuYWdyYW0gKFN0cmluZyBzLCBTdHJpbmcgdCl7CiAgU3RyaW5nW10gdSA9IHMuc3BsaXQoIiIpOwogIFN0cmluZ1tdIHYgPSB0LnNwbGl0KCIiKTsKICBpZiAodS5sZW5ndGggIT0gdi5sZW5ndGgpewogICByZXR1cm4gZmFsc2U7CiAgfQogIEFycmF5cy5zb3J0KHUpOwogIEFycmF5cy5zb3J0KHYpOwogIGZvciAoaW50IGo9MDtqPHUubGVuZ3RoO2orKyl7CiAgIGlmICh1W2pdLmNvbXBhcmVUbyh2W2pdKSAhPSAwKXsKICAgIHJldHVybiBmYWxzZTsKICAgfQogIH0KICByZXR1cm4gdHJ1ZTsKIH0KIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0MDEoKXsKICBTdHJpbmdbXSBhID0geyJDQVJFIiwgIk5PUEUiLCAiTk8iLCAiUkFDRSJ9OwogIEFycmF5TGlzdDxTdHJpbmdbXT4gbGlzdCA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nW10+KCk7CiAgLy8gc3RlcCBvbmU6IGNyZWF0ZSBhbiBhcnJheSBvZiBzb3J0ZWQgd29yZHMgKENBUkUtLT4gQUNFUikKICBmb3IgKGludCBqPTA7IGo8YS5sZW5ndGg7IGorKyl7CiAgIFN0cmluZ1tdIHUgPSBhW2pdLnNwbGl0KCIiKTsKICAgU3RyaW5nW10gdiA9IEFycmF5cy5jb3B5T2ZSYW5nZSh1LCAxLCB1Lmxlbmd0aCk7CiAgIEFycmF5cy5zb3J0KHYpOwogICBsaXN0LmFkZCh2KTsgICAKICB9CiAgLy8gc3RlcCB0aHJvdWdoOiBsb29wIHRocm91Z2ggZWFjaCB3b3JkLCBhbmQgc2ltcGx5IHByaW50IG91dCB3aGV0aGVyIGl0cyBhbmFncmFtIGV4aXN0cyBpbiBzZXQKICBmb3IgKGludCBqPTA7ajxhLmxlbmd0aDtqKyspewovLyAgIFN5c3RlbS5vdXQucHJpbnRsbigicHJvY2VzcyB3b3JkOiAiICsgYVtqXSk7CiAgIFN0cmluZyBbXSB1ID0gYVtqXS5zcGxpdCgiIik7CiAgIFN0cmluZyBbXSB2ID0gQXJyYXlzLmNvcHlPZlJhbmdlKHUsMSx1Lmxlbmd0aCk7CiAgIEFycmF5cy5zb3J0KHYpOwogICBmb3IgKGludCBrPTA7azxsaXN0LnNpemUoKTtrKyspewogICAgaWYgKGs9PWopIGNvbnRpbnVlOwovLyAgICBTeXN0ZW0ub3V0LnByaW50bG4oayArICIgIiArIGxpc3QuZ2V0KGspKTsKICAgIGJvb2xlYW4gc2FtZSA9IHRydWU7CiAgICBmb3IgKGludCBpPTA7IGk8di5sZW5ndGg7aSsrKXsKICAgICAvL1N0cmluZyBzMiA9IGxpc3QuZ2V0KGspW2ldOwogICAgIC8vU3RyaW5nIHMxID0gdltpXTsKICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbihzMSArICIgIiArIHMyICsgIiAiICsgKHMxLmNvbXBhcmVUbyhzMikpKTsKICAgICBpZiAodltpXS5jb21wYXJlVG8obGlzdC5nZXQoaylbaV0pICE9MCl7CiAgICAgIHNhbWU9ZmFsc2U7CiAgICAgIGJyZWFrOwogICAgIH0KICAgIH0KICAgCiAgICBpZiAoc2FtZSl7Ci8vICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYVtqXSArICIgZG9lcyBoYXZlIGFuIGFuYWdyYW1cbiIpOwogICAgIC8vIENBUkUgaXMgYmVpbmcgY29tcGFyZSB0byBSQUNFCiAgICAgLy8gZm9yIGVhY2ggc3F1YXJlIG51bWJlciBvZiBsZW5ndGggNCwgbWFwLi4uCiAgICAgaW50IG5kaXN0aW5jdCA9IGNvdW50ZGlzdGluY3QoYVtqXSk7Ci8vICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImRpc3RpbmN0OiAiICsgbmRpc3RpbmN0KTsKICAgICAvL3Byb2Nlc3MoYVtqXSwgbGlzdC5nZXQoayksIG5kaXN0aW5jdCk7CiAgICB9CiAgIH0KICAgCiAgfQogfQoKIHB1YmxpYyBzdGF0aWMgaW50IGNvdW50ZGlzdGluY3QoU3RyaW5nIHMpewogIFN0cmluZ1tdIGEgPSBzLnNwbGl0KCIiKTsKICBjaGFyW10gYWxwaGEgPSBuZXcgY2hhclsyNl07CiAgaW50W10gc2VlbiA9IG5ldyBpbnRbMjZdOwogIGZvciAoaW50IGo9MDtqPHMubGVuZ3RoKCk7aisrKXsKICAgY2hhciBjID0gcy5jaGFyQXQoaik7Ci8vICAgU3lzdGVtLm91dC5wcmludGxuKGFbal0gKyAiICIgKyBjKTsKICAgc2VlbltjLTY1XSArKzsKICB9ICAgCiAgaW50IG49MDsKICBmb3IgKGludCBqPTA7ajxzZWVuLmxlbmd0aDtqKyspewogICBpZihzZWVuW2pdPjApbisrOwogIH0KIAogIHJldHVybiBuOwogfQogcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CiAgU3lzdGVtLm91dC5wcmludGxuKCJiZWdpbiBtYWluIik7CiAgLy90ZXN0MDEoKTsKICB0ZXN0MDIoKTsKIH0KfQ==