#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
typedef struct Trie Trie;
struct Trie {
int end;
Trie *next[26];
};
unsigned trie_index(int c)
{
unsigned u = c - 65;
if (u < 64) {
u = u & 0x1f;
if (u < 26) return u;
}
return ~0u;
}
void trie_insert(Trie **t, const char *p)
{
while (*p) {
unsigned u = trie_index(*p++);
if (u < 26) {
if (*t == NULL) {
}
t = &(*t)->next[u];
}
}
if (*t == NULL) {
}
(*t)->end = 1;
}
Trie *trie_from(const char **data)
{
Trie *t = NULL;
while (*data) {
trie_insert(&t, *data++);
}
return t;
}
void trie_destroy(Trie *t)
{
if (t) {
unsigned i;
for (i = 0; i < 26; i++) {
trie_destroy(t->next[i]);
}
}
}
const char *data[] = {
"about", "above", "abuse", "acted", "added", "admit", "adopt", "after",
"again", "agree", "ahead", "aimed", "alarm", "album", "alias", "alive",
"allow", "alone", "along", "alter", "amuse", "angle", "angry", "annoy",
"apart", "apple", "apply", "areas", "argue", "arise", "aside", "asked",
"avoid", "awake", "award", "aware", "awful", "backs", "badly", "based",
"bases", "basic", "basis", "bears", "began", "begin", "begun", "being",
"below", "binds", "bites", "black", "blame", "blank", "block", "board",
"books", "borne", "bound", "boxes", "brand", "break", "brief", "bring",
"broke", "brown", "build", "built", "bytes", "calls", "cards", "cares",
"carry", "cases", "catch", "cause", "cease", "chain", "chair", "chaos",
"chars", "cheap", "check", "child", "chips", "chose", "claim", "class",
"clean", "clear", "clock", "close", "coded", "codes", "comes", "costs",
"could", "count", "court", "cover", "crash", "crazy", "crisp", "cross",
"cycle", "daily", "dated", "dates", "datum", "deals", "dealt", "death",
"deems", "delay", "depth", "digit", "dirty", "discs", "ditto", "doing",
"doors", "doubt", "dozen", "drawn", "draws", "dream", "drink", "drive",
"drops", "drove", "dying", "early", "earth", "eaten", "edits", "eight",
"elect", "empty", "ended", "enemy", "enjoy", "enter", "entry", "equal",
"error", "evens", "event", "every", "exact", "exist", "extra", "facts",
"fails", "faith", "falls", "false", "fancy", "fatal", "fault", "feeds",
"feels", "fewer", "field", "fight", "filed", "files", "fills", "final",
"finds", "first", "fixed", "fixes", "flash", "flied", "flies", "float",
"floor", "flown", "folks", "force", "forms", "forth", "found", "frame",
"fresh", "fries", "front", "fully", "funds", "funny", "gains", "games",
"given", "gives", "glass", "going", "goods", "grand", "grant", "graph",
"grave", "great", "green", "grind", "gross", "group", "grown", "grows",
"guard", "guess", "guide", "habit", "hands", "handy", "hangs", "happy",
"heads", "heard", "hears", "heart", "heavy", "hello", "helps", "hence",
"hides", "hints", "holds", "holes", "hoped", "hopes", "horse", "hotel",
"hours", "house", "human", "hurry", "ideal", "ideas", "image", "imply",
"index", "inner", "input", "issue", "items", "joins", "joint", "judge",
"jumps", "keeps", "kills", "kinds", "knock", "known", "knows", "label",
"lacks", "lands", "large", "lasts", "later", "leach", "leads", "learn",
"least", "leave", "legal", "level", "light", "liked", "likes", "limit",
"lines", "links", "lists", "lived", "lives", "loads", "local", "locks",
"logic", "looks", "loose", "lorry", "loses", "lower", "lucky", "lunch",
"lying", "magic", "major", "makes", "march", "marks", "marry", "match",
"maybe", "means", "meant", "media", "meets", "merit", "messy", "metal",
"might", "miles", "minds", "minor", "mixed", "mixes", "model", "money",
"month", "moral", "mouth", "moved", "moves", "movie", "music", "naive",
"named", "names", "nasty", "needs", "never", "nicer", "night", "noise",
"noisy", "north", "noted", "notes", "novel", "occur", "offer", "often",
"older", "omits", "opens", "order", "other", "ought", "outer", "owing",
"owner", "pages", "pairs", "paper", "parts", "party", "patch", "pause",
"payed", "peace", "phase", "phone", "picks", "piece", "place", "plain",
"plane", "plans", "plant", "plays", "plots", "point", "posts", "pound",
"power", "press", "price", "prime", "print", "prior", "prone", "proof",
"prove", "pulls", "putts", "queue", "quick", "quiet", "quite", "quits",
"quote", "radio", "raise", "range", "rapid", "rates", "reach", "react",
"reads", "ready", "refer", "reply", "right", "river", "rooms", "rough",
"round", "route", "rules", "sadly", "safer", "saint", "sales", "saved",
"saves", "scale", "scene", "score", "scrap", "seeks", "seems", "sells",
"sends", "sense", "serve", "seven", "shall", "shame", "shape", "share",
"sharp", "sheet", "shelf", "shell", "shift", "shoot", "shops", "short",
"shown", "shows", "shuts", "sides", "sight", "signs", "silly", "since",
"sites", "sizes", "skill", "sleep", "small", "smile", "solid", "solve",
"sorry", "sorts", "sound", "south", "space", "spare", "speak", "speed",
"spell", "spend", "spent", "spite", "split", "spoke", "spots", "staff",
"stage", "stand", "start", "state", "stays", "steal", "stick", "still",
"stock", "stone", "stood", "stops", "store", "story", "stuck", "study",
"stuff", "style", "sugar", "suits", "table", "taken", "takes", "talks",
"tanks", "tapes", "tasks", "taste", "teach", "teeth", "tells", "tends",
"terms", "tests", "thank", "their", "there", "these", "thing", "think",
"third", "those", "three", "threw", "throw", "tight", "timed", "times",
"title", "today", "token", "tooth", "topic", "total", "touch", "trace",
"track", "train", "traps", "trash", "treat", "trees", "trial", "trick",
"tried", "tries", "truck", "truly", "trunk", "trust", "truth", "turns",
"twice", "tying", "typed", "types", "under", "unite", "units", "until",
"upper", "upset", "usage", "users", "using", "usual", "vague", "valid",
"value", "video", "views", "visit", "vital", "voice", "votes", "waits",
"walks", "walls", "wants", "warns", "waste", "watch", "water", "wears",
"weeks", "weird", "wheel", "where", "which", "while", "white", "whole",
"whose", "wider", "wills", "woman", "women", "words", "works", "world",
"worry", "worse", "worst", "worth", "would", "write", "wrong", "wrote",
"years", "young", "yours", "abide", "abort", "acorn", "actor", "acute",
"adapt", "adult", "agent", "agony", "aided", "alert", "alien", "align",
"alike", "aloud", "alpha", "amaze", "amber", "amend", "ample", "angel",
"anger", "arena", "armed", "arose", "array", "arrow", "ashes", "asset",
"atlas", "atoms", "audio", "await", "axiom", "badge", "baked", "bakes",
"balls", "banal", "bands", "banks", "barks", "batch", "baths", "beach",
"beans", "beard", "beast", "beats", "beers", "bells", "bench", "bends",
"bible", "bigot", "bills", "birds", "birth", "blade", "blast", "bless",
"blind", "blink", "bliss", "blood", "blown", "blows", "blues", "blurb",
"boats", "bogus", "boils", "bombs", "bones", "bonus", "boost", "boots",
"bored", "bores", "brain", "brake", "brass", "brave", "bread", "breed",
"brick", "broad", "brush", "bucks", "bulbs", "bunch", "burns", "burnt",
"burst", "buyer", "cable", "cakes", "camps", "cared", "cased", "casts",
"cater", "cells", "chalk", "chaps", "charm", "chart", "chase", "chats",
"cheat", "cheek", "cheer", "chess", "chest", "chews", "chief", "choir",
"chops", "chord", "chuck", "chunk", "cider", "circa", "cited", "cites",
"civil", "clash", "click", "cliff", "climb", "clips", "clone", "cloth",
"cloud", "clubs", "clues", "coach", "coast", "coats", "coins", "colon",
"comic", "comma", "cooks", "cools", "coped", "copes", "cough", "crack",
"craft", "cramp", "crass", "crawl", "cream", "creed", "creep", "cried",
"cries", "crime", "crops", "crowd", "crown", "crude", "cruel", "crush",
"cubic", "cured", "cures", "curly", "curry", "curse", "curve", "cynic",
"damns", "dance", "dared", "dares", "debug", "decay", "deeds", "deity",
"delta", "dense", "deter", "devil", "dials", "diary", "dined", "diner",
"dines", "disco", "ditch", "dived", "dives", "dodge", "dogma", "dooms",
"doses", "draft", "drags", "drain", "drama", "drank", "dread", "dress",
"dried", "dries", "drift", "drill", "drips", "drown", "drugs", "drums",
"drunk", "ducks", "dummy", "dumps", "dusty", "eager", "eagle", "earns",
"eater", "edges", "elite", "embed", "equip", "erase", "essay", "ethic",
"evils", "exams", "exits", "faced", "faces", "faint", "fairy", "farce",
"fears", "fence", "fetch", "fever", "fifth", "fifty", "films", "fined",
"finer", "fines", "fired", "fires", "firms", "fiver", "fizzy", "flags",
"flame", "flaws", "fleet", "flesh", "flips", "flood", "flour", "flows",
"fluid", "flush", "flute", "focus", "folds", "fonts", "foods", "fools",
"forty", "forum", "frank", "fraud", "freak", "freed", "frees", "fried",
"frogs", "frown", "froze", "fruit", "fudge", "fumes", "furry", "fussy",
"fuzzy", "gates", "gears", "genes", "genre", "ghost", "giant", "gifts",
"girls", "glean", "glory", "glove", "glows", "gnome", "goals", "goody",
"grabs", "grace", "grade", "grain", "grasp", "grass", "greed", "grief",
"grips", "groan", "guest", "guilt", "hacks", "hairs", "hairy", "halls",
"halts", "halve", "hardy", "harsh", "hasty", "hated", "hates", "havoc",
"heats", "heels", "hided", "hills", "hired", "hires", "hobby", "homes",
"honey", "hooks", "horde", "hosts", "hunts", "hurts", "icons", "idiom",
"idiot", "inane", "incur", "infer", "inter", "irate", "irony", "jeans",
"jelly", "joked", "jokes", "jolly", "juice", "keyed", "kicks", "kings",
"knees", "knife", "lager", "laser", "laugh", "layer", "leans", "lemon",
"lends", "libel", "lifts", "limbs", "lined", "liver", "loans", "lobby",
"lodge", "loops", "lords", "lousy", "loved", "lover", "loves", "loyal",
"lumps", "lungs", "lurks", "lyric", "mails", "mains", "maize", "maker",
"males", "mania", "mayor", "meals", "mends", "menus", "mercy", "merge",
"merry", "meter", "metro", "mimic", "mined", "mines", "minus", "mists",
"moans", "modes", "moons", "moron", "motor", "motto", "mount", "mouse",
"mucks", "mummy", "myths", "nails", "naked", "nerve", "nests", "newer",
"newly", "nicks", "noble", "nodes", "noses", "nouns", "nurse", "obeys",
"ocean", "oddly", "onion", "opera", "opted", "optic", "orbit", "organ",
"owned", "ozone", "packs", "paged", "pains", "paint", "panel", "panic",
"pants", "parks", "parse", "paste", "paths", "peaks", "pedal", "peers",
"pence", "pends", "penny", "petty", "photo", "piano", "piles", "pills",
"pilot", "pinch", "pints", "pipes", "pitch", "pizza", "plate", "plugs",
"poems", "poets", "polar", "polls", "ports", "posed", "poses", "pours",
"prays", "pride", "prize", "prose", "proud", "pulse", "pumps", "punch",
"punts", "pupil", "purge", "queen", "query", "quest", "quota", "rabid",
"raced", "races", "racks", "radar", "raids", "rails", "rains", "ranks",
"rants", "rarer", "rated", "ratio", "raved", "raves", "razor", "realm",
"reign", "relax", "relay", "rends", "renew", "reset", "rests", "reuse",
"rhyme", "rides", "rigid", "rings", "risen", "rises", "risks", "risky",
"rival", "roads", "robot", "rocks", "roles", "rolls", "roman", "roots",
"routs", "royal", "ruins", "ruled", "ruler", "rural", "rusty", "sacks",
"sails", "sauce", "scans", "scare", "scarf", "scope", "screw", "seals",
"seats", "sects", "sexes", "shade", "shake", "shaky", "sheds", "sheep",
"sheer", "shine", "shiny", "ships", "shirt", "shock", "shoes", "shone",
"shook", "shots", "shout", "shove", "sided", "sigma", "sings", "sinks",
"sixth", "sixty", "sized", "skips", "skirt", "skull", "slang", "slash",
"slave", "slept", "slice", "slide", "slips", "slope", "slots", "slows",
"smart", "smash", "smell", "smith", "smoke", "snack", "snail", "sneak",
"sniff", "sober", "socks", "solar", "soles", "songs", "souls", "spies",
"spike", "spill", "spits", "spoil", "spoof", "spool", "sport", "spout",
"spray", "squad", "stack", "stair", "stake", "stale", "stall", "stamp",
"stare", "stark", "stars", "steam", "steel", "steep", "steer", "stems",
"steps", "stiff", "stirs", "stole", "storm", "straw", "stray", "strip",
"stuns", "stunt", "suing", "suite", "sunny", "super", "swamp", "swaps",
"swear", "sweat", "sweep", "sweet", "swept", "swims", "swing", "sword",
"swore", "sworn", "tacks", "tails", "taker", "tales", "taxes", "teams",
"tears", "tempt", "tense", "tenth", "terse", "texts", "theft", "theme",
"thick", "thief", "thous", "thumb", "tiger", "tiles", "timer", "tired",
"tires", "toast", "tones", "tools", "tough", "tower", "towns", "trade",
"trail", "tread", "trend", "tribe", "trips", "troop", "tubes", "tuned",
"tunes", "tutor", "twins", "twist", "uncle", "undid", "unify", "union",
"unity", "unset", "urban", "urged", "urges", "utter", "valve", "vends",
"venue", "verbs", "verse", "vicar", "vinyl", "virus", "vocal", "vomit",
"voted", "voter", "vouch", "vowel", "waded", "wades", "wages", "waked",
"wakes", "warms", "warps", "waved", "waves", "weary", "weigh", "whale",
"whoop", "width", "winds", "wines", "wings", "wiped", "wipes", "wired",
"wires", "wiser", "witch", "witty", "wives", "woken", "woods", "worms",
"wound", "wraps", "wrath", "wreck", "wrist", "yards", "yield", "youth",
"zeros", "zones", "aback", "abate", "abbey", "abbot", "abets", "abhor",
"abler", "abode", "abyss", "ached", "aches", "acids", "acing", "acres",
"acrid", "adage", "adept", "adobe", "adore", "adorn", "affix", "afoot",
"agile", "aglow", "aides", "ailed", "aired", "aisle", "algae", "alibi",
"allay", "alley", "allot", "alloy", "aloft", "aloof", "altar", "altos",
"amass", "amble", "amiss", "amply", "angst", "ankle", "annex", "annul",
"antic", "anvil", "aorta", "aping", "apron", "apter", "aptly", "arced",
"arias", "aroma", "arson", "ashed", "ashen", "askew", "aspen", "asses",
"atone", "attic", "audit", "aunts", "aural", "auras", "autos", "avail",
"avert", "avows", "awing", "awoke", "axing", "axles", "azure", "babes",
"bacon", "bagel", "baggy", "bails", "baits", "baker", "balds", "baled",
"bales", "balms", "balmy", "bandy", "bangs", "banjo", "barbs", "bards",
"bared", "barer", "bares", "barge", "barns", "baron", "baser", "basil",
"basin", "basks", "baste", "bathe", "baton", "bawdy", "bawls", "bayed",
"bayou", "beads", "beady", "beaks", "beams", "beech", "beefs", "beefy",
"beets", "befit", "beige", "belch", "belie", "belly", "belts", "bents",
"beret", "berry", "berth", "beset", "bests", "bides", "biked", "bikes",
"bingo", "biped", "birch", "bison", "bitch", "blabs", "bland", "blare",
"blase", "blaze", "bleak", "bleat", "bleed", "blend", "blimp", "blips",
"blitz", "blobs", "blocs", "blogs", "blond", "bloom", "blots", "blued",
"bluer", "bluff", "blunt", "blurs", "blurt", "blush", "boars", "boast",
"boded", "bodes", "bolts", "bonds", "boned", "booby", "booed", "booms",
"boons", "boors", "booth", "booty", "booze", "bosom", "bossy", "botch",
"bough", "bouts", "bowed", "bowel", "bowls", "boxed", "boxer", "brace",
"brags", "braid", "brash", "brats", "bravo", "brawl", "brawn", "brays",
"brews", "bribe", "bride", "brims", "brine", "brink", "briny", "brisk",
"broil", "brood", "brook", "broom", "broth", "brows", "brunt", "brute",
"buddy", "budge", "buffs", "buggy", "bugle", "bulge", "bulks", "bulky",
"bulls", "bully", "bumps", "bumpy", "bunks", "bunny", "buoys", "burly",
"burps", "burro", "burrs", "bushy", "busts", "butte", "butts", "buxom",
"byway", "cabin", "cacao", "cache", "cacti", "cadet", "cafes", "caged",
"cages", "cagey", "caked", "calms", "calve", "camel", "cameo", "canal",
"candy", "caned", "canes", "canny", "canoe", "canon", "caped", "caper",
"capes", "carat", "cargo", "carol", "carps", "carts", "carve", "casks",
"caste", "caulk", "caved", "caves", "cawed", "cedar", "ceded", "cedes",
"cello", "cents", "chafe", "chaff", "champ", "chant", "chasm", "cheep",
"chefs", "chewy", "chick", "chide", "chill", "chime", "chimp", "china",
"chink", "chins", "chirp", "choke", "chore", "chows", "chugs", "chums",
"churn", "chute", "cigar", "cinch", "civic", "clack", "clamp", "clams",
"clang", "clank", "clans", "claps", "clasp", "claws", "cleat", "clefs",
"cleft", "clerk", "clime", "cling", "clink", "cloak", "clods", "clogs",
"clots", "clout", "clove", "clown", "cluck", "clued", "clump", "clung",
"coals", "cobra", "cocks", "cocky", "cocoa", "coils", "coked", "cokes",
"colds", "colic", "colts", "comas", "combs", "comet", "cones", "cooed",
"coops", "coral", "cords", "cored", "cores", "corks", "corns", "corny",
"corps", "couch", "coups", "coves", "covet", "cowed", "cower", "coyer",
"crabs", "crags", "crams", "crane", "crank", "crate", "crave", "craze",
"creak", "creek", "crepe", "crept", "crest", "crews", "cribs", "croak",
"crock", "crony", "crook", "croon", "crows", "crumb", "crust", "crypt",
"cubed", "cubes", "cuffs", "cuing", "culls", "cults", "curbs", "curds",
"curio", "curls", "cuter", "cysts", "daddy", "dairy", "daisy", "dally",
"dames", "damps", "dandy", "darns", "darts", "daubs", "daunt", "dawns",
"dazed", "dazes", "deans", "dears", "debit", "debts", "debut", "decks",
"decoy", "decry", "deeps", "defer", "deify", "deign", "delis", "delve",
"demon", "denim", "dents", "depot", "desks", "diced", "dices", "diets",
"diked", "dills", "dimer", "dimes", "dimly", "dingy", "direr", "dirge",
"disks", "ditty", "diver", "dizzy", "docks", "doers", "doily", "doled",
"doles", "dolls", "dolly", "domed", "domes", "donor", "doped", "dopes",
"dopey", "dosed", "doted", "dotes", "dough", "douse", "doves", "dowdy",
"downs", "downy", "dowry", "dozed", "dozes", "drabs", "drape", "drawl",
"dregs", "drier", "droll", "drone", "drool", "droop", "dross", "dryer",
"ducts", "duded", "dudes", "duels", "duets", "dukes", "dulls", "dully",
"dumpy", "dunce", "dunes", "dungs", "dunks", "dunno", "duped", "dupes",
"dusky", "dusts", "duvet", "dwarf", "dwell", "dwelt", "earls", "eased",
"easel", "eases", "eaves", "ebbed", "ebony", "edged", "edger", "edict",
"eerie", "egged", "eject", "eking", "elbow", "elder", "elegy", "elope",
"elude", "elves", "email", "ember", "emirs", "emits", "enact", "endow",
"enema", "ensue", "envoy", "epics", "epoch", "erect", "erode", "erred",
"erupt", "ether", "ethos", "evade", "evict", "evoke", "exalt", "excel",
"exert", "exile", "expel", "extol", "exude", "exult", "fable", "facet",
"faded", "fades", "fairs", "faked", "fakes", "famed", "fangs", "fared",
"fares", "farms", "fasts", "fated", "fates", "fatty", "fauna", "fawns",
"fazed", "fazes", "feast", "feats", "feign", "feint", "fells", "felon",
"felts", "fends", "ferns", "ferry", "feted", "fetid", "fetus", "feuds",
"fiche", "fiend", "fiery", "filch", "filet", "filly", "filmy", "filth",
"finch", "fishy", "fists", "fives", "flail", "flair", "flake", "flaky",
"flank", "flaps", "flare", "flask", "flats", "fleas", "fleck", "flees",
"flick", "fling", "flint", "flirt", "flits", "flock", "flogs", "flops",
"flora", "floss", "flout", "flues", "fluff", "fluke", "flung", "flunk",
"foals", "foams", "foamy", "focal", "foggy", "foils", "foist", "folly",
"foots", "foray", "fords", "fores", "forge", "forgo", "forks", "forte",
"forts", "fouls", "fount", "fours", "fowls", "foxed", "foxes", "foyer",
"frail", "franc", "frays", "freer", "frets", "friar", "frill", "frisk",
"frock", "frond", "frost", "froth", "fuels", "fulls", "fumed", "fungi",
"furls", "fused", "fuses", "fetes", "gable", "gaily", "gaits", "galas",
"gales", "galls", "gamed", "gamer", "gamma", "gamut", "gangs", "gaped",
"gapes", "garbs", "gases", "gasps", "gated", "gaudy", "gauge", "gaunt",
"gauze", "gavel", "gawks", "gawky", "gayer", "gazed", "gazes", "geese",
"gelds", "genie", "genii", "gents", "genus", "germs", "ghoul", "giddy",
"gilds", "gills", "gilts", "gimme", "girth", "glade", "glads", "gland",
"glare", "glaze", "gleam", "glens", "glide", "glint", "gloat", "globe",
"gloom", "gloss", "glued", "glues", "gluts", "gnarl", "gnash", "gnats",
"gnaws", "goads", "goats", "godly", "golds", "golfs", "goner", "gongs",
"gonna", "gooey", "goofs", "goofy", "goons", "goose", "gored", "gores",
"gorge", "gouge", "gourd", "gowns", "graft", "grams", "grape", "grate",
"gravy", "graze", "greet", "grids", "grill", "grime", "grimy", "grins",
"gripe", "grits", "groin", "groom", "grope", "grove", "growl", "grubs",
"gruel", "gruff", "grunt", "guild", "guile", "guise", "gulch", "gulfs",
"gulls", "gully", "gulps", "gummy", "guppy", "gurus", "gusts", "gusty",
"guyed", "hails", "haled", "haler", "hales", "halon", "halos", "hared",
"harem", "hares", "harks", "harms", "harps", "harry", "harts", "haste",
"hatch", "hauls", "haunt", "haven", "haves", "hawks", "hayed", "hazed",
"hazel", "hazes", "heady", "heals", "heaps", "heath", "heave", "hedge",
"heeds", "hefty", "heirs", "helms", "herbs", "herds", "heron", "hewed",
"hicks", "highs", "hiked", "hiker", "hikes", "hilly", "hilts", "hinds",
"hinge", "hippy", "hitch", "hived", "hives", "hoard", "hobos", "hocks",
"hoist", "holed", "holly", "homed", "homey", "honed", "hones", "honks",
"hoods", "hoofs", "hoops", "hoots", "horns", "horny", "hosed", "hoses",
"hotly", "hound", "hovel", "hover", "howls", "huffs", "huffy", "huger",
"hulks", "hulls", "humid", "humps", "hunch", "hunks", "hurls", "husks",
"husky", "hutch", "hyena", "hymns", "icier", "icing", "idled", "idler",
"idles", "idols", "igloo", "impel", "inept", "inert", "infix", "inked",
"inlay", "inlet", "iotas", "irked", "irons", "isles", "itchy", "ivies",
"ivory", "jacks", "jaded", "jades", "jails", "jambs", "jaunt", "jawed",
"jeers", "jells", "jerks", "jerky", "jests", "jetty", "jewel", "jibed",
"jibes", "jiffy", "jilts", "joker", "jolts", "joyed", "juicy", "jumbo",
"jumpy", "junks", "junta", "juror", "karat", "kayak", "keels", "keens",
"khaki", "kilns", "kilos", "kilts", "kinda", "kinks", "kinky", "kiosk",
"kited", "kites", "kitty", "kiwis", "knack", "knead", "kneed", "kneel",
"knelt", "knits", "knobs", "knoll", "knots", "koala", "kudos", "laced",
"laces", "laded", "laden", "lades", "ladle", "lairs", "lakes", "lambs",
"lamed", "lamer", "lames", "lamps", "lance", "lanes", "lanky", "lapel",
"lapse", "lards", "larks", "larva", "latch", "latex", "lathe", "laths",
"lauds", "lawns", "laxer", "leafs", "leafy", "leaks", "leaky", "leaps",
"lease", "leash", "ledge", "leech", "leeks", "leers", "leery", "lefts",
"lemme", "leper", "letup", "levee", "lever", "liars", "licks", "liken",
"liker", "lilac", "lilts", "limbo", "limed", "limes", "limps", "linen",
"liner", "lingo", "lions", "lisps", "lithe", "liven", "livid", "llama",
"loafs", "loath", "lobes", "lofts", "lofty", "loins", "lolls", "longs",
"looms", "loons", "loony", "loots", "loped", "lopes", "loser", "lotus",
"louse", "lowed", "lowly", "lucid", "lucks", "lulls", "lumpy", "lunar",
"lunge", "lurch", "lured", "lures", "lurid", "lusts", "lusty", "lutes",
"lymph", "lynch", "lyres", "maced", "maces", "macho", "madam", "madly",
"maids", "maims", "malls", "malts", "mamas", "mamma", "manes", "mange",
"mango", "mangy", "manic", "manly", "manor", "maple", "mares", "maria",
"marsh", "marts", "masks", "mason", "masts", "mated", "mates", "matte",
"mauls", "mauve", "maxim", "mazes", "mealy", "meats", "medal", "melon",
"melts", "memos", "meres", "meted", "metes", "mewed", "midst", "miens",
"miked", "mikes", "milks", "milky", "mills", "mimed", "mimes", "mince",
"miner", "minks", "mints", "mired", "mires", "mirth", "miser", "misty",
"mites", "mitts", "mixer", "moats", "mocks", "modal", "moist", "molar",
"moles", "monks", "moods", "moody", "mooed", "moors", "moose", "moots",
"moped", "mopes", "morns", "mossy", "motel", "moths", "motif", "mound",
"mourn", "mousy", "mover", "mowed", "mower", "mucus", "muddy", "muffs",
"muggy", "mulch", "mules", "mulls", "mumps", "munch", "mural", "murky",
"mused", "muses", "mushy", "musts", "musty", "muted", "muter", "mutes",
"mutts", "napes", "nappy", "nasal", "natty", "naval", "navel", "nears",
"necks", "needy", "neigh", "newsy", "newts", "niche", "niece", "nifty",
"nines", "ninny", "ninth", "nippy", "nobly", "nomad", "nooks", "noose",
"norms", "nosed", "notch", "nuder", "nudes", "nudge", "nulls", "numbs",
"nutty", "nylon", "nymph", "oared", "oases", "oasis", "oaths", "obese",
"oboes", "octal", "odder", "offed", "ogled", "ogles", "ogres", "oiled",
"okras", "olden", "olive", "omega", "omens", "onset", "oozed", "oozes",
"opals", "opium", "orals", "otter", "ounce", "ousts", "outdo", "outed",
"ovals", "ovary", "ovens", "overs", "overt", "oxide", "paced", "paces",
"pacts", "paddy", "pagan", "pager", "pails", "paled", "paler", "pales",
"palls", "palms", "panda", "panes", "pangs", "pansy", "papal", "papas",
"parch", "pared", "pares", "parka", "passe", "pasta", "pasts", "pasty",
"pates", "patio", "patty", "paved", "paves", "pawed", "pawns", "payer",
"peach", "peals", "pearl", "pears", "pecan", "pecks", "peeks", "peels",
"peeps", "peeve", "pelts", "penal", "penis", "peons", "peony", "perch",
"peril", "perks", "perky", "pesky", "pests", "petal", "peter", "picky",
"piers", "piety", "piked", "pikes", "piled", "pined", "pines", "pinks",
"pious", "piped", "pique", "pithy", "pivot", "pixie", "plaid", "plank",
"plaza", "plead", "pleas", "pleat", "plied", "plies", "plods", "plops",
"ploys", "pluck", "plumb", "plume", "plump", "plums", "plush", "poach",
"poise", "poked", "poker", "pokes", "pokey", "poled", "poles", "polio",
"polka", "polyp", "ponds", "pools", "poops", "poppy", "porch", "pored",
"pores", "pouch", "pouts", "prank", "prawn", "preen", "preys", "prick",
"pried", "pries", "primp", "prism", "privy", "probe", "prods", "proms",
"prong", "props", "prowl", "prows", "proxy", "prude", "prune", "psalm",
"psych", "pucks", "pudgy", "puffs", "puffy", "puked", "pukes", "pulps",
"pumas", "punks", "puppy", "puree", "purer", "purrs", "purse", "pushy",
"pussy", "putty", "pyres", "quack", "quail", "quake", "qualm", "quark",
"quart", "quash", "quays", "queer", "quell", "quill", "quilt", "quips",
"quirk", "rabbi", "racer", "radii", "rafts", "raged", "rages", "rainy",
"raked", "rakes", "rally", "ramps", "ranch", "raped", "rapes", "rared",
"rares", "rasps", "ratty", "ravel", "raven", "rawer", "rayon", "razed",
"razes", "reals", "reams", "reaps", "rears", "rebel", "rebut", "recap",
"recur", "redid", "reeds", "reefs", "reeks", "reels", "regal", "reins",
"relic", "remit", "rents", "repay", "repel", "resin", "retch", "retry",
"revel", "revue", "rhino", "riced", "rices", "rider", "ridge", "rifer",
"rifle", "rifts", "riled", "riles", "rinds", "rinks", "rinse", "riots",
"ripen", "riper", "riser", "rites", "rivet", "roach", "roams", "roars",
"roast", "robed", "robes", "robin", "rocky", "rodeo", "rogue", "romps",
"roofs", "rooks", "roomy", "roost", "roped", "ropes", "roses", "rotor",
"rouge", "rouse", "rowdy", "rowed", "ruddy", "ruder", "ruffs", "rugby",
"ruing", "rummy", "rumps", "runes", "rungs", "runny", "runts", "ruses",
"rusts", "sades", "safes", "sagas", "sager", "sages", "salad", "sally",
"salon", "salts", "salty", "salve", "sames", "sands", "sandy", "saner",
"sangs", "saris", "sassy", "satin", "saucy", "sauna", "saute", "saver",
"savvy", "sawed", "scabs", "scald", "scalp", "scaly", "scant", "scars",
"scary", "scent", "scoff", "scold", "scoop", "scoot", "scorn", "scour",
"scout", "scowl", "scram", "scrub", "scuff", "scums", "seams", "sears",
"sedan", "seeds", "seedy", "seeps", "seize", "semen", "serum", "sever",
"sewed", "sewer", "sexed", "shack", "shady", "shaft", "shams", "shark",
"shave", "shawl", "sheaf", "shear", "sheen", "shied", "shies", "shins",
"shire", "shirk", "shoal", "shoos", "shore", "showy", "shred", "shrew",
"shrub", "shrug", "shuck", "shuns", "shunt", "shyer", "sicks", "sidle",
"siege", "sieve", "sifts", "sighs", "silks", "sills", "silos", "silts",
"sinew", "singe", "sinus", "sired", "siren", "sires", "sissy", "sited",
"sixes", "sizer", "skate", "skein", "skews", "skids", "skied", "skies",
"skimp", "skims", "skins", "skits", "skulk", "skunk", "slabs", "slack",
"slain", "slake", "slams", "slant", "slaps", "slate", "slats", "slays",
"sleds", "sleek", "sleet", "slews", "slick", "slime", "slims", "slimy",
"sling", "slink", "slits", "slobs", "slogs", "slops", "slosh", "sloth",
"slugs", "slump", "slums", "slung", "slunk", "slurs", "slush", "sluts",
"smack", "smear", "smelt", "smirk", "smite", "smock", "smoky", "smote",
"smuts", "snags", "snake", "snaps", "snare", "snarl", "sneer", "snide",
"snipe", "snips", "snobs", "snoop", "snore", "snort", "snots", "snout",
"snows", "snowy", "snubs", "snuff", "snugs", "soaks", "soaps", "soapy",
"soars", "sodas", "sofas", "soggy", "soils", "soled", "solos", "sonic",
"sooty", "sorer", "sores", "sorta", "soups", "sours", "sowed", "spade",
"spank", "spans", "spark", "spars", "spasm", "spate", "spats", "spawn",
"spays", "spear", "speck", "sperm", "spews", "spice", "spicy", "spied",
"spine", "spins", "spire", "splat", "spook", "spoon", "spore", "spree",
"sprig", "spuds", "spunk", "spurn", "spurs", "spurt", "squat", "squid",
"stabs", "stags", "staid", "stain", "stalk", "stank", "stave", "steak",
"stern", "stews", "sting", "stink", "stint", "stoke", "stomp", "stony",
"stool", "stoop", "stork", "stout", "stove", "stows", "strap", "strew",
"strum", "strut", "stubs", "studs", "stump", "stung", "stunk", "suave",
"sucks", "suede", "sulks", "sulky", "sunup", "surer", "surfs", "surge",
"surly", "swabs", "swans", "swarm", "swats", "sways", "swell", "swift",
"swigs", "swill", "swine", "swipe", "swirl", "swish", "swoon", "swoop",
"swung", "syrup", "tabby", "taboo", "tacit", "tacky", "tacos", "taint",
"tally", "talon", "tamed", "tamer", "tames", "tango", "tangs", "taped",
"taper", "tardy", "tarry", "tarts", "tasty", "tatty", "taunt", "tawny",
"taxed", "taxis", "teaks", "tease", "teats", "teems", "teens", "tempo",
"tenet", "tenor", "tents", "tepee", "tepid", "thaws", "theta", "thigh",
"thins", "thong", "thorn", "throb", "thuds", "thugs", "thump", "thyme",
"tiara", "ticks", "tidal", "tided", "tides", "tiers", "tiffs", "tilde",
"tiled", "tills", "tilts", "timid", "tinge", "tings", "tinny", "tints",
"tipsy", "toads", "togas", "toils", "tolls", "tombs", "tomes", "tonal",
"toned", "tongs", "tonic", "tonne", "toots", "topaz", "torch", "torso",
"toted", "totem", "totes", "tours", "touts", "towed", "towel", "toxic",
"toxin", "toyed", "tract", "trait", "tramp", "trawl", "trays", "treed",
"treks", "trill", "trims", "trios", "tripe", "trite", "troll", "trots",
"trout", "truce", "trued", "truer", "trues", "trump", "tubas", "tubed",
"tucks", "tufts", "tulip", "tummy", "tunas", "tuner", "tunic", "turfs",
"tusks", "twang", "tweak", "tweed", "tweet", "twigs", "twine", "twirl",
"udder", "ulcer", "ultra", "uncut", "undue", "unfit", "unman", "unsay",
"untie", "upend", "upped", "urine", "usher", "usurp", "uteri", "valet",
"vanes", "vases", "vasts", "vault", "veers", "veils", "veins", "venom",
"vents", "verge", "verve", "vests", "vexed", "vexes", "vials", "viced",
"vices", "vigil", "viler", "villa", "vines", "viola", "viper", "viral",
"visas", "vised", "vises", "visor", "vista", "vivid", "vodka", "vogue",
"voids", "volts", "vowed", "vying", "wafer", "wafts", "waged", "wager",
"wagon", "waifs", "wails", "waist", "waive", "waken", "waltz", "wands",
"waned", "wanes", "wanna", "wards", "warts", "wasps", "watts", "waver",
"waxed", "waxes", "weans", "weave", "wedge", "weeds", "weedy", "weeps",
"weest", "welds", "wells", "welts", "whack", "wharf", "whats", "wheat",
"whens", "whets", "whiff", "whims", "whine", "whips", "whirl", "whisk",
"whore", "wicks", "widen", "widow", "wield", "wilds", "wilts", "wince",
"winch", "windy", "wined", "winks", "wiper", "wises", "wisps", "wispy",
"wolfs", "wombs", "woody", "wooed", "woofs", "wordy", "woven", "wowed",
"wreak", "wrens", "wrest", "wring", "writs", "wrung", "wryer", "yacht",
"yanks", "yarns", "yawns", "yearn", "yeast", "yells", "yelps", "yeses",
"yodel", "yoked", "yokel", "yokes", "yolks", "yowls", "zebra", "zests",
"zincs", "zoned", "zooms", "abaft", "abase", "abbes", "abeam", "abuts",
"abuzz", "achoo", "acmes", "adder", "addle", "adieu", "adios", "adman",
"admen", "adzes", "aegis", "aerie", "afire", "afoul", "agape", "agate",
"agave", "alder", "aloes", "alums", "amigo", "amino", "amity", "amour",
"anion", "anise", "ankhs", "anode", "anons", "antis", "apace", "aphid",
"apses", "aquas", "argon", "argot", "ascot", "aspic", "assay", "aster",
"astir", "atoll", "atria", "attar", "auger", "aught", "augur", "avast",
"avers", "avian", "axial", "axons", "babel", "baize", "balky", "balsa",
"banns", "basal", "basso", "batik", "batty", "beaus", "becks", "befog",
"begat", "beget", "begot", "belay", "belle", "bergs", "berms", "beryl",
"besom", "besot", "betas", "biddy", "bidet", "biers", "bight", "bilge",
"bilks", "billy", "bleep", "bobby", "bogey", "boggy", "bogie", "bolas",
"boles", "bolls", "boner", "bongs", "bonny", "boozy", "borax", "borer",
"boron", "bower", "bract", "brads", "brigs", "bruin", "bulgy", "bungs",
"bunts", "burgs", "busby", "butch", "cabal", "cadge", "cairn", "calyx",
"campy", "canto", "cants", "capon", "caret", "carom", "carpi", "cavil",
"chary", "chock", "chomp", "churl", "cilia", "civet", "clews", "clomp",
"clops", "cloys", "cocci", "codas", "codex", "coifs", "combo", "comer",
"conch", "conga", "conic", "conks", "coons", "coots", "copra", "copse",
"corms", "cotes", "coupe", "coven", "covey", "cowls", "coyly", "cozen",
"crape", "craws", "creel", "cress", "crier", "crone", "croup", "cruet",
"cubit", "cumin", "cunts", "curer", "curie", "cushy", "cusps", "cutup",
"dacha", "daffy", "dales", "davit", "debar", "deice", "deism", "dells",
"demur", "deuce", "dhoti", "dicta", "dilly", "dingo", "dings", "dinky",
"diode", "dirks", "divan", "divas", "divot", "divvy", "dodos", "doffs",
"doggy", "dogie", "dolts", "dotty", "dowel", "dowse", "doyen", "drams",
"drays", "drubs", "druid", "dryad", "ducal", "ducat", "duchy", "dweeb",
"dyers", "egret", "eider", "elide", "emend", "emery", "emote", "endue",
"ennui", "epoxy", "ester", "euros", "ewers", "faker", "fakir", "fauns",
"femur", "feral", "fiefs", "fifes", "finis", "finks", "finny", "firth",
"fitly", "fixer", "flack", "flays", "floes", "fluky", "flume", "flyby",
"folio", "frump", "fryer", "fugue", "furze", "fusty", "futon", "gaffs",
"gamin", "gauzy", "gazer", "gecko", "gelid", "geode", "gimpy", "girds",
"girts", "gluey", "glyph", "gonad", "gooks", "gorse", "gouty", "grail",
"grebe", "grist", "grout", "guano", "guava", "gulag", "gunny", "gyros",
"hafts", "haiku", "hakes", "hanks", "harpy", "hasps", "hater", "hawed",
"hefts", "helix", "helot", "henna", "hewer", "hexed", "hexes", "hoary",
"hogan", "hokum", "hooch", "hooey", "hooky", "hubby", "hulas", "humus",
"hussy", "hydra", "hying", "hymen", "hypos", "iambs", "icily", "idyll",
"imams", "inapt", "ingot", "inset", "inure", "islet", "jabot", "japan",
"japed", "japes", "jeeps", "jihad", "jimmy", "jinni", "joist", "joule",
"joust", "julep", "junco", "kapok", "kazoo", "kebab", "ketch", "khans",
"kicky", "knave", "knell", "kooks", "kooky", "krone", "krona", "kudzu",
"labia", "laity", "lamas", "larch", "largo", "laxly", "lazed", "lazes",
"lefty", "lemma", "lemur", "licit", "liege", "lifer", "limns", "lipid",
"lisle", "llano", "loamy", "lobed", "locus", "lodes", "loges", "login",
"loopy", "lotto", "louts", "luaus", "lubed", "lubes", "lucre", "lupus",
"macaw", "magma", "mambo", "manna", "manse", "matzo", "maven", "medic",
"mesas", "mewls", "middy", "midge", "milch", "miler", "minim", "misdo",
"mocha", "mogul", "moire", "molls", "moray", "mosey", "motes", "mucky",
"mufti", "murks", "musky", "mussy", "myrrh", "nabob", "nacho", "nacre",
"nadir", "naiad", "natal", "naves", "neath", "nervy", "newel", "nexus",
"nimbi", "ninja", "nixed", "nixes", "nodal", "noddy", "noels", "nonce",
"novae", "novas", "noway", "oaken", "oakum", "oaten", "obits", "octet",
"odium", "offal", "opine", "orate", "osier", "outgo", "outre", "ovoid",
"ovule", "owlet", "oxbow", "paean", "palmy", "palsy", "parry", "pasha",
"patsy", "pawls", "pekoe", "pesos", "pewee", "phial", "phish", "phlox",
"phyla", "piing", "piker", "pilaf", "pinto", "piper", "pipit", "piton",
"plait", "pocks", "poesy", "pones", "poohs", "popes", "poppa", "porno",
"poser", "posit", "poxes", "prate", "prigs", "prosy", "pshaw", "pulpy",
"pupae", "pupal", "purls", "pyxes", "quaff", "quasi", "quids", "quire",
"quoit", "quoth", "ragas", "rajah", "randy", "rangy", "rearm", "rebus",
"reedy", "reeve", "refit", "renal", "rheas", "rheum", "ricks", "riffs",
"rills", "rimed", "rimes", "riven", "roans", "roger", "roils", "roods",
"rosin", "roues", "rover", "rowel", "rower", "rubes", "rumba", "rupee",
"rusks", "sable", "sahib", "saith", "salvo", "samba", "sappy", "sated",
"sates", "satyr", "scamp", "scats", "schwa", "scion", "scone", "scows",
"scrip", "scrod", "scuba", "scuds", "scull", "scurf", "seamy", "sedge",
"seers", "segue", "semis", "senna", "sepal", "sepia", "septa", "serer",
"serfs", "serge", "servo", "shads", "shags", "shahs", "shale", "shalt",
"shank", "shard", "shill", "shims", "shirr", "sibyl", "sisal", "sises",
"sitar", "skeet", "skiff", "slags", "sloes", "sloop", "slued", "slues",
"snaky", "snoot", "sonar", "sonny", "sooth", "soppy", "sough", "soupy",
"souse", "sower", "spake", "specs", "spiky", "spiny", "spoor", "sprat",
"spume", "squab", "squaw", "staph", "stead", "steed", "stein", "sties",
"stile", "stoat", "strep", "strop", "styli", "sudsy", "sully", "sumac",
"sumps", "sushi", "swags", "swain", "swami", "sward", "swash", "swath",
"sylph", "tamps", "tansy", "tapir", "tared", "tares", "taros", "taupe",
"teals", "teary", "techs", "teeny", "telex", "tenon", "terns", "terry",
"thees", "thine", "throe", "thrum", "tibia", "tines", "titan", "tithe",
"toady", "toddy", "toked", "tokes", "toner", "toque", "torte", "torus",
"trams", "tress", "triad", "trice", "trope", "troth", "troys", "truss",
"tryst", "tuber", "tulle", "tumid", "tunny", "tutus", "twain", "twill",
"tyros", "ulnae", "umbel", "umber", "umiak", "umped", "unbar", "unpin",
"unwed", "usury", "uvula", "vales", "vamps", "vapid", "vaunt", "veeps",
"velds", "venal", "vetch", "viand", "viols", "vireo", "vivas", "vixen",
"voile", "voles", "vulva", "wacko", "wader", "wadis", "waled", "wales",
"wanly", "warty", "waxen", "weals", "weepy", "wefts", "weirs", "wench",
"wends", "wetly", "wheal", "whelk", "whelp", "whiny", "whist", "whits",
"whorl", "wight", "wikis", "wiled", "wooer", "wormy", "wrack", "wroth",
"xenon", "xylem", "yahoo", "yawed", "yawls", "yogis", "yucca", "zebus",
"zilch", "zings", "zippy", "zonal", "eclat", "epees", "etude", "aggro",
"aitch", "algal", "ambit", "antsy", "arsed", "baccy", "bairn", "baldy",
"bally", "barmy", "beaut", "beery", "begum", "bendy", "berks", "betel",
"bevvy", "bhaji", "biffs", "bijou", "bitty", "blags", "bloke", "blowy",
"bodge", "bonce", "bonks", "bream", "brill", "bruit", "bumph", "burgh",
"busks", "busty", "butty", "byres", "caber", "caffs", "carer", "carob",
"caver", "celeb", "certs", "chard", "chivy", "chocs", "clonk", "coley",
"coned", "corgi", "coxed", "coxes", "coypu", "croft", "cupid", "cuppa",
"cutey", "cutie", "dagos", "deary", "defog", "demob", "dhows", "dildo",
"dinar", "dippy", "dipso", "dishy", "dodgy", "drear", "ducky", "duffs",
"dumbo", "effed", "expat", "faddy", "faffs", "fatso", "fatwa", "faves",
"fella", "ferny", "flans", "footy", "frigs", "frosh", "fuggy", "gammy",
"ganja", "gator", "gawps", "girly", "giros", "gites", "giver", "glace",
"goers", "goths", "grans", "grump", "gunge", "gungy", "halal", "hammy",
"hoick", "honky", "humph", "hunky", "indie", "innit", "ivied", "jammy",
"jemmy", "jinks", "joeys", "jokey", "jowly", "karts", "kikes", "korma",
"krill", "laird", "latte", "lexis", "lidos", "lilos", "limey", "lings",
"lippy", "locos", "locum", "lolly", "lough", "lours", "lovey", "luges",
"lulus", "lurgy", "mafia", "mamba", "mammy", "manky", "marge", "mater",
"matey", "meany", "meths", "mezzo", "micks", "micro", "mingy", "motet",
"moxie", "muzak", "muzzy", "naans", "narky", "natch", "navvy", "negro",
"niffy", "nimby", "nohow", "nooky", "ocker", "oohed", "oomph", "outta",
"ouzos", "pacey", "pally", "panto", "pappy", "paras", "parky", "peaky",
"peaty", "pekes", "pervs", "pesto", "piney", "pinko", "pinny", "piste",
"pitas", "pitta", "plebe", "plebs", "plonk", "polys", "pommy", "ponce",
"poncy", "pongs", "pooed", "poofs", "porky", "poufs", "prams", "prang",
"prats", "prion", "prole", "pubes", "pubis", "pukka", "pzazz", "quiff",
"quins", "quint", "ragga", "ranee", "raver", "recce", "recon", "recto",
"rejig", "remix", "resat", "resit", "retro", "rondo", "rotas", "roust",
"rowan", "rucks", "runic", "sadhu", "saggy", "samey", "sarge", "sarky",
"satay", "savoy", "scarp", "scree", "scrum", "sebum", "serif", "setts",
"sicko", "sines", "skint", "skive", "skuas", "smogs", "snick", "snogs",
"souks", "spams", "spics", "spiff", "spivs", "sprog", "squib", "stagy",
"steno", "stoup", "swede", "swizz", "swots", "tapas", "tarns", "tarty",
"tater", "teddy", "telly", "tench", "tiler", "titch", "titty", "toffs",
"topee", "trews", "trier", "trugs", "tuque", "turbo", "turps", "twats",
"twixt", "unlit", "unmet", "veges", "velar", "verso", "voila", "wadge",
"wally", "wanks", "wazoo", "weeny", "welly", "whops", "whups", "willy",
"wised", "wodge", "wolds", "wonks", "wonky", "xerox", "yetis", "yikes",
"yobbo", "yogic", "yonks", "yukky", "zappy", "zines", "zingy",
/* nonsense words to provoke a non-magic solution */
"abcde", "fghij", "klmno", "pqrst", "uvwxy",
"afkpu", "bglqv", "chmrw", "dinsx", "ejoty",
NULL
};
typedef struct Grid Grid;
struct Grid {
const Trie *row[5];
const Trie *col[5];
unsigned cell;
char grid[5][5];
unsigned order[25][26];
};
void grid_dump(const Grid *grid)
{
printf("%.5s\n", grid
->grid
[0]); printf("%.5s\n", grid
->grid
[1]); printf("%.5s\n", grid
->grid
[2]); printf("%.5s\n", grid
->grid
[3]); printf("%.5s\n", grid
->grid
[4]); }
int trie_cmp (const void *pa, const void *pb)
{
const void *const *a = pa;
const void *const *b = pb;
return (*a > *b) - (*a < *b);
}
int grid_different(const Grid *grid)
{
const Trie *words[10];
unsigned i;
for (i = 0; i < 5; i++) {
words[i] = grid->row[i];
words[i + 5] = grid->col[i];
}
qsort(words
, 10, sizeof(*words
), trie_cmp
);
for (i = 1; i < 10; i++) {
if (words[i] == words[i - 1]) {
return 0;
}
}
return 1;
}
int grid_find(Grid *grid)
{
if (grid->cell == 5 * 5) {
if (grid_different(grid)) {
grid_dump(grid);
return 1;
}
} else {
const unsigned *order = grid->order[grid->cell];
unsigned i = grid->cell % 5;
unsigned j = grid->cell / 5;
unsigned u;
const Trie *row = grid->row[j];
const Trie *col = grid->col[i];
grid->cell++;
for (u = 0; u < 26; u++) {
unsigned c = order[u];
if (row->next[c] && col->next[c]) {
grid->grid[j][i] = 'A' + c;
grid->row[j] = row->next[c];
grid->col[i] = col->next[c];
if (grid_find(grid)) return 1;
}
}
grid->cell--;
grid->row[j] = row;
grid->col[i] = col;
}
return 0;
}
void init_shuffled(unsigned *order)
{
unsigned i;
for (i = 0; i < 26; i++) {
order[i] = i;
}
i = 26;
while (i) {
unsigned pick
= rand() % i
--; unsigned swap = order[i];
order[i] = order[pick];
order[pick] = swap;
}
}
void find(const Trie *t)
{
Grid grid = {{t, t, t, t, t}, {t, t, t, t, t}};
unsigned i;
for (i = 0; i < 5 * 5; i++) {
init_shuffled(grid.order[i]);
}
grid_find(&grid);
}
int main(void)
{
Trie *t = trie_from(data);
find(t);
trie_destroy(t);
return 0;
}
CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHRpbWUuaD4KCnR5cGVkZWYgc3RydWN0IFRyaWUgVHJpZTsKCnN0cnVjdCBUcmllIHsKICAgIGludCBlbmQ7CiAgICBUcmllICpuZXh0WzI2XTsKfTsKCnVuc2lnbmVkIHRyaWVfaW5kZXgoaW50IGMpCnsKICAgIHVuc2lnbmVkIHUgPSBjIC0gNjU7CiAgICAKICAgIGlmICh1IDwgNjQpIHsKICAgICAgICB1ID0gdSAmIDB4MWY7CiAgICAgICAgCiAgICAgICAgaWYgKHUgPCAyNikgcmV0dXJuIHU7CiAgICB9CiAgICAKICAgIHJldHVybiB+MHU7Cn0KCnZvaWQgdHJpZV9pbnNlcnQoVHJpZSAqKnQsIGNvbnN0IGNoYXIgKnApCnsKICAgIHdoaWxlICgqcCkgewogICAgICAgIHVuc2lnbmVkIHUgPSB0cmllX2luZGV4KCpwKyspOwogICAgICAgIAogICAgICAgIGlmICh1IDwgMjYpIHsKICAgICAgICAgICAgaWYgKCp0ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICp0ID0gY2FsbG9jKDEsIHNpemVvZigqKnQpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgdCA9ICYoKnQpLT5uZXh0W3VdOwogICAgICAgIH0KICAgIH0KICAgIAogICAgaWYgKCp0ID09IE5VTEwpIHsKICAgICAgICAqdCA9IGNhbGxvYygxLCBzaXplb2YoKip0KSk7CiAgICB9CiAgICAKICAgICgqdCktPmVuZCA9IDE7Cn0KClRyaWUgKnRyaWVfZnJvbShjb25zdCBjaGFyICoqZGF0YSkKewogICAgVHJpZSAqdCA9IE5VTEw7CgogICAgd2hpbGUgKCpkYXRhKSB7CiAgICAgICAgdHJpZV9pbnNlcnQoJnQsICpkYXRhKyspOwogICAgfQogICAgCiAgICByZXR1cm4gdDsKfQoKdm9pZCB0cmllX2Rlc3Ryb3koVHJpZSAqdCkKewogICAgaWYgKHQpIHsKICAgICAgICB1bnNpZ25lZCBpOwogICAgICAgIAogICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNjsgaSsrKSB7CiAgICAgICAgICAgIHRyaWVfZGVzdHJveSh0LT5uZXh0W2ldKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZnJlZSh0KTsKICAgIH0KfQoKY29uc3QgY2hhciAqZGF0YVtdID0gewogICAgImFib3V0IiwgImFib3ZlIiwgImFidXNlIiwgImFjdGVkIiwgImFkZGVkIiwgImFkbWl0IiwgImFkb3B0IiwgImFmdGVyIiwKICAgICJhZ2FpbiIsICJhZ3JlZSIsICJhaGVhZCIsICJhaW1lZCIsICJhbGFybSIsICJhbGJ1bSIsICJhbGlhcyIsICJhbGl2ZSIsCiAgICAiYWxsb3ciLCAiYWxvbmUiLCAiYWxvbmciLCAiYWx0ZXIiLCAiYW11c2UiLCAiYW5nbGUiLCAiYW5ncnkiLCAiYW5ub3kiLAogICAgImFwYXJ0IiwgImFwcGxlIiwgImFwcGx5IiwgImFyZWFzIiwgImFyZ3VlIiwgImFyaXNlIiwgImFzaWRlIiwgImFza2VkIiwKICAgICJhdm9pZCIsICJhd2FrZSIsICJhd2FyZCIsICJhd2FyZSIsICJhd2Z1bCIsICJiYWNrcyIsICJiYWRseSIsICJiYXNlZCIsCiAgICAiYmFzZXMiLCAiYmFzaWMiLCAiYmFzaXMiLCAiYmVhcnMiLCAiYmVnYW4iLCAiYmVnaW4iLCAiYmVndW4iLCAiYmVpbmciLAogICAgImJlbG93IiwgImJpbmRzIiwgImJpdGVzIiwgImJsYWNrIiwgImJsYW1lIiwgImJsYW5rIiwgImJsb2NrIiwgImJvYXJkIiwKICAgICJib29rcyIsICJib3JuZSIsICJib3VuZCIsICJib3hlcyIsICJicmFuZCIsICJicmVhayIsICJicmllZiIsICJicmluZyIsCiAgICAiYnJva2UiLCAiYnJvd24iLCAiYnVpbGQiLCAiYnVpbHQiLCAiYnl0ZXMiLCAiY2FsbHMiLCAiY2FyZHMiLCAiY2FyZXMiLAogICAgImNhcnJ5IiwgImNhc2VzIiwgImNhdGNoIiwgImNhdXNlIiwgImNlYXNlIiwgImNoYWluIiwgImNoYWlyIiwgImNoYW9zIiwKICAgICJjaGFycyIsICJjaGVhcCIsICJjaGVjayIsICJjaGlsZCIsICJjaGlwcyIsICJjaG9zZSIsICJjbGFpbSIsICJjbGFzcyIsCiAgICAiY2xlYW4iLCAiY2xlYXIiLCAiY2xvY2siLCAiY2xvc2UiLCAiY29kZWQiLCAiY29kZXMiLCAiY29tZXMiLCAiY29zdHMiLAogICAgImNvdWxkIiwgImNvdW50IiwgImNvdXJ0IiwgImNvdmVyIiwgImNyYXNoIiwgImNyYXp5IiwgImNyaXNwIiwgImNyb3NzIiwKICAgICJjeWNsZSIsICJkYWlseSIsICJkYXRlZCIsICJkYXRlcyIsICJkYXR1bSIsICJkZWFscyIsICJkZWFsdCIsICJkZWF0aCIsCiAgICAiZGVlbXMiLCAiZGVsYXkiLCAiZGVwdGgiLCAiZGlnaXQiLCAiZGlydHkiLCAiZGlzY3MiLCAiZGl0dG8iLCAiZG9pbmciLAogICAgImRvb3JzIiwgImRvdWJ0IiwgImRvemVuIiwgImRyYXduIiwgImRyYXdzIiwgImRyZWFtIiwgImRyaW5rIiwgImRyaXZlIiwKICAgICJkcm9wcyIsICJkcm92ZSIsICJkeWluZyIsICJlYXJseSIsICJlYXJ0aCIsICJlYXRlbiIsICJlZGl0cyIsICJlaWdodCIsCiAgICAiZWxlY3QiLCAiZW1wdHkiLCAiZW5kZWQiLCAiZW5lbXkiLCAiZW5qb3kiLCAiZW50ZXIiLCAiZW50cnkiLCAiZXF1YWwiLAogICAgImVycm9yIiwgImV2ZW5zIiwgImV2ZW50IiwgImV2ZXJ5IiwgImV4YWN0IiwgImV4aXN0IiwgImV4dHJhIiwgImZhY3RzIiwKICAgICJmYWlscyIsICJmYWl0aCIsICJmYWxscyIsICJmYWxzZSIsICJmYW5jeSIsICJmYXRhbCIsICJmYXVsdCIsICJmZWVkcyIsCiAgICAiZmVlbHMiLCAiZmV3ZXIiLCAiZmllbGQiLCAiZmlnaHQiLCAiZmlsZWQiLCAiZmlsZXMiLCAiZmlsbHMiLCAiZmluYWwiLAogICAgImZpbmRzIiwgImZpcnN0IiwgImZpeGVkIiwgImZpeGVzIiwgImZsYXNoIiwgImZsaWVkIiwgImZsaWVzIiwgImZsb2F0IiwKICAgICJmbG9vciIsICJmbG93biIsICJmb2xrcyIsICJmb3JjZSIsICJmb3JtcyIsICJmb3J0aCIsICJmb3VuZCIsICJmcmFtZSIsCiAgICAiZnJlc2giLCAiZnJpZXMiLCAiZnJvbnQiLCAiZnVsbHkiLCAiZnVuZHMiLCAiZnVubnkiLCAiZ2FpbnMiLCAiZ2FtZXMiLAogICAgImdpdmVuIiwgImdpdmVzIiwgImdsYXNzIiwgImdvaW5nIiwgImdvb2RzIiwgImdyYW5kIiwgImdyYW50IiwgImdyYXBoIiwKICAgICJncmF2ZSIsICJncmVhdCIsICJncmVlbiIsICJncmluZCIsICJncm9zcyIsICJncm91cCIsICJncm93biIsICJncm93cyIsCiAgICAiZ3VhcmQiLCAiZ3Vlc3MiLCAiZ3VpZGUiLCAiaGFiaXQiLCAiaGFuZHMiLCAiaGFuZHkiLCAiaGFuZ3MiLCAiaGFwcHkiLAogICAgImhlYWRzIiwgImhlYXJkIiwgImhlYXJzIiwgImhlYXJ0IiwgImhlYXZ5IiwgImhlbGxvIiwgImhlbHBzIiwgImhlbmNlIiwKICAgICJoaWRlcyIsICJoaW50cyIsICJob2xkcyIsICJob2xlcyIsICJob3BlZCIsICJob3BlcyIsICJob3JzZSIsICJob3RlbCIsCiAgICAiaG91cnMiLCAiaG91c2UiLCAiaHVtYW4iLCAiaHVycnkiLCAiaWRlYWwiLCAiaWRlYXMiLCAiaW1hZ2UiLCAiaW1wbHkiLAogICAgImluZGV4IiwgImlubmVyIiwgImlucHV0IiwgImlzc3VlIiwgIml0ZW1zIiwgImpvaW5zIiwgImpvaW50IiwgImp1ZGdlIiwKICAgICJqdW1wcyIsICJrZWVwcyIsICJraWxscyIsICJraW5kcyIsICJrbm9jayIsICJrbm93biIsICJrbm93cyIsICJsYWJlbCIsCiAgICAibGFja3MiLCAibGFuZHMiLCAibGFyZ2UiLCAibGFzdHMiLCAibGF0ZXIiLCAibGVhY2giLCAibGVhZHMiLCAibGVhcm4iLAogICAgImxlYXN0IiwgImxlYXZlIiwgImxlZ2FsIiwgImxldmVsIiwgImxpZ2h0IiwgImxpa2VkIiwgImxpa2VzIiwgImxpbWl0IiwKICAgICJsaW5lcyIsICJsaW5rcyIsICJsaXN0cyIsICJsaXZlZCIsICJsaXZlcyIsICJsb2FkcyIsICJsb2NhbCIsICJsb2NrcyIsCiAgICAibG9naWMiLCAibG9va3MiLCAibG9vc2UiLCAibG9ycnkiLCAibG9zZXMiLCAibG93ZXIiLCAibHVja3kiLCAibHVuY2giLAogICAgImx5aW5nIiwgIm1hZ2ljIiwgIm1ham9yIiwgIm1ha2VzIiwgIm1hcmNoIiwgIm1hcmtzIiwgIm1hcnJ5IiwgIm1hdGNoIiwKICAgICJtYXliZSIsICJtZWFucyIsICJtZWFudCIsICJtZWRpYSIsICJtZWV0cyIsICJtZXJpdCIsICJtZXNzeSIsICJtZXRhbCIsCiAgICAibWlnaHQiLCAibWlsZXMiLCAibWluZHMiLCAibWlub3IiLCAibWl4ZWQiLCAibWl4ZXMiLCAibW9kZWwiLCAibW9uZXkiLAogICAgIm1vbnRoIiwgIm1vcmFsIiwgIm1vdXRoIiwgIm1vdmVkIiwgIm1vdmVzIiwgIm1vdmllIiwgIm11c2ljIiwgIm5haXZlIiwKICAgICJuYW1lZCIsICJuYW1lcyIsICJuYXN0eSIsICJuZWVkcyIsICJuZXZlciIsICJuaWNlciIsICJuaWdodCIsICJub2lzZSIsCiAgICAibm9pc3kiLCAibm9ydGgiLCAibm90ZWQiLCAibm90ZXMiLCAibm92ZWwiLCAib2NjdXIiLCAib2ZmZXIiLCAib2Z0ZW4iLAogICAgIm9sZGVyIiwgIm9taXRzIiwgIm9wZW5zIiwgIm9yZGVyIiwgIm90aGVyIiwgIm91Z2h0IiwgIm91dGVyIiwgIm93aW5nIiwKICAgICJvd25lciIsICJwYWdlcyIsICJwYWlycyIsICJwYXBlciIsICJwYXJ0cyIsICJwYXJ0eSIsICJwYXRjaCIsICJwYXVzZSIsCiAgICAicGF5ZWQiLCAicGVhY2UiLCAicGhhc2UiLCAicGhvbmUiLCAicGlja3MiLCAicGllY2UiLCAicGxhY2UiLCAicGxhaW4iLAogICAgInBsYW5lIiwgInBsYW5zIiwgInBsYW50IiwgInBsYXlzIiwgInBsb3RzIiwgInBvaW50IiwgInBvc3RzIiwgInBvdW5kIiwKICAgICJwb3dlciIsICJwcmVzcyIsICJwcmljZSIsICJwcmltZSIsICJwcmludCIsICJwcmlvciIsICJwcm9uZSIsICJwcm9vZiIsCiAgICAicHJvdmUiLCAicHVsbHMiLCAicHV0dHMiLCAicXVldWUiLCAicXVpY2siLCAicXVpZXQiLCAicXVpdGUiLCAicXVpdHMiLAogICAgInF1b3RlIiwgInJhZGlvIiwgInJhaXNlIiwgInJhbmdlIiwgInJhcGlkIiwgInJhdGVzIiwgInJlYWNoIiwgInJlYWN0IiwKICAgICJyZWFkcyIsICJyZWFkeSIsICJyZWZlciIsICJyZXBseSIsICJyaWdodCIsICJyaXZlciIsICJyb29tcyIsICJyb3VnaCIsCiAgICAicm91bmQiLCAicm91dGUiLCAicnVsZXMiLCAic2FkbHkiLCAic2FmZXIiLCAic2FpbnQiLCAic2FsZXMiLCAic2F2ZWQiLAogICAgInNhdmVzIiwgInNjYWxlIiwgInNjZW5lIiwgInNjb3JlIiwgInNjcmFwIiwgInNlZWtzIiwgInNlZW1zIiwgInNlbGxzIiwKICAgICJzZW5kcyIsICJzZW5zZSIsICJzZXJ2ZSIsICJzZXZlbiIsICJzaGFsbCIsICJzaGFtZSIsICJzaGFwZSIsICJzaGFyZSIsCiAgICAic2hhcnAiLCAic2hlZXQiLCAic2hlbGYiLCAic2hlbGwiLCAic2hpZnQiLCAic2hvb3QiLCAic2hvcHMiLCAic2hvcnQiLAogICAgInNob3duIiwgInNob3dzIiwgInNodXRzIiwgInNpZGVzIiwgInNpZ2h0IiwgInNpZ25zIiwgInNpbGx5IiwgInNpbmNlIiwKICAgICJzaXRlcyIsICJzaXplcyIsICJza2lsbCIsICJzbGVlcCIsICJzbWFsbCIsICJzbWlsZSIsICJzb2xpZCIsICJzb2x2ZSIsCiAgICAic29ycnkiLCAic29ydHMiLCAic291bmQiLCAic291dGgiLCAic3BhY2UiLCAic3BhcmUiLCAic3BlYWsiLCAic3BlZWQiLAogICAgInNwZWxsIiwgInNwZW5kIiwgInNwZW50IiwgInNwaXRlIiwgInNwbGl0IiwgInNwb2tlIiwgInNwb3RzIiwgInN0YWZmIiwKICAgICJzdGFnZSIsICJzdGFuZCIsICJzdGFydCIsICJzdGF0ZSIsICJzdGF5cyIsICJzdGVhbCIsICJzdGljayIsICJzdGlsbCIsCiAgICAic3RvY2siLCAic3RvbmUiLCAic3Rvb2QiLCAic3RvcHMiLCAic3RvcmUiLCAic3RvcnkiLCAic3R1Y2siLCAic3R1ZHkiLAogICAgInN0dWZmIiwgInN0eWxlIiwgInN1Z2FyIiwgInN1aXRzIiwgInRhYmxlIiwgInRha2VuIiwgInRha2VzIiwgInRhbGtzIiwKICAgICJ0YW5rcyIsICJ0YXBlcyIsICJ0YXNrcyIsICJ0YXN0ZSIsICJ0ZWFjaCIsICJ0ZWV0aCIsICJ0ZWxscyIsICJ0ZW5kcyIsCiAgICAidGVybXMiLCAidGVzdHMiLCAidGhhbmsiLCAidGhlaXIiLCAidGhlcmUiLCAidGhlc2UiLCAidGhpbmciLCAidGhpbmsiLAogICAgInRoaXJkIiwgInRob3NlIiwgInRocmVlIiwgInRocmV3IiwgInRocm93IiwgInRpZ2h0IiwgInRpbWVkIiwgInRpbWVzIiwKICAgICJ0aXRsZSIsICJ0b2RheSIsICJ0b2tlbiIsICJ0b290aCIsICJ0b3BpYyIsICJ0b3RhbCIsICJ0b3VjaCIsICJ0cmFjZSIsCiAgICAidHJhY2siLCAidHJhaW4iLCAidHJhcHMiLCAidHJhc2giLCAidHJlYXQiLCAidHJlZXMiLCAidHJpYWwiLCAidHJpY2siLAogICAgInRyaWVkIiwgInRyaWVzIiwgInRydWNrIiwgInRydWx5IiwgInRydW5rIiwgInRydXN0IiwgInRydXRoIiwgInR1cm5zIiwKICAgICJ0d2ljZSIsICJ0eWluZyIsICJ0eXBlZCIsICJ0eXBlcyIsICJ1bmRlciIsICJ1bml0ZSIsICJ1bml0cyIsICJ1bnRpbCIsCiAgICAidXBwZXIiLCAidXBzZXQiLCAidXNhZ2UiLCAidXNlcnMiLCAidXNpbmciLCAidXN1YWwiLCAidmFndWUiLCAidmFsaWQiLAogICAgInZhbHVlIiwgInZpZGVvIiwgInZpZXdzIiwgInZpc2l0IiwgInZpdGFsIiwgInZvaWNlIiwgInZvdGVzIiwgIndhaXRzIiwKICAgICJ3YWxrcyIsICJ3YWxscyIsICJ3YW50cyIsICJ3YXJucyIsICJ3YXN0ZSIsICJ3YXRjaCIsICJ3YXRlciIsICJ3ZWFycyIsCiAgICAid2Vla3MiLCAid2VpcmQiLCAid2hlZWwiLCAid2hlcmUiLCAid2hpY2giLCAid2hpbGUiLCAid2hpdGUiLCAid2hvbGUiLAogICAgIndob3NlIiwgIndpZGVyIiwgIndpbGxzIiwgIndvbWFuIiwgIndvbWVuIiwgIndvcmRzIiwgIndvcmtzIiwgIndvcmxkIiwKICAgICJ3b3JyeSIsICJ3b3JzZSIsICJ3b3JzdCIsICJ3b3J0aCIsICJ3b3VsZCIsICJ3cml0ZSIsICJ3cm9uZyIsICJ3cm90ZSIsCiAgICAieWVhcnMiLCAieW91bmciLCAieW91cnMiLCAiYWJpZGUiLCAiYWJvcnQiLCAiYWNvcm4iLCAiYWN0b3IiLCAiYWN1dGUiLAogICAgImFkYXB0IiwgImFkdWx0IiwgImFnZW50IiwgImFnb255IiwgImFpZGVkIiwgImFsZXJ0IiwgImFsaWVuIiwgImFsaWduIiwKICAgICJhbGlrZSIsICJhbG91ZCIsICJhbHBoYSIsICJhbWF6ZSIsICJhbWJlciIsICJhbWVuZCIsICJhbXBsZSIsICJhbmdlbCIsCiAgICAiYW5nZXIiLCAiYXJlbmEiLCAiYXJtZWQiLCAiYXJvc2UiLCAiYXJyYXkiLCAiYXJyb3ciLCAiYXNoZXMiLCAiYXNzZXQiLAogICAgImF0bGFzIiwgImF0b21zIiwgImF1ZGlvIiwgImF3YWl0IiwgImF4aW9tIiwgImJhZGdlIiwgImJha2VkIiwgImJha2VzIiwKICAgICJiYWxscyIsICJiYW5hbCIsICJiYW5kcyIsICJiYW5rcyIsICJiYXJrcyIsICJiYXRjaCIsICJiYXRocyIsICJiZWFjaCIsCiAgICAiYmVhbnMiLCAiYmVhcmQiLCAiYmVhc3QiLCAiYmVhdHMiLCAiYmVlcnMiLCAiYmVsbHMiLCAiYmVuY2giLCAiYmVuZHMiLAogICAgImJpYmxlIiwgImJpZ290IiwgImJpbGxzIiwgImJpcmRzIiwgImJpcnRoIiwgImJsYWRlIiwgImJsYXN0IiwgImJsZXNzIiwKICAgICJibGluZCIsICJibGluayIsICJibGlzcyIsICJibG9vZCIsICJibG93biIsICJibG93cyIsICJibHVlcyIsICJibHVyYiIsCiAgICAiYm9hdHMiLCAiYm9ndXMiLCAiYm9pbHMiLCAiYm9tYnMiLCAiYm9uZXMiLCAiYm9udXMiLCAiYm9vc3QiLCAiYm9vdHMiLAogICAgImJvcmVkIiwgImJvcmVzIiwgImJyYWluIiwgImJyYWtlIiwgImJyYXNzIiwgImJyYXZlIiwgImJyZWFkIiwgImJyZWVkIiwKICAgICJicmljayIsICJicm9hZCIsICJicnVzaCIsICJidWNrcyIsICJidWxicyIsICJidW5jaCIsICJidXJucyIsICJidXJudCIsCiAgICAiYnVyc3QiLCAiYnV5ZXIiLCAiY2FibGUiLCAiY2FrZXMiLCAiY2FtcHMiLCAiY2FyZWQiLCAiY2FzZWQiLCAiY2FzdHMiLAogICAgImNhdGVyIiwgImNlbGxzIiwgImNoYWxrIiwgImNoYXBzIiwgImNoYXJtIiwgImNoYXJ0IiwgImNoYXNlIiwgImNoYXRzIiwKICAgICJjaGVhdCIsICJjaGVlayIsICJjaGVlciIsICJjaGVzcyIsICJjaGVzdCIsICJjaGV3cyIsICJjaGllZiIsICJjaG9pciIsCiAgICAiY2hvcHMiLCAiY2hvcmQiLCAiY2h1Y2siLCAiY2h1bmsiLCAiY2lkZXIiLCAiY2lyY2EiLCAiY2l0ZWQiLCAiY2l0ZXMiLAogICAgImNpdmlsIiwgImNsYXNoIiwgImNsaWNrIiwgImNsaWZmIiwgImNsaW1iIiwgImNsaXBzIiwgImNsb25lIiwgImNsb3RoIiwKICAgICJjbG91ZCIsICJjbHVicyIsICJjbHVlcyIsICJjb2FjaCIsICJjb2FzdCIsICJjb2F0cyIsICJjb2lucyIsICJjb2xvbiIsCiAgICAiY29taWMiLCAiY29tbWEiLCAiY29va3MiLCAiY29vbHMiLCAiY29wZWQiLCAiY29wZXMiLCAiY291Z2giLCAiY3JhY2siLAogICAgImNyYWZ0IiwgImNyYW1wIiwgImNyYXNzIiwgImNyYXdsIiwgImNyZWFtIiwgImNyZWVkIiwgImNyZWVwIiwgImNyaWVkIiwKICAgICJjcmllcyIsICJjcmltZSIsICJjcm9wcyIsICJjcm93ZCIsICJjcm93biIsICJjcnVkZSIsICJjcnVlbCIsICJjcnVzaCIsCiAgICAiY3ViaWMiLCAiY3VyZWQiLCAiY3VyZXMiLCAiY3VybHkiLCAiY3VycnkiLCAiY3Vyc2UiLCAiY3VydmUiLCAiY3luaWMiLAogICAgImRhbW5zIiwgImRhbmNlIiwgImRhcmVkIiwgImRhcmVzIiwgImRlYnVnIiwgImRlY2F5IiwgImRlZWRzIiwgImRlaXR5IiwKICAgICJkZWx0YSIsICJkZW5zZSIsICJkZXRlciIsICJkZXZpbCIsICJkaWFscyIsICJkaWFyeSIsICJkaW5lZCIsICJkaW5lciIsCiAgICAiZGluZXMiLCAiZGlzY28iLCAiZGl0Y2giLCAiZGl2ZWQiLCAiZGl2ZXMiLCAiZG9kZ2UiLCAiZG9nbWEiLCAiZG9vbXMiLAogICAgImRvc2VzIiwgImRyYWZ0IiwgImRyYWdzIiwgImRyYWluIiwgImRyYW1hIiwgImRyYW5rIiwgImRyZWFkIiwgImRyZXNzIiwKICAgICJkcmllZCIsICJkcmllcyIsICJkcmlmdCIsICJkcmlsbCIsICJkcmlwcyIsICJkcm93biIsICJkcnVncyIsICJkcnVtcyIsCiAgICAiZHJ1bmsiLCAiZHVja3MiLCAiZHVtbXkiLCAiZHVtcHMiLCAiZHVzdHkiLCAiZWFnZXIiLCAiZWFnbGUiLCAiZWFybnMiLAogICAgImVhdGVyIiwgImVkZ2VzIiwgImVsaXRlIiwgImVtYmVkIiwgImVxdWlwIiwgImVyYXNlIiwgImVzc2F5IiwgImV0aGljIiwKICAgICJldmlscyIsICJleGFtcyIsICJleGl0cyIsICJmYWNlZCIsICJmYWNlcyIsICJmYWludCIsICJmYWlyeSIsICJmYXJjZSIsCiAgICAiZmVhcnMiLCAiZmVuY2UiLCAiZmV0Y2giLCAiZmV2ZXIiLCAiZmlmdGgiLCAiZmlmdHkiLCAiZmlsbXMiLCAiZmluZWQiLAogICAgImZpbmVyIiwgImZpbmVzIiwgImZpcmVkIiwgImZpcmVzIiwgImZpcm1zIiwgImZpdmVyIiwgImZpenp5IiwgImZsYWdzIiwKICAgICJmbGFtZSIsICJmbGF3cyIsICJmbGVldCIsICJmbGVzaCIsICJmbGlwcyIsICJmbG9vZCIsICJmbG91ciIsICJmbG93cyIsCiAgICAiZmx1aWQiLCAiZmx1c2giLCAiZmx1dGUiLCAiZm9jdXMiLCAiZm9sZHMiLCAiZm9udHMiLCAiZm9vZHMiLCAiZm9vbHMiLAogICAgImZvcnR5IiwgImZvcnVtIiwgImZyYW5rIiwgImZyYXVkIiwgImZyZWFrIiwgImZyZWVkIiwgImZyZWVzIiwgImZyaWVkIiwKICAgICJmcm9ncyIsICJmcm93biIsICJmcm96ZSIsICJmcnVpdCIsICJmdWRnZSIsICJmdW1lcyIsICJmdXJyeSIsICJmdXNzeSIsCiAgICAiZnV6enkiLCAiZ2F0ZXMiLCAiZ2VhcnMiLCAiZ2VuZXMiLCAiZ2VucmUiLCAiZ2hvc3QiLCAiZ2lhbnQiLCAiZ2lmdHMiLAogICAgImdpcmxzIiwgImdsZWFuIiwgImdsb3J5IiwgImdsb3ZlIiwgImdsb3dzIiwgImdub21lIiwgImdvYWxzIiwgImdvb2R5IiwKICAgICJncmFicyIsICJncmFjZSIsICJncmFkZSIsICJncmFpbiIsICJncmFzcCIsICJncmFzcyIsICJncmVlZCIsICJncmllZiIsCiAgICAiZ3JpcHMiLCAiZ3JvYW4iLCAiZ3Vlc3QiLCAiZ3VpbHQiLCAiaGFja3MiLCAiaGFpcnMiLCAiaGFpcnkiLCAiaGFsbHMiLAogICAgImhhbHRzIiwgImhhbHZlIiwgImhhcmR5IiwgImhhcnNoIiwgImhhc3R5IiwgImhhdGVkIiwgImhhdGVzIiwgImhhdm9jIiwKICAgICJoZWF0cyIsICJoZWVscyIsICJoaWRlZCIsICJoaWxscyIsICJoaXJlZCIsICJoaXJlcyIsICJob2JieSIsICJob21lcyIsCiAgICAiaG9uZXkiLCAiaG9va3MiLCAiaG9yZGUiLCAiaG9zdHMiLCAiaHVudHMiLCAiaHVydHMiLCAiaWNvbnMiLCAiaWRpb20iLAogICAgImlkaW90IiwgImluYW5lIiwgImluY3VyIiwgImluZmVyIiwgImludGVyIiwgImlyYXRlIiwgImlyb255IiwgImplYW5zIiwKICAgICJqZWxseSIsICJqb2tlZCIsICJqb2tlcyIsICJqb2xseSIsICJqdWljZSIsICJrZXllZCIsICJraWNrcyIsICJraW5ncyIsCiAgICAia25lZXMiLCAia25pZmUiLCAibGFnZXIiLCAibGFzZXIiLCAibGF1Z2giLCAibGF5ZXIiLCAibGVhbnMiLCAibGVtb24iLAogICAgImxlbmRzIiwgImxpYmVsIiwgImxpZnRzIiwgImxpbWJzIiwgImxpbmVkIiwgImxpdmVyIiwgImxvYW5zIiwgImxvYmJ5IiwKICAgICJsb2RnZSIsICJsb29wcyIsICJsb3JkcyIsICJsb3VzeSIsICJsb3ZlZCIsICJsb3ZlciIsICJsb3ZlcyIsICJsb3lhbCIsCiAgICAibHVtcHMiLCAibHVuZ3MiLCAibHVya3MiLCAibHlyaWMiLCAibWFpbHMiLCAibWFpbnMiLCAibWFpemUiLCAibWFrZXIiLAogICAgIm1hbGVzIiwgIm1hbmlhIiwgIm1heW9yIiwgIm1lYWxzIiwgIm1lbmRzIiwgIm1lbnVzIiwgIm1lcmN5IiwgIm1lcmdlIiwKICAgICJtZXJyeSIsICJtZXRlciIsICJtZXRybyIsICJtaW1pYyIsICJtaW5lZCIsICJtaW5lcyIsICJtaW51cyIsICJtaXN0cyIsCiAgICAibW9hbnMiLCAibW9kZXMiLCAibW9vbnMiLCAibW9yb24iLCAibW90b3IiLCAibW90dG8iLCAibW91bnQiLCAibW91c2UiLAogICAgIm11Y2tzIiwgIm11bW15IiwgIm15dGhzIiwgIm5haWxzIiwgIm5ha2VkIiwgIm5lcnZlIiwgIm5lc3RzIiwgIm5ld2VyIiwKICAgICJuZXdseSIsICJuaWNrcyIsICJub2JsZSIsICJub2RlcyIsICJub3NlcyIsICJub3VucyIsICJudXJzZSIsICJvYmV5cyIsCiAgICAib2NlYW4iLCAib2RkbHkiLCAib25pb24iLCAib3BlcmEiLCAib3B0ZWQiLCAib3B0aWMiLCAib3JiaXQiLCAib3JnYW4iLAogICAgIm93bmVkIiwgIm96b25lIiwgInBhY2tzIiwgInBhZ2VkIiwgInBhaW5zIiwgInBhaW50IiwgInBhbmVsIiwgInBhbmljIiwKICAgICJwYW50cyIsICJwYXJrcyIsICJwYXJzZSIsICJwYXN0ZSIsICJwYXRocyIsICJwZWFrcyIsICJwZWRhbCIsICJwZWVycyIsCiAgICAicGVuY2UiLCAicGVuZHMiLCAicGVubnkiLCAicGV0dHkiLCAicGhvdG8iLCAicGlhbm8iLCAicGlsZXMiLCAicGlsbHMiLAogICAgInBpbG90IiwgInBpbmNoIiwgInBpbnRzIiwgInBpcGVzIiwgInBpdGNoIiwgInBpenphIiwgInBsYXRlIiwgInBsdWdzIiwKICAgICJwb2VtcyIsICJwb2V0cyIsICJwb2xhciIsICJwb2xscyIsICJwb3J0cyIsICJwb3NlZCIsICJwb3NlcyIsICJwb3VycyIsCiAgICAicHJheXMiLCAicHJpZGUiLCAicHJpemUiLCAicHJvc2UiLCAicHJvdWQiLCAicHVsc2UiLCAicHVtcHMiLCAicHVuY2giLAogICAgInB1bnRzIiwgInB1cGlsIiwgInB1cmdlIiwgInF1ZWVuIiwgInF1ZXJ5IiwgInF1ZXN0IiwgInF1b3RhIiwgInJhYmlkIiwKICAgICJyYWNlZCIsICJyYWNlcyIsICJyYWNrcyIsICJyYWRhciIsICJyYWlkcyIsICJyYWlscyIsICJyYWlucyIsICJyYW5rcyIsCiAgICAicmFudHMiLCAicmFyZXIiLCAicmF0ZWQiLCAicmF0aW8iLCAicmF2ZWQiLCAicmF2ZXMiLCAicmF6b3IiLCAicmVhbG0iLAogICAgInJlaWduIiwgInJlbGF4IiwgInJlbGF5IiwgInJlbmRzIiwgInJlbmV3IiwgInJlc2V0IiwgInJlc3RzIiwgInJldXNlIiwKICAgICJyaHltZSIsICJyaWRlcyIsICJyaWdpZCIsICJyaW5ncyIsICJyaXNlbiIsICJyaXNlcyIsICJyaXNrcyIsICJyaXNreSIsCiAgICAicml2YWwiLCAicm9hZHMiLCAicm9ib3QiLCAicm9ja3MiLCAicm9sZXMiLCAicm9sbHMiLCAicm9tYW4iLCAicm9vdHMiLAogICAgInJvdXRzIiwgInJveWFsIiwgInJ1aW5zIiwgInJ1bGVkIiwgInJ1bGVyIiwgInJ1cmFsIiwgInJ1c3R5IiwgInNhY2tzIiwKICAgICJzYWlscyIsICJzYXVjZSIsICJzY2FucyIsICJzY2FyZSIsICJzY2FyZiIsICJzY29wZSIsICJzY3JldyIsICJzZWFscyIsCiAgICAic2VhdHMiLCAic2VjdHMiLCAic2V4ZXMiLCAic2hhZGUiLCAic2hha2UiLCAic2hha3kiLCAic2hlZHMiLCAic2hlZXAiLAogICAgInNoZWVyIiwgInNoaW5lIiwgInNoaW55IiwgInNoaXBzIiwgInNoaXJ0IiwgInNob2NrIiwgInNob2VzIiwgInNob25lIiwKICAgICJzaG9vayIsICJzaG90cyIsICJzaG91dCIsICJzaG92ZSIsICJzaWRlZCIsICJzaWdtYSIsICJzaW5ncyIsICJzaW5rcyIsCiAgICAic2l4dGgiLCAic2l4dHkiLCAic2l6ZWQiLCAic2tpcHMiLCAic2tpcnQiLCAic2t1bGwiLCAic2xhbmciLCAic2xhc2giLAogICAgInNsYXZlIiwgInNsZXB0IiwgInNsaWNlIiwgInNsaWRlIiwgInNsaXBzIiwgInNsb3BlIiwgInNsb3RzIiwgInNsb3dzIiwKICAgICJzbWFydCIsICJzbWFzaCIsICJzbWVsbCIsICJzbWl0aCIsICJzbW9rZSIsICJzbmFjayIsICJzbmFpbCIsICJzbmVhayIsCiAgICAic25pZmYiLCAic29iZXIiLCAic29ja3MiLCAic29sYXIiLCAic29sZXMiLCAic29uZ3MiLCAic291bHMiLCAic3BpZXMiLAogICAgInNwaWtlIiwgInNwaWxsIiwgInNwaXRzIiwgInNwb2lsIiwgInNwb29mIiwgInNwb29sIiwgInNwb3J0IiwgInNwb3V0IiwKICAgICJzcHJheSIsICJzcXVhZCIsICJzdGFjayIsICJzdGFpciIsICJzdGFrZSIsICJzdGFsZSIsICJzdGFsbCIsICJzdGFtcCIsCiAgICAic3RhcmUiLCAic3RhcmsiLCAic3RhcnMiLCAic3RlYW0iLCAic3RlZWwiLCAic3RlZXAiLCAic3RlZXIiLCAic3RlbXMiLAogICAgInN0ZXBzIiwgInN0aWZmIiwgInN0aXJzIiwgInN0b2xlIiwgInN0b3JtIiwgInN0cmF3IiwgInN0cmF5IiwgInN0cmlwIiwKICAgICJzdHVucyIsICJzdHVudCIsICJzdWluZyIsICJzdWl0ZSIsICJzdW5ueSIsICJzdXBlciIsICJzd2FtcCIsICJzd2FwcyIsCiAgICAic3dlYXIiLCAic3dlYXQiLCAic3dlZXAiLCAic3dlZXQiLCAic3dlcHQiLCAic3dpbXMiLCAic3dpbmciLCAic3dvcmQiLAogICAgInN3b3JlIiwgInN3b3JuIiwgInRhY2tzIiwgInRhaWxzIiwgInRha2VyIiwgInRhbGVzIiwgInRheGVzIiwgInRlYW1zIiwKICAgICJ0ZWFycyIsICJ0ZW1wdCIsICJ0ZW5zZSIsICJ0ZW50aCIsICJ0ZXJzZSIsICJ0ZXh0cyIsICJ0aGVmdCIsICJ0aGVtZSIsCiAgICAidGhpY2siLCAidGhpZWYiLCAidGhvdXMiLCAidGh1bWIiLCAidGlnZXIiLCAidGlsZXMiLCAidGltZXIiLCAidGlyZWQiLAogICAgInRpcmVzIiwgInRvYXN0IiwgInRvbmVzIiwgInRvb2xzIiwgInRvdWdoIiwgInRvd2VyIiwgInRvd25zIiwgInRyYWRlIiwKICAgICJ0cmFpbCIsICJ0cmVhZCIsICJ0cmVuZCIsICJ0cmliZSIsICJ0cmlwcyIsICJ0cm9vcCIsICJ0dWJlcyIsICJ0dW5lZCIsCiAgICAidHVuZXMiLCAidHV0b3IiLCAidHdpbnMiLCAidHdpc3QiLCAidW5jbGUiLCAidW5kaWQiLCAidW5pZnkiLCAidW5pb24iLAogICAgInVuaXR5IiwgInVuc2V0IiwgInVyYmFuIiwgInVyZ2VkIiwgInVyZ2VzIiwgInV0dGVyIiwgInZhbHZlIiwgInZlbmRzIiwKICAgICJ2ZW51ZSIsICJ2ZXJicyIsICJ2ZXJzZSIsICJ2aWNhciIsICJ2aW55bCIsICJ2aXJ1cyIsICJ2b2NhbCIsICJ2b21pdCIsCiAgICAidm90ZWQiLCAidm90ZXIiLCAidm91Y2giLCAidm93ZWwiLCAid2FkZWQiLCAid2FkZXMiLCAid2FnZXMiLCAid2FrZWQiLAogICAgIndha2VzIiwgIndhcm1zIiwgIndhcnBzIiwgIndhdmVkIiwgIndhdmVzIiwgIndlYXJ5IiwgIndlaWdoIiwgIndoYWxlIiwKICAgICJ3aG9vcCIsICJ3aWR0aCIsICJ3aW5kcyIsICJ3aW5lcyIsICJ3aW5ncyIsICJ3aXBlZCIsICJ3aXBlcyIsICJ3aXJlZCIsCiAgICAid2lyZXMiLCAid2lzZXIiLCAid2l0Y2giLCAid2l0dHkiLCAid2l2ZXMiLCAid29rZW4iLCAid29vZHMiLCAid29ybXMiLAogICAgIndvdW5kIiwgIndyYXBzIiwgIndyYXRoIiwgIndyZWNrIiwgIndyaXN0IiwgInlhcmRzIiwgInlpZWxkIiwgInlvdXRoIiwKICAgICJ6ZXJvcyIsICJ6b25lcyIsICJhYmFjayIsICJhYmF0ZSIsICJhYmJleSIsICJhYmJvdCIsICJhYmV0cyIsICJhYmhvciIsCiAgICAiYWJsZXIiLCAiYWJvZGUiLCAiYWJ5c3MiLCAiYWNoZWQiLCAiYWNoZXMiLCAiYWNpZHMiLCAiYWNpbmciLCAiYWNyZXMiLAogICAgImFjcmlkIiwgImFkYWdlIiwgImFkZXB0IiwgImFkb2JlIiwgImFkb3JlIiwgImFkb3JuIiwgImFmZml4IiwgImFmb290IiwKICAgICJhZ2lsZSIsICJhZ2xvdyIsICJhaWRlcyIsICJhaWxlZCIsICJhaXJlZCIsICJhaXNsZSIsICJhbGdhZSIsICJhbGliaSIsCiAgICAiYWxsYXkiLCAiYWxsZXkiLCAiYWxsb3QiLCAiYWxsb3kiLCAiYWxvZnQiLCAiYWxvb2YiLCAiYWx0YXIiLCAiYWx0b3MiLAogICAgImFtYXNzIiwgImFtYmxlIiwgImFtaXNzIiwgImFtcGx5IiwgImFuZ3N0IiwgImFua2xlIiwgImFubmV4IiwgImFubnVsIiwKICAgICJhbnRpYyIsICJhbnZpbCIsICJhb3J0YSIsICJhcGluZyIsICJhcHJvbiIsICJhcHRlciIsICJhcHRseSIsICJhcmNlZCIsCiAgICAiYXJpYXMiLCAiYXJvbWEiLCAiYXJzb24iLCAiYXNoZWQiLCAiYXNoZW4iLCAiYXNrZXciLCAiYXNwZW4iLCAiYXNzZXMiLAogICAgImF0b25lIiwgImF0dGljIiwgImF1ZGl0IiwgImF1bnRzIiwgImF1cmFsIiwgImF1cmFzIiwgImF1dG9zIiwgImF2YWlsIiwKICAgICJhdmVydCIsICJhdm93cyIsICJhd2luZyIsICJhd29rZSIsICJheGluZyIsICJheGxlcyIsICJhenVyZSIsICJiYWJlcyIsCiAgICAiYmFjb24iLCAiYmFnZWwiLCAiYmFnZ3kiLCAiYmFpbHMiLCAiYmFpdHMiLCAiYmFrZXIiLCAiYmFsZHMiLCAiYmFsZWQiLAogICAgImJhbGVzIiwgImJhbG1zIiwgImJhbG15IiwgImJhbmR5IiwgImJhbmdzIiwgImJhbmpvIiwgImJhcmJzIiwgImJhcmRzIiwKICAgICJiYXJlZCIsICJiYXJlciIsICJiYXJlcyIsICJiYXJnZSIsICJiYXJucyIsICJiYXJvbiIsICJiYXNlciIsICJiYXNpbCIsCiAgICAiYmFzaW4iLCAiYmFza3MiLCAiYmFzdGUiLCAiYmF0aGUiLCAiYmF0b24iLCAiYmF3ZHkiLCAiYmF3bHMiLCAiYmF5ZWQiLAogICAgImJheW91IiwgImJlYWRzIiwgImJlYWR5IiwgImJlYWtzIiwgImJlYW1zIiwgImJlZWNoIiwgImJlZWZzIiwgImJlZWZ5IiwKICAgICJiZWV0cyIsICJiZWZpdCIsICJiZWlnZSIsICJiZWxjaCIsICJiZWxpZSIsICJiZWxseSIsICJiZWx0cyIsICJiZW50cyIsCiAgICAiYmVyZXQiLCAiYmVycnkiLCAiYmVydGgiLCAiYmVzZXQiLCAiYmVzdHMiLCAiYmlkZXMiLCAiYmlrZWQiLCAiYmlrZXMiLAogICAgImJpbmdvIiwgImJpcGVkIiwgImJpcmNoIiwgImJpc29uIiwgImJpdGNoIiwgImJsYWJzIiwgImJsYW5kIiwgImJsYXJlIiwKICAgICJibGFzZSIsICJibGF6ZSIsICJibGVhayIsICJibGVhdCIsICJibGVlZCIsICJibGVuZCIsICJibGltcCIsICJibGlwcyIsCiAgICAiYmxpdHoiLCAiYmxvYnMiLCAiYmxvY3MiLCAiYmxvZ3MiLCAiYmxvbmQiLCAiYmxvb20iLCAiYmxvdHMiLCAiYmx1ZWQiLAogICAgImJsdWVyIiwgImJsdWZmIiwgImJsdW50IiwgImJsdXJzIiwgImJsdXJ0IiwgImJsdXNoIiwgImJvYXJzIiwgImJvYXN0IiwKICAgICJib2RlZCIsICJib2RlcyIsICJib2x0cyIsICJib25kcyIsICJib25lZCIsICJib29ieSIsICJib29lZCIsICJib29tcyIsCiAgICAiYm9vbnMiLCAiYm9vcnMiLCAiYm9vdGgiLCAiYm9vdHkiLCAiYm9vemUiLCAiYm9zb20iLCAiYm9zc3kiLCAiYm90Y2giLAogICAgImJvdWdoIiwgImJvdXRzIiwgImJvd2VkIiwgImJvd2VsIiwgImJvd2xzIiwgImJveGVkIiwgImJveGVyIiwgImJyYWNlIiwKICAgICJicmFncyIsICJicmFpZCIsICJicmFzaCIsICJicmF0cyIsICJicmF2byIsICJicmF3bCIsICJicmF3biIsICJicmF5cyIsCiAgICAiYnJld3MiLCAiYnJpYmUiLCAiYnJpZGUiLCAiYnJpbXMiLCAiYnJpbmUiLCAiYnJpbmsiLCAiYnJpbnkiLCAiYnJpc2siLAogICAgImJyb2lsIiwgImJyb29kIiwgImJyb29rIiwgImJyb29tIiwgImJyb3RoIiwgImJyb3dzIiwgImJydW50IiwgImJydXRlIiwKICAgICJidWRkeSIsICJidWRnZSIsICJidWZmcyIsICJidWdneSIsICJidWdsZSIsICJidWxnZSIsICJidWxrcyIsICJidWxreSIsCiAgICAiYnVsbHMiLCAiYnVsbHkiLCAiYnVtcHMiLCAiYnVtcHkiLCAiYnVua3MiLCAiYnVubnkiLCAiYnVveXMiLCAiYnVybHkiLAogICAgImJ1cnBzIiwgImJ1cnJvIiwgImJ1cnJzIiwgImJ1c2h5IiwgImJ1c3RzIiwgImJ1dHRlIiwgImJ1dHRzIiwgImJ1eG9tIiwKICAgICJieXdheSIsICJjYWJpbiIsICJjYWNhbyIsICJjYWNoZSIsICJjYWN0aSIsICJjYWRldCIsICJjYWZlcyIsICJjYWdlZCIsCiAgICAiY2FnZXMiLCAiY2FnZXkiLCAiY2FrZWQiLCAiY2FsbXMiLCAiY2FsdmUiLCAiY2FtZWwiLCAiY2FtZW8iLCAiY2FuYWwiLAogICAgImNhbmR5IiwgImNhbmVkIiwgImNhbmVzIiwgImNhbm55IiwgImNhbm9lIiwgImNhbm9uIiwgImNhcGVkIiwgImNhcGVyIiwKICAgICJjYXBlcyIsICJjYXJhdCIsICJjYXJnbyIsICJjYXJvbCIsICJjYXJwcyIsICJjYXJ0cyIsICJjYXJ2ZSIsICJjYXNrcyIsCiAgICAiY2FzdGUiLCAiY2F1bGsiLCAiY2F2ZWQiLCAiY2F2ZXMiLCAiY2F3ZWQiLCAiY2VkYXIiLCAiY2VkZWQiLCAiY2VkZXMiLAogICAgImNlbGxvIiwgImNlbnRzIiwgImNoYWZlIiwgImNoYWZmIiwgImNoYW1wIiwgImNoYW50IiwgImNoYXNtIiwgImNoZWVwIiwKICAgICJjaGVmcyIsICJjaGV3eSIsICJjaGljayIsICJjaGlkZSIsICJjaGlsbCIsICJjaGltZSIsICJjaGltcCIsICJjaGluYSIsCiAgICAiY2hpbmsiLCAiY2hpbnMiLCAiY2hpcnAiLCAiY2hva2UiLCAiY2hvcmUiLCAiY2hvd3MiLCAiY2h1Z3MiLCAiY2h1bXMiLAogICAgImNodXJuIiwgImNodXRlIiwgImNpZ2FyIiwgImNpbmNoIiwgImNpdmljIiwgImNsYWNrIiwgImNsYW1wIiwgImNsYW1zIiwKICAgICJjbGFuZyIsICJjbGFuayIsICJjbGFucyIsICJjbGFwcyIsICJjbGFzcCIsICJjbGF3cyIsICJjbGVhdCIsICJjbGVmcyIsCiAgICAiY2xlZnQiLCAiY2xlcmsiLCAiY2xpbWUiLCAiY2xpbmciLCAiY2xpbmsiLCAiY2xvYWsiLCAiY2xvZHMiLCAiY2xvZ3MiLAogICAgImNsb3RzIiwgImNsb3V0IiwgImNsb3ZlIiwgImNsb3duIiwgImNsdWNrIiwgImNsdWVkIiwgImNsdW1wIiwgImNsdW5nIiwKICAgICJjb2FscyIsICJjb2JyYSIsICJjb2NrcyIsICJjb2NreSIsICJjb2NvYSIsICJjb2lscyIsICJjb2tlZCIsICJjb2tlcyIsCiAgICAiY29sZHMiLCAiY29saWMiLCAiY29sdHMiLCAiY29tYXMiLCAiY29tYnMiLCAiY29tZXQiLCAiY29uZXMiLCAiY29vZWQiLAogICAgImNvb3BzIiwgImNvcmFsIiwgImNvcmRzIiwgImNvcmVkIiwgImNvcmVzIiwgImNvcmtzIiwgImNvcm5zIiwgImNvcm55IiwKICAgICJjb3JwcyIsICJjb3VjaCIsICJjb3VwcyIsICJjb3ZlcyIsICJjb3ZldCIsICJjb3dlZCIsICJjb3dlciIsICJjb3llciIsCiAgICAiY3JhYnMiLCAiY3JhZ3MiLCAiY3JhbXMiLCAiY3JhbmUiLCAiY3JhbmsiLCAiY3JhdGUiLCAiY3JhdmUiLCAiY3JhemUiLAogICAgImNyZWFrIiwgImNyZWVrIiwgImNyZXBlIiwgImNyZXB0IiwgImNyZXN0IiwgImNyZXdzIiwgImNyaWJzIiwgImNyb2FrIiwKICAgICJjcm9jayIsICJjcm9ueSIsICJjcm9vayIsICJjcm9vbiIsICJjcm93cyIsICJjcnVtYiIsICJjcnVzdCIsICJjcnlwdCIsCiAgICAiY3ViZWQiLCAiY3ViZXMiLCAiY3VmZnMiLCAiY3VpbmciLCAiY3VsbHMiLCAiY3VsdHMiLCAiY3VyYnMiLCAiY3VyZHMiLAogICAgImN1cmlvIiwgImN1cmxzIiwgImN1dGVyIiwgImN5c3RzIiwgImRhZGR5IiwgImRhaXJ5IiwgImRhaXN5IiwgImRhbGx5IiwKICAgICJkYW1lcyIsICJkYW1wcyIsICJkYW5keSIsICJkYXJucyIsICJkYXJ0cyIsICJkYXVicyIsICJkYXVudCIsICJkYXducyIsCiAgICAiZGF6ZWQiLCAiZGF6ZXMiLCAiZGVhbnMiLCAiZGVhcnMiLCAiZGViaXQiLCAiZGVidHMiLCAiZGVidXQiLCAiZGVja3MiLAogICAgImRlY295IiwgImRlY3J5IiwgImRlZXBzIiwgImRlZmVyIiwgImRlaWZ5IiwgImRlaWduIiwgImRlbGlzIiwgImRlbHZlIiwKICAgICJkZW1vbiIsICJkZW5pbSIsICJkZW50cyIsICJkZXBvdCIsICJkZXNrcyIsICJkaWNlZCIsICJkaWNlcyIsICJkaWV0cyIsCiAgICAiZGlrZWQiLCAiZGlsbHMiLCAiZGltZXIiLCAiZGltZXMiLCAiZGltbHkiLCAiZGluZ3kiLCAiZGlyZXIiLCAiZGlyZ2UiLAogICAgImRpc2tzIiwgImRpdHR5IiwgImRpdmVyIiwgImRpenp5IiwgImRvY2tzIiwgImRvZXJzIiwgImRvaWx5IiwgImRvbGVkIiwKICAgICJkb2xlcyIsICJkb2xscyIsICJkb2xseSIsICJkb21lZCIsICJkb21lcyIsICJkb25vciIsICJkb3BlZCIsICJkb3BlcyIsCiAgICAiZG9wZXkiLCAiZG9zZWQiLCAiZG90ZWQiLCAiZG90ZXMiLCAiZG91Z2giLCAiZG91c2UiLCAiZG92ZXMiLCAiZG93ZHkiLAogICAgImRvd25zIiwgImRvd255IiwgImRvd3J5IiwgImRvemVkIiwgImRvemVzIiwgImRyYWJzIiwgImRyYXBlIiwgImRyYXdsIiwKICAgICJkcmVncyIsICJkcmllciIsICJkcm9sbCIsICJkcm9uZSIsICJkcm9vbCIsICJkcm9vcCIsICJkcm9zcyIsICJkcnllciIsCiAgICAiZHVjdHMiLCAiZHVkZWQiLCAiZHVkZXMiLCAiZHVlbHMiLCAiZHVldHMiLCAiZHVrZXMiLCAiZHVsbHMiLCAiZHVsbHkiLAogICAgImR1bXB5IiwgImR1bmNlIiwgImR1bmVzIiwgImR1bmdzIiwgImR1bmtzIiwgImR1bm5vIiwgImR1cGVkIiwgImR1cGVzIiwKICAgICJkdXNreSIsICJkdXN0cyIsICJkdXZldCIsICJkd2FyZiIsICJkd2VsbCIsICJkd2VsdCIsICJlYXJscyIsICJlYXNlZCIsCiAgICAiZWFzZWwiLCAiZWFzZXMiLCAiZWF2ZXMiLCAiZWJiZWQiLCAiZWJvbnkiLCAiZWRnZWQiLCAiZWRnZXIiLCAiZWRpY3QiLAogICAgImVlcmllIiwgImVnZ2VkIiwgImVqZWN0IiwgImVraW5nIiwgImVsYm93IiwgImVsZGVyIiwgImVsZWd5IiwgImVsb3BlIiwKICAgICJlbHVkZSIsICJlbHZlcyIsICJlbWFpbCIsICJlbWJlciIsICJlbWlycyIsICJlbWl0cyIsICJlbmFjdCIsICJlbmRvdyIsCiAgICAiZW5lbWEiLCAiZW5zdWUiLCAiZW52b3kiLCAiZXBpY3MiLCAiZXBvY2giLCAiZXJlY3QiLCAiZXJvZGUiLCAiZXJyZWQiLAogICAgImVydXB0IiwgImV0aGVyIiwgImV0aG9zIiwgImV2YWRlIiwgImV2aWN0IiwgImV2b2tlIiwgImV4YWx0IiwgImV4Y2VsIiwKICAgICJleGVydCIsICJleGlsZSIsICJleHBlbCIsICJleHRvbCIsICJleHVkZSIsICJleHVsdCIsICJmYWJsZSIsICJmYWNldCIsCiAgICAiZmFkZWQiLCAiZmFkZXMiLCAiZmFpcnMiLCAiZmFrZWQiLCAiZmFrZXMiLCAiZmFtZWQiLCAiZmFuZ3MiLCAiZmFyZWQiLAogICAgImZhcmVzIiwgImZhcm1zIiwgImZhc3RzIiwgImZhdGVkIiwgImZhdGVzIiwgImZhdHR5IiwgImZhdW5hIiwgImZhd25zIiwKICAgICJmYXplZCIsICJmYXplcyIsICJmZWFzdCIsICJmZWF0cyIsICJmZWlnbiIsICJmZWludCIsICJmZWxscyIsICJmZWxvbiIsCiAgICAiZmVsdHMiLCAiZmVuZHMiLCAiZmVybnMiLCAiZmVycnkiLCAiZmV0ZWQiLCAiZmV0aWQiLCAiZmV0dXMiLCAiZmV1ZHMiLAogICAgImZpY2hlIiwgImZpZW5kIiwgImZpZXJ5IiwgImZpbGNoIiwgImZpbGV0IiwgImZpbGx5IiwgImZpbG15IiwgImZpbHRoIiwKICAgICJmaW5jaCIsICJmaXNoeSIsICJmaXN0cyIsICJmaXZlcyIsICJmbGFpbCIsICJmbGFpciIsICJmbGFrZSIsICJmbGFreSIsCiAgICAiZmxhbmsiLCAiZmxhcHMiLCAiZmxhcmUiLCAiZmxhc2siLCAiZmxhdHMiLCAiZmxlYXMiLCAiZmxlY2siLCAiZmxlZXMiLAogICAgImZsaWNrIiwgImZsaW5nIiwgImZsaW50IiwgImZsaXJ0IiwgImZsaXRzIiwgImZsb2NrIiwgImZsb2dzIiwgImZsb3BzIiwKICAgICJmbG9yYSIsICJmbG9zcyIsICJmbG91dCIsICJmbHVlcyIsICJmbHVmZiIsICJmbHVrZSIsICJmbHVuZyIsICJmbHVuayIsCiAgICAiZm9hbHMiLCAiZm9hbXMiLCAiZm9hbXkiLCAiZm9jYWwiLCAiZm9nZ3kiLCAiZm9pbHMiLCAiZm9pc3QiLCAiZm9sbHkiLAogICAgImZvb3RzIiwgImZvcmF5IiwgImZvcmRzIiwgImZvcmVzIiwgImZvcmdlIiwgImZvcmdvIiwgImZvcmtzIiwgImZvcnRlIiwKICAgICJmb3J0cyIsICJmb3VscyIsICJmb3VudCIsICJmb3VycyIsICJmb3dscyIsICJmb3hlZCIsICJmb3hlcyIsICJmb3llciIsCiAgICAiZnJhaWwiLCAiZnJhbmMiLCAiZnJheXMiLCAiZnJlZXIiLCAiZnJldHMiLCAiZnJpYXIiLCAiZnJpbGwiLCAiZnJpc2siLAogICAgImZyb2NrIiwgImZyb25kIiwgImZyb3N0IiwgImZyb3RoIiwgImZ1ZWxzIiwgImZ1bGxzIiwgImZ1bWVkIiwgImZ1bmdpIiwKICAgICJmdXJscyIsICJmdXNlZCIsICJmdXNlcyIsICJmZXRlcyIsICJnYWJsZSIsICJnYWlseSIsICJnYWl0cyIsICJnYWxhcyIsCiAgICAiZ2FsZXMiLCAiZ2FsbHMiLCAiZ2FtZWQiLCAiZ2FtZXIiLCAiZ2FtbWEiLCAiZ2FtdXQiLCAiZ2FuZ3MiLCAiZ2FwZWQiLAogICAgImdhcGVzIiwgImdhcmJzIiwgImdhc2VzIiwgImdhc3BzIiwgImdhdGVkIiwgImdhdWR5IiwgImdhdWdlIiwgImdhdW50IiwKICAgICJnYXV6ZSIsICJnYXZlbCIsICJnYXdrcyIsICJnYXdreSIsICJnYXllciIsICJnYXplZCIsICJnYXplcyIsICJnZWVzZSIsCiAgICAiZ2VsZHMiLCAiZ2VuaWUiLCAiZ2VuaWkiLCAiZ2VudHMiLCAiZ2VudXMiLCAiZ2VybXMiLCAiZ2hvdWwiLCAiZ2lkZHkiLAogICAgImdpbGRzIiwgImdpbGxzIiwgImdpbHRzIiwgImdpbW1lIiwgImdpcnRoIiwgImdsYWRlIiwgImdsYWRzIiwgImdsYW5kIiwKICAgICJnbGFyZSIsICJnbGF6ZSIsICJnbGVhbSIsICJnbGVucyIsICJnbGlkZSIsICJnbGludCIsICJnbG9hdCIsICJnbG9iZSIsCiAgICAiZ2xvb20iLCAiZ2xvc3MiLCAiZ2x1ZWQiLCAiZ2x1ZXMiLCAiZ2x1dHMiLCAiZ25hcmwiLCAiZ25hc2giLCAiZ25hdHMiLAogICAgImduYXdzIiwgImdvYWRzIiwgImdvYXRzIiwgImdvZGx5IiwgImdvbGRzIiwgImdvbGZzIiwgImdvbmVyIiwgImdvbmdzIiwKICAgICJnb25uYSIsICJnb29leSIsICJnb29mcyIsICJnb29meSIsICJnb29ucyIsICJnb29zZSIsICJnb3JlZCIsICJnb3JlcyIsCiAgICAiZ29yZ2UiLCAiZ291Z2UiLCAiZ291cmQiLCAiZ293bnMiLCAiZ3JhZnQiLCAiZ3JhbXMiLCAiZ3JhcGUiLCAiZ3JhdGUiLAogICAgImdyYXZ5IiwgImdyYXplIiwgImdyZWV0IiwgImdyaWRzIiwgImdyaWxsIiwgImdyaW1lIiwgImdyaW15IiwgImdyaW5zIiwKICAgICJncmlwZSIsICJncml0cyIsICJncm9pbiIsICJncm9vbSIsICJncm9wZSIsICJncm92ZSIsICJncm93bCIsICJncnVicyIsCiAgICAiZ3J1ZWwiLCAiZ3J1ZmYiLCAiZ3J1bnQiLCAiZ3VpbGQiLCAiZ3VpbGUiLCAiZ3Vpc2UiLCAiZ3VsY2giLCAiZ3VsZnMiLAogICAgImd1bGxzIiwgImd1bGx5IiwgImd1bHBzIiwgImd1bW15IiwgImd1cHB5IiwgImd1cnVzIiwgImd1c3RzIiwgImd1c3R5IiwKICAgICJndXllZCIsICJoYWlscyIsICJoYWxlZCIsICJoYWxlciIsICJoYWxlcyIsICJoYWxvbiIsICJoYWxvcyIsICJoYXJlZCIsCiAgICAiaGFyZW0iLCAiaGFyZXMiLCAiaGFya3MiLCAiaGFybXMiLCAiaGFycHMiLCAiaGFycnkiLCAiaGFydHMiLCAiaGFzdGUiLAogICAgImhhdGNoIiwgImhhdWxzIiwgImhhdW50IiwgImhhdmVuIiwgImhhdmVzIiwgImhhd2tzIiwgImhheWVkIiwgImhhemVkIiwKICAgICJoYXplbCIsICJoYXplcyIsICJoZWFkeSIsICJoZWFscyIsICJoZWFwcyIsICJoZWF0aCIsICJoZWF2ZSIsICJoZWRnZSIsCiAgICAiaGVlZHMiLCAiaGVmdHkiLCAiaGVpcnMiLCAiaGVsbXMiLCAiaGVyYnMiLCAiaGVyZHMiLCAiaGVyb24iLCAiaGV3ZWQiLAogICAgImhpY2tzIiwgImhpZ2hzIiwgImhpa2VkIiwgImhpa2VyIiwgImhpa2VzIiwgImhpbGx5IiwgImhpbHRzIiwgImhpbmRzIiwKICAgICJoaW5nZSIsICJoaXBweSIsICJoaXRjaCIsICJoaXZlZCIsICJoaXZlcyIsICJob2FyZCIsICJob2JvcyIsICJob2NrcyIsCiAgICAiaG9pc3QiLCAiaG9sZWQiLCAiaG9sbHkiLCAiaG9tZWQiLCAiaG9tZXkiLCAiaG9uZWQiLCAiaG9uZXMiLCAiaG9ua3MiLAogICAgImhvb2RzIiwgImhvb2ZzIiwgImhvb3BzIiwgImhvb3RzIiwgImhvcm5zIiwgImhvcm55IiwgImhvc2VkIiwgImhvc2VzIiwKICAgICJob3RseSIsICJob3VuZCIsICJob3ZlbCIsICJob3ZlciIsICJob3dscyIsICJodWZmcyIsICJodWZmeSIsICJodWdlciIsCiAgICAiaHVsa3MiLCAiaHVsbHMiLCAiaHVtaWQiLCAiaHVtcHMiLCAiaHVuY2giLCAiaHVua3MiLCAiaHVybHMiLCAiaHVza3MiLAogICAgImh1c2t5IiwgImh1dGNoIiwgImh5ZW5hIiwgImh5bW5zIiwgImljaWVyIiwgImljaW5nIiwgImlkbGVkIiwgImlkbGVyIiwKICAgICJpZGxlcyIsICJpZG9scyIsICJpZ2xvbyIsICJpbXBlbCIsICJpbmVwdCIsICJpbmVydCIsICJpbmZpeCIsICJpbmtlZCIsCiAgICAiaW5sYXkiLCAiaW5sZXQiLCAiaW90YXMiLCAiaXJrZWQiLCAiaXJvbnMiLCAiaXNsZXMiLCAiaXRjaHkiLCAiaXZpZXMiLAogICAgIml2b3J5IiwgImphY2tzIiwgImphZGVkIiwgImphZGVzIiwgImphaWxzIiwgImphbWJzIiwgImphdW50IiwgImphd2VkIiwKICAgICJqZWVycyIsICJqZWxscyIsICJqZXJrcyIsICJqZXJreSIsICJqZXN0cyIsICJqZXR0eSIsICJqZXdlbCIsICJqaWJlZCIsCiAgICAiamliZXMiLCAiamlmZnkiLCAiamlsdHMiLCAiam9rZXIiLCAiam9sdHMiLCAiam95ZWQiLCAianVpY3kiLCAianVtYm8iLAogICAgImp1bXB5IiwgImp1bmtzIiwgImp1bnRhIiwgImp1cm9yIiwgImthcmF0IiwgImtheWFrIiwgImtlZWxzIiwgImtlZW5zIiwKICAgICJraGFraSIsICJraWxucyIsICJraWxvcyIsICJraWx0cyIsICJraW5kYSIsICJraW5rcyIsICJraW5reSIsICJraW9zayIsCiAgICAia2l0ZWQiLCAia2l0ZXMiLCAia2l0dHkiLCAia2l3aXMiLCAia25hY2siLCAia25lYWQiLCAia25lZWQiLCAia25lZWwiLAogICAgImtuZWx0IiwgImtuaXRzIiwgImtub2JzIiwgImtub2xsIiwgImtub3RzIiwgImtvYWxhIiwgImt1ZG9zIiwgImxhY2VkIiwKICAgICJsYWNlcyIsICJsYWRlZCIsICJsYWRlbiIsICJsYWRlcyIsICJsYWRsZSIsICJsYWlycyIsICJsYWtlcyIsICJsYW1icyIsCiAgICAibGFtZWQiLCAibGFtZXIiLCAibGFtZXMiLCAibGFtcHMiLCAibGFuY2UiLCAibGFuZXMiLCAibGFua3kiLCAibGFwZWwiLAogICAgImxhcHNlIiwgImxhcmRzIiwgImxhcmtzIiwgImxhcnZhIiwgImxhdGNoIiwgImxhdGV4IiwgImxhdGhlIiwgImxhdGhzIiwKICAgICJsYXVkcyIsICJsYXducyIsICJsYXhlciIsICJsZWFmcyIsICJsZWFmeSIsICJsZWFrcyIsICJsZWFreSIsICJsZWFwcyIsCiAgICAibGVhc2UiLCAibGVhc2giLCAibGVkZ2UiLCAibGVlY2giLCAibGVla3MiLCAibGVlcnMiLCAibGVlcnkiLCAibGVmdHMiLAogICAgImxlbW1lIiwgImxlcGVyIiwgImxldHVwIiwgImxldmVlIiwgImxldmVyIiwgImxpYXJzIiwgImxpY2tzIiwgImxpa2VuIiwKICAgICJsaWtlciIsICJsaWxhYyIsICJsaWx0cyIsICJsaW1ibyIsICJsaW1lZCIsICJsaW1lcyIsICJsaW1wcyIsICJsaW5lbiIsCiAgICAibGluZXIiLCAibGluZ28iLCAibGlvbnMiLCAibGlzcHMiLCAibGl0aGUiLCAibGl2ZW4iLCAibGl2aWQiLCAibGxhbWEiLAogICAgImxvYWZzIiwgImxvYXRoIiwgImxvYmVzIiwgImxvZnRzIiwgImxvZnR5IiwgImxvaW5zIiwgImxvbGxzIiwgImxvbmdzIiwKICAgICJsb29tcyIsICJsb29ucyIsICJsb29ueSIsICJsb290cyIsICJsb3BlZCIsICJsb3BlcyIsICJsb3NlciIsICJsb3R1cyIsCiAgICAibG91c2UiLCAibG93ZWQiLCAibG93bHkiLCAibHVjaWQiLCAibHVja3MiLCAibHVsbHMiLCAibHVtcHkiLCAibHVuYXIiLAogICAgImx1bmdlIiwgImx1cmNoIiwgImx1cmVkIiwgImx1cmVzIiwgImx1cmlkIiwgImx1c3RzIiwgImx1c3R5IiwgImx1dGVzIiwKICAgICJseW1waCIsICJseW5jaCIsICJseXJlcyIsICJtYWNlZCIsICJtYWNlcyIsICJtYWNobyIsICJtYWRhbSIsICJtYWRseSIsCiAgICAibWFpZHMiLCAibWFpbXMiLCAibWFsbHMiLCAibWFsdHMiLCAibWFtYXMiLCAibWFtbWEiLCAibWFuZXMiLCAibWFuZ2UiLAogICAgIm1hbmdvIiwgIm1hbmd5IiwgIm1hbmljIiwgIm1hbmx5IiwgIm1hbm9yIiwgIm1hcGxlIiwgIm1hcmVzIiwgIm1hcmlhIiwKICAgICJtYXJzaCIsICJtYXJ0cyIsICJtYXNrcyIsICJtYXNvbiIsICJtYXN0cyIsICJtYXRlZCIsICJtYXRlcyIsICJtYXR0ZSIsCiAgICAibWF1bHMiLCAibWF1dmUiLCAibWF4aW0iLCAibWF6ZXMiLCAibWVhbHkiLCAibWVhdHMiLCAibWVkYWwiLCAibWVsb24iLAogICAgIm1lbHRzIiwgIm1lbW9zIiwgIm1lcmVzIiwgIm1ldGVkIiwgIm1ldGVzIiwgIm1ld2VkIiwgIm1pZHN0IiwgIm1pZW5zIiwKICAgICJtaWtlZCIsICJtaWtlcyIsICJtaWxrcyIsICJtaWxreSIsICJtaWxscyIsICJtaW1lZCIsICJtaW1lcyIsICJtaW5jZSIsCiAgICAibWluZXIiLCAibWlua3MiLCAibWludHMiLCAibWlyZWQiLCAibWlyZXMiLCAibWlydGgiLCAibWlzZXIiLCAibWlzdHkiLAogICAgIm1pdGVzIiwgIm1pdHRzIiwgIm1peGVyIiwgIm1vYXRzIiwgIm1vY2tzIiwgIm1vZGFsIiwgIm1vaXN0IiwgIm1vbGFyIiwKICAgICJtb2xlcyIsICJtb25rcyIsICJtb29kcyIsICJtb29keSIsICJtb29lZCIsICJtb29ycyIsICJtb29zZSIsICJtb290cyIsCiAgICAibW9wZWQiLCAibW9wZXMiLCAibW9ybnMiLCAibW9zc3kiLCAibW90ZWwiLCAibW90aHMiLCAibW90aWYiLCAibW91bmQiLAogICAgIm1vdXJuIiwgIm1vdXN5IiwgIm1vdmVyIiwgIm1vd2VkIiwgIm1vd2VyIiwgIm11Y3VzIiwgIm11ZGR5IiwgIm11ZmZzIiwKICAgICJtdWdneSIsICJtdWxjaCIsICJtdWxlcyIsICJtdWxscyIsICJtdW1wcyIsICJtdW5jaCIsICJtdXJhbCIsICJtdXJreSIsCiAgICAibXVzZWQiLCAibXVzZXMiLCAibXVzaHkiLCAibXVzdHMiLCAibXVzdHkiLCAibXV0ZWQiLCAibXV0ZXIiLCAibXV0ZXMiLAogICAgIm11dHRzIiwgIm5hcGVzIiwgIm5hcHB5IiwgIm5hc2FsIiwgIm5hdHR5IiwgIm5hdmFsIiwgIm5hdmVsIiwgIm5lYXJzIiwKICAgICJuZWNrcyIsICJuZWVkeSIsICJuZWlnaCIsICJuZXdzeSIsICJuZXd0cyIsICJuaWNoZSIsICJuaWVjZSIsICJuaWZ0eSIsCiAgICAibmluZXMiLCAibmlubnkiLCAibmludGgiLCAibmlwcHkiLCAibm9ibHkiLCAibm9tYWQiLCAibm9va3MiLCAibm9vc2UiLAogICAgIm5vcm1zIiwgIm5vc2VkIiwgIm5vdGNoIiwgIm51ZGVyIiwgIm51ZGVzIiwgIm51ZGdlIiwgIm51bGxzIiwgIm51bWJzIiwKICAgICJudXR0eSIsICJueWxvbiIsICJueW1waCIsICJvYXJlZCIsICJvYXNlcyIsICJvYXNpcyIsICJvYXRocyIsICJvYmVzZSIsCiAgICAib2JvZXMiLCAib2N0YWwiLCAib2RkZXIiLCAib2ZmZWQiLCAib2dsZWQiLCAib2dsZXMiLCAib2dyZXMiLCAib2lsZWQiLAogICAgIm9rcmFzIiwgIm9sZGVuIiwgIm9saXZlIiwgIm9tZWdhIiwgIm9tZW5zIiwgIm9uc2V0IiwgIm9vemVkIiwgIm9vemVzIiwKICAgICJvcGFscyIsICJvcGl1bSIsICJvcmFscyIsICJvdHRlciIsICJvdW5jZSIsICJvdXN0cyIsICJvdXRkbyIsICJvdXRlZCIsCiAgICAib3ZhbHMiLCAib3ZhcnkiLCAib3ZlbnMiLCAib3ZlcnMiLCAib3ZlcnQiLCAib3hpZGUiLCAicGFjZWQiLCAicGFjZXMiLAogICAgInBhY3RzIiwgInBhZGR5IiwgInBhZ2FuIiwgInBhZ2VyIiwgInBhaWxzIiwgInBhbGVkIiwgInBhbGVyIiwgInBhbGVzIiwKICAgICJwYWxscyIsICJwYWxtcyIsICJwYW5kYSIsICJwYW5lcyIsICJwYW5ncyIsICJwYW5zeSIsICJwYXBhbCIsICJwYXBhcyIsCiAgICAicGFyY2giLCAicGFyZWQiLCAicGFyZXMiLCAicGFya2EiLCAicGFzc2UiLCAicGFzdGEiLCAicGFzdHMiLCAicGFzdHkiLAogICAgInBhdGVzIiwgInBhdGlvIiwgInBhdHR5IiwgInBhdmVkIiwgInBhdmVzIiwgInBhd2VkIiwgInBhd25zIiwgInBheWVyIiwKICAgICJwZWFjaCIsICJwZWFscyIsICJwZWFybCIsICJwZWFycyIsICJwZWNhbiIsICJwZWNrcyIsICJwZWVrcyIsICJwZWVscyIsCiAgICAicGVlcHMiLCAicGVldmUiLCAicGVsdHMiLCAicGVuYWwiLCAicGVuaXMiLCAicGVvbnMiLCAicGVvbnkiLCAicGVyY2giLAogICAgInBlcmlsIiwgInBlcmtzIiwgInBlcmt5IiwgInBlc2t5IiwgInBlc3RzIiwgInBldGFsIiwgInBldGVyIiwgInBpY2t5IiwKICAgICJwaWVycyIsICJwaWV0eSIsICJwaWtlZCIsICJwaWtlcyIsICJwaWxlZCIsICJwaW5lZCIsICJwaW5lcyIsICJwaW5rcyIsCiAgICAicGlvdXMiLCAicGlwZWQiLCAicGlxdWUiLCAicGl0aHkiLCAicGl2b3QiLCAicGl4aWUiLCAicGxhaWQiLCAicGxhbmsiLAogICAgInBsYXphIiwgInBsZWFkIiwgInBsZWFzIiwgInBsZWF0IiwgInBsaWVkIiwgInBsaWVzIiwgInBsb2RzIiwgInBsb3BzIiwKICAgICJwbG95cyIsICJwbHVjayIsICJwbHVtYiIsICJwbHVtZSIsICJwbHVtcCIsICJwbHVtcyIsICJwbHVzaCIsICJwb2FjaCIsCiAgICAicG9pc2UiLCAicG9rZWQiLCAicG9rZXIiLCAicG9rZXMiLCAicG9rZXkiLCAicG9sZWQiLCAicG9sZXMiLCAicG9saW8iLAogICAgInBvbGthIiwgInBvbHlwIiwgInBvbmRzIiwgInBvb2xzIiwgInBvb3BzIiwgInBvcHB5IiwgInBvcmNoIiwgInBvcmVkIiwKICAgICJwb3JlcyIsICJwb3VjaCIsICJwb3V0cyIsICJwcmFuayIsICJwcmF3biIsICJwcmVlbiIsICJwcmV5cyIsICJwcmljayIsCiAgICAicHJpZWQiLCAicHJpZXMiLCAicHJpbXAiLCAicHJpc20iLCAicHJpdnkiLCAicHJvYmUiLCAicHJvZHMiLCAicHJvbXMiLAogICAgInByb25nIiwgInByb3BzIiwgInByb3dsIiwgInByb3dzIiwgInByb3h5IiwgInBydWRlIiwgInBydW5lIiwgInBzYWxtIiwKICAgICJwc3ljaCIsICJwdWNrcyIsICJwdWRneSIsICJwdWZmcyIsICJwdWZmeSIsICJwdWtlZCIsICJwdWtlcyIsICJwdWxwcyIsCiAgICAicHVtYXMiLCAicHVua3MiLCAicHVwcHkiLCAicHVyZWUiLCAicHVyZXIiLCAicHVycnMiLCAicHVyc2UiLCAicHVzaHkiLAogICAgInB1c3N5IiwgInB1dHR5IiwgInB5cmVzIiwgInF1YWNrIiwgInF1YWlsIiwgInF1YWtlIiwgInF1YWxtIiwgInF1YXJrIiwKICAgICJxdWFydCIsICJxdWFzaCIsICJxdWF5cyIsICJxdWVlciIsICJxdWVsbCIsICJxdWlsbCIsICJxdWlsdCIsICJxdWlwcyIsCiAgICAicXVpcmsiLCAicmFiYmkiLCAicmFjZXIiLCAicmFkaWkiLCAicmFmdHMiLCAicmFnZWQiLCAicmFnZXMiLCAicmFpbnkiLAogICAgInJha2VkIiwgInJha2VzIiwgInJhbGx5IiwgInJhbXBzIiwgInJhbmNoIiwgInJhcGVkIiwgInJhcGVzIiwgInJhcmVkIiwKICAgICJyYXJlcyIsICJyYXNwcyIsICJyYXR0eSIsICJyYXZlbCIsICJyYXZlbiIsICJyYXdlciIsICJyYXlvbiIsICJyYXplZCIsCiAgICAicmF6ZXMiLCAicmVhbHMiLCAicmVhbXMiLCAicmVhcHMiLCAicmVhcnMiLCAicmViZWwiLCAicmVidXQiLCAicmVjYXAiLAogICAgInJlY3VyIiwgInJlZGlkIiwgInJlZWRzIiwgInJlZWZzIiwgInJlZWtzIiwgInJlZWxzIiwgInJlZ2FsIiwgInJlaW5zIiwKICAgICJyZWxpYyIsICJyZW1pdCIsICJyZW50cyIsICJyZXBheSIsICJyZXBlbCIsICJyZXNpbiIsICJyZXRjaCIsICJyZXRyeSIsCiAgICAicmV2ZWwiLCAicmV2dWUiLCAicmhpbm8iLCAicmljZWQiLCAicmljZXMiLCAicmlkZXIiLCAicmlkZ2UiLCAicmlmZXIiLAogICAgInJpZmxlIiwgInJpZnRzIiwgInJpbGVkIiwgInJpbGVzIiwgInJpbmRzIiwgInJpbmtzIiwgInJpbnNlIiwgInJpb3RzIiwKICAgICJyaXBlbiIsICJyaXBlciIsICJyaXNlciIsICJyaXRlcyIsICJyaXZldCIsICJyb2FjaCIsICJyb2FtcyIsICJyb2FycyIsCiAgICAicm9hc3QiLCAicm9iZWQiLCAicm9iZXMiLCAicm9iaW4iLCAicm9ja3kiLCAicm9kZW8iLCAicm9ndWUiLCAicm9tcHMiLAogICAgInJvb2ZzIiwgInJvb2tzIiwgInJvb215IiwgInJvb3N0IiwgInJvcGVkIiwgInJvcGVzIiwgInJvc2VzIiwgInJvdG9yIiwKICAgICJyb3VnZSIsICJyb3VzZSIsICJyb3dkeSIsICJyb3dlZCIsICJydWRkeSIsICJydWRlciIsICJydWZmcyIsICJydWdieSIsCiAgICAicnVpbmciLCAicnVtbXkiLCAicnVtcHMiLCAicnVuZXMiLCAicnVuZ3MiLCAicnVubnkiLCAicnVudHMiLCAicnVzZXMiLAogICAgInJ1c3RzIiwgInNhZGVzIiwgInNhZmVzIiwgInNhZ2FzIiwgInNhZ2VyIiwgInNhZ2VzIiwgInNhbGFkIiwgInNhbGx5IiwKICAgICJzYWxvbiIsICJzYWx0cyIsICJzYWx0eSIsICJzYWx2ZSIsICJzYW1lcyIsICJzYW5kcyIsICJzYW5keSIsICJzYW5lciIsCiAgICAic2FuZ3MiLCAic2FyaXMiLCAic2Fzc3kiLCAic2F0aW4iLCAic2F1Y3kiLCAic2F1bmEiLCAic2F1dGUiLCAic2F2ZXIiLAogICAgInNhdnZ5IiwgInNhd2VkIiwgInNjYWJzIiwgInNjYWxkIiwgInNjYWxwIiwgInNjYWx5IiwgInNjYW50IiwgInNjYXJzIiwKICAgICJzY2FyeSIsICJzY2VudCIsICJzY29mZiIsICJzY29sZCIsICJzY29vcCIsICJzY29vdCIsICJzY29ybiIsICJzY291ciIsCiAgICAic2NvdXQiLCAic2Nvd2wiLCAic2NyYW0iLCAic2NydWIiLCAic2N1ZmYiLCAic2N1bXMiLCAic2VhbXMiLCAic2VhcnMiLAogICAgInNlZGFuIiwgInNlZWRzIiwgInNlZWR5IiwgInNlZXBzIiwgInNlaXplIiwgInNlbWVuIiwgInNlcnVtIiwgInNldmVyIiwKICAgICJzZXdlZCIsICJzZXdlciIsICJzZXhlZCIsICJzaGFjayIsICJzaGFkeSIsICJzaGFmdCIsICJzaGFtcyIsICJzaGFyayIsCiAgICAic2hhdmUiLCAic2hhd2wiLCAic2hlYWYiLCAic2hlYXIiLCAic2hlZW4iLCAic2hpZWQiLCAic2hpZXMiLCAic2hpbnMiLAogICAgInNoaXJlIiwgInNoaXJrIiwgInNob2FsIiwgInNob29zIiwgInNob3JlIiwgInNob3d5IiwgInNocmVkIiwgInNocmV3IiwKICAgICJzaHJ1YiIsICJzaHJ1ZyIsICJzaHVjayIsICJzaHVucyIsICJzaHVudCIsICJzaHllciIsICJzaWNrcyIsICJzaWRsZSIsCiAgICAic2llZ2UiLCAic2lldmUiLCAic2lmdHMiLCAic2lnaHMiLCAic2lsa3MiLCAic2lsbHMiLCAic2lsb3MiLCAic2lsdHMiLAogICAgInNpbmV3IiwgInNpbmdlIiwgInNpbnVzIiwgInNpcmVkIiwgInNpcmVuIiwgInNpcmVzIiwgInNpc3N5IiwgInNpdGVkIiwKICAgICJzaXhlcyIsICJzaXplciIsICJza2F0ZSIsICJza2VpbiIsICJza2V3cyIsICJza2lkcyIsICJza2llZCIsICJza2llcyIsCiAgICAic2tpbXAiLCAic2tpbXMiLCAic2tpbnMiLCAic2tpdHMiLCAic2t1bGsiLCAic2t1bmsiLCAic2xhYnMiLCAic2xhY2siLAogICAgInNsYWluIiwgInNsYWtlIiwgInNsYW1zIiwgInNsYW50IiwgInNsYXBzIiwgInNsYXRlIiwgInNsYXRzIiwgInNsYXlzIiwKICAgICJzbGVkcyIsICJzbGVlayIsICJzbGVldCIsICJzbGV3cyIsICJzbGljayIsICJzbGltZSIsICJzbGltcyIsICJzbGlteSIsCiAgICAic2xpbmciLCAic2xpbmsiLCAic2xpdHMiLCAic2xvYnMiLCAic2xvZ3MiLCAic2xvcHMiLCAic2xvc2giLCAic2xvdGgiLAogICAgInNsdWdzIiwgInNsdW1wIiwgInNsdW1zIiwgInNsdW5nIiwgInNsdW5rIiwgInNsdXJzIiwgInNsdXNoIiwgInNsdXRzIiwKICAgICJzbWFjayIsICJzbWVhciIsICJzbWVsdCIsICJzbWlyayIsICJzbWl0ZSIsICJzbW9jayIsICJzbW9reSIsICJzbW90ZSIsCiAgICAic211dHMiLCAic25hZ3MiLCAic25ha2UiLCAic25hcHMiLCAic25hcmUiLCAic25hcmwiLCAic25lZXIiLCAic25pZGUiLAogICAgInNuaXBlIiwgInNuaXBzIiwgInNub2JzIiwgInNub29wIiwgInNub3JlIiwgInNub3J0IiwgInNub3RzIiwgInNub3V0IiwKICAgICJzbm93cyIsICJzbm93eSIsICJzbnVicyIsICJzbnVmZiIsICJzbnVncyIsICJzb2FrcyIsICJzb2FwcyIsICJzb2FweSIsCiAgICAic29hcnMiLCAic29kYXMiLCAic29mYXMiLCAic29nZ3kiLCAic29pbHMiLCAic29sZWQiLCAic29sb3MiLCAic29uaWMiLAogICAgInNvb3R5IiwgInNvcmVyIiwgInNvcmVzIiwgInNvcnRhIiwgInNvdXBzIiwgInNvdXJzIiwgInNvd2VkIiwgInNwYWRlIiwKICAgICJzcGFuayIsICJzcGFucyIsICJzcGFyayIsICJzcGFycyIsICJzcGFzbSIsICJzcGF0ZSIsICJzcGF0cyIsICJzcGF3biIsCiAgICAic3BheXMiLCAic3BlYXIiLCAic3BlY2siLCAic3Blcm0iLCAic3Bld3MiLCAic3BpY2UiLCAic3BpY3kiLCAic3BpZWQiLAogICAgInNwaW5lIiwgInNwaW5zIiwgInNwaXJlIiwgInNwbGF0IiwgInNwb29rIiwgInNwb29uIiwgInNwb3JlIiwgInNwcmVlIiwKICAgICJzcHJpZyIsICJzcHVkcyIsICJzcHVuayIsICJzcHVybiIsICJzcHVycyIsICJzcHVydCIsICJzcXVhdCIsICJzcXVpZCIsCiAgICAic3RhYnMiLCAic3RhZ3MiLCAic3RhaWQiLCAic3RhaW4iLCAic3RhbGsiLCAic3RhbmsiLCAic3RhdmUiLCAic3RlYWsiLAogICAgInN0ZXJuIiwgInN0ZXdzIiwgInN0aW5nIiwgInN0aW5rIiwgInN0aW50IiwgInN0b2tlIiwgInN0b21wIiwgInN0b255IiwKICAgICJzdG9vbCIsICJzdG9vcCIsICJzdG9yayIsICJzdG91dCIsICJzdG92ZSIsICJzdG93cyIsICJzdHJhcCIsICJzdHJldyIsCiAgICAic3RydW0iLCAic3RydXQiLCAic3R1YnMiLCAic3R1ZHMiLCAic3R1bXAiLCAic3R1bmciLCAic3R1bmsiLCAic3VhdmUiLAogICAgInN1Y2tzIiwgInN1ZWRlIiwgInN1bGtzIiwgInN1bGt5IiwgInN1bnVwIiwgInN1cmVyIiwgInN1cmZzIiwgInN1cmdlIiwKICAgICJzdXJseSIsICJzd2FicyIsICJzd2FucyIsICJzd2FybSIsICJzd2F0cyIsICJzd2F5cyIsICJzd2VsbCIsICJzd2lmdCIsCiAgICAic3dpZ3MiLCAic3dpbGwiLCAic3dpbmUiLCAic3dpcGUiLCAic3dpcmwiLCAic3dpc2giLCAic3dvb24iLCAic3dvb3AiLAogICAgInN3dW5nIiwgInN5cnVwIiwgInRhYmJ5IiwgInRhYm9vIiwgInRhY2l0IiwgInRhY2t5IiwgInRhY29zIiwgInRhaW50IiwKICAgICJ0YWxseSIsICJ0YWxvbiIsICJ0YW1lZCIsICJ0YW1lciIsICJ0YW1lcyIsICJ0YW5nbyIsICJ0YW5ncyIsICJ0YXBlZCIsCiAgICAidGFwZXIiLCAidGFyZHkiLCAidGFycnkiLCAidGFydHMiLCAidGFzdHkiLCAidGF0dHkiLCAidGF1bnQiLCAidGF3bnkiLAogICAgInRheGVkIiwgInRheGlzIiwgInRlYWtzIiwgInRlYXNlIiwgInRlYXRzIiwgInRlZW1zIiwgInRlZW5zIiwgInRlbXBvIiwKICAgICJ0ZW5ldCIsICJ0ZW5vciIsICJ0ZW50cyIsICJ0ZXBlZSIsICJ0ZXBpZCIsICJ0aGF3cyIsICJ0aGV0YSIsICJ0aGlnaCIsCiAgICAidGhpbnMiLCAidGhvbmciLCAidGhvcm4iLCAidGhyb2IiLCAidGh1ZHMiLCAidGh1Z3MiLCAidGh1bXAiLCAidGh5bWUiLAogICAgInRpYXJhIiwgInRpY2tzIiwgInRpZGFsIiwgInRpZGVkIiwgInRpZGVzIiwgInRpZXJzIiwgInRpZmZzIiwgInRpbGRlIiwKICAgICJ0aWxlZCIsICJ0aWxscyIsICJ0aWx0cyIsICJ0aW1pZCIsICJ0aW5nZSIsICJ0aW5ncyIsICJ0aW5ueSIsICJ0aW50cyIsCiAgICAidGlwc3kiLCAidG9hZHMiLCAidG9nYXMiLCAidG9pbHMiLCAidG9sbHMiLCAidG9tYnMiLCAidG9tZXMiLCAidG9uYWwiLAogICAgInRvbmVkIiwgInRvbmdzIiwgInRvbmljIiwgInRvbm5lIiwgInRvb3RzIiwgInRvcGF6IiwgInRvcmNoIiwgInRvcnNvIiwKICAgICJ0b3RlZCIsICJ0b3RlbSIsICJ0b3RlcyIsICJ0b3VycyIsICJ0b3V0cyIsICJ0b3dlZCIsICJ0b3dlbCIsICJ0b3hpYyIsCiAgICAidG94aW4iLCAidG95ZWQiLCAidHJhY3QiLCAidHJhaXQiLCAidHJhbXAiLCAidHJhd2wiLCAidHJheXMiLCAidHJlZWQiLAogICAgInRyZWtzIiwgInRyaWxsIiwgInRyaW1zIiwgInRyaW9zIiwgInRyaXBlIiwgInRyaXRlIiwgInRyb2xsIiwgInRyb3RzIiwKICAgICJ0cm91dCIsICJ0cnVjZSIsICJ0cnVlZCIsICJ0cnVlciIsICJ0cnVlcyIsICJ0cnVtcCIsICJ0dWJhcyIsICJ0dWJlZCIsCiAgICAidHVja3MiLCAidHVmdHMiLCAidHVsaXAiLCAidHVtbXkiLCAidHVuYXMiLCAidHVuZXIiLCAidHVuaWMiLCAidHVyZnMiLAogICAgInR1c2tzIiwgInR3YW5nIiwgInR3ZWFrIiwgInR3ZWVkIiwgInR3ZWV0IiwgInR3aWdzIiwgInR3aW5lIiwgInR3aXJsIiwKICAgICJ1ZGRlciIsICJ1bGNlciIsICJ1bHRyYSIsICJ1bmN1dCIsICJ1bmR1ZSIsICJ1bmZpdCIsICJ1bm1hbiIsICJ1bnNheSIsCiAgICAidW50aWUiLCAidXBlbmQiLCAidXBwZWQiLCAidXJpbmUiLCAidXNoZXIiLCAidXN1cnAiLCAidXRlcmkiLCAidmFsZXQiLAogICAgInZhbmVzIiwgInZhc2VzIiwgInZhc3RzIiwgInZhdWx0IiwgInZlZXJzIiwgInZlaWxzIiwgInZlaW5zIiwgInZlbm9tIiwKICAgICJ2ZW50cyIsICJ2ZXJnZSIsICJ2ZXJ2ZSIsICJ2ZXN0cyIsICJ2ZXhlZCIsICJ2ZXhlcyIsICJ2aWFscyIsICJ2aWNlZCIsCiAgICAidmljZXMiLCAidmlnaWwiLCAidmlsZXIiLCAidmlsbGEiLCAidmluZXMiLCAidmlvbGEiLCAidmlwZXIiLCAidmlyYWwiLAogICAgInZpc2FzIiwgInZpc2VkIiwgInZpc2VzIiwgInZpc29yIiwgInZpc3RhIiwgInZpdmlkIiwgInZvZGthIiwgInZvZ3VlIiwKICAgICJ2b2lkcyIsICJ2b2x0cyIsICJ2b3dlZCIsICJ2eWluZyIsICJ3YWZlciIsICJ3YWZ0cyIsICJ3YWdlZCIsICJ3YWdlciIsCiAgICAid2Fnb24iLCAid2FpZnMiLCAid2FpbHMiLCAid2Fpc3QiLCAid2FpdmUiLCAid2FrZW4iLCAid2FsdHoiLCAid2FuZHMiLAogICAgIndhbmVkIiwgIndhbmVzIiwgIndhbm5hIiwgIndhcmRzIiwgIndhcnRzIiwgIndhc3BzIiwgIndhdHRzIiwgIndhdmVyIiwKICAgICJ3YXhlZCIsICJ3YXhlcyIsICJ3ZWFucyIsICJ3ZWF2ZSIsICJ3ZWRnZSIsICJ3ZWVkcyIsICJ3ZWVkeSIsICJ3ZWVwcyIsCiAgICAid2Vlc3QiLCAid2VsZHMiLCAid2VsbHMiLCAid2VsdHMiLCAid2hhY2siLCAid2hhcmYiLCAid2hhdHMiLCAid2hlYXQiLAogICAgIndoZW5zIiwgIndoZXRzIiwgIndoaWZmIiwgIndoaW1zIiwgIndoaW5lIiwgIndoaXBzIiwgIndoaXJsIiwgIndoaXNrIiwKICAgICJ3aG9yZSIsICJ3aWNrcyIsICJ3aWRlbiIsICJ3aWRvdyIsICJ3aWVsZCIsICJ3aWxkcyIsICJ3aWx0cyIsICJ3aW5jZSIsCiAgICAid2luY2giLCAid2luZHkiLCAid2luZWQiLCAid2lua3MiLCAid2lwZXIiLCAid2lzZXMiLCAid2lzcHMiLCAid2lzcHkiLAogICAgIndvbGZzIiwgIndvbWJzIiwgIndvb2R5IiwgIndvb2VkIiwgIndvb2ZzIiwgIndvcmR5IiwgIndvdmVuIiwgIndvd2VkIiwKICAgICJ3cmVhayIsICJ3cmVucyIsICJ3cmVzdCIsICJ3cmluZyIsICJ3cml0cyIsICJ3cnVuZyIsICJ3cnllciIsICJ5YWNodCIsCiAgICAieWFua3MiLCAieWFybnMiLCAieWF3bnMiLCAieWVhcm4iLCAieWVhc3QiLCAieWVsbHMiLCAieWVscHMiLCAieWVzZXMiLAogICAgInlvZGVsIiwgInlva2VkIiwgInlva2VsIiwgInlva2VzIiwgInlvbGtzIiwgInlvd2xzIiwgInplYnJhIiwgInplc3RzIiwKICAgICJ6aW5jcyIsICJ6b25lZCIsICJ6b29tcyIsICJhYmFmdCIsICJhYmFzZSIsICJhYmJlcyIsICJhYmVhbSIsICJhYnV0cyIsCiAgICAiYWJ1enoiLCAiYWNob28iLCAiYWNtZXMiLCAiYWRkZXIiLCAiYWRkbGUiLCAiYWRpZXUiLCAiYWRpb3MiLCAiYWRtYW4iLAogICAgImFkbWVuIiwgImFkemVzIiwgImFlZ2lzIiwgImFlcmllIiwgImFmaXJlIiwgImFmb3VsIiwgImFnYXBlIiwgImFnYXRlIiwKICAgICJhZ2F2ZSIsICJhbGRlciIsICJhbG9lcyIsICJhbHVtcyIsICJhbWlnbyIsICJhbWlubyIsICJhbWl0eSIsICJhbW91ciIsCiAgICAiYW5pb24iLCAiYW5pc2UiLCAiYW5raHMiLCAiYW5vZGUiLCAiYW5vbnMiLCAiYW50aXMiLCAiYXBhY2UiLCAiYXBoaWQiLAogICAgImFwc2VzIiwgImFxdWFzIiwgImFyZ29uIiwgImFyZ290IiwgImFzY290IiwgImFzcGljIiwgImFzc2F5IiwgImFzdGVyIiwKICAgICJhc3RpciIsICJhdG9sbCIsICJhdHJpYSIsICJhdHRhciIsICJhdWdlciIsICJhdWdodCIsICJhdWd1ciIsICJhdmFzdCIsCiAgICAiYXZlcnMiLCAiYXZpYW4iLCAiYXhpYWwiLCAiYXhvbnMiLCAiYmFiZWwiLCAiYmFpemUiLCAiYmFsa3kiLCAiYmFsc2EiLAogICAgImJhbm5zIiwgImJhc2FsIiwgImJhc3NvIiwgImJhdGlrIiwgImJhdHR5IiwgImJlYXVzIiwgImJlY2tzIiwgImJlZm9nIiwKICAgICJiZWdhdCIsICJiZWdldCIsICJiZWdvdCIsICJiZWxheSIsICJiZWxsZSIsICJiZXJncyIsICJiZXJtcyIsICJiZXJ5bCIsCiAgICAiYmVzb20iLCAiYmVzb3QiLCAiYmV0YXMiLCAiYmlkZHkiLCAiYmlkZXQiLCAiYmllcnMiLCAiYmlnaHQiLCAiYmlsZ2UiLAogICAgImJpbGtzIiwgImJpbGx5IiwgImJsZWVwIiwgImJvYmJ5IiwgImJvZ2V5IiwgImJvZ2d5IiwgImJvZ2llIiwgImJvbGFzIiwKICAgICJib2xlcyIsICJib2xscyIsICJib25lciIsICJib25ncyIsICJib25ueSIsICJib296eSIsICJib3JheCIsICJib3JlciIsCiAgICAiYm9yb24iLCAiYm93ZXIiLCAiYnJhY3QiLCAiYnJhZHMiLCAiYnJpZ3MiLCAiYnJ1aW4iLCAiYnVsZ3kiLCAiYnVuZ3MiLAogICAgImJ1bnRzIiwgImJ1cmdzIiwgImJ1c2J5IiwgImJ1dGNoIiwgImNhYmFsIiwgImNhZGdlIiwgImNhaXJuIiwgImNhbHl4IiwKICAgICJjYW1weSIsICJjYW50byIsICJjYW50cyIsICJjYXBvbiIsICJjYXJldCIsICJjYXJvbSIsICJjYXJwaSIsICJjYXZpbCIsCiAgICAiY2hhcnkiLCAiY2hvY2siLCAiY2hvbXAiLCAiY2h1cmwiLCAiY2lsaWEiLCAiY2l2ZXQiLCAiY2xld3MiLCAiY2xvbXAiLAogICAgImNsb3BzIiwgImNsb3lzIiwgImNvY2NpIiwgImNvZGFzIiwgImNvZGV4IiwgImNvaWZzIiwgImNvbWJvIiwgImNvbWVyIiwKICAgICJjb25jaCIsICJjb25nYSIsICJjb25pYyIsICJjb25rcyIsICJjb29ucyIsICJjb290cyIsICJjb3ByYSIsICJjb3BzZSIsCiAgICAiY29ybXMiLCAiY290ZXMiLCAiY291cGUiLCAiY292ZW4iLCAiY292ZXkiLCAiY293bHMiLCAiY295bHkiLCAiY296ZW4iLAogICAgImNyYXBlIiwgImNyYXdzIiwgImNyZWVsIiwgImNyZXNzIiwgImNyaWVyIiwgImNyb25lIiwgImNyb3VwIiwgImNydWV0IiwKICAgICJjdWJpdCIsICJjdW1pbiIsICJjdW50cyIsICJjdXJlciIsICJjdXJpZSIsICJjdXNoeSIsICJjdXNwcyIsICJjdXR1cCIsCiAgICAiZGFjaGEiLCAiZGFmZnkiLCAiZGFsZXMiLCAiZGF2aXQiLCAiZGViYXIiLCAiZGVpY2UiLCAiZGVpc20iLCAiZGVsbHMiLAogICAgImRlbXVyIiwgImRldWNlIiwgImRob3RpIiwgImRpY3RhIiwgImRpbGx5IiwgImRpbmdvIiwgImRpbmdzIiwgImRpbmt5IiwKICAgICJkaW9kZSIsICJkaXJrcyIsICJkaXZhbiIsICJkaXZhcyIsICJkaXZvdCIsICJkaXZ2eSIsICJkb2RvcyIsICJkb2ZmcyIsCiAgICAiZG9nZ3kiLCAiZG9naWUiLCAiZG9sdHMiLCAiZG90dHkiLCAiZG93ZWwiLCAiZG93c2UiLCAiZG95ZW4iLCAiZHJhbXMiLAogICAgImRyYXlzIiwgImRydWJzIiwgImRydWlkIiwgImRyeWFkIiwgImR1Y2FsIiwgImR1Y2F0IiwgImR1Y2h5IiwgImR3ZWViIiwKICAgICJkeWVycyIsICJlZ3JldCIsICJlaWRlciIsICJlbGlkZSIsICJlbWVuZCIsICJlbWVyeSIsICJlbW90ZSIsICJlbmR1ZSIsCiAgICAiZW5udWkiLCAiZXBveHkiLCAiZXN0ZXIiLCAiZXVyb3MiLCAiZXdlcnMiLCAiZmFrZXIiLCAiZmFraXIiLCAiZmF1bnMiLAogICAgImZlbXVyIiwgImZlcmFsIiwgImZpZWZzIiwgImZpZmVzIiwgImZpbmlzIiwgImZpbmtzIiwgImZpbm55IiwgImZpcnRoIiwKICAgICJmaXRseSIsICJmaXhlciIsICJmbGFjayIsICJmbGF5cyIsICJmbG9lcyIsICJmbHVreSIsICJmbHVtZSIsICJmbHlieSIsCiAgICAiZm9saW8iLCAiZnJ1bXAiLCAiZnJ5ZXIiLCAiZnVndWUiLCAiZnVyemUiLCAiZnVzdHkiLCAiZnV0b24iLCAiZ2FmZnMiLAogICAgImdhbWluIiwgImdhdXp5IiwgImdhemVyIiwgImdlY2tvIiwgImdlbGlkIiwgImdlb2RlIiwgImdpbXB5IiwgImdpcmRzIiwKICAgICJnaXJ0cyIsICJnbHVleSIsICJnbHlwaCIsICJnb25hZCIsICJnb29rcyIsICJnb3JzZSIsICJnb3V0eSIsICJncmFpbCIsCiAgICAiZ3JlYmUiLCAiZ3Jpc3QiLCAiZ3JvdXQiLCAiZ3Vhbm8iLCAiZ3VhdmEiLCAiZ3VsYWciLCAiZ3VubnkiLCAiZ3lyb3MiLAogICAgImhhZnRzIiwgImhhaWt1IiwgImhha2VzIiwgImhhbmtzIiwgImhhcnB5IiwgImhhc3BzIiwgImhhdGVyIiwgImhhd2VkIiwKICAgICJoZWZ0cyIsICJoZWxpeCIsICJoZWxvdCIsICJoZW5uYSIsICJoZXdlciIsICJoZXhlZCIsICJoZXhlcyIsICJob2FyeSIsCiAgICAiaG9nYW4iLCAiaG9rdW0iLCAiaG9vY2giLCAiaG9vZXkiLCAiaG9va3kiLCAiaHViYnkiLCAiaHVsYXMiLCAiaHVtdXMiLAogICAgImh1c3N5IiwgImh5ZHJhIiwgImh5aW5nIiwgImh5bWVuIiwgImh5cG9zIiwgImlhbWJzIiwgImljaWx5IiwgImlkeWxsIiwKICAgICJpbWFtcyIsICJpbmFwdCIsICJpbmdvdCIsICJpbnNldCIsICJpbnVyZSIsICJpc2xldCIsICJqYWJvdCIsICJqYXBhbiIsCiAgICAiamFwZWQiLCAiamFwZXMiLCAiamVlcHMiLCAiamloYWQiLCAiamltbXkiLCAiamlubmkiLCAiam9pc3QiLCAiam91bGUiLAogICAgImpvdXN0IiwgImp1bGVwIiwgImp1bmNvIiwgImthcG9rIiwgImthem9vIiwgImtlYmFiIiwgImtldGNoIiwgImtoYW5zIiwKICAgICJraWNreSIsICJrbmF2ZSIsICJrbmVsbCIsICJrb29rcyIsICJrb29reSIsICJrcm9uZSIsICJrcm9uYSIsICJrdWR6dSIsCiAgICAibGFiaWEiLCAibGFpdHkiLCAibGFtYXMiLCAibGFyY2giLCAibGFyZ28iLCAibGF4bHkiLCAibGF6ZWQiLCAibGF6ZXMiLAogICAgImxlZnR5IiwgImxlbW1hIiwgImxlbXVyIiwgImxpY2l0IiwgImxpZWdlIiwgImxpZmVyIiwgImxpbW5zIiwgImxpcGlkIiwKICAgICJsaXNsZSIsICJsbGFubyIsICJsb2FteSIsICJsb2JlZCIsICJsb2N1cyIsICJsb2RlcyIsICJsb2dlcyIsICJsb2dpbiIsCiAgICAibG9vcHkiLCAibG90dG8iLCAibG91dHMiLCAibHVhdXMiLCAibHViZWQiLCAibHViZXMiLCAibHVjcmUiLCAibHVwdXMiLAogICAgIm1hY2F3IiwgIm1hZ21hIiwgIm1hbWJvIiwgIm1hbm5hIiwgIm1hbnNlIiwgIm1hdHpvIiwgIm1hdmVuIiwgIm1lZGljIiwKICAgICJtZXNhcyIsICJtZXdscyIsICJtaWRkeSIsICJtaWRnZSIsICJtaWxjaCIsICJtaWxlciIsICJtaW5pbSIsICJtaXNkbyIsCiAgICAibW9jaGEiLCAibW9ndWwiLCAibW9pcmUiLCAibW9sbHMiLCAibW9yYXkiLCAibW9zZXkiLCAibW90ZXMiLCAibXVja3kiLAogICAgIm11ZnRpIiwgIm11cmtzIiwgIm11c2t5IiwgIm11c3N5IiwgIm15cnJoIiwgIm5hYm9iIiwgIm5hY2hvIiwgIm5hY3JlIiwKICAgICJuYWRpciIsICJuYWlhZCIsICJuYXRhbCIsICJuYXZlcyIsICJuZWF0aCIsICJuZXJ2eSIsICJuZXdlbCIsICJuZXh1cyIsCiAgICAibmltYmkiLCAibmluamEiLCAibml4ZWQiLCAibml4ZXMiLCAibm9kYWwiLCAibm9kZHkiLCAibm9lbHMiLCAibm9uY2UiLAogICAgIm5vdmFlIiwgIm5vdmFzIiwgIm5vd2F5IiwgIm9ha2VuIiwgIm9ha3VtIiwgIm9hdGVuIiwgIm9iaXRzIiwgIm9jdGV0IiwKICAgICJvZGl1bSIsICJvZmZhbCIsICJvcGluZSIsICJvcmF0ZSIsICJvc2llciIsICJvdXRnbyIsICJvdXRyZSIsICJvdm9pZCIsCiAgICAib3Z1bGUiLCAib3dsZXQiLCAib3hib3ciLCAicGFlYW4iLCAicGFsbXkiLCAicGFsc3kiLCAicGFycnkiLCAicGFzaGEiLAogICAgInBhdHN5IiwgInBhd2xzIiwgInBla29lIiwgInBlc29zIiwgInBld2VlIiwgInBoaWFsIiwgInBoaXNoIiwgInBobG94IiwKICAgICJwaHlsYSIsICJwaWluZyIsICJwaWtlciIsICJwaWxhZiIsICJwaW50byIsICJwaXBlciIsICJwaXBpdCIsICJwaXRvbiIsCiAgICAicGxhaXQiLCAicG9ja3MiLCAicG9lc3kiLCAicG9uZXMiLCAicG9vaHMiLCAicG9wZXMiLCAicG9wcGEiLCAicG9ybm8iLAogICAgInBvc2VyIiwgInBvc2l0IiwgInBveGVzIiwgInByYXRlIiwgInByaWdzIiwgInByb3N5IiwgInBzaGF3IiwgInB1bHB5IiwKICAgICJwdXBhZSIsICJwdXBhbCIsICJwdXJscyIsICJweXhlcyIsICJxdWFmZiIsICJxdWFzaSIsICJxdWlkcyIsICJxdWlyZSIsCiAgICAicXVvaXQiLCAicXVvdGgiLCAicmFnYXMiLCAicmFqYWgiLCAicmFuZHkiLCAicmFuZ3kiLCAicmVhcm0iLCAicmVidXMiLAogICAgInJlZWR5IiwgInJlZXZlIiwgInJlZml0IiwgInJlbmFsIiwgInJoZWFzIiwgInJoZXVtIiwgInJpY2tzIiwgInJpZmZzIiwKICAgICJyaWxscyIsICJyaW1lZCIsICJyaW1lcyIsICJyaXZlbiIsICJyb2FucyIsICJyb2dlciIsICJyb2lscyIsICJyb29kcyIsCiAgICAicm9zaW4iLCAicm91ZXMiLCAicm92ZXIiLCAicm93ZWwiLCAicm93ZXIiLCAicnViZXMiLCAicnVtYmEiLCAicnVwZWUiLAogICAgInJ1c2tzIiwgInNhYmxlIiwgInNhaGliIiwgInNhaXRoIiwgInNhbHZvIiwgInNhbWJhIiwgInNhcHB5IiwgInNhdGVkIiwKICAgICJzYXRlcyIsICJzYXR5ciIsICJzY2FtcCIsICJzY2F0cyIsICJzY2h3YSIsICJzY2lvbiIsICJzY29uZSIsICJzY293cyIsCiAgICAic2NyaXAiLCAic2Nyb2QiLCAic2N1YmEiLCAic2N1ZHMiLCAic2N1bGwiLCAic2N1cmYiLCAic2VhbXkiLCAic2VkZ2UiLAogICAgInNlZXJzIiwgInNlZ3VlIiwgInNlbWlzIiwgInNlbm5hIiwgInNlcGFsIiwgInNlcGlhIiwgInNlcHRhIiwgInNlcmVyIiwKICAgICJzZXJmcyIsICJzZXJnZSIsICJzZXJ2byIsICJzaGFkcyIsICJzaGFncyIsICJzaGFocyIsICJzaGFsZSIsICJzaGFsdCIsCiAgICAic2hhbmsiLCAic2hhcmQiLCAic2hpbGwiLCAic2hpbXMiLCAic2hpcnIiLCAic2lieWwiLCAic2lzYWwiLCAic2lzZXMiLAogICAgInNpdGFyIiwgInNrZWV0IiwgInNraWZmIiwgInNsYWdzIiwgInNsb2VzIiwgInNsb29wIiwgInNsdWVkIiwgInNsdWVzIiwKICAgICJzbmFreSIsICJzbm9vdCIsICJzb25hciIsICJzb25ueSIsICJzb290aCIsICJzb3BweSIsICJzb3VnaCIsICJzb3VweSIsCiAgICAic291c2UiLCAic293ZXIiLCAic3Bha2UiLCAic3BlY3MiLCAic3Bpa3kiLCAic3BpbnkiLCAic3Bvb3IiLCAic3ByYXQiLAogICAgInNwdW1lIiwgInNxdWFiIiwgInNxdWF3IiwgInN0YXBoIiwgInN0ZWFkIiwgInN0ZWVkIiwgInN0ZWluIiwgInN0aWVzIiwKICAgICJzdGlsZSIsICJzdG9hdCIsICJzdHJlcCIsICJzdHJvcCIsICJzdHlsaSIsICJzdWRzeSIsICJzdWxseSIsICJzdW1hYyIsCiAgICAic3VtcHMiLCAic3VzaGkiLCAic3dhZ3MiLCAic3dhaW4iLCAic3dhbWkiLCAic3dhcmQiLCAic3dhc2giLCAic3dhdGgiLAogICAgInN5bHBoIiwgInRhbXBzIiwgInRhbnN5IiwgInRhcGlyIiwgInRhcmVkIiwgInRhcmVzIiwgInRhcm9zIiwgInRhdXBlIiwKICAgICJ0ZWFscyIsICJ0ZWFyeSIsICJ0ZWNocyIsICJ0ZWVueSIsICJ0ZWxleCIsICJ0ZW5vbiIsICJ0ZXJucyIsICJ0ZXJyeSIsCiAgICAidGhlZXMiLCAidGhpbmUiLCAidGhyb2UiLCAidGhydW0iLCAidGliaWEiLCAidGluZXMiLCAidGl0YW4iLCAidGl0aGUiLAogICAgInRvYWR5IiwgInRvZGR5IiwgInRva2VkIiwgInRva2VzIiwgInRvbmVyIiwgInRvcXVlIiwgInRvcnRlIiwgInRvcnVzIiwKICAgICJ0cmFtcyIsICJ0cmVzcyIsICJ0cmlhZCIsICJ0cmljZSIsICJ0cm9wZSIsICJ0cm90aCIsICJ0cm95cyIsICJ0cnVzcyIsCiAgICAidHJ5c3QiLCAidHViZXIiLCAidHVsbGUiLCAidHVtaWQiLCAidHVubnkiLCAidHV0dXMiLCAidHdhaW4iLCAidHdpbGwiLAogICAgInR5cm9zIiwgInVsbmFlIiwgInVtYmVsIiwgInVtYmVyIiwgInVtaWFrIiwgInVtcGVkIiwgInVuYmFyIiwgInVucGluIiwKICAgICJ1bndlZCIsICJ1c3VyeSIsICJ1dnVsYSIsICJ2YWxlcyIsICJ2YW1wcyIsICJ2YXBpZCIsICJ2YXVudCIsICJ2ZWVwcyIsCiAgICAidmVsZHMiLCAidmVuYWwiLCAidmV0Y2giLCAidmlhbmQiLCAidmlvbHMiLCAidmlyZW8iLCAidml2YXMiLCAidml4ZW4iLAogICAgInZvaWxlIiwgInZvbGVzIiwgInZ1bHZhIiwgIndhY2tvIiwgIndhZGVyIiwgIndhZGlzIiwgIndhbGVkIiwgIndhbGVzIiwKICAgICJ3YW5seSIsICJ3YXJ0eSIsICJ3YXhlbiIsICJ3ZWFscyIsICJ3ZWVweSIsICJ3ZWZ0cyIsICJ3ZWlycyIsICJ3ZW5jaCIsCiAgICAid2VuZHMiLCAid2V0bHkiLCAid2hlYWwiLCAid2hlbGsiLCAid2hlbHAiLCAid2hpbnkiLCAid2hpc3QiLCAid2hpdHMiLAogICAgIndob3JsIiwgIndpZ2h0IiwgIndpa2lzIiwgIndpbGVkIiwgIndvb2VyIiwgIndvcm15IiwgIndyYWNrIiwgIndyb3RoIiwKICAgICJ4ZW5vbiIsICJ4eWxlbSIsICJ5YWhvbyIsICJ5YXdlZCIsICJ5YXdscyIsICJ5b2dpcyIsICJ5dWNjYSIsICJ6ZWJ1cyIsCiAgICAiemlsY2giLCAiemluZ3MiLCAiemlwcHkiLCAiem9uYWwiLCAiZWNsYXQiLCAiZXBlZXMiLCAiZXR1ZGUiLCAiYWdncm8iLAogICAgImFpdGNoIiwgImFsZ2FsIiwgImFtYml0IiwgImFudHN5IiwgImFyc2VkIiwgImJhY2N5IiwgImJhaXJuIiwgImJhbGR5IiwKICAgICJiYWxseSIsICJiYXJteSIsICJiZWF1dCIsICJiZWVyeSIsICJiZWd1bSIsICJiZW5keSIsICJiZXJrcyIsICJiZXRlbCIsCiAgICAiYmV2dnkiLCAiYmhhamkiLCAiYmlmZnMiLCAiYmlqb3UiLCAiYml0dHkiLCAiYmxhZ3MiLCAiYmxva2UiLCAiYmxvd3kiLAogICAgImJvZGdlIiwgImJvbmNlIiwgImJvbmtzIiwgImJyZWFtIiwgImJyaWxsIiwgImJydWl0IiwgImJ1bXBoIiwgImJ1cmdoIiwKICAgICJidXNrcyIsICJidXN0eSIsICJidXR0eSIsICJieXJlcyIsICJjYWJlciIsICJjYWZmcyIsICJjYXJlciIsICJjYXJvYiIsCiAgICAiY2F2ZXIiLCAiY2VsZWIiLCAiY2VydHMiLCAiY2hhcmQiLCAiY2hpdnkiLCAiY2hvY3MiLCAiY2xvbmsiLCAiY29sZXkiLAogICAgImNvbmVkIiwgImNvcmdpIiwgImNveGVkIiwgImNveGVzIiwgImNveXB1IiwgImNyb2Z0IiwgImN1cGlkIiwgImN1cHBhIiwKICAgICJjdXRleSIsICJjdXRpZSIsICJkYWdvcyIsICJkZWFyeSIsICJkZWZvZyIsICJkZW1vYiIsICJkaG93cyIsICJkaWxkbyIsCiAgICAiZGluYXIiLCAiZGlwcHkiLCAiZGlwc28iLCAiZGlzaHkiLCAiZG9kZ3kiLCAiZHJlYXIiLCAiZHVja3kiLCAiZHVmZnMiLAogICAgImR1bWJvIiwgImVmZmVkIiwgImV4cGF0IiwgImZhZGR5IiwgImZhZmZzIiwgImZhdHNvIiwgImZhdHdhIiwgImZhdmVzIiwKICAgICJmZWxsYSIsICJmZXJueSIsICJmbGFucyIsICJmb290eSIsICJmcmlncyIsICJmcm9zaCIsICJmdWdneSIsICJnYW1teSIsCiAgICAiZ2FuamEiLCAiZ2F0b3IiLCAiZ2F3cHMiLCAiZ2lybHkiLCAiZ2lyb3MiLCAiZ2l0ZXMiLCAiZ2l2ZXIiLCAiZ2xhY2UiLAogICAgImdvZXJzIiwgImdvdGhzIiwgImdyYW5zIiwgImdydW1wIiwgImd1bmdlIiwgImd1bmd5IiwgImhhbGFsIiwgImhhbW15IiwKICAgICJob2ljayIsICJob25reSIsICJodW1waCIsICJodW5reSIsICJpbmRpZSIsICJpbm5pdCIsICJpdmllZCIsICJqYW1teSIsCiAgICAiamVtbXkiLCAiamlua3MiLCAiam9leXMiLCAiam9rZXkiLCAiam93bHkiLCAia2FydHMiLCAia2lrZXMiLCAia29ybWEiLAogICAgImtyaWxsIiwgImxhaXJkIiwgImxhdHRlIiwgImxleGlzIiwgImxpZG9zIiwgImxpbG9zIiwgImxpbWV5IiwgImxpbmdzIiwKICAgICJsaXBweSIsICJsb2NvcyIsICJsb2N1bSIsICJsb2xseSIsICJsb3VnaCIsICJsb3VycyIsICJsb3ZleSIsICJsdWdlcyIsCiAgICAibHVsdXMiLCAibHVyZ3kiLCAibWFmaWEiLCAibWFtYmEiLCAibWFtbXkiLCAibWFua3kiLCAibWFyZ2UiLCAibWF0ZXIiLAogICAgIm1hdGV5IiwgIm1lYW55IiwgIm1ldGhzIiwgIm1lenpvIiwgIm1pY2tzIiwgIm1pY3JvIiwgIm1pbmd5IiwgIm1vdGV0IiwKICAgICJtb3hpZSIsICJtdXphayIsICJtdXp6eSIsICJuYWFucyIsICJuYXJreSIsICJuYXRjaCIsICJuYXZ2eSIsICJuZWdybyIsCiAgICAibmlmZnkiLCAibmltYnkiLCAibm9ob3ciLCAibm9va3kiLCAib2NrZXIiLCAib29oZWQiLCAib29tcGgiLCAib3V0dGEiLAogICAgIm91em9zIiwgInBhY2V5IiwgInBhbGx5IiwgInBhbnRvIiwgInBhcHB5IiwgInBhcmFzIiwgInBhcmt5IiwgInBlYWt5IiwKICAgICJwZWF0eSIsICJwZWtlcyIsICJwZXJ2cyIsICJwZXN0byIsICJwaW5leSIsICJwaW5rbyIsICJwaW5ueSIsICJwaXN0ZSIsCiAgICAicGl0YXMiLCAicGl0dGEiLCAicGxlYmUiLCAicGxlYnMiLCAicGxvbmsiLCAicG9seXMiLCAicG9tbXkiLCAicG9uY2UiLAogICAgInBvbmN5IiwgInBvbmdzIiwgInBvb2VkIiwgInBvb2ZzIiwgInBvcmt5IiwgInBvdWZzIiwgInByYW1zIiwgInByYW5nIiwKICAgICJwcmF0cyIsICJwcmlvbiIsICJwcm9sZSIsICJwdWJlcyIsICJwdWJpcyIsICJwdWtrYSIsICJwemF6eiIsICJxdWlmZiIsCiAgICAicXVpbnMiLCAicXVpbnQiLCAicmFnZ2EiLCAicmFuZWUiLCAicmF2ZXIiLCAicmVjY2UiLCAicmVjb24iLCAicmVjdG8iLAogICAgInJlamlnIiwgInJlbWl4IiwgInJlc2F0IiwgInJlc2l0IiwgInJldHJvIiwgInJvbmRvIiwgInJvdGFzIiwgInJvdXN0IiwKICAgICJyb3dhbiIsICJydWNrcyIsICJydW5pYyIsICJzYWRodSIsICJzYWdneSIsICJzYW1leSIsICJzYXJnZSIsICJzYXJreSIsCiAgICAic2F0YXkiLCAic2F2b3kiLCAic2NhcnAiLCAic2NyZWUiLCAic2NydW0iLCAic2VidW0iLCAic2VyaWYiLCAic2V0dHMiLAogICAgInNpY2tvIiwgInNpbmVzIiwgInNraW50IiwgInNraXZlIiwgInNrdWFzIiwgInNtb2dzIiwgInNuaWNrIiwgInNub2dzIiwKICAgICJzb3VrcyIsICJzcGFtcyIsICJzcGljcyIsICJzcGlmZiIsICJzcGl2cyIsICJzcHJvZyIsICJzcXVpYiIsICJzdGFneSIsCiAgICAic3Rlbm8iLCAic3RvdXAiLCAic3dlZGUiLCAic3dpenoiLCAic3dvdHMiLCAidGFwYXMiLCAidGFybnMiLCAidGFydHkiLAogICAgInRhdGVyIiwgInRlZGR5IiwgInRlbGx5IiwgInRlbmNoIiwgInRpbGVyIiwgInRpdGNoIiwgInRpdHR5IiwgInRvZmZzIiwKICAgICJ0b3BlZSIsICJ0cmV3cyIsICJ0cmllciIsICJ0cnVncyIsICJ0dXF1ZSIsICJ0dXJibyIsICJ0dXJwcyIsICJ0d2F0cyIsCiAgICAidHdpeHQiLCAidW5saXQiLCAidW5tZXQiLCAidmVnZXMiLCAidmVsYXIiLCAidmVyc28iLCAidm9pbGEiLCAid2FkZ2UiLAogICAgIndhbGx5IiwgIndhbmtzIiwgIndhem9vIiwgIndlZW55IiwgIndlbGx5IiwgIndob3BzIiwgIndodXBzIiwgIndpbGx5IiwKICAgICJ3aXNlZCIsICJ3b2RnZSIsICJ3b2xkcyIsICJ3b25rcyIsICJ3b25reSIsICJ4ZXJveCIsICJ5ZXRpcyIsICJ5aWtlcyIsCiAgICAieW9iYm8iLCAieW9naWMiLCAieW9ua3MiLCAieXVra3kiLCAiemFwcHkiLCAiemluZXMiLCAiemluZ3kiLAoKICAgIC8qIG5vbnNlbnNlIHdvcmRzIHRvIHByb3Zva2UgYSBub24tbWFnaWMgc29sdXRpb24gKi8KCiAgICAiYWJjZGUiLCAiZmdoaWoiLCAia2xtbm8iLCAicHFyc3QiLCAidXZ3eHkiLAogICAgImFma3B1IiwgImJnbHF2IiwgImNobXJ3IiwgImRpbnN4IiwgImVqb3R5IiwgCiAgICBOVUxMCn07Cgp0eXBlZGVmIHN0cnVjdCBHcmlkIEdyaWQ7CgpzdHJ1Y3QgR3JpZCB7CiAgICBjb25zdCBUcmllICpyb3dbNV07CiAgICBjb25zdCBUcmllICpjb2xbNV07CiAgCiAgICB1bnNpZ25lZCBjZWxsOwoKICAgIGNoYXIgZ3JpZFs1XVs1XTsKICAgIHVuc2lnbmVkIG9yZGVyWzI1XVsyNl07Cn07Cgp2b2lkIGdyaWRfZHVtcChjb25zdCBHcmlkICpncmlkKQp7CiAgICBwcmludGYoIiUuNXNcbiIsIGdyaWQtPmdyaWRbMF0pOwogICAgcHJpbnRmKCIlLjVzXG4iLCBncmlkLT5ncmlkWzFdKTsKICAgIHByaW50ZigiJS41c1xuIiwgZ3JpZC0+Z3JpZFsyXSk7CiAgICBwcmludGYoIiUuNXNcbiIsIGdyaWQtPmdyaWRbM10pOwogICAgcHJpbnRmKCIlLjVzXG4iLCBncmlkLT5ncmlkWzRdKTsKICAgIHByaW50ZigiXG4iKTsKfQoKaW50IHRyaWVfY21wIChjb25zdCB2b2lkICpwYSwgY29uc3Qgdm9pZCAqcGIpCnsKICAgIGNvbnN0IHZvaWQgKmNvbnN0ICphID0gcGE7CiAgICBjb25zdCB2b2lkICpjb25zdCAqYiA9IHBiOwogICAgCiAgICByZXR1cm4gKCphID4gKmIpIC0gKCphIDwgKmIpOwp9CgppbnQgZ3JpZF9kaWZmZXJlbnQoY29uc3QgR3JpZCAqZ3JpZCkKewogICAgY29uc3QgVHJpZSAqd29yZHNbMTBdOwogICAgdW5zaWduZWQgaTsKICAgIAogICAgZm9yIChpID0gMDsgaSA8IDU7IGkrKykgewogICAgICAgIHdvcmRzW2ldID0gZ3JpZC0+cm93W2ldOwogICAgICAgIHdvcmRzW2kgKyA1XSA9IGdyaWQtPmNvbFtpXTsKICAgIH0KICAgIAogICAgcXNvcnQod29yZHMsIDEwLCBzaXplb2YoKndvcmRzKSwgdHJpZV9jbXApOwogICAgCiAgICBmb3IgKGkgPSAxOyBpIDwgMTA7IGkrKykgewogICAgICAgIGlmICh3b3Jkc1tpXSA9PSB3b3Jkc1tpIC0gMV0pIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gMTsKfQoKaW50IGdyaWRfZmluZChHcmlkICpncmlkKQp7CiAgICBpZiAoZ3JpZC0+Y2VsbCA9PSA1ICogNSkgewogICAgICAgIGlmIChncmlkX2RpZmZlcmVudChncmlkKSkgewogICAgICAgICAgICBncmlkX2R1bXAoZ3JpZCk7CiAgICAgICAgICAgIAogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGNvbnN0IHVuc2lnbmVkICpvcmRlciA9IGdyaWQtPm9yZGVyW2dyaWQtPmNlbGxdOwoKICAgICAgICB1bnNpZ25lZCBpID0gZ3JpZC0+Y2VsbCAlIDU7CiAgICAgICAgdW5zaWduZWQgaiA9IGdyaWQtPmNlbGwgLyA1OwogICAgICAgIHVuc2lnbmVkIHU7CiAgICAgICAgCiAgICAgICAgY29uc3QgVHJpZSAqcm93ID0gZ3JpZC0+cm93W2pdOwogICAgICAgIGNvbnN0IFRyaWUgKmNvbCA9IGdyaWQtPmNvbFtpXTsKICAgICAgICBncmlkLT5jZWxsKys7CgogICAgICAgIGZvciAodSA9IDA7IHUgPCAyNjsgdSsrKSB7CiAgICAgICAgICAgIHVuc2lnbmVkIGMgPSBvcmRlclt1XTsKICAgICAgICAKICAgICAgICAgICAgaWYgKHJvdy0+bmV4dFtjXSAmJiBjb2wtPm5leHRbY10pIHsKICAgICAgICAgICAgICAgIGdyaWQtPmdyaWRbal1baV0gPSAnQScgKyBjOwogICAgICAgICAgICAgICAgZ3JpZC0+cm93W2pdID0gcm93LT5uZXh0W2NdOwogICAgICAgICAgICAgICAgZ3JpZC0+Y29sW2ldID0gY29sLT5uZXh0W2NdOwoKICAgICAgICAgICAgICAgIGlmIChncmlkX2ZpbmQoZ3JpZCkpIHJldHVybiAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBncmlkLT5jZWxsLS07CiAgICAgICAgZ3JpZC0+cm93W2pdID0gcm93OwogICAgICAgIGdyaWQtPmNvbFtpXSA9IGNvbDsKICAgIH0KICAgIAogICAgcmV0dXJuIDA7Cn0KCnZvaWQgaW5pdF9zaHVmZmxlZCh1bnNpZ25lZCAqb3JkZXIpCnsKICAgIHVuc2lnbmVkIGk7CiAgICAKICAgIGZvciAoaSA9IDA7IGkgPCAyNjsgaSsrKSB7CiAgICAgICAgb3JkZXJbaV0gPSBpOwogICAgfQogICAgCiAgICBpID0gMjY7CiAgICAKICAgIHdoaWxlIChpKSB7CiAgICAgICAgdW5zaWduZWQgcGljayA9IHJhbmQoKSAlIGktLTsKICAgICAgICB1bnNpZ25lZCBzd2FwID0gb3JkZXJbaV07CiAgICAgICAgCiAgICAgICAgb3JkZXJbaV0gPSBvcmRlcltwaWNrXTsKICAgICAgICBvcmRlcltwaWNrXSA9IHN3YXA7ICAgICAgICAKICAgIH0KfQoKdm9pZCBmaW5kKGNvbnN0IFRyaWUgKnQpCnsKICAgIEdyaWQgZ3JpZCA9IHt7dCwgdCwgdCwgdCwgdH0sIHt0LCB0LCB0LCB0LCB0fX07CiAgICB1bnNpZ25lZCBpOwogICAgCiAgICBmb3IgKGkgPSAwOyBpIDwgNSAqIDU7IGkrKykgewogICAgICAgIGluaXRfc2h1ZmZsZWQoZ3JpZC5vcmRlcltpXSk7CiAgICB9CiAgICAKICAgIGdyaWRfZmluZCgmZ3JpZCk7Cn0KCmludCBtYWluKHZvaWQpCnsKICAgIFRyaWUgKnQgPSB0cmllX2Zyb20oZGF0YSk7CiAgICAKICAgIHNyYW5kKHRpbWUoTlVMTCkpOwogICAgCiAgICBmaW5kKHQpOyAgICAKICAgIHRyaWVfZGVzdHJveSh0KTsKICAgIAogICAgcmV0dXJuIDA7Cn0K