{"version":3,"sources":["ethers.min.js"],"names":["f","exports","module","define","amd","window","global","self","this","ethers","r","e","n","t","o","i","c","require","u","a","Error","code","p","call","length","1","Object","defineProperty","value","version","2","properties_1","Signer","setType","isSigner","isType","./utils/properties","3","bignumber_1","AddressZero","HashZero","EtherSymbol","NegativeOne","bigNumberify","Zero","One","Two","WeiPerEther","MaxUint256","./utils/bignumber","4","extendStatics","__extends","setPrototypeOf","__proto__","Array","d","b","hasOwnProperty","__","constructor","prototype","create","__importStar","mod","__esModule","result","k","constants_1","errors","abi_coder_1","address_1","bytes_1","interface_1","abstract_provider_1","abstract_signer_1","VoidSigner","_super","address","provider","_this","defineReadOnly","getAddress","Promise","resolve","_fail","message","operation","then","throwError","UNSUPPORTED_OPERATION","signMessage","sendTransaction","transaction","connect","allowedTransactionKeys","chainId","data","from","gasLimit","gasPrice","nonce","to","runMethod","contract","functionName","estimateOnly","method","interface","functions","params","_i","arguments","tx","inputs","key","shallowCopy","pop","forEach","deployed","addressPromise","resolveAddresses","paramType","isArray","promises_1","index","v","name","push","all","type","resolveName","components","isArrayMatch","match","promises","subParamType","encode","signer","hexDataLength","hexDataSlice","reason","defaultAbiCoder","decode","CALL_EXCEPTION","args","signature","errorSignature","errorArgs","outputs","error","estimateGas","gas","add","getEventTag","filter","topics","join","Contract","addressOrName","contractInterface","signerOrProvider","checkNew","Interface","isInterface","Provider","isProvider","INVALID_ARGUMENT","arg","keys","events","eventName","event","filters","encodeTopics","_events","catch","console","log","argument","run","estimate","_deployed","deployTransaction","wait","getCode","contractAddress","fallback","overrides","attach","isIndexed","_getEventFilter","prepareEvent","parsed","parseLog","values","eventSignature","eventTag","indexOf","formatSignature","parseSignature","event_1","argumnet","filter_1","topic","slice","name_1","toLowerCase","_addEventListener","eventFilter","listener","once","wrappedListener","deepCopy","removeListener","getBlock","blockHash","getTransaction","transactionHash","getTransactionReceipt","emit","apply","concat","on","addListener","setTimeout","listenerCount","listeners","map","removeAllListeners","found","ContractFactory","bytecode","bytecodeHex","isArrayish","hexlify","object","substring","isHexString","getDeployTransaction","deployFunction","checkArgumentCount","deploy","getContractAddress","fromSolidity","compilerOutput","MISSING_ARGUMENT","JSON","parse","abi","evm","./abstract-signer","./constants","./errors","./providers/abstract-provider","./utils/abi-coder","./utils/address","./utils/bytes","./utils/interface","5","_version_1","UNKNOWN_ERROR","NOT_IMPLEMENTED","MISSING_NEW","UNEXPECTED_ARGUMENT","NUMERIC_FAULT","INSUFFICIENT_FUNDS","NONCE_EXPIRED","REPLACEMENT_UNDERPRICED","_permanentCensorErrors","_censorErrors","messageDetails","stringify","toString","kind","count","expectedCount","suffix","setCensorship","censorship","permanent","./_version","6","contract_1","wallet_1","Wallet","constants","providers","utils","wordlists","shims_1","platform","getDefaultProvider","network","FallbackProvider","InfuraProvider","EtherscanProvider","./contract","./providers","./utils","./utils/shims","./wallet","./wordlists","7","m","__export","./ethers","8","root","checkInt","parseInt","checkInts","arrayish","coerceArray","copy","buffer","ArrayBuffer","isView","Uint8Array","createArray","copyArray","sourceArray","targetArray","targetStart","sourceStart","sourceEnd","set","Hex","convertUtf8","toBytes","text","encodeURI","charCodeAt","substr","fromBytes","bytes","String","fromCharCode","convertHex","numberOfRounds","16","24","32","rcon","S","Si","T1","T2","T3","T4","T5","T6","T7","T8","U1","U2","U3","U4","convertToInt32","AES","_prepare","rounds","_Ke","_Kd","roundKeyCount","KC","tk","tt","rconpointer","encrypt","plaintext","decrypt","ciphertext","ModeOfOperationECB","description","_aes","block","ModeOfOperationCBC","iv","_lastCipherblock","j","ModeOfOperationCFB","segmentSize","_shiftRegister","xorSegment","encrypted","ModeOfOperationOFB","_lastPrecipher","_lastPrecipherIndex","Counter","initialValue","_counter","setValue","setBytes","increment","ModeOfOperationCTR","counter","_remainingCounter","_remainingCounterIndex","aesjs","ModeOfOperation","ecb","cbc","cfb","ofb","ctr","hex","utf8","padding","pkcs7","pad","padder","strip","_arrayTest","_aesjs","9","assert","val","msg","inherits","ctor","superCtor","super_","TempCtor","BN","number","base","endian","isBN","negative","words","red","_init","Buffer","wordSize","parseHex","str","start","end","len","Math","min","parseBase","mul","num","max","left","right","cmp","_initNumber","_initArray","replace","_parseHex","_parseBase","toArray","ceil","w","off","limbLen","limbPow","total","word","imuln","_iaddn","pow","dest","clone","_expand","size","_normSign","inspect","zeros","groupSizes","groupBases","smallMulTo","out","lo","carry","ncarry","rword","maxJ","groupSize","groupBase","isZero","modn","idivn","toNumber","ret","toJSON","toBuffer","toArrayLike","ArrayType","byteLength","reqLength","littleEndian","res","q","andln","iushrn","_countBits","clz32","_zeroBits","bitLength","hi","zeroBits","toTwos","width","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","sub","comb10MulTo","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","x","y","mulTo","hncarry","bigMulTo","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","s","rtwdf","cos","PI","itwdf","sin","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","bits","carryMask","newCarry","ishln","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","shift","_wordDiv","mode","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","acc","egcd","A","B","C","D","g","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","tmp","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","split","imulK","input","output","outLen","prev","next","mod3","one","nOne","lpow","z","inv","wnd","current","currentLen","mont","10","crypto","msCrypto","getRandomValues","11","12","elliptic","rand","hmacDRBG","curve","curves","ec","eddsa","../package.json","./elliptic/curve","./elliptic/curves","./elliptic/ec","./elliptic/eddsa","./elliptic/hmac-drbg","./elliptic/utils","brorand","13","getNAF","getJSF","BaseCurve","conf","zero","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","adjustCount","redN","_maxwellTrick","BasePoint","precomputed","point","validate","_fixedNafMul","doubles","_getDoubles","naf","I","step","repr","nafW","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","jsf","ja","jb","decodePoint","enc","pointFromX","encodeCompressed","_encode","compact","getX","getY","precompute","power","beta","_getBeta","_hasDoubles","dbl","../../elliptic","bn.js","14","15","short","edwards","./base","./edwards","./mont","./short","dup","17","Base","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","Point","isRed","inf","JPoint","zOne","lambda","betas","_getEndoRoots","lambdas","basis","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","floor","y1","y2","len1","_endoSplit","v1","v2","c1","c2","p1","p2","q1","q2","k1","k2","ax","rhs","_endoWnafMulAdd","npoints","ncoeffs","obj","fromJSON","pre","endoMul","obj2point","isInfinity","nx","ny","ys1","dyinv","mulAdd","jmulAdd","_precompute","negate","zinv","zinv2","ay","pz2","z2","u1","u2","s1","s2","h2","h3","nz","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","t1","t2","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","ee","yyu4","kbase","z3","pz3","eqXToP","zs","xc","../curve","18","hash","PresetCurve","options","defineCurve","configurable","enumerable","get","sha256","sha384","sha512","undefined","../elliptic","./precomputed/secp256k1","hash.js","19","KeyPair","Signature","EC","nh","keyPair","keyFromPrivate","priv","fromPrivate","keyFromPublic","pub","fromPublic","genKeyPair","drbg","pers","entropy","hmacStrength","ns2","generate","_truncateToN","truncOnly","sign","bkey","getPrivate","persEnc","ns1","iter","kp","kpX","recoveryParam","canonical","verify","sinv","getPublic","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Q","Qprime","./key","./signature","20","_importPrivate","privEnc","_importPublic","pubEnc","derive","21","_importDER","Position","place","getLength","buf","initial","octetLen","rmPadding","constructLength","arr","octets","LN2","slen","toDER","backHalf","22","23","HmacDRBG","predResist","outSize","minEntropy","reseed","reseedInterval","K","V","entropyEnc","nonceEnc","seed","_update","_hmac","hmac","kmac","update","digest","addEnc","temp","25","zero2","toHex","d1","d2","m8","m14","m24","cachedProperty","computer","parseBytes","intFromLE","26","27","common","sha","ripemd","sha1","sha224","ripemd160","./hash/common","./hash/hmac","./hash/ripemd","./hash/sha","./hash/utils","28","BlockHash","pending","pendingTotal","blockSize","padLength","_delta8","_delta32","join32","_pad","_digest","minimalistic-assert","29","Hmac","Hash","inner","outer","30","31","./sha/1","./sha/224","./sha/256","./sha/384","./sha/512","33","34","shaCommon","sum32","sum32_4","sum32_5","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","SHA256","W","toHex32","split32","../common","../utils","./common","35","36","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","SHA512","ch64_hi","xh","xl","yh","yl","zh","ch64_lo","zl","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","ah","al","bh","bl","ch","cl","dh","dl","eh","el","fh","fl","gh","gl","hh","hl","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","37","rotr32","p32","ft_1","38","htonl","zero8","rotl32","sum32_3","pos","39","writable","40","process","JS_SHA3_NO_NODE_JS","versions","node","COMMON_JS","JS_SHA3_NO_COMMON_JS","HEX_CHARS","SHIFT","RC","BITS","OUTPUT_TYPES","createOutputMethod","outputType","Keccak","createShakeOutputMethod","outputBits","createMethod","algorithms","methods","methodNames","algorithm","methodName","blocks","reset","blockCount","byteCount","outputBlocks","extraBytes","notString","lastByteIndex","finalize","arrayBuffer","array","Uint32Array","offset","c0","c3","c4","c5","c6","c7","c9","b10","b11","b12","b13","b14","b15","b16","b17","b18","b19","b20","b21","b22","b23","b24","b25","b26","b27","b28","b29","b30","b31","b32","b33","b34","b35","b36","b37","b38","b39","b40","b41","b42","b43","b44","b45","b46","b47","b48","b49","_process","41","equal","42","browser","43","setImmediate","MAX_VALUE","h0","h1","h4","h5","h6","h7","bytesLeft","bitLenHi","bitLenLo","numZeros","PBKDF2_HMAC_SHA256_OneIter","password","salt","dkLen","innerLen","outerKey","dk","incrementCounter","blockmix_salsa8","BY","Yi","_X","arraycopy","blockxor","salsa20_8","R","src","srcPos","destPos","checkBufferish","ensureInteger","intValue","scrypt","callback","i1","Bi","XY","totalOps","currentOp","lastPercent10","stop","state","i0","limit","nextTick","incrementalSMix","steps","percent10","derivedKey","_scrypt","timers","44","html","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","document","attachTo","getPrototypeOf","handle","addFromSetImmediateArguments","partiallyApplied","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","createElement","documentElement","script","onreadystatechange","removeChild","appendChild","random","source","addEventListener","attachEvent","clearImmediate","handler","Function","task","45","46","rng","_rnds8","_rnds","47","_rng","_byteToHex","_hexToByte","unparse","bth","_seedBytes","_nodeId","_clockseq","_lastMSecs","_lastNSecs","v4","rnds","ii","uuid","clockseq","msecs","Date","getTime","nsecs","dt","tl","tmh","oct","./rng","48","XMLHttpRequest","49","../utils/properties","50","hash_1","networks_1","rlp_1","transaction_1","utf8_1","web_1","check","format","checkKey","checkValue","allowNull","nullValue","arrayOf","checkHash","checkNumber","checkUint256","uint256","checkBlockTag","blockTag","hexStripZeros","formatTransaction","blockNumber","transactionIndex","creates","raw","checkTransactionResponse","stripZeros","networkId","formatBlock","parentHash","timestamp","difficulty","gasUsed","miner","extraData","transactions","formatBlockWithTransactions","checkBlock","includeTransactions","author","formatTransactionRequest","checkTransactionRequest","formatTransactionReceiptLog","transactionLogIndex","logIndex","formatTransactionReceipt","logsBloom","logs","cumulativeGasUsed","status","formatFilter","fromBlock","toBlock","checkTopics","replaceValue","formatLog","removed","checkLog","serializeTopics","BaseProvider","knownNetwork","getNetwork","_network","_lastBlockNumber","_balances","_pollingInterval","_emitted","_doPoll","getBlockNumber","newBalances","comps","tag","hash_2","receipt","address_2","getBalance","balance","lastBalance","getLogs","doPoll","resetEventsBlock","ready","_poller","setInterval","bind","pollingInterval","clearInterval","waitForTransaction","timeout","poll","onceBlock","perform","getGasPrice","resolveProperties","_a","getTransactionCount","getStorageAt","position","signedTransaction","_wrapTransaction","expectedHash","returnedHash","_resolveNames","blockHashOrBlockTag","blockNumber_1","blockTag_1","transactionReceipt","entry","byzantium","getEtherPrice","_getResolver","ensAddress","namehash","nodeHash","resolverAddress","lookupAddress","nodehash","toUtf8String","addr","_startPending","_stopPending","polling","inheritable","../errors","../utils/address","../utils/bignumber","../utils/bytes","../utils/hash","../utils/networks","../utils/rlp","../utils/transaction","../utils/utf8","../utils/web","./abstract-provider","51","base_provider_1","getTransactionString","getResult","getJsonResult","jsonrpc","checkLogTag","apiKey","baseUrl","url","fetchJson","responseText","topic0","reject","txs","seq","parseFloat","ethusd","getHistory","startBlock","endBlock","item","timeStamp","./base-provider","52","checkNetworks","networks","ready_1","_providers","firstError","53","etherscan_provider_1","fallback_provider_1","ipc_provider_1","IpcProvider","infura_provider_1","json_rpc_provider_1","JsonRpcProvider","JsonRpcSigner","web3_provider_1","Web3Provider","./etherscan-provider","./fallback-provider","./infura-provider","./ipc-provider","./json-rpc-provider","./web3-provider","54","apiAccessToken","host","getSigner","listAccounts","55","56","payload","getLowerCase","_constructorGuard","constructorGuard","addressOrIndex","_address","send","accounts","_index","hexlifyTransaction","toUtf8Bytes","unlock","connection","request","id","_pendingFilter","pendingFilter","filterId","hashes","../abstract-signer","57","web3Provider","path","sendAsync","_sendAsync","_web3Provider","isMetaMask","58","paramTypeBytes","RegExp","paramTypeNumber","paramTypeArray","defaultCoerceFunc","regexParen","regexIdentifier","verifyType","parseParam","param","allowIndexed","parent","allowType","allowParams","indexed","child","allowName","allowArray","sibling","readArray","formatParamType","getParamCoder","parseParamType","fragment","trim","anonymous","splitNesting","modifier","parseSignatureEvent","constant","payable","stateMutability","parseSignatureFunction","Coder","coerceFunc","localName","dynamic","CoderAnonymous","coder","CoderNull","arrayify","consumed","CoderNumber","signed","bounds","padZeros","coderType","junkLength","uint256Coder","CoderBoolean","CoderFixedBytes","CoderAddress","_encodeDynamicBytes","dataLength","_decodeDynamicBytes","CoderDynamicBytes","CoderString","alignSize","pack","coders","arrayValues","parts","staticSize","dynamicSize","part","dynamicOffset","unpack","baseOffset","CoderArray","decodedLength","CoderTuple","types","accum","depth","paramTypeSimple","bool","string","component","getTupleParamCoder","AbiCoder","typeObject","../constants","./address","./bignumber","./bytes","./properties","./utf8","59","__importDefault","default","bn_js_1","keccak256_1","getChecksumAddress","chars","hashed","i_1","keccak256","toUpperCase","ibanLookup","safeDigits","log10","LN10","ibanChecksum","expanded","checksum","getIcapAddress","base36","./keccak256","./rlp","60","textData","atob","btoa","61","BN_1","bn","toBN","_bnify","toBigNumber","BigNumber","_hex","fault","outputValue","details","toHexString","other","isBigNumber","62","isHexable","addSlice","objects","arrays","HexCharacters","hexZeroPad","splitSignature","endOffset","joinSignature","63","Zeros","Partition","UseSTD3ASCIIRules","partition","label","hashMessage","64","lang_en_1","pbkdf2_1","hmac_1","secp256k1_1","sha2_1","MasterSecret","HardenedBit","getUpperMask","defaultPath","HDNode","privateKey","chainCode","mnemonic","compressedPublicKey","_derive","publicKeyBytes","computeHmac","SupportedAlgorithms","IL","IR","ki","derivePath","isHDNode","_fromSeed","seedArray","mnemonicToSeed","UnicodeNormalizationForm","NFKD","pbkdf2","mnemonicToEntropy","wordlist","langEn","getWordIndex","normalize","entropyBits","checksumMask","fromMnemonic","fromSeed","entropyToMnemonic","indices","remainingBits","checksumBits","getWord","isValidMnemonic","../wordlists/lang-en","./hmac","./pbkdf2","./secp256k1","./sha2","65","66","base64","json_wallet_1","getJsonWalletAddress","solidity_1","solidityKeccak256","solidityPack","soliditySha256","random_bytes_1","randomBytes","RLP","computeAddress","computePublicKey","recoverAddress","recoverPublicKey","verifyMessage","signing_key_1","SigningKey","parseTransaction","serializeTransaction","serialize","formatBytes32String","parseBytes32String","units_1","commify","formatEther","parseEther","formatUnits","parseUnits","utf8_2","wordlist_1","Wordlist","./abi-coder","./base64","./hash","./hdnode","./interface","./json-wallet","./networks","./random-bytes","./signing-key","./solidity","./transaction","./units","./web","./wordlist","67","_Indexed","Description","info","freeze","_DeployDescription","_FunctionDescription","sighash","errorArg","errorValue","Result","_EventDescription","maxCount","inputIndexed","inputNonIndexed","inputDynamic","resultIndexed","resultNonIndexed","nonIndexedIndex","indexedIndex","_TransactionDescription","_LogDescription","addMethod","errorMessage","_abi","func","68","isCrowdsaleWallet","json","encseed","ethaddr","isSecretStorageWallet","69","sha3","keccak_256","js-sha3","70","homestead","ropsten","unspecified","mainnet","morden","testnet","rinkeby","kovan","classic","classicTestnet","n_1","n_2","71","iterations","keylen","hashAlgorithm","hLen","T","DK","block1","U","72","_ethersType","opaque","boolean","frozen","73","trunc","_weakCrypto","74","arrayifyInteger","unshift","unarrayifyInteger","_decodeChildren","childOffset","decoded","_decode","lengthLength","75","elliptic_1","_curve","getCurve","computeSharedSecret","otherKey","otherKeyPair","compressed","publicKey","sig","rs","76","aes_js_1","scrypt_js_1","uuid_1","looseArrayify","hexString","zpad","getPassword","NFKC","searchPath","currentChild","matchingChild","decryptCrowdsale","encryptedSeed","aesCbc","seedHex","seedHexBytes","signingKey","progressCallback","passwordBytes","getSigningKey","derivedHalf","aesCtr","mnemonicKey","mnemonicCiphertext","mnemonicIv","mnemonicCounter","mnemonicAesCtr","kdf","progress","prfFunc","prf","privateKeyBytes","isSigningKey","client","uuidRandom","macPrefix","mac","Crypto","cipher","cipherparams","kdfparams","dklen","now","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","gethFilename","aes-js","scrypt-js","77","hash_js_1","78","setimmediate","79","hdnode_1","signDigest","80","regexBytes","regexNumber","regexArray","tight","_pack","baseType","81","handleNumber","transactionFields","maxLength","fieldInfo","unsignedTransaction","rawTransaction","82","unitInfos","_getUnitInfo","decimals","tenPower","getUnitInfo","unitType","unitInfo","fraction","whole","wholeValue","fractionValue","wei","formatted","ether","83","form","ignoreErrors","extraLength","overlongMask","nextChar","84","xmlhttprequest_1","base64_1","processFunc","headers","user","allowInsecure","authorization","timer","abort","cancelTimeout","clearTimeout","open","header","setRequestHeader","readyState","statusCode","jsonError","orginialError","body","onerror","connectionError","ceiling","interval","done","cancel","attempt","xmlhttprequest","85","locale","register","lang","86","secretStorage","rawTx","createRandom","extraEntropy","fromEncryptedJson","./utils/hash","./utils/hdnode","./utils/json-wallet","./utils/keccak256","./utils/random-bytes","./utils/secret-storage","./utils/signing-key","./utils/transaction","87","en","88","loadWords","LangEn","../utils/wordlist"],"mappings":"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EAAM,IAAM,EAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAC//CC,EAAI,CAAC,GAAM,EAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,EAAM,IAAM,IAAM,GAAM,EAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,EAAM,EAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,EAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,KAG//CC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAG1/FC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,EAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,SAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,EAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,WAAY,SAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,SAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,EAAY,WAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,UAAY,WAAY,YAG1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAC1/FC,EAAK,CAAC,EAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,SAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,SAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,WAAY,UAAY,UAAY,UAAY,UAAY,SAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,SAAY,UAAY,UAAY,UAAY,UAAY,WAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,UAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YAE9/F,SAASC,EAAevB,GAEpB,IADA,IAAI7Q,EAAS,GACJnD,EAAI,EAAGA,EAAIgU,EAAMvT,OAAQT,GAAK,EACnCmD,EAAO8D,KACF+M,EAAMhU,IAAU,GAChBgU,EAAMhU,EAAI,IAAM,GAChBgU,EAAMhU,EAAI,IAAO,EACjBgU,EAAMhU,EAAI,IAGnB,OAAOmD,EAGX,IAAIqS,EAAM,SAASpP,GACf,KAAM3G,gBAAgB+V,GAClB,MAAMnV,MAAM,uCAGhBM,OAAOC,eAAenB,KAAM,MAAO,CAC/BoB,MAAO6R,EAAYtM,GAAK,KAG5B3G,KAAKgW,YAITD,EAAI1S,UAAU2S,SAAW,WAErB,IAAIC,EAAStB,EAAe3U,KAAK2G,IAAI3F,QACrC,GAAc,MAAViV,EACA,MAAM,IAAIrV,MAAM,iDAIpBZ,KAAKkW,IAAM,GAGXlW,KAAKmW,IAAM,GAEX,IAAK,IAAI5V,EAAI,EAAGA,GAAK0V,EAAQ1V,IACzBP,KAAKkW,IAAI1O,KAAK,CAAC,EAAG,EAAG,EAAG,IACxBxH,KAAKmW,IAAI3O,KAAK,CAAC,EAAG,EAAG,EAAG,IAG5B,IAOIH,EAPA+O,EAA+B,GAAdH,EAAS,GAC1BI,EAAKrW,KAAK2G,IAAI3F,OAAS,EAGvBsV,EAAKR,EAAe9V,KAAK2G,KAI7B,IAASpG,EAAI,EAAGA,EAAI8V,EAAI9V,IACpB8G,EAAQ9G,GAAK,EACbP,KAAKkW,IAAI7O,GAAO9G,EAAI,GAAK+V,EAAG/V,GAC5BP,KAAKmW,IAAIF,EAAS5O,GAAO9G,EAAI,GAAK+V,EAAG/V,GAMzC,IAFA,IACYgW,EADRC,EAAc,EACdnW,EAAIgW,EACDhW,EAAI+V,GAAe,CAUtB,GATAG,EAAKD,EAAGD,EAAK,GACbC,EAAG,IAAQtB,EAAGuB,GAAM,GAAM,MAAS,GACxBvB,EAAGuB,GAAO,EAAK,MAAS,GACxBvB,EAAe,IAAZuB,IAAsB,EACzBvB,EAAGuB,GAAM,GAAM,KACfxB,EAAKyB,IAAgB,GAChCA,GAAe,EAGL,GAANH,EACA,IAAS9V,EAAI,EAAGA,EAAI8V,EAAI9V,IACpB+V,EAAG/V,IAAM+V,EAAG/V,EAAI,OAIjB,CACH,IAASA,EAAI,EAAGA,EAAK8V,EAAK,EAAI9V,IAC1B+V,EAAG/V,IAAM+V,EAAG/V,EAAI,GAEpBgW,EAAKD,EAAID,EAAK,EAAK,GAEnBC,EAAGD,EAAK,IAAOrB,EAAe,IAAZuB,GACHvB,EAAGuB,GAAO,EAAK,MAAU,EACzBvB,EAAGuB,GAAM,GAAM,MAAS,GACxBvB,EAAGuB,GAAM,GAAM,MAAS,GAEvC,IAAShW,EAAK8V,EAAK,EAAK,EAAG9V,EAAI8V,EAAI9V,IAC/B+V,EAAG/V,IAAM+V,EAAG/V,EAAI,GAMxB,IADIA,EAAI,EACDA,EAAI8V,GAAMhW,EAAI+V,GACjBlW,EAAIG,GAAK,EACTG,EAAIH,EAAI,EACRL,KAAKkW,IAAIhW,GAAGM,GAAK8V,EAAG/V,GACpBP,KAAKmW,IAAIF,EAAS/V,GAAGM,GAAK8V,EAAG/V,KAC7BF,IAKR,IAAK,IAAIH,EAAI,EAAGA,EAAI+V,EAAQ/V,IACxB,IAAK,IAAIM,EAAI,EAAGA,EAAI,EAAGA,IACnB+V,EAAKvW,KAAKmW,IAAIjW,GAAGM,GACjBR,KAAKmW,IAAIjW,GAAGM,GAAMkV,EAAIa,GAAM,GAAM,KAChBZ,EAAIY,GAAM,GAAM,KAChBX,EAAIW,GAAO,EAAK,KAChBV,EAAgB,IAAZU,IAKlCR,EAAI1S,UAAUoT,QAAU,SAASC,GAC7B,GAAwB,IAApBA,EAAU1V,OACV,MAAM,IAAIJ,MAAM,6CAQpB,IALA,IAAIqV,EAASjW,KAAKkW,IAAIlV,OAAS,EAC3BL,EAAI,CAAC,EAAG,EAAG,EAAG,GAGdN,EAAIyV,EAAeY,GACdnW,EAAI,EAAGA,EAAI,EAAGA,IACnBF,EAAEE,IAAMP,KAAKkW,IAAI,GAAG3V,GAIxB,IAAK,IAAIL,EAAI,EAAGA,EAAI+V,EAAQ/V,IAAK,CAC7B,IAASK,EAAI,EAAGA,EAAI,EAAGA,IACnBI,EAAEJ,GAAM2U,EAAI7U,EAAGE,IAAe,GAAM,KAC5B4U,EAAI9U,GAAGE,EAAI,GAAK,IAAM,GAAM,KAC5B6U,EAAI/U,GAAGE,EAAI,GAAK,IAAO,EAAK,KAC5B8U,EAA4B,IAAxBhV,GAAGE,EAAI,GAAK,IAChBP,KAAKkW,IAAIhW,GAAGK,GAExBF,EAAIM,EAAE0L,QAIV,IAA8BkK,EAA1B7S,EAAS6P,EAAY,IACzB,IAAShT,EAAI,EAAGA,EAAI,EAAGA,IACnBgW,EAAKvW,KAAKkW,IAAID,GAAQ1V,GACtBmD,EAAO,EAAInD,GAA2D,KAAjDyU,EAAG3U,EAAGE,IAAe,GAAM,KAASgW,GAAM,IAC/D7S,EAAO,EAAInD,EAAI,GAAuD,KAAjDyU,EAAG3U,GAAGE,EAAI,GAAK,IAAM,GAAM,KAASgW,GAAM,IAC/D7S,EAAO,EAAInD,EAAI,GAAuD,KAAjDyU,EAAG3U,GAAGE,EAAI,GAAK,IAAO,EAAK,KAASgW,GAAO,GAChE7S,EAAO,EAAInD,EAAI,GAAuD,KAAjDyU,EAA2B,IAAxB3U,GAAGE,EAAI,GAAK,IAAqBgW,GAG7D,OAAO7S,GAGXqS,EAAI1S,UAAUsT,QAAU,SAASC,GAC7B,GAAyB,IAArBA,EAAW5V,OACX,MAAM,IAAIJ,MAAM,8CAQpB,IALA,IAAIqV,EAASjW,KAAKmW,IAAInV,OAAS,EAC3BL,EAAI,CAAC,EAAG,EAAG,EAAG,GAGdN,EAAIyV,EAAec,GACdrW,EAAI,EAAGA,EAAI,EAAGA,IACnBF,EAAEE,IAAMP,KAAKmW,IAAI,GAAG5V,GAIxB,IAAK,IAAIL,EAAI,EAAGA,EAAI+V,EAAQ/V,IAAK,CAC7B,IAASK,EAAI,EAAGA,EAAI,EAAGA,IACnBI,EAAEJ,GAAM+U,EAAIjV,EAAGE,IAAgB,GAAM,KAC7BgV,EAAIlV,GAAGE,EAAI,GAAK,IAAM,GAAM,KAC5BiV,EAAInV,GAAGE,EAAI,GAAK,IAAO,EAAK,KAC5BkV,EAA4B,IAAxBpV,GAAGE,EAAI,GAAK,IAChBP,KAAKmW,IAAIjW,GAAGK,GAExBF,EAAIM,EAAE0L,QAIV,IAA8BkK,EAA1B7S,EAAS6P,EAAY,IACzB,IAAShT,EAAI,EAAGA,EAAI,EAAGA,IACnBgW,EAAKvW,KAAKmW,IAAIF,GAAQ1V,GACtBmD,EAAO,EAAInD,GAA4D,KAAlD0U,EAAI5U,EAAGE,IAAe,GAAM,KAASgW,GAAM,IAChE7S,EAAO,EAAInD,EAAI,GAAwD,KAAlD0U,EAAI5U,GAAGE,EAAI,GAAK,IAAM,GAAM,KAASgW,GAAM,IAChE7S,EAAO,EAAInD,EAAI,GAAwD,KAAlD0U,EAAI5U,GAAGE,EAAI,GAAK,IAAO,EAAK,KAASgW,GAAO,GACjE7S,EAAO,EAAInD,EAAI,GAAwD,KAAlD0U,EAA4B,IAAxB5U,GAAGE,EAAI,GAAK,IAAqBgW,GAG9D,OAAO7S,GAOX,IAAImT,EAAqB,SAASlQ,GAC9B,KAAM3G,gBAAgB6W,GAClB,MAAMjW,MAAM,uCAGhBZ,KAAK8W,YAAc,wBACnB9W,KAAKuH,KAAO,MAEZvH,KAAK+W,KAAO,IAAIhB,EAAIpP,IAGxBkQ,EAAmBxT,UAAUoT,QAAU,SAASC,GAG5C,IAFAA,EAAYzD,EAAYyD,IAET1V,OAAS,IAAQ,EAC5B,MAAM,IAAIJ,MAAM,yDAMpB,IAHA,IAAIgW,EAAarD,EAAYmD,EAAU1V,QACnCgW,EAAQzD,EAAY,IAEfhT,EAAI,EAAGA,EAAImW,EAAU1V,OAAQT,GAAK,GACvCiT,EAAUkD,EAAWM,EAAO,EAAGzW,EAAGA,EAAI,IAEtCiT,EADAwD,EAAQhX,KAAK+W,KAAKN,QAAQO,GACTJ,EAAYrW,GAGjC,OAAOqW,GAGXC,EAAmBxT,UAAUsT,QAAU,SAASC,GAG5C,IAFAA,EAAa3D,EAAY2D,IAET5V,OAAS,IAAQ,EAC7B,MAAM,IAAIJ,MAAM,0DAMpB,IAHA,IAAI8V,EAAYnD,EAAYqD,EAAW5V,QACnCgW,EAAQzD,EAAY,IAEfhT,EAAI,EAAGA,EAAIqW,EAAW5V,OAAQT,GAAK,GACxCiT,EAAUoD,EAAYI,EAAO,EAAGzW,EAAGA,EAAI,IAEvCiT,EADAwD,EAAQhX,KAAK+W,KAAKJ,QAAQK,GACTN,EAAWnW,GAGhC,OAAOmW,GAOX,IAAIO,EAAqB,SAAStQ,EAAKuQ,GACnC,KAAMlX,gBAAgBiX,GAClB,MAAMrW,MAAM,uCAMhB,GAHAZ,KAAK8W,YAAc,wBACnB9W,KAAKuH,KAAO,MAEP2P,GAGE,GAAiB,IAAbA,EAAGlW,OACV,MAAM,IAAIJ,MAAM,4DAHhBsW,EAAK3D,EAAY,IAMrBvT,KAAKmX,iBAAmBlE,EAAYiE,GAAI,GAExClX,KAAK+W,KAAO,IAAIhB,EAAIpP,IAGxBsQ,EAAmB5T,UAAUoT,QAAU,SAASC,GAG5C,IAFAA,EAAYzD,EAAYyD,IAET1V,OAAS,IAAQ,EAC5B,MAAM,IAAIJ,MAAM,yDAMpB,IAHA,IAAIgW,EAAarD,EAAYmD,EAAU1V,QACnCgW,EAAQzD,EAAY,IAEfhT,EAAI,EAAGA,EAAImW,EAAU1V,OAAQT,GAAK,GAAI,CAC3CiT,EAAUkD,EAAWM,EAAO,EAAGzW,EAAGA,EAAI,IAEtC,IAAK,IAAI6W,EAAI,EAAGA,EAAI,GAAIA,IACpBJ,EAAMI,IAAMpX,KAAKmX,iBAAiBC,GAGtCpX,KAAKmX,iBAAmBnX,KAAK+W,KAAKN,QAAQO,GAC1CxD,EAAUxT,KAAKmX,iBAAkBP,EAAYrW,GAGjD,OAAOqW,GAGXK,EAAmB5T,UAAUsT,QAAU,SAASC,GAG5C,IAFAA,EAAa3D,EAAY2D,IAET5V,OAAS,IAAQ,EAC7B,MAAM,IAAIJ,MAAM,0DAMpB,IAHA,IAAI8V,EAAYnD,EAAYqD,EAAW5V,QACnCgW,EAAQzD,EAAY,IAEfhT,EAAI,EAAGA,EAAIqW,EAAW5V,OAAQT,GAAK,GAAI,CAC5CiT,EAAUoD,EAAYI,EAAO,EAAGzW,EAAGA,EAAI,IACvCyW,EAAQhX,KAAK+W,KAAKJ,QAAQK,GAE1B,IAAK,IAAII,EAAI,EAAGA,EAAI,GAAIA,IACpBV,EAAUnW,EAAI6W,GAAKJ,EAAMI,GAAKpX,KAAKmX,iBAAiBC,GAGxD5D,EAAUoD,EAAY5W,KAAKmX,iBAAkB,EAAG5W,EAAGA,EAAI,IAG3D,OAAOmW,GAOX,IAAIW,EAAqB,SAAS1Q,EAAKuQ,EAAII,GACvC,KAAMtX,gBAAgBqX,GAClB,MAAMzW,MAAM,uCAMhB,GAHAZ,KAAK8W,YAAc,kBACnB9W,KAAKuH,KAAO,MAEP2P,GAGE,GAAiB,IAAbA,EAAGlW,OACV,MAAM,IAAIJ,MAAM,2DAHhBsW,EAAK3D,EAAY,IAMhB+D,IAAeA,EAAc,GAElCtX,KAAKsX,YAAcA,EAEnBtX,KAAKuX,eAAiBtE,EAAYiE,GAAI,GAEtClX,KAAK+W,KAAO,IAAIhB,EAAIpP,IAGxB0Q,EAAmBhU,UAAUoT,QAAU,SAASC,GAC5C,GAAKA,EAAU1V,OAAShB,KAAKsX,aAAgB,EACzC,MAAM,IAAI1W,MAAM,sDAMpB,IAHA,IAEI4W,EAFAC,EAAYxE,EAAYyD,GAAW,GAG9BnW,EAAI,EAAGA,EAAIkX,EAAUzW,OAAQT,GAAKP,KAAKsX,YAAa,CACzDE,EAAaxX,KAAK+W,KAAKN,QAAQzW,KAAKuX,gBACpC,IAAK,IAAIH,EAAI,EAAGA,EAAIpX,KAAKsX,YAAaF,IAClCK,EAAUlX,EAAI6W,IAAMI,EAAWJ,GAInC5D,EAAUxT,KAAKuX,eAAgBvX,KAAKuX,eAAgB,EAAGvX,KAAKsX,aAC5D9D,EAAUiE,EAAWzX,KAAKuX,eAAgB,GAAKvX,KAAKsX,YAAa/W,EAAGA,EAAIP,KAAKsX,aAGjF,OAAOG,GAGXJ,EAAmBhU,UAAUsT,QAAU,SAASC,GAC5C,GAAKA,EAAW5V,OAAShB,KAAKsX,aAAgB,EAC1C,MAAM,IAAI1W,MAAM,uDAMpB,IAHA,IAEI4W,EAFAd,EAAYzD,EAAY2D,GAAY,GAG/BrW,EAAI,EAAGA,EAAImW,EAAU1V,OAAQT,GAAKP,KAAKsX,YAAa,CACzDE,EAAaxX,KAAK+W,KAAKN,QAAQzW,KAAKuX,gBAEpC,IAAK,IAAIH,EAAI,EAAGA,EAAIpX,KAAKsX,YAAaF,IAClCV,EAAUnW,EAAI6W,IAAMI,EAAWJ,GAInC5D,EAAUxT,KAAKuX,eAAgBvX,KAAKuX,eAAgB,EAAGvX,KAAKsX,aAC5D9D,EAAUoD,EAAY5W,KAAKuX,eAAgB,GAAKvX,KAAKsX,YAAa/W,EAAGA,EAAIP,KAAKsX,aAGlF,OAAOZ,GAMX,IAAIgB,EAAqB,SAAS/Q,EAAKuQ,GACnC,KAAMlX,gBAAgB0X,GAClB,MAAM9W,MAAM,uCAMhB,GAHAZ,KAAK8W,YAAc,kBACnB9W,KAAKuH,KAAO,MAEP2P,GAGE,GAAiB,IAAbA,EAAGlW,OACV,MAAM,IAAIJ,MAAM,4DAHhBsW,EAAK3D,EAAY,IAMrBvT,KAAK2X,eAAiB1E,EAAYiE,GAAI,GACtClX,KAAK4X,oBAAsB,GAE3B5X,KAAK+W,KAAO,IAAIhB,EAAIpP,IAGxB+Q,EAAmBrU,UAAUoT,QAAU,SAASC,GAG5C,IAFA,IAAIe,EAAYxE,EAAYyD,GAAW,GAE9BnW,EAAI,EAAGA,EAAIkX,EAAUzW,OAAQT,IACD,KAA7BP,KAAK4X,sBACL5X,KAAK2X,eAAiB3X,KAAK+W,KAAKN,QAAQzW,KAAK2X,gBAC7C3X,KAAK4X,oBAAsB,GAE/BH,EAAUlX,IAAMP,KAAK2X,eAAe3X,KAAK4X,uBAG7C,OAAOH,GAIXC,EAAmBrU,UAAUsT,QAAUe,EAAmBrU,UAAUoT,QAMpE,IAAIoB,EAAU,SAASC,GACnB,KAAM9X,gBAAgB6X,GAClB,MAAMjX,MAAM,2CAIK,IAAjBkX,GAAuBA,IAAgBA,EAAe,GAE7B,iBAAnB,GACN9X,KAAK+X,SAAWxE,EAAY,IAC5BvT,KAAKgY,SAASF,IAGd9X,KAAKiY,SAASH,IAItBD,EAAQxU,UAAU2U,SAAW,SAAS5W,GAClC,GAAsB,iBAAZ,GAAwB0R,SAAS1R,IAAUA,EACjD,MAAM,IAAIR,MAAM,8CAGpB,IAAK,IAAIyG,EAAQ,GAAa,GAATA,IAAcA,EAC/BrH,KAAK+X,SAAS1Q,GAASjG,EAAQ,IAC/BA,IAAiB,GAIzByW,EAAQxU,UAAU4U,SAAW,SAAS1D,GAGlC,GAAoB,KAFpBA,EAAQtB,EAAYsB,GAAO,IAEjBvT,OACN,MAAM,IAAIJ,MAAM,iDAGpBZ,KAAK+X,SAAWxD,GAGpBsD,EAAQxU,UAAU6U,UAAY,WAC1B,IAAK,IAAI3X,EAAI,GAAS,GAALA,EAAQA,IAAK,CAC1B,GAAyB,MAArBP,KAAK+X,SAASxX,GAEX,CACHP,KAAK+X,SAASxX,KACd,MAHAP,KAAK+X,SAASxX,GAAK,IAY/B,IAAI4X,EAAqB,SAASxR,EAAKyR,GACnC,KAAMpY,gBAAgBmY,GAClB,MAAMvX,MAAM,uCAGhBZ,KAAK8W,YAAc,UACnB9W,KAAKuH,KAAO,MAEN6Q,aAAmBP,IACrBO,EAAU,IAAIP,EAAQO,IAG1BpY,KAAK+X,SAAWK,EAEhBpY,KAAKqY,kBAAoB,KACzBrY,KAAKsY,uBAAyB,GAE9BtY,KAAK+W,KAAO,IAAIhB,EAAIpP,IAGxBwR,EAAmB9U,UAAUoT,QAAU,SAASC,GAG5C,IAFA,IAAIe,EAAYxE,EAAYyD,GAAW,GAE9BnW,EAAI,EAAGA,EAAIkX,EAAUzW,OAAQT,IACE,KAAhCP,KAAKsY,yBACLtY,KAAKqY,kBAAoBrY,KAAK+W,KAAKN,QAAQzW,KAAK+X,SAASA,UACzD/X,KAAKsY,uBAAyB,EAC9BtY,KAAK+X,SAASG,aAElBT,EAAUlX,IAAMP,KAAKqY,kBAAkBrY,KAAKsY,0BAGhD,OAAOb,GAIXU,EAAmB9U,UAAUsT,QAAUwB,EAAmB9U,UAAUoT,QA0CpE,IAAI8B,EAAQ,CACRxC,IAAKA,EACL8B,QAASA,EAETW,gBAAiB,CACbC,IAAK5B,EACL6B,IAAKzB,EACL0B,IAAKtB,EACLuB,IAAKlB,EACLmB,IAAKV,GAGT3G,MAAO,CACHsH,IAAKpE,EACLqE,KAAM/E,GAGVgF,QAAS,CACLC,MAAO,CACHC,IAtDZ,SAAkBzT,GAEd,IAAI0T,EAAS,IADb1T,EAAOwN,EAAYxN,GAAM,IACDzE,OAAS,GAC7B0C,EAAS6P,EAAY9N,EAAKzE,OAASmY,GACvC3F,EAAU/N,EAAM/B,GAChB,IAAK,IAAInD,EAAIkF,EAAKzE,OAAQT,EAAImD,EAAO1C,OAAQT,IACzCmD,EAAOnD,GAAK4Y,EAEhB,OAAOzV,GA+CC0V,MA5CZ,SAAoB3T,GAEhB,IADAA,EAAOwN,EAAYxN,GAAM,IAChBzE,OAAS,GAAM,MAAM,IAAIJ,MAAM,yBAExC,IAAIuY,EAAS1T,EAAKA,EAAKzE,OAAS,GAChC,GAAa,GAATmY,EAAe,MAAM,IAAIvY,MAAM,oCAGnC,IADA,IAAII,EAASyE,EAAKzE,OAASmY,EAClB5Y,EAAI,EAAGA,EAAI4Y,EAAQ5Y,IACxB,GAAIkF,EAAKzE,EAAST,KAAO4Y,EACrB,MAAM,IAAIvY,MAAM,+BAIxB,IAAI8C,EAAS6P,EAAYvS,GAEzB,OADAwS,EAAU/N,EAAM/B,EAAQ,EAAG,EAAG1C,GACvB0C,KAgCP2V,WAAY,CACRpG,YAAaA,EACbM,YAAaA,EACbC,UAAWA,SAMI,IAAZ/T,EACPC,EAAOD,QAAU8Y,GAYb3F,EAAK2F,QACLA,EAAMe,OAAS1G,EAAK2F,OAGxB3F,EAAK2F,MAAQA,GAvxBrB,CA2xBGvY,OAED,IAAIuZ,EAAE,CAAC,SAAS9Y,EAAQf,EAAOD,IACjC,SAAWC,EAAQD,GACjB,aAGA,SAAS+Z,EAAQC,EAAKC,GACpB,IAAKD,EAAK,MAAM,IAAI7Y,MAAM8Y,GAAO,oBAKnC,SAASC,EAAUC,EAAMC,GACvBD,EAAKE,OAASD,EACd,IAAIE,EAAW,aACfA,EAAS1W,UAAYwW,EAAUxW,UAC/BuW,EAAKvW,UAAY,IAAI0W,EACrBH,EAAKvW,UAAUD,YAAcwW,EAK/B,SAASI,EAAIC,EAAQC,EAAMC,GACzB,GAAIH,EAAGI,KAAKH,GACV,OAAOA,EAGTja,KAAKqa,SAAW,EAChBra,KAAKsa,MAAQ,KACbta,KAAKgB,OAAS,GAGdhB,KAAKua,IAAM,QAEPN,IACW,OAATC,GAA0B,OAATA,IACnBC,EAASD,EACTA,EAAO,IAGTla,KAAKwa,MAAMP,GAAU,EAAGC,GAAQ,GAAIC,GAAU,OAYlD,IAAIM,EATkB,iBAAX/a,EACTA,EAAOD,QAAUua,EAEjBva,EAAQua,GAAKA,GAGfA,EAAGA,GAAKA,GACLU,SAAW,GAGd,IACED,EAASha,EAAQ,UAAUga,OAC3B,MAAOta,IAoIT,SAASwa,EAAUC,EAAKC,EAAOC,GAG7B,IAFA,IAAI5a,EAAI,EACJ6a,EAAMC,KAAKC,IAAIL,EAAI5Z,OAAQ8Z,GACtBva,EAAIsa,EAAOta,EAAIwa,EAAKxa,IAAK,CAChC,IAAIC,EAAIoa,EAAIxG,WAAW7T,GAAK,GAE5BL,IAAM,EAIJA,GADO,IAALM,GAAWA,GAAK,GACbA,EAAI,GAAK,GAGA,IAALA,GAAWA,GAAK,GACpBA,EAAI,GAAK,GAIL,GAAJA,EAGT,OAAON,EAiCT,SAASgb,EAAWN,EAAKC,EAAOC,EAAKK,GAGnC,IAFA,IAAIjb,EAAI,EACJ6a,EAAMC,KAAKC,IAAIL,EAAI5Z,OAAQ8Z,GACtBva,EAAIsa,EAAOta,EAAIwa,EAAKxa,IAAK,CAChC,IAAIC,EAAIoa,EAAIxG,WAAW7T,GAAK,GAE5BL,GAAKib,EAIHjb,GADO,IAALM,EACGA,EAAI,GAAK,GAGA,IAALA,EACJA,EAAI,GAAK,GAITA,EAGT,OAAON,EA5MT8Z,EAAGI,KAAO,SAAegB,GACvB,OAAIA,aAAepB,GAIJ,OAARoB,GAA+B,iBAARA,GAC5BA,EAAIhY,YAAYsX,WAAaV,EAAGU,UAAY3X,MAAMoE,QAAQiU,EAAId,QAGlEN,EAAGqB,IAAM,SAAcC,EAAMC,GAC3B,OAAsB,EAAlBD,EAAKE,IAAID,GAAmBD,EACzBC,GAGTvB,EAAGiB,IAAM,SAAcK,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,GAGTvB,EAAG3W,UAAUmX,MAAQ,SAAeP,EAAQC,EAAMC,GAChD,GAAsB,iBAAXF,EACT,OAAOja,KAAKyb,YAAYxB,EAAQC,EAAMC,GAGxC,GAAsB,iBAAXF,EACT,OAAOja,KAAK0b,WAAWzB,EAAQC,EAAMC,GAG1B,QAATD,IACFA,EAAO,IAETV,EAAOU,KAAiB,EAAPA,IAAqB,GAARA,GAAaA,GAAQ,IAGnD,IAAIW,EAAQ,EACM,OAFlBZ,EAASA,EAAOxJ,WAAWkL,QAAQ,OAAQ,KAEhC,IACTd,IAGW,KAATX,EACFla,KAAK4b,UAAU3B,EAAQY,GAEvB7a,KAAK6b,WAAW5B,EAAQC,EAAMW,GAGd,MAAdZ,EAAO,KACTja,KAAKqa,SAAW,GAGlBra,KAAKoZ,QAEU,OAAXe,GAEJna,KAAK0b,WAAW1b,KAAK8b,UAAW5B,EAAMC,IAGxCH,EAAG3W,UAAUoY,YAAc,SAAsBxB,EAAQC,EAAMC,GACzDF,EAAS,IACXja,KAAKqa,SAAW,EAChBJ,GAAUA,GAERA,EAAS,UACXja,KAAKsa,MAAQ,CAAW,SAATL,GACfja,KAAKgB,OAAS,GACLiZ,EAAS,kBAClBja,KAAKsa,MAAQ,CACF,SAATL,EACCA,EAAS,SAAa,UAEzBja,KAAKgB,OAAS,IAEdwY,EAAOS,EAAS,kBAChBja,KAAKsa,MAAQ,CACF,SAATL,EACCA,EAAS,SAAa,SACvB,GAEFja,KAAKgB,OAAS,GAGD,OAAXmZ,GAGJna,KAAK0b,WAAW1b,KAAK8b,UAAW5B,EAAMC,IAGxCH,EAAG3W,UAAUqY,WAAa,SAAqBzB,EAAQC,EAAMC,GAG3D,GADAX,EAAgC,iBAAlBS,EAAOjZ,QACjBiZ,EAAOjZ,QAAU,EAGnB,OAFAhB,KAAKsa,MAAQ,CAAE,GACfta,KAAKgB,OAAS,EACPhB,KAGTA,KAAKgB,OAASga,KAAKe,KAAK9B,EAAOjZ,OAAS,GACxChB,KAAKsa,MAAQ,IAAIvX,MAAM/C,KAAKgB,QAC5B,IAAK,IAAIT,EAAI,EAAGA,EAAIP,KAAKgB,OAAQT,IAC/BP,KAAKsa,MAAM/Z,GAAK,EAGlB,IAAI6W,EAAG4E,EACHC,EAAM,EACV,GAAe,OAAX9B,EACF,IAAK5Z,EAAI0Z,EAAOjZ,OAAS,EAAGoW,EAAI,EAAQ,GAAL7W,EAAQA,GAAK,EAC9Cyb,EAAI/B,EAAO1Z,GAAM0Z,EAAO1Z,EAAI,IAAM,EAAM0Z,EAAO1Z,EAAI,IAAM,GACzDP,KAAKsa,MAAMlD,IAAO4E,GAAKC,EAAO,SAC9Bjc,KAAKsa,MAAMlD,EAAI,GAAM4E,IAAO,GAAKC,EAAQ,SAE9B,KADXA,GAAO,MAELA,GAAO,GACP7E,UAGC,GAAe,OAAX+C,EACT,IAAY/C,EAAP7W,EAAI,EAAUA,EAAI0Z,EAAOjZ,OAAQT,GAAK,EACzCyb,EAAI/B,EAAO1Z,GAAM0Z,EAAO1Z,EAAI,IAAM,EAAM0Z,EAAO1Z,EAAI,IAAM,GACzDP,KAAKsa,MAAMlD,IAAO4E,GAAKC,EAAO,SAC9Bjc,KAAKsa,MAAMlD,EAAI,GAAM4E,IAAO,GAAKC,EAAQ,SAE9B,KADXA,GAAO,MAELA,GAAO,GACP7E,KAIN,OAAOpX,KAAKoZ,SA2BdY,EAAG3W,UAAUuY,UAAY,SAAoB3B,EAAQY,GAEnD7a,KAAKgB,OAASga,KAAKe,MAAM9B,EAAOjZ,OAAS6Z,GAAS,GAClD7a,KAAKsa,MAAQ,IAAIvX,MAAM/C,KAAKgB,QAC5B,IAAK,IAAIT,EAAI,EAAGA,EAAIP,KAAKgB,OAAQT,IAC/BP,KAAKsa,MAAM/Z,GAAK,EAGlB,IAAI6W,EAAG4E,EAEHC,EAAM,EACV,IAAK1b,EAAI0Z,EAAOjZ,OAAS,EAAGoW,EAAI,EAAQyD,GAALta,EAAYA,GAAK,EAClDyb,EAAIrB,EAASV,EAAQ1Z,EAAGA,EAAI,GAC5BP,KAAKsa,MAAMlD,IAAO4E,GAAKC,EAAO,SAE9Bjc,KAAKsa,MAAMlD,EAAI,IAAM4E,IAAO,GAAKC,EAAO,QAE7B,KADXA,GAAO,MAELA,GAAO,GACP7E,KAGA7W,EAAI,IAAMsa,IACZmB,EAAIrB,EAASV,EAAQY,EAAOta,EAAI,GAChCP,KAAKsa,MAAMlD,IAAO4E,GAAKC,EAAO,SAC9Bjc,KAAKsa,MAAMlD,EAAI,IAAM4E,IAAO,GAAKC,EAAO,SAE1Cjc,KAAKoZ,SA2BPY,EAAG3W,UAAUwY,WAAa,SAAqB5B,EAAQC,EAAMW,GAE3D7a,KAAKsa,MAAQ,CAAE,GAIf,IAAK,IAAI4B,EAAU,EAAGC,EAHtBnc,KAAKgB,OAAS,EAGqBmb,GAAW,SAAWA,GAAWjC,EAClEgC,IAEFA,IACAC,EAAWA,EAAUjC,EAAQ,EAO7B,IALA,IAAIkC,EAAQnC,EAAOjZ,OAAS6Z,EACxBrX,EAAM4Y,EAAQF,EACdpB,EAAME,KAAKC,IAAImB,EAAOA,EAAQ5Y,GAAOqX,EAErCwB,EAAO,EACF9b,EAAIsa,EAAOta,EAAIua,EAAKva,GAAK2b,EAChCG,EAAOnB,EAAUjB,EAAQ1Z,EAAGA,EAAI2b,EAAShC,GAEzCla,KAAKsc,MAAMH,GACPnc,KAAKsa,MAAM,GAAK+B,EAAO,SACzBrc,KAAKsa,MAAM,IAAM+B,EAEjBrc,KAAKuc,OAAOF,GAIhB,GAAY,IAAR7Y,EAAW,CACb,IAAIgZ,EAAM,EAGV,IAFAH,EAAOnB,EAAUjB,EAAQ1Z,EAAG0Z,EAAOjZ,OAAQkZ,GAEtC3Z,EAAI,EAAGA,EAAIiD,EAAKjD,IACnBic,GAAOtC,EAGTla,KAAKsc,MAAME,GACPxc,KAAKsa,MAAM,GAAK+B,EAAO,SACzBrc,KAAKsa,MAAM,IAAM+B,EAEjBrc,KAAKuc,OAAOF,KAKlBrC,EAAG3W,UAAU6P,KAAO,SAAeuJ,GACjCA,EAAKnC,MAAQ,IAAIvX,MAAM/C,KAAKgB,QAC5B,IAAK,IAAIT,EAAI,EAAGA,EAAIP,KAAKgB,OAAQT,IAC/Bkc,EAAKnC,MAAM/Z,GAAKP,KAAKsa,MAAM/Z,GAE7Bkc,EAAKzb,OAAShB,KAAKgB,OACnByb,EAAKpC,SAAWra,KAAKqa,SACrBoC,EAAKlC,IAAMva,KAAKua,KAGlBP,EAAG3W,UAAUqZ,MAAQ,WACnB,IAAIxc,EAAI,IAAI8Z,EAAG,MAEf,OADAha,KAAKkT,KAAKhT,GACHA,GAGT8Z,EAAG3W,UAAUsZ,QAAU,SAAkBC,GACvC,KAAO5c,KAAKgB,OAAS4b,GACnB5c,KAAKsa,MAAMta,KAAKgB,UAAY,EAE9B,OAAOhB,MAITga,EAAG3W,UAAU+V,MAAQ,WACnB,KAAqB,EAAdpZ,KAAKgB,QAA8C,IAAhChB,KAAKsa,MAAMta,KAAKgB,OAAS,IACjDhB,KAAKgB,SAEP,OAAOhB,KAAK6c,aAGd7C,EAAG3W,UAAUwZ,UAAY,WAKvB,OAHoB,IAAhB7c,KAAKgB,QAAkC,IAAlBhB,KAAKsa,MAAM,KAClCta,KAAKqa,SAAW,GAEXra,MAGTga,EAAG3W,UAAUyZ,QAAU,WACrB,OAAQ9c,KAAKua,IAAM,UAAY,SAAWva,KAAKyQ,SAAS,IAAM,KAiChE,IAAIsM,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,6BAGEC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGhBC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAsjB9D,SAASC,EAAYnd,EAAMqb,EAAK+B,GAC9BA,EAAI9C,SAAWe,EAAIf,SAAWta,EAAKsa,SACnC,IAAIU,EAAOhb,EAAKiB,OAASoa,EAAIpa,OAAU,EAEvC+Z,GADAoC,EAAInc,OAAS+Z,GACA,EAAK,EAGlB,IAAIpa,EAAoB,EAAhBZ,EAAKua,MAAM,GACfrX,EAAmB,EAAfmY,EAAId,MAAM,GACdpa,EAAIS,EAAIsC,EAERma,EAAS,SAAJld,EACLmd,EAASnd,EAAI,SAAa,EAC9Bid,EAAI7C,MAAM,GAAK8C,EAEf,IAAK,IAAIzZ,EAAI,EAAGA,EAAIoX,EAAKpX,IAAK,CAM5B,IAHA,IAAI2Z,EAASD,IAAU,GACnBE,EAAgB,SAARF,EACRG,EAAOxC,KAAKC,IAAItX,EAAGyX,EAAIpa,OAAS,GAC3BoW,EAAI4D,KAAKK,IAAI,EAAG1X,EAAI5D,EAAKiB,OAAS,GAAIoW,GAAKoG,EAAMpG,IAAK,CAC7D,IAAI7W,EAAKoD,EAAIyT,EAAK,EAIlBkG,IADApd,GAFAS,EAAoB,EAAhBZ,EAAKua,MAAM/Z,KACf0C,EAAmB,EAAfmY,EAAId,MAAMlD,IACFmG,GACG,SAAa,EAC5BA,EAAY,SAAJrd,EAEVid,EAAI7C,MAAM3W,GAAa,EAAR4Z,EACfF,EAAiB,EAATC,EAQV,OANc,IAAVD,EACFF,EAAI7C,MAAM3W,GAAa,EAAR0Z,EAEfF,EAAInc,SAGCmc,EAAI/D,QAzlBbY,EAAG3W,UAAUoN,SAAW,SAAmByJ,EAAMlB,GAI/C,IAAImE,EACJ,GAHAnE,EAAoB,EAAVA,GAAe,EAGZ,MAJbkB,EAAOA,GAAQ,KAIa,QAATA,EAAgB,CACjCiD,EAAM,GAGN,IAFA,IAAIlB,EAAM,EACNoB,EAAQ,EACH9c,EAAI,EAAGA,EAAIP,KAAKgB,OAAQT,IAAK,CACpC,IAAIyb,EAAIhc,KAAKsa,MAAM/Z,GACf8b,GAA+B,UAArBL,GAAKC,EAAOoB,IAAmB5M,SAAS,IAGpD0M,EADY,KADdE,EAASrB,IAAO,GAAKC,EAAQ,WACV1b,IAAMP,KAAKgB,OAAS,EAC/B+b,EAAM,EAAIV,EAAKrb,QAAUqb,EAAOc,EAEhCd,EAAOc,EAGJ,KADXlB,GAAO,KAELA,GAAO,GACP1b,KAMJ,IAHc,IAAV8c,IACFF,EAAME,EAAM5M,SAAS,IAAM0M,GAEtBA,EAAInc,OAASgY,GAAY,GAC9BmE,EAAM,IAAMA,EAKd,OAHsB,IAAlBnd,KAAKqa,WACP8C,EAAM,IAAMA,GAEPA,EAGT,GAAIjD,KAAiB,EAAPA,IAAqB,GAARA,GAAaA,GAAQ,GAAI,CAElD,IAAIuD,EAAYT,EAAW9C,GAEvBwD,EAAYT,EAAW/C,GAC3BiD,EAAM,GACN,IAAI3c,EAAIR,KAAK0c,QAEb,IADAlc,EAAE6Z,SAAW,GACL7Z,EAAEmd,UAAU,CAClB,IAAIzd,EAAIM,EAAEod,KAAKF,GAAWjN,SAASyJ,GAMjCiD,GALF3c,EAAIA,EAAEqd,MAAMH,IAELC,SAGCzd,EAAIid,EAFJJ,EAAMU,EAAYvd,EAAEc,QAAUd,EAAIid,EAQ5C,IAHInd,KAAK2d,WACPR,EAAM,IAAMA,GAEPA,EAAInc,OAASgY,GAAY,GAC9BmE,EAAM,IAAMA,EAKd,OAHsB,IAAlBnd,KAAKqa,WACP8C,EAAM,IAAMA,GAEPA,EAGT3D,GAAO,EAAO,oCAGhBQ,EAAG3W,UAAUya,SAAW,WACtB,IAAIC,EAAM/d,KAAKsa,MAAM,GASrB,OARoB,IAAhBta,KAAKgB,OACP+c,GAAuB,SAAhB/d,KAAKsa,MAAM,GACO,IAAhBta,KAAKgB,QAAkC,IAAlBhB,KAAKsa,MAAM,GAEzCyD,GAAO,iBAAoC,SAAhB/d,KAAKsa,MAAM,GACf,EAAdta,KAAKgB,QACdwY,GAAO,EAAO,8CAEU,IAAlBxZ,KAAKqa,UAAmB0D,EAAMA,GAGxC/D,EAAG3W,UAAU2a,OAAS,WACpB,OAAOhe,KAAKyQ,SAAS,KAGvBuJ,EAAG3W,UAAU4a,SAAW,SAAmB9D,EAAQnZ,GAEjD,OADAwY,OAAyB,IAAXiB,GACPza,KAAKke,YAAYzD,EAAQN,EAAQnZ,IAG1CgZ,EAAG3W,UAAUyY,QAAU,SAAkB3B,EAAQnZ,GAC/C,OAAOhB,KAAKke,YAAYnb,MAAOoX,EAAQnZ,IAGzCgZ,EAAG3W,UAAU6a,YAAc,SAAsBC,EAAWhE,EAAQnZ,GAClE,IAAIod,EAAape,KAAKoe,aAClBC,EAAYrd,GAAUga,KAAKK,IAAI,EAAG+C,GACtC5E,EAAO4E,GAAcC,EAAW,yCAChC7E,EAAmB,EAAZ6E,EAAe,+BAEtBre,KAAKoZ,QACL,IAGInW,EAAG1C,EAHH+d,EAA0B,OAAXnE,EACfoE,EAAM,IAAIJ,EAAUE,GAGpBG,EAAIxe,KAAK0c,QACb,GAAK4B,EAYE,CACL,IAAK/d,EAAI,GAAIie,EAAEb,SAAUpd,IACvB0C,EAAIub,EAAEC,MAAM,KACZD,EAAEE,OAAO,GAETH,EAAIhe,GAAK0C,EAGX,KAAO1C,EAAI8d,EAAW9d,IACpBge,EAAIhe,GAAK,MArBM,CAEjB,IAAKA,EAAI,EAAGA,EAAI8d,EAAYD,EAAY7d,IACtCge,EAAIhe,GAAK,EAGX,IAAKA,EAAI,GAAIie,EAAEb,SAAUpd,IACvB0C,EAAIub,EAAEC,MAAM,KACZD,EAAEE,OAAO,GAETH,EAAIF,EAAY9d,EAAI,GAAK0C,EAe7B,OAAOsb,GAIPvE,EAAG3W,UAAUsb,WADX3D,KAAK4D,MACmB,SAAqB5C,GAC7C,OAAO,GAAKhB,KAAK4D,MAAM5C,IAGC,SAAqBA,GAC7C,IAAI3b,EAAI2b,EACJ9b,EAAI,EAiBR,OAhBS,MAALG,IACFH,GAAK,GACLG,KAAO,IAEA,IAALA,IACFH,GAAK,EACLG,KAAO,GAEA,GAALA,IACFH,GAAK,EACLG,KAAO,GAEA,GAALA,IACFH,GAAK,EACLG,KAAO,GAEFH,EAAIG,GAIf2Z,EAAG3W,UAAUwb,UAAY,SAAoB7C,GAE3C,GAAU,IAANA,EAAS,OAAO,GAEpB,IAAI3b,EAAI2b,EACJ9b,EAAI,EAoBR,OAnBqB,IAAZ,KAAJG,KACHH,GAAK,GACLG,KAAO,IAEU,IAAV,IAAJA,KACHH,GAAK,EACLG,KAAO,GAES,IAAT,GAAJA,KACHH,GAAK,EACLG,KAAO,GAES,IAAT,EAAJA,KACHH,GAAK,EACLG,KAAO,GAES,IAAT,EAAJA,IACHH,IAEKA,GAIT8Z,EAAG3W,UAAUyb,UAAY,WACvB,IAAI9C,EAAIhc,KAAKsa,MAAMta,KAAKgB,OAAS,GAC7B+d,EAAK/e,KAAK2e,WAAW3C,GACzB,OAA2B,IAAnBhc,KAAKgB,OAAS,GAAU+d,GAiBlC/E,EAAG3W,UAAU2b,SAAW,WACtB,GAAIhf,KAAK2d,SAAU,OAAO,EAG1B,IADA,IAAIzd,EAAI,EACCK,EAAI,EAAGA,EAAIP,KAAKgB,OAAQT,IAAK,CACpC,IAAI0C,EAAIjD,KAAK6e,UAAU7e,KAAKsa,MAAM/Z,IAElC,GADAL,GAAK+C,EACK,KAANA,EAAU,MAEhB,OAAO/C,GAGT8Z,EAAG3W,UAAU+a,WAAa,WACxB,OAAOpD,KAAKe,KAAK/b,KAAK8e,YAAc,IAGtC9E,EAAG3W,UAAU4b,OAAS,SAAiBC,GACrC,OAAsB,IAAlBlf,KAAKqa,SACAra,KAAKmf,MAAMC,MAAMF,GAAOG,MAAM,GAEhCrf,KAAK0c,SAGd1C,EAAG3W,UAAUic,SAAW,SAAmBJ,GACzC,OAAIlf,KAAKuf,MAAML,EAAQ,GACdlf,KAAKwf,KAAKN,GAAOG,MAAM,GAAGI,OAE5Bzf,KAAK0c,SAGd1C,EAAG3W,UAAUqc,MAAQ,WACnB,OAAyB,IAAlB1f,KAAKqa,UAIdL,EAAG3W,UAAUsc,IAAM,WACjB,OAAO3f,KAAK0c,QAAQ+C,QAGtBzF,EAAG3W,UAAUoc,KAAO,WAKlB,OAJKzf,KAAK2d,WACR3d,KAAKqa,UAAY,GAGZra,MAITga,EAAG3W,UAAUuc,KAAO,SAAexE,GACjC,KAAOpb,KAAKgB,OAASoa,EAAIpa,QACvBhB,KAAKsa,MAAMta,KAAKgB,UAAY,EAG9B,IAAK,IAAIT,EAAI,EAAGA,EAAI6a,EAAIpa,OAAQT,IAC9BP,KAAKsa,MAAM/Z,GAAKP,KAAKsa,MAAM/Z,GAAK6a,EAAId,MAAM/Z,GAG5C,OAAOP,KAAKoZ,SAGdY,EAAG3W,UAAUwc,IAAM,SAAczE,GAE/B,OADA5B,EAA0C,IAAlCxZ,KAAKqa,SAAWe,EAAIf,WACrBra,KAAK4f,KAAKxE,IAInBpB,EAAG3W,UAAUyc,GAAK,SAAa1E,GAC7B,OAAIpb,KAAKgB,OAASoa,EAAIpa,OAAehB,KAAK0c,QAAQmD,IAAIzE,GAC/CA,EAAIsB,QAAQmD,IAAI7f,OAGzBga,EAAG3W,UAAU0c,IAAM,SAAc3E,GAC/B,OAAIpb,KAAKgB,OAASoa,EAAIpa,OAAehB,KAAK0c,QAAQkD,KAAKxE,GAChDA,EAAIsB,QAAQkD,KAAK5f,OAI1Bga,EAAG3W,UAAU2c,MAAQ,SAAgB5E,GAEnC,IAAInY,EAEFA,EADEjD,KAAKgB,OAASoa,EAAIpa,OAChBoa,EAEApb,KAGN,IAAK,IAAIO,EAAI,EAAGA,EAAI0C,EAAEjC,OAAQT,IAC5BP,KAAKsa,MAAM/Z,GAAKP,KAAKsa,MAAM/Z,GAAK6a,EAAId,MAAM/Z,GAK5C,OAFAP,KAAKgB,OAASiC,EAAEjC,OAEThB,KAAKoZ,SAGdY,EAAG3W,UAAU4c,KAAO,SAAe7E,GAEjC,OADA5B,EAA0C,IAAlCxZ,KAAKqa,SAAWe,EAAIf,WACrBra,KAAKggB,MAAM5E,IAIpBpB,EAAG3W,UAAU6c,IAAM,SAAc9E,GAC/B,OAAIpb,KAAKgB,OAASoa,EAAIpa,OAAehB,KAAK0c,QAAQuD,KAAK7E,GAChDA,EAAIsB,QAAQuD,KAAKjgB,OAG1Bga,EAAG3W,UAAU8c,KAAO,SAAe/E,GACjC,OAAIpb,KAAKgB,OAASoa,EAAIpa,OAAehB,KAAK0c,QAAQsD,MAAM5E,GACjDA,EAAIsB,QAAQsD,MAAMhgB,OAI3Bga,EAAG3W,UAAU+c,MAAQ,SAAgBhF,GAEnC,IAAIza,EACAsC,EACAjD,KAAKgB,OAASoa,EAAIpa,QACpBL,EAAIX,KACJiD,EAAImY,IAEJza,EAAIya,EACJnY,EAAIjD,MAGN,IAAK,IAAIO,EAAI,EAAGA,EAAI0C,EAAEjC,OAAQT,IAC5BP,KAAKsa,MAAM/Z,GAAKI,EAAE2Z,MAAM/Z,GAAK0C,EAAEqX,MAAM/Z,GAGvC,GAAIP,OAASW,EACX,KAAOJ,EAAII,EAAEK,OAAQT,IACnBP,KAAKsa,MAAM/Z,GAAKI,EAAE2Z,MAAM/Z,GAM5B,OAFAP,KAAKgB,OAASL,EAAEK,OAEThB,KAAKoZ,SAGdY,EAAG3W,UAAUgd,KAAO,SAAejF,GAEjC,OADA5B,EAA0C,IAAlCxZ,KAAKqa,SAAWe,EAAIf,WACrBra,KAAKogB,MAAMhF,IAIpBpB,EAAG3W,UAAUid,IAAM,SAAclF,GAC/B,OAAIpb,KAAKgB,OAASoa,EAAIpa,OAAehB,KAAK0c,QAAQ2D,KAAKjF,GAChDA,EAAIsB,QAAQ2D,KAAKrgB,OAG1Bga,EAAG3W,UAAUkd,KAAO,SAAenF,GACjC,OAAIpb,KAAKgB,OAASoa,EAAIpa,OAAehB,KAAK0c,QAAQ0D,MAAMhF,GACjDA,EAAIsB,QAAQ0D,MAAMpgB,OAI3Bga,EAAG3W,UAAU+b,MAAQ,SAAgBF,GACnC1F,EAAwB,iBAAV0F,GAA+B,GAATA,GAEpC,IAAIsB,EAAsC,EAAxBxF,KAAKe,KAAKmD,EAAQ,IAChCuB,EAAWvB,EAAQ,GAGvBlf,KAAK2c,QAAQ6D,GAEE,EAAXC,GACFD,IAIF,IAAK,IAAIjgB,EAAI,EAAGA,EAAIigB,EAAajgB,IAC/BP,KAAKsa,MAAM/Z,GAAsB,UAAhBP,KAAKsa,MAAM/Z,GAS9B,OALe,EAAXkgB,IACFzgB,KAAKsa,MAAM/Z,IAAMP,KAAKsa,MAAM/Z,GAAM,UAAc,GAAKkgB,GAIhDzgB,KAAKoZ,SAGdY,EAAG3W,UAAUmc,KAAO,SAAeN,GACjC,OAAOlf,KAAK0c,QAAQ0C,MAAMF,IAI5BlF,EAAG3W,UAAUqd,KAAO,SAAeC,EAAKlH,GACtCD,EAAsB,iBAARmH,GAA2B,GAAPA,GAElC,IAAI1E,EAAO0E,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAUjB,OARA3gB,KAAK2c,QAAQV,EAAM,GAGjBjc,KAAKsa,MAAM2B,GADTxC,EACgBzZ,KAAKsa,MAAM2B,GAAQ,GAAK2E,EAExB5gB,KAAKsa,MAAM2B,KAAS,GAAK2E,GAGtC5gB,KAAKoZ,SAIdY,EAAG3W,UAAUwd,KAAO,SAAezF,GACjC,IAAIlb,EAkBAS,EAAGsC,EAfP,GAAsB,IAAlBjD,KAAKqa,UAAmC,IAAjBe,EAAIf,SAI7B,OAHAra,KAAKqa,SAAW,EAChBna,EAAIF,KAAK8gB,KAAK1F,GACdpb,KAAKqa,UAAY,EACVra,KAAK6c,YAGP,GAAsB,IAAlB7c,KAAKqa,UAAmC,IAAjBe,EAAIf,SAIpC,OAHAe,EAAIf,SAAW,EACfna,EAAIF,KAAK8gB,KAAK1F,GACdA,EAAIf,SAAW,EACRna,EAAE2c,YAKP7c,KAAKgB,OAASoa,EAAIpa,QACpBL,EAAIX,KACJiD,EAAImY,IAEJza,EAAIya,EACJnY,EAAIjD,MAIN,IADA,IAAIqd,EAAQ,EACH9c,EAAI,EAAGA,EAAI0C,EAAEjC,OAAQT,IAC5BL,GAAkB,EAAbS,EAAE2Z,MAAM/Z,KAAwB,EAAb0C,EAAEqX,MAAM/Z,IAAU8c,EAC1Crd,KAAKsa,MAAM/Z,GAAS,SAAJL,EAChBmd,EAAQnd,IAAM,GAEhB,KAAiB,IAAVmd,GAAe9c,EAAII,EAAEK,OAAQT,IAClCL,GAAkB,EAAbS,EAAE2Z,MAAM/Z,IAAU8c,EACvBrd,KAAKsa,MAAM/Z,GAAS,SAAJL,EAChBmd,EAAQnd,IAAM,GAIhB,GADAF,KAAKgB,OAASL,EAAEK,OACF,IAAVqc,EACFrd,KAAKsa,MAAMta,KAAKgB,QAAUqc,EAC1Brd,KAAKgB,cAEA,GAAIL,IAAMX,KACf,KAAOO,EAAII,EAAEK,OAAQT,IACnBP,KAAKsa,MAAM/Z,GAAKI,EAAE2Z,MAAM/Z,GAI5B,OAAOP,MAITga,EAAG3W,UAAU4F,IAAM,SAAcmS,GAC/B,IAAImD,EACJ,OAAqB,IAAjBnD,EAAIf,UAAoC,IAAlBra,KAAKqa,UAC7Be,EAAIf,SAAW,EACfkE,EAAMve,KAAK+gB,IAAI3F,GACfA,EAAIf,UAAY,EACTkE,GACmB,IAAjBnD,EAAIf,UAAoC,IAAlBra,KAAKqa,UACpCra,KAAKqa,SAAW,EAChBkE,EAAMnD,EAAI2F,IAAI/gB,MACdA,KAAKqa,SAAW,EACTkE,GAGLve,KAAKgB,OAASoa,EAAIpa,OAAehB,KAAK0c,QAAQmE,KAAKzF,GAEhDA,EAAIsB,QAAQmE,KAAK7gB,OAI1Bga,EAAG3W,UAAUyd,KAAO,SAAe1F,GAEjC,GAAqB,IAAjBA,EAAIf,SAAgB,CACtBe,EAAIf,SAAW,EACf,IAAIna,EAAIF,KAAK6gB,KAAKzF,GAElB,OADAA,EAAIf,SAAW,EACRna,EAAE2c,YAGJ,GAAsB,IAAlB7c,KAAKqa,SAId,OAHAra,KAAKqa,SAAW,EAChBra,KAAK6gB,KAAKzF,GACVpb,KAAKqa,SAAW,EACTra,KAAK6c,YAId,IAWIlc,EAAGsC,EAXHuY,EAAMxb,KAAKwb,IAAIJ,GAGnB,GAAY,IAARI,EAIF,OAHAxb,KAAKqa,SAAW,EAChBra,KAAKgB,OAAS,EACdhB,KAAKsa,MAAM,GAAK,EACTta,KAKC,EAANwb,GACF7a,EAAIX,KACJiD,EAAImY,IAEJza,EAAIya,EACJnY,EAAIjD,MAIN,IADA,IAAIqd,EAAQ,EACH9c,EAAI,EAAGA,EAAI0C,EAAEjC,OAAQT,IAE5B8c,GADAnd,GAAkB,EAAbS,EAAE2Z,MAAM/Z,KAAwB,EAAb0C,EAAEqX,MAAM/Z,IAAU8c,IAC7B,GACbrd,KAAKsa,MAAM/Z,GAAS,SAAJL,EAElB,KAAiB,IAAVmd,GAAe9c,EAAII,EAAEK,OAAQT,IAElC8c,GADAnd,GAAkB,EAAbS,EAAE2Z,MAAM/Z,IAAU8c,IACV,GACbrd,KAAKsa,MAAM/Z,GAAS,SAAJL,EAIlB,GAAc,IAAVmd,GAAe9c,EAAII,EAAEK,QAAUL,IAAMX,KACvC,KAAOO,EAAII,EAAEK,OAAQT,IACnBP,KAAKsa,MAAM/Z,GAAKI,EAAE2Z,MAAM/Z,GAU5B,OANAP,KAAKgB,OAASga,KAAKK,IAAIrb,KAAKgB,OAAQT,GAEhCI,IAAMX,OACRA,KAAKqa,SAAW,GAGXra,KAAKoZ,SAIdY,EAAG3W,UAAU0d,IAAM,SAAc3F,GAC/B,OAAOpb,KAAK0c,QAAQoE,KAAK1F,IA+C3B,IAAI4F,EAAc,SAAsBjhB,EAAMqb,EAAK+B,GACjD,IAIIC,EACA6D,EACAlC,EANApe,EAAIZ,EAAKua,MACTrX,EAAImY,EAAId,MACRha,EAAI6c,EAAI7C,MACR9Z,EAAI,EAIJ0gB,EAAY,EAAPvgB,EAAE,GACPwgB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP1gB,EAAE,GACP2gB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP7gB,EAAE,GACP8gB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPhhB,EAAE,GACPihB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPnhB,EAAE,GACPohB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPthB,EAAE,GACPuhB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPzhB,EAAE,GACP0hB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP5hB,EAAE,GACP6hB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP/hB,EAAE,GACPgiB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPliB,EAAE,GACPmiB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP/f,EAAE,GACPggB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPlgB,EAAE,GACPmgB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPrgB,EAAE,GACPsgB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPxgB,EAAE,GACPygB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP3gB,EAAE,GACP4gB,EAAW,KAALD,EACNE,GAAMF,IAAO,GACbG,GAAY,EAAP9gB,EAAE,GACP+gB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPjhB,EAAE,GACPkhB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPphB,EAAE,GACPqhB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPvhB,EAAE,GACPwhB,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP1hB,EAAE,GACP2hB,GAAW,KAALD,GACNE,GAAMF,KAAO,GAEjBxH,EAAI9C,SAAWta,EAAKsa,SAAWe,EAAIf,SACnC8C,EAAInc,OAAS,GAMb,IAAI8jB,IAAQtkB,GAJZ4c,EAAKpC,KAAK+J,KAAK5D,EAAK8B,IAIE,KAAa,MAFnChC,GADAA,EAAMjG,KAAK+J,KAAK5D,EAAK+B,IACRlI,KAAK+J,KAAK3D,EAAK6B,GAAQ,KAEU,IAAO,EACrDziB,IAFAue,EAAK/D,KAAK+J,KAAK3D,EAAK8B,KAEPjC,IAAQ,IAAO,IAAM6D,KAAO,IAAO,EAChDA,IAAM,SAEN1H,EAAKpC,KAAK+J,KAAKzD,EAAK2B,GAEpBhC,GADAA,EAAMjG,KAAK+J,KAAKzD,EAAK4B,IACRlI,KAAK+J,KAAKxD,EAAK0B,GAAQ,EACpClE,EAAK/D,KAAK+J,KAAKxD,EAAK2B,GAKpB,IAAI8B,IAAQxkB,GAJZ4c,EAAMA,EAAKpC,KAAK+J,KAAK5D,EAAKiC,GAAQ,GAIZ,KAAa,MAFnCnC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK5D,EAAKkC,GAAQ,GACvBrI,KAAK+J,KAAK3D,EAAKgC,GAAQ,KAEU,IAAO,EACrD5iB,IAFAue,EAAMA,EAAK/D,KAAK+J,KAAK3D,EAAKiC,GAAQ,IAErBpC,IAAQ,IAAO,IAAM+D,KAAO,IAAO,EAChDA,IAAM,SAEN5H,EAAKpC,KAAK+J,KAAKtD,EAAKwB,GAEpBhC,GADAA,EAAMjG,KAAK+J,KAAKtD,EAAKyB,IACRlI,KAAK+J,KAAKrD,EAAKuB,GAAQ,EACpClE,EAAK/D,KAAK+J,KAAKrD,EAAKwB,GACpB9F,EAAMA,EAAKpC,KAAK+J,KAAKzD,EAAK8B,GAAQ,EAElCnC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKzD,EAAK+B,GAAQ,GACvBrI,KAAK+J,KAAKxD,EAAK6B,GAAQ,EACpCrE,EAAMA,EAAK/D,KAAK+J,KAAKxD,EAAK8B,GAAQ,EAKlC,IAAI4B,IAAQzkB,GAJZ4c,EAAMA,EAAKpC,KAAK+J,KAAK5D,EAAKoC,GAAQ,GAIZ,KAAa,MAFnCtC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK5D,EAAKqC,GAAQ,GACvBxI,KAAK+J,KAAK3D,EAAKmC,GAAQ,KAEU,IAAO,EACrD/iB,IAFAue,EAAMA,EAAK/D,KAAK+J,KAAK3D,EAAKoC,GAAQ,IAErBvC,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAEN7H,EAAKpC,KAAK+J,KAAKnD,EAAKqB,GAEpBhC,GADAA,EAAMjG,KAAK+J,KAAKnD,EAAKsB,IACRlI,KAAK+J,KAAKlD,EAAKoB,GAAQ,EACpClE,EAAK/D,KAAK+J,KAAKlD,EAAKqB,GACpB9F,EAAMA,EAAKpC,KAAK+J,KAAKtD,EAAK2B,GAAQ,EAElCnC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKtD,EAAK4B,GAAQ,GACvBrI,KAAK+J,KAAKrD,EAAK0B,GAAQ,EACpCrE,EAAMA,EAAK/D,KAAK+J,KAAKrD,EAAK2B,GAAQ,EAClCjG,EAAMA,EAAKpC,KAAK+J,KAAKzD,EAAKiC,GAAQ,EAElCtC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKzD,EAAKkC,GAAQ,GACvBxI,KAAK+J,KAAKxD,EAAKgC,GAAQ,EACpCxE,EAAMA,EAAK/D,KAAK+J,KAAKxD,EAAKiC,GAAQ,EAKlC,IAAI0B,IAAQ1kB,GAJZ4c,EAAMA,EAAKpC,KAAK+J,KAAK5D,EAAKuC,GAAQ,GAIZ,KAAa,MAFnCzC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK5D,EAAKwC,GAAQ,GACvB3I,KAAK+J,KAAK3D,EAAKsC,GAAQ,KAEU,IAAO,EACrDljB,IAFAue,EAAMA,EAAK/D,KAAK+J,KAAK3D,EAAKuC,GAAQ,IAErB1C,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAEN9H,EAAKpC,KAAK+J,KAAKhD,EAAKkB,GAEpBhC,GADAA,EAAMjG,KAAK+J,KAAKhD,EAAKmB,IACRlI,KAAK+J,KAAK/C,EAAKiB,GAAQ,EACpClE,EAAK/D,KAAK+J,KAAK/C,EAAKkB,GACpB9F,EAAMA,EAAKpC,KAAK+J,KAAKnD,EAAKwB,GAAQ,EAElCnC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKnD,EAAKyB,GAAQ,GACvBrI,KAAK+J,KAAKlD,EAAKuB,GAAQ,EACpCrE,EAAMA,EAAK/D,KAAK+J,KAAKlD,EAAKwB,GAAQ,EAClCjG,EAAMA,EAAKpC,KAAK+J,KAAKtD,EAAK8B,GAAQ,EAElCtC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKtD,EAAK+B,GAAQ,GACvBxI,KAAK+J,KAAKrD,EAAK6B,GAAQ,EACpCxE,EAAMA,EAAK/D,KAAK+J,KAAKrD,EAAK8B,GAAQ,EAClCpG,EAAMA,EAAKpC,KAAK+J,KAAKzD,EAAKoC,GAAQ,EAElCzC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKzD,EAAKqC,GAAQ,GACvB3I,KAAK+J,KAAKxD,EAAKmC,GAAQ,EACpC3E,EAAMA,EAAK/D,KAAK+J,KAAKxD,EAAKoC,GAAQ,EAKlC,IAAIwB,IAAQ3kB,GAJZ4c,EAAMA,EAAKpC,KAAK+J,KAAK5D,EAAK0C,GAAQ,GAIZ,KAAa,MAFnC5C,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK5D,EAAK2C,IAAQ,GACvB9I,KAAK+J,KAAK3D,EAAKyC,GAAQ,KAEU,IAAO,EACrDrjB,IAFAue,EAAMA,EAAK/D,KAAK+J,KAAK3D,EAAK0C,IAAQ,IAErB7C,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAEN/H,EAAKpC,KAAK+J,KAAK7C,EAAKe,GAEpBhC,GADAA,EAAMjG,KAAK+J,KAAK7C,EAAKgB,IACRlI,KAAK+J,KAAK5C,EAAKc,GAAQ,EACpClE,EAAK/D,KAAK+J,KAAK5C,EAAKe,GACpB9F,EAAMA,EAAKpC,KAAK+J,KAAKhD,EAAKqB,GAAQ,EAElCnC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKhD,EAAKsB,GAAQ,GACvBrI,KAAK+J,KAAK/C,EAAKoB,GAAQ,EACpCrE,EAAMA,EAAK/D,KAAK+J,KAAK/C,EAAKqB,GAAQ,EAClCjG,EAAMA,EAAKpC,KAAK+J,KAAKnD,EAAK2B,GAAQ,EAElCtC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKnD,EAAK4B,GAAQ,GACvBxI,KAAK+J,KAAKlD,EAAK0B,GAAQ,EACpCxE,EAAMA,EAAK/D,KAAK+J,KAAKlD,EAAK2B,GAAQ,EAClCpG,EAAMA,EAAKpC,KAAK+J,KAAKtD,EAAKiC,GAAQ,EAElCzC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKtD,EAAKkC,GAAQ,GACvB3I,KAAK+J,KAAKrD,EAAKgC,GAAQ,EACpC3E,EAAMA,EAAK/D,KAAK+J,KAAKrD,EAAKiC,GAAQ,EAClCvG,EAAMA,EAAKpC,KAAK+J,KAAKzD,EAAKuC,GAAQ,EAElC5C,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKzD,EAAKwC,IAAQ,GACvB9I,KAAK+J,KAAKxD,EAAKsC,GAAQ,EACpC9E,EAAMA,EAAK/D,KAAK+J,KAAKxD,EAAKuC,IAAQ,EAKlC,IAAIsB,IAAQ5kB,GAJZ4c,EAAMA,EAAKpC,KAAK+J,KAAK5D,EAAK6C,IAAQ,GAIZ,KAAa,MAFnC/C,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK5D,EAAK8C,IAAQ,GACvBjJ,KAAK+J,KAAK3D,EAAK4C,IAAQ,KAEU,IAAO,EACrDxjB,IAFAue,EAAMA,EAAK/D,KAAK+J,KAAK3D,EAAK6C,IAAQ,IAErBhD,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAENhI,EAAKpC,KAAK+J,KAAK1C,EAAKY,GAEpBhC,GADAA,EAAMjG,KAAK+J,KAAK1C,EAAKa,IACRlI,KAAK+J,KAAKzC,EAAKW,GAAQ,EACpClE,EAAK/D,KAAK+J,KAAKzC,EAAKY,GACpB9F,EAAMA,EAAKpC,KAAK+J,KAAK7C,EAAKkB,GAAQ,EAElCnC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK7C,EAAKmB,GAAQ,GACvBrI,KAAK+J,KAAK5C,EAAKiB,GAAQ,EACpCrE,EAAMA,EAAK/D,KAAK+J,KAAK5C,EAAKkB,GAAQ,EAClCjG,EAAMA,EAAKpC,KAAK+J,KAAKhD,EAAKwB,GAAQ,EAElCtC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKhD,EAAKyB,GAAQ,GACvBxI,KAAK+J,KAAK/C,EAAKuB,GAAQ,EACpCxE,EAAMA,EAAK/D,KAAK+J,KAAK/C,EAAKwB,GAAQ,EAClCpG,EAAMA,EAAKpC,KAAK+J,KAAKnD,EAAK8B,GAAQ,EAElCzC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKnD,EAAK+B,GAAQ,GACvB3I,KAAK+J,KAAKlD,EAAK6B,GAAQ,EACpC3E,EAAMA,EAAK/D,KAAK+J,KAAKlD,EAAK8B,GAAQ,EAClCvG,EAAMA,EAAKpC,KAAK+J,KAAKtD,EAAKoC,GAAQ,EAElC5C,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKtD,EAAKqC,IAAQ,GACvB9I,KAAK+J,KAAKrD,EAAKmC,GAAQ,EACpC9E,EAAMA,EAAK/D,KAAK+J,KAAKrD,EAAKoC,IAAQ,EAClC1G,EAAMA,EAAKpC,KAAK+J,KAAKzD,EAAK0C,IAAQ,EAElC/C,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKzD,EAAK2C,IAAQ,GACvBjJ,KAAK+J,KAAKxD,EAAKyC,IAAQ,EACpCjF,EAAMA,EAAK/D,KAAK+J,KAAKxD,EAAK0C,IAAQ,EAKlC,IAAIoB,IAAQ7kB,GAJZ4c,EAAMA,EAAKpC,KAAK+J,KAAK5D,EAAKgD,IAAQ,GAIZ,KAAa,MAFnClD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK5D,EAAKiD,IAAQ,GACvBpJ,KAAK+J,KAAK3D,EAAK+C,IAAQ,KAEU,IAAO,EACrD3jB,IAFAue,EAAMA,EAAK/D,KAAK+J,KAAK3D,EAAKgD,IAAQ,IAErBnD,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAENjI,EAAKpC,KAAK+J,KAAKvC,EAAKS,GAEpBhC,GADAA,EAAMjG,KAAK+J,KAAKvC,EAAKU,IACRlI,KAAK+J,KAAKtC,EAAKQ,GAAQ,EACpClE,EAAK/D,KAAK+J,KAAKtC,EAAKS,GACpB9F,EAAMA,EAAKpC,KAAK+J,KAAK1C,EAAKe,GAAQ,EAElCnC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK1C,EAAKgB,GAAQ,GACvBrI,KAAK+J,KAAKzC,EAAKc,GAAQ,EACpCrE,EAAMA,EAAK/D,KAAK+J,KAAKzC,EAAKe,GAAQ,EAClCjG,EAAMA,EAAKpC,KAAK+J,KAAK7C,EAAKqB,GAAQ,EAElCtC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK7C,EAAKsB,GAAQ,GACvBxI,KAAK+J,KAAK5C,EAAKoB,GAAQ,EACpCxE,EAAMA,EAAK/D,KAAK+J,KAAK5C,EAAKqB,GAAQ,EAClCpG,EAAMA,EAAKpC,KAAK+J,KAAKhD,EAAK2B,GAAQ,EAElCzC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKhD,EAAK4B,GAAQ,GACvB3I,KAAK+J,KAAK/C,EAAK0B,GAAQ,EACpC3E,EAAMA,EAAK/D,KAAK+J,KAAK/C,EAAK2B,GAAQ,EAClCvG,EAAMA,EAAKpC,KAAK+J,KAAKnD,EAAKiC,GAAQ,EAElC5C,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKnD,EAAKkC,IAAQ,GACvB9I,KAAK+J,KAAKlD,EAAKgC,GAAQ,EACpC9E,EAAMA,EAAK/D,KAAK+J,KAAKlD,EAAKiC,IAAQ,EAClC1G,EAAMA,EAAKpC,KAAK+J,KAAKtD,EAAKuC,IAAQ,EAElC/C,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKtD,EAAKwC,IAAQ,GACvBjJ,KAAK+J,KAAKrD,EAAKsC,IAAQ,EACpCjF,EAAMA,EAAK/D,KAAK+J,KAAKrD,EAAKuC,IAAQ,EAClC7G,EAAMA,EAAKpC,KAAK+J,KAAKzD,EAAK6C,IAAQ,EAElClD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKzD,EAAK8C,IAAQ,GACvBpJ,KAAK+J,KAAKxD,EAAK4C,IAAQ,EACpCpF,EAAMA,EAAK/D,KAAK+J,KAAKxD,EAAK6C,IAAQ,EAKlC,IAAIkB,IAAQ9kB,GAJZ4c,EAAMA,EAAKpC,KAAK+J,KAAK5D,EAAKmD,IAAQ,GAIZ,KAAa,MAFnCrD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK5D,EAAKoD,IAAQ,GACvBvJ,KAAK+J,KAAK3D,EAAKkD,IAAQ,KAEU,IAAO,EACrD9jB,IAFAue,EAAMA,EAAK/D,KAAK+J,KAAK3D,EAAKmD,IAAQ,IAErBtD,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAENlI,EAAKpC,KAAK+J,KAAKpC,EAAKM,GAEpBhC,GADAA,EAAMjG,KAAK+J,KAAKpC,EAAKO,IACRlI,KAAK+J,KAAKnC,EAAKK,GAAQ,EACpClE,EAAK/D,KAAK+J,KAAKnC,EAAKM,GACpB9F,EAAMA,EAAKpC,KAAK+J,KAAKvC,EAAKY,GAAQ,EAElCnC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKvC,EAAKa,GAAQ,GACvBrI,KAAK+J,KAAKtC,EAAKW,GAAQ,EACpCrE,EAAMA,EAAK/D,KAAK+J,KAAKtC,EAAKY,GAAQ,EAClCjG,EAAMA,EAAKpC,KAAK+J,KAAK1C,EAAKkB,GAAQ,EAElCtC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK1C,EAAKmB,GAAQ,GACvBxI,KAAK+J,KAAKzC,EAAKiB,GAAQ,EACpCxE,EAAMA,EAAK/D,KAAK+J,KAAKzC,EAAKkB,GAAQ,EAClCpG,EAAMA,EAAKpC,KAAK+J,KAAK7C,EAAKwB,GAAQ,EAElCzC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK7C,EAAKyB,GAAQ,GACvB3I,KAAK+J,KAAK5C,EAAKuB,GAAQ,EACpC3E,EAAMA,EAAK/D,KAAK+J,KAAK5C,EAAKwB,GAAQ,EAClCvG,EAAMA,EAAKpC,KAAK+J,KAAKhD,EAAK8B,GAAQ,EAElC5C,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKhD,EAAK+B,IAAQ,GACvB9I,KAAK+J,KAAK/C,EAAK6B,GAAQ,EACpC9E,EAAMA,EAAK/D,KAAK+J,KAAK/C,EAAK8B,IAAQ,EAClC1G,EAAMA,EAAKpC,KAAK+J,KAAKnD,EAAKoC,IAAQ,EAElC/C,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKnD,EAAKqC,IAAQ,GACvBjJ,KAAK+J,KAAKlD,EAAKmC,IAAQ,EACpCjF,EAAMA,EAAK/D,KAAK+J,KAAKlD,EAAKoC,IAAQ,EAClC7G,EAAMA,EAAKpC,KAAK+J,KAAKtD,EAAK0C,IAAQ,EAElClD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKtD,EAAK2C,IAAQ,GACvBpJ,KAAK+J,KAAKrD,EAAKyC,IAAQ,EACpCpF,EAAMA,EAAK/D,KAAK+J,KAAKrD,EAAK0C,IAAQ,EAClChH,EAAMA,EAAKpC,KAAK+J,KAAKzD,EAAKgD,IAAQ,EAElCrD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKzD,EAAKiD,IAAQ,GACvBvJ,KAAK+J,KAAKxD,EAAK+C,IAAQ,EACpCvF,EAAMA,EAAK/D,KAAK+J,KAAKxD,EAAKgD,IAAQ,EAKlC,IAAIgB,IAAQ/kB,GAJZ4c,EAAMA,EAAKpC,KAAK+J,KAAK5D,EAAKsD,IAAQ,GAIZ,KAAa,MAFnCxD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK5D,EAAKuD,IAAQ,GACvB1J,KAAK+J,KAAK3D,EAAKqD,IAAQ,KAEU,IAAO,EACrDjkB,IAFAue,EAAMA,EAAK/D,KAAK+J,KAAK3D,EAAKsD,IAAQ,IAErBzD,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAENnI,EAAKpC,KAAK+J,KAAKjC,EAAKG,GAEpBhC,GADAA,EAAMjG,KAAK+J,KAAKjC,EAAKI,IACRlI,KAAK+J,KAAKhC,EAAKE,GAAQ,EACpClE,EAAK/D,KAAK+J,KAAKhC,EAAKG,GACpB9F,EAAMA,EAAKpC,KAAK+J,KAAKpC,EAAKS,GAAQ,EAElCnC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKpC,EAAKU,GAAQ,GACvBrI,KAAK+J,KAAKnC,EAAKQ,GAAQ,EACpCrE,EAAMA,EAAK/D,KAAK+J,KAAKnC,EAAKS,GAAQ,EAClCjG,EAAMA,EAAKpC,KAAK+J,KAAKvC,EAAKe,GAAQ,EAElCtC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKvC,EAAKgB,GAAQ,GACvBxI,KAAK+J,KAAKtC,EAAKc,GAAQ,EACpCxE,EAAMA,EAAK/D,KAAK+J,KAAKtC,EAAKe,GAAQ,EAClCpG,EAAMA,EAAKpC,KAAK+J,KAAK1C,EAAKqB,GAAQ,EAElCzC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK1C,EAAKsB,GAAQ,GACvB3I,KAAK+J,KAAKzC,EAAKoB,GAAQ,EACpC3E,EAAMA,EAAK/D,KAAK+J,KAAKzC,EAAKqB,GAAQ,EAClCvG,EAAMA,EAAKpC,KAAK+J,KAAK7C,EAAK2B,GAAQ,EAElC5C,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK7C,EAAK4B,IAAQ,GACvB9I,KAAK+J,KAAK5C,EAAK0B,GAAQ,EACpC9E,EAAMA,EAAK/D,KAAK+J,KAAK5C,EAAK2B,IAAQ,EAClC1G,EAAMA,EAAKpC,KAAK+J,KAAKhD,EAAKiC,IAAQ,EAElC/C,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKhD,EAAKkC,IAAQ,GACvBjJ,KAAK+J,KAAK/C,EAAKgC,IAAQ,EACpCjF,EAAMA,EAAK/D,KAAK+J,KAAK/C,EAAKiC,IAAQ,EAClC7G,EAAMA,EAAKpC,KAAK+J,KAAKnD,EAAKuC,IAAQ,EAElClD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKnD,EAAKwC,IAAQ,GACvBpJ,KAAK+J,KAAKlD,EAAKsC,IAAQ,EACpCpF,EAAMA,EAAK/D,KAAK+J,KAAKlD,EAAKuC,IAAQ,EAClChH,EAAMA,EAAKpC,KAAK+J,KAAKtD,EAAK6C,IAAQ,EAElCrD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKtD,EAAK8C,IAAQ,GACvBvJ,KAAK+J,KAAKrD,EAAK4C,IAAQ,EACpCvF,EAAMA,EAAK/D,KAAK+J,KAAKrD,EAAK6C,IAAQ,EAClCnH,EAAMA,EAAKpC,KAAK+J,KAAKzD,EAAKmD,IAAQ,EAElCxD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKzD,EAAKoD,IAAQ,GACvB1J,KAAK+J,KAAKxD,EAAKkD,IAAQ,EACpC1F,EAAMA,EAAK/D,KAAK+J,KAAKxD,EAAKmD,IAAQ,EAKlC,IAAIc,IAAQhlB,GAJZ4c,EAAMA,EAAKpC,KAAK+J,KAAK5D,EAAKyD,IAAQ,GAIZ,KAAa,MAFnC3D,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK5D,EAAK0D,IAAQ,GACvB7J,KAAK+J,KAAK3D,EAAKwD,IAAQ,KAEU,IAAO,EACrDpkB,IAFAue,EAAMA,EAAK/D,KAAK+J,KAAK3D,EAAKyD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMuE,KAAO,IAAO,EAChDA,IAAM,SAENpI,EAAKpC,KAAK+J,KAAKjC,EAAKM,GAEpBnC,GADAA,EAAMjG,KAAK+J,KAAKjC,EAAKO,IACRrI,KAAK+J,KAAKhC,EAAKK,GAAQ,EACpCrE,EAAK/D,KAAK+J,KAAKhC,EAAKM,GACpBjG,EAAMA,EAAKpC,KAAK+J,KAAKpC,EAAKY,GAAQ,EAElCtC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKpC,EAAKa,GAAQ,GACvBxI,KAAK+J,KAAKnC,EAAKW,GAAQ,EACpCxE,EAAMA,EAAK/D,KAAK+J,KAAKnC,EAAKY,GAAQ,EAClCpG,EAAMA,EAAKpC,KAAK+J,KAAKvC,EAAKkB,GAAQ,EAElCzC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKvC,EAAKmB,GAAQ,GACvB3I,KAAK+J,KAAKtC,EAAKiB,GAAQ,EACpC3E,EAAMA,EAAK/D,KAAK+J,KAAKtC,EAAKkB,GAAQ,EAClCvG,EAAMA,EAAKpC,KAAK+J,KAAK1C,EAAKwB,GAAQ,EAElC5C,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK1C,EAAKyB,IAAQ,GACvB9I,KAAK+J,KAAKzC,EAAKuB,GAAQ,EACpC9E,EAAMA,EAAK/D,KAAK+J,KAAKzC,EAAKwB,IAAQ,EAClC1G,EAAMA,EAAKpC,KAAK+J,KAAK7C,EAAK8B,IAAQ,EAElC/C,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK7C,EAAK+B,IAAQ,GACvBjJ,KAAK+J,KAAK5C,EAAK6B,IAAQ,EACpCjF,EAAMA,EAAK/D,KAAK+J,KAAK5C,EAAK8B,IAAQ,EAClC7G,EAAMA,EAAKpC,KAAK+J,KAAKhD,EAAKoC,IAAQ,EAElClD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKhD,EAAKqC,IAAQ,GACvBpJ,KAAK+J,KAAK/C,EAAKmC,IAAQ,EACpCpF,EAAMA,EAAK/D,KAAK+J,KAAK/C,EAAKoC,IAAQ,EAClChH,EAAMA,EAAKpC,KAAK+J,KAAKnD,EAAK0C,IAAQ,EAElCrD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKnD,EAAK2C,IAAQ,GACvBvJ,KAAK+J,KAAKlD,EAAKyC,IAAQ,EACpCvF,EAAMA,EAAK/D,KAAK+J,KAAKlD,EAAK0C,IAAQ,EAClCnH,EAAMA,EAAKpC,KAAK+J,KAAKtD,EAAKgD,IAAQ,EAElCxD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKtD,EAAKiD,IAAQ,GACvB1J,KAAK+J,KAAKrD,EAAK+C,IAAQ,EACpC1F,EAAMA,EAAK/D,KAAK+J,KAAKrD,EAAKgD,IAAQ,EAKlC,IAAIe,IAASjlB,GAJb4c,EAAMA,EAAKpC,KAAK+J,KAAKzD,EAAKsD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKzD,EAAKuD,IAAQ,GACvB7J,KAAK+J,KAAKxD,EAAKqD,IAAQ,KAEW,IAAO,EACtDpkB,IAFAue,EAAMA,EAAK/D,KAAK+J,KAAKxD,EAAKsD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMwE,KAAQ,IAAO,EACjDA,IAAO,SAEPrI,EAAKpC,KAAK+J,KAAKjC,EAAKS,GAEpBtC,GADAA,EAAMjG,KAAK+J,KAAKjC,EAAKU,IACRxI,KAAK+J,KAAKhC,EAAKQ,GAAQ,EACpCxE,EAAK/D,KAAK+J,KAAKhC,EAAKS,GACpBpG,EAAMA,EAAKpC,KAAK+J,KAAKpC,EAAKe,GAAQ,EAElCzC,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKpC,EAAKgB,GAAQ,GACvB3I,KAAK+J,KAAKnC,EAAKc,GAAQ,EACpC3E,EAAMA,EAAK/D,KAAK+J,KAAKnC,EAAKe,GAAQ,EAClCvG,EAAMA,EAAKpC,KAAK+J,KAAKvC,EAAKqB,GAAQ,EAElC5C,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKvC,EAAKsB,IAAQ,GACvB9I,KAAK+J,KAAKtC,EAAKoB,GAAQ,EACpC9E,EAAMA,EAAK/D,KAAK+J,KAAKtC,EAAKqB,IAAQ,EAClC1G,EAAMA,EAAKpC,KAAK+J,KAAK1C,EAAK2B,IAAQ,EAElC/C,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK1C,EAAK4B,IAAQ,GACvBjJ,KAAK+J,KAAKzC,EAAK0B,IAAQ,EACpCjF,EAAMA,EAAK/D,KAAK+J,KAAKzC,EAAK2B,IAAQ,EAClC7G,EAAMA,EAAKpC,KAAK+J,KAAK7C,EAAKiC,IAAQ,EAElClD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK7C,EAAKkC,IAAQ,GACvBpJ,KAAK+J,KAAK5C,EAAKgC,IAAQ,EACpCpF,EAAMA,EAAK/D,KAAK+J,KAAK5C,EAAKiC,IAAQ,EAClChH,EAAMA,EAAKpC,KAAK+J,KAAKhD,EAAKuC,IAAQ,EAElCrD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKhD,EAAKwC,IAAQ,GACvBvJ,KAAK+J,KAAK/C,EAAKsC,IAAQ,EACpCvF,EAAMA,EAAK/D,KAAK+J,KAAK/C,EAAKuC,IAAQ,EAClCnH,EAAMA,EAAKpC,KAAK+J,KAAKnD,EAAK6C,IAAQ,EAElCxD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKnD,EAAK8C,IAAQ,GACvB1J,KAAK+J,KAAKlD,EAAK4C,IAAQ,EACpC1F,EAAMA,EAAK/D,KAAK+J,KAAKlD,EAAK6C,IAAQ,EAKlC,IAAIgB,IAASllB,GAJb4c,EAAMA,EAAKpC,KAAK+J,KAAKtD,EAAKmD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKtD,EAAKoD,IAAQ,GACvB7J,KAAK+J,KAAKrD,EAAKkD,IAAQ,KAEW,IAAO,EACtDpkB,IAFAue,EAAMA,EAAK/D,KAAK+J,KAAKrD,EAAKmD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEPtI,EAAKpC,KAAK+J,KAAKjC,EAAKY,GAEpBzC,GADAA,EAAMjG,KAAK+J,KAAKjC,EAAKa,IACR3I,KAAK+J,KAAKhC,EAAKW,GAAQ,EACpC3E,EAAK/D,KAAK+J,KAAKhC,EAAKY,GACpBvG,EAAMA,EAAKpC,KAAK+J,KAAKpC,EAAKkB,GAAQ,EAElC5C,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKpC,EAAKmB,IAAQ,GACvB9I,KAAK+J,KAAKnC,EAAKiB,GAAQ,EACpC9E,EAAMA,EAAK/D,KAAK+J,KAAKnC,EAAKkB,IAAQ,EAClC1G,EAAMA,EAAKpC,KAAK+J,KAAKvC,EAAKwB,IAAQ,EAElC/C,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKvC,EAAKyB,IAAQ,GACvBjJ,KAAK+J,KAAKtC,EAAKuB,IAAQ,EACpCjF,EAAMA,EAAK/D,KAAK+J,KAAKtC,EAAKwB,IAAQ,EAClC7G,EAAMA,EAAKpC,KAAK+J,KAAK1C,EAAK8B,IAAQ,EAElClD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK1C,EAAK+B,IAAQ,GACvBpJ,KAAK+J,KAAKzC,EAAK6B,IAAQ,EACpCpF,EAAMA,EAAK/D,KAAK+J,KAAKzC,EAAK8B,IAAQ,EAClChH,EAAMA,EAAKpC,KAAK+J,KAAK7C,EAAKoC,IAAQ,EAElCrD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK7C,EAAKqC,IAAQ,GACvBvJ,KAAK+J,KAAK5C,EAAKmC,IAAQ,EACpCvF,EAAMA,EAAK/D,KAAK+J,KAAK5C,EAAKoC,IAAQ,EAClCnH,EAAMA,EAAKpC,KAAK+J,KAAKhD,EAAK0C,IAAQ,EAElCxD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKhD,EAAK2C,IAAQ,GACvB1J,KAAK+J,KAAK/C,EAAKyC,IAAQ,EACpC1F,EAAMA,EAAK/D,KAAK+J,KAAK/C,EAAK0C,IAAQ,EAKlC,IAAIiB,IAASnlB,GAJb4c,EAAMA,EAAKpC,KAAK+J,KAAKnD,EAAKgD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKnD,EAAKiD,IAAQ,GACvB7J,KAAK+J,KAAKlD,EAAK+C,IAAQ,KAEW,IAAO,EACtDpkB,IAFAue,EAAMA,EAAK/D,KAAK+J,KAAKlD,EAAKgD,IAAQ,IAErB5D,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEPvI,EAAKpC,KAAK+J,KAAKjC,EAAKe,GAEpB5C,GADAA,EAAMjG,KAAK+J,KAAKjC,EAAKgB,KACR9I,KAAK+J,KAAKhC,EAAKc,GAAQ,EACpC9E,EAAK/D,KAAK+J,KAAKhC,EAAKe,IACpB1G,EAAMA,EAAKpC,KAAK+J,KAAKpC,EAAKqB,IAAQ,EAElC/C,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKpC,EAAKsB,IAAQ,GACvBjJ,KAAK+J,KAAKnC,EAAKoB,IAAQ,EACpCjF,EAAMA,EAAK/D,KAAK+J,KAAKnC,EAAKqB,IAAQ,EAClC7G,EAAMA,EAAKpC,KAAK+J,KAAKvC,EAAK2B,IAAQ,EAElClD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKvC,EAAK4B,IAAQ,GACvBpJ,KAAK+J,KAAKtC,EAAK0B,IAAQ,EACpCpF,EAAMA,EAAK/D,KAAK+J,KAAKtC,EAAK2B,IAAQ,EAClChH,EAAMA,EAAKpC,KAAK+J,KAAK1C,EAAKiC,IAAQ,EAElCrD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK1C,EAAKkC,IAAQ,GACvBvJ,KAAK+J,KAAKzC,EAAKgC,IAAQ,EACpCvF,EAAMA,EAAK/D,KAAK+J,KAAKzC,EAAKiC,IAAQ,EAClCnH,EAAMA,EAAKpC,KAAK+J,KAAK7C,EAAKuC,IAAQ,EAElCxD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK7C,EAAKwC,IAAQ,GACvB1J,KAAK+J,KAAK5C,EAAKsC,IAAQ,EACpC1F,EAAMA,EAAK/D,KAAK+J,KAAK5C,EAAKuC,IAAQ,EAKlC,IAAIkB,IAASplB,GAJb4c,EAAMA,EAAKpC,KAAK+J,KAAKhD,EAAK6C,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKhD,EAAK8C,IAAQ,GACvB7J,KAAK+J,KAAK/C,EAAK4C,IAAQ,KAEW,IAAO,EACtDpkB,IAFAue,EAAMA,EAAK/D,KAAK+J,KAAK/C,EAAK6C,IAAQ,IAErB5D,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEPxI,EAAKpC,KAAK+J,KAAKjC,EAAKkB,IAEpB/C,GADAA,EAAMjG,KAAK+J,KAAKjC,EAAKmB,KACRjJ,KAAK+J,KAAKhC,EAAKiB,IAAQ,EACpCjF,EAAK/D,KAAK+J,KAAKhC,EAAKkB,IACpB7G,EAAMA,EAAKpC,KAAK+J,KAAKpC,EAAKwB,IAAQ,EAElClD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKpC,EAAKyB,IAAQ,GACvBpJ,KAAK+J,KAAKnC,EAAKuB,IAAQ,EACpCpF,EAAMA,EAAK/D,KAAK+J,KAAKnC,EAAKwB,IAAQ,EAClChH,EAAMA,EAAKpC,KAAK+J,KAAKvC,EAAK8B,IAAQ,EAElCrD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKvC,EAAK+B,IAAQ,GACvBvJ,KAAK+J,KAAKtC,EAAK6B,IAAQ,EACpCvF,EAAMA,EAAK/D,KAAK+J,KAAKtC,EAAK8B,IAAQ,EAClCnH,EAAMA,EAAKpC,KAAK+J,KAAK1C,EAAKoC,IAAQ,EAElCxD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK1C,EAAKqC,IAAQ,GACvB1J,KAAK+J,KAAKzC,EAAKmC,IAAQ,EACpC1F,EAAMA,EAAK/D,KAAK+J,KAAKzC,EAAKoC,IAAQ,EAKlC,IAAImB,IAASrlB,GAJb4c,EAAMA,EAAKpC,KAAK+J,KAAK7C,EAAK0C,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK7C,EAAK2C,IAAQ,GACvB7J,KAAK+J,KAAK5C,EAAKyC,IAAQ,KAEW,IAAO,EACtDpkB,IAFAue,EAAMA,EAAK/D,KAAK+J,KAAK5C,EAAK0C,IAAQ,IAErB5D,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEPzI,EAAKpC,KAAK+J,KAAKjC,EAAKqB,IAEpBlD,GADAA,EAAMjG,KAAK+J,KAAKjC,EAAKsB,KACRpJ,KAAK+J,KAAKhC,EAAKoB,IAAQ,EACpCpF,EAAK/D,KAAK+J,KAAKhC,EAAKqB,IACpBhH,EAAMA,EAAKpC,KAAK+J,KAAKpC,EAAK2B,IAAQ,EAElCrD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKpC,EAAK4B,IAAQ,GACvBvJ,KAAK+J,KAAKnC,EAAK0B,IAAQ,EACpCvF,EAAMA,EAAK/D,KAAK+J,KAAKnC,EAAK2B,IAAQ,EAClCnH,EAAMA,EAAKpC,KAAK+J,KAAKvC,EAAKiC,IAAQ,EAElCxD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKvC,EAAKkC,IAAQ,GACvB1J,KAAK+J,KAAKtC,EAAKgC,IAAQ,EACpC1F,EAAMA,EAAK/D,KAAK+J,KAAKtC,EAAKiC,IAAQ,EAKlC,IAAIoB,IAAStlB,GAJb4c,EAAMA,EAAKpC,KAAK+J,KAAK1C,EAAKuC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMjG,KAAK+J,KAAK1C,EAAKwC,IAAQ,GACvB7J,KAAK+J,KAAKzC,EAAKsC,IAAQ,KAEW,IAAO,EACtDpkB,IAFAue,EAAMA,EAAK/D,KAAK+J,KAAKzC,EAAKuC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEP1I,EAAKpC,KAAK+J,KAAKjC,EAAKwB,IAEpBrD,GADAA,EAAMjG,KAAK+J,KAAKjC,EAAKyB,KACRvJ,KAAK+J,KAAKhC,EAAKuB,IAAQ,EACpCvF,EAAK/D,KAAK+J,KAAKhC,EAAKwB,IACpBnH,EAAMA,EAAKpC,KAAK+J,KAAKpC,EAAK8B,IAAQ,EAElCxD,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKpC,EAAK+B,IAAQ,GACvB1J,KAAK+J,KAAKnC,EAAK6B,IAAQ,EACpC1F,EAAMA,EAAK/D,KAAK+J,KAAKnC,EAAK8B,IAAQ,EAKlC,IAAIqB,IAASvlB,GAJb4c,EAAMA,EAAKpC,KAAK+J,KAAKvC,EAAKoC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKvC,EAAKqC,IAAQ,GACvB7J,KAAK+J,KAAKtC,EAAKmC,IAAQ,KAEW,IAAO,EACtDpkB,IAFAue,EAAMA,EAAK/D,KAAK+J,KAAKtC,EAAKoC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEP3I,EAAKpC,KAAK+J,KAAKjC,EAAK2B,IAEpBxD,GADAA,EAAMjG,KAAK+J,KAAKjC,EAAK4B,KACR1J,KAAK+J,KAAKhC,EAAK0B,IAAQ,EACpC1F,EAAK/D,KAAK+J,KAAKhC,EAAK2B,IAKpB,IAAIsB,IAASxlB,GAJb4c,EAAMA,EAAKpC,KAAK+J,KAAKpC,EAAKiC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAMjG,KAAK+J,KAAKpC,EAAKkC,IAAQ,GACvB7J,KAAK+J,KAAKnC,EAAKgC,IAAQ,KAEW,IAAO,EACtDpkB,IAFAue,EAAMA,EAAK/D,KAAK+J,KAAKnC,EAAKiC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SAMP,IAAIC,IAASzlB,GAJb4c,EAAKpC,KAAK+J,KAAKjC,EAAK8B,KAIG,KAAa,MAFpC3D,GADAA,EAAMjG,KAAK+J,KAAKjC,EAAK+B,KACR7J,KAAK+J,KAAKhC,EAAK6B,IAAQ,KAEW,IAAO,EA0BtD,OAzBApkB,IAFAue,EAAK/D,KAAK+J,KAAKhC,EAAK8B,MAEP5D,IAAQ,IAAO,IAAMgF,KAAQ,IAAO,EACjDA,IAAO,SACP3lB,EAAE,GAAKwkB,GACPxkB,EAAE,GAAK0kB,GACP1kB,EAAE,GAAK2kB,GACP3kB,EAAE,GAAK4kB,GACP5kB,EAAE,GAAK6kB,GACP7kB,EAAE,GAAK8kB,GACP9kB,EAAE,GAAK+kB,GACP/kB,EAAE,GAAKglB,GACPhlB,EAAE,GAAKilB,GACPjlB,EAAE,GAAKklB,GACPllB,EAAE,IAAMmlB,GACRnlB,EAAE,IAAMolB,GACRplB,EAAE,IAAMqlB,GACRrlB,EAAE,IAAMslB,GACRtlB,EAAE,IAAMulB,GACRvlB,EAAE,IAAMwlB,GACRxlB,EAAE,IAAMylB,GACRzlB,EAAE,IAAM0lB,GACR1lB,EAAE,IAAM2lB,GACE,IAANzlB,IACFF,EAAE,IAAME,EACR2c,EAAInc,UAECmc,GAiDT,SAAS+I,EAAYnmB,EAAMqb,EAAK+B,GAE9B,OADW,IAAIgJ,GACHC,KAAKrmB,EAAMqb,EAAK+B,GAsB9B,SAASgJ,EAAME,EAAGC,GAChBtmB,KAAKqmB,EAAIA,EACTrmB,KAAKsmB,EAAIA,EAvENtL,KAAK+J,OACR/D,EAAc9D,GAiDhBlD,EAAG3W,UAAUkjB,MAAQ,SAAgBnL,EAAK+B,GACxC,IACIpC,EAAM/a,KAAKgB,OAASoa,EAAIpa,OAW5B,OAVoB,KAAhBhB,KAAKgB,QAAgC,KAAfoa,EAAIpa,OACtBggB,EAAYhhB,KAAMob,EAAK+B,GACpBpC,EAAM,GACTmC,EAAWld,KAAMob,EAAK+B,GACnBpC,EAAM,KArDnB,SAAmBhb,EAAMqb,EAAK+B,GAC5BA,EAAI9C,SAAWe,EAAIf,SAAWta,EAAKsa,SACnC8C,EAAInc,OAASjB,EAAKiB,OAASoa,EAAIpa,OAI/B,IAFA,IAAIqc,EAAQ,EACRmJ,EAAU,EACL7iB,EAAI,EAAGA,EAAIwZ,EAAInc,OAAS,EAAG2C,IAAK,CAGvC,IAAI2Z,EAASkJ,EACbA,EAAU,EAGV,IAFA,IAAIjJ,EAAgB,SAARF,EACRG,EAAOxC,KAAKC,IAAItX,EAAGyX,EAAIpa,OAAS,GAC3BoW,EAAI4D,KAAKK,IAAI,EAAG1X,EAAI5D,EAAKiB,OAAS,GAAIoW,GAAKoG,EAAMpG,IAAK,CAC7D,IAAI7W,EAAIoD,EAAIyT,EAGRlX,GAFoB,EAAhBH,EAAKua,MAAM/Z,KACI,EAAf6a,EAAId,MAAMlD,IAGdgG,EAAS,SAAJld,EAGTqd,EAAa,UADbH,EAAMA,EAAKG,EAAS,GAIpBiJ,IAFAlJ,GAHAA,EAAUA,GAAWpd,EAAI,SAAa,GAAM,IAGxBkd,IAAO,IAAO,KAEZ,GACtBE,GAAU,SAEZH,EAAI7C,MAAM3W,GAAK4Z,EACfF,EAAQC,EACRA,EAASkJ,EAQX,OANc,IAAVnJ,EACFF,EAAI7C,MAAM3W,GAAK0Z,EAEfF,EAAInc,SAGCmc,EAAI/D,QAgBHqN,CAASzmB,KAAMob,EAAK+B,GAEpB+I,EAAWlmB,KAAMob,EAAK+B,IAchCgJ,EAAK9iB,UAAUqjB,QAAU,SAAkBC,GAGzC,IAFA,IAAItmB,EAAI,IAAI0C,MAAM4jB,GACdC,EAAI5M,EAAG3W,UAAUsb,WAAWgI,GAAK,EAC5BpmB,EAAI,EAAGA,EAAIomB,EAAGpmB,IACrBF,EAAEE,GAAKP,KAAK6mB,OAAOtmB,EAAGqmB,EAAGD,GAG3B,OAAOtmB,GAIT8lB,EAAK9iB,UAAUwjB,OAAS,SAAiBR,EAAGO,EAAGD,GAC7C,GAAU,IAANN,GAAWA,IAAMM,EAAI,EAAG,OAAON,EAGnC,IADA,IAAIS,EAAK,EACAvmB,EAAI,EAAGA,EAAIqmB,EAAGrmB,IACrBumB,IAAW,EAAJT,IAAWO,EAAIrmB,EAAI,EAC1B8lB,IAAM,EAGR,OAAOS,GAKTX,EAAK9iB,UAAU0jB,QAAU,SAAkBC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GACpE,IAAK,IAAIpmB,EAAI,EAAGA,EAAIomB,EAAGpmB,IACrB4mB,EAAK5mB,GAAK0mB,EAAID,EAAIzmB,IAClB6mB,EAAK7mB,GAAK2mB,EAAIF,EAAIzmB,KAItB4lB,EAAK9iB,UAAUgkB,UAAY,SAAoBJ,EAAKC,EAAKC,EAAMC,EAAMT,EAAGK,GACtEhnB,KAAK+mB,QAAQC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GAExC,IAAK,IAAIW,EAAI,EAAGA,EAAIX,EAAGW,IAAM,EAM3B,IALA,IAAIV,EAAIU,GAAK,EAETC,EAAQvM,KAAKwM,IAAI,EAAIxM,KAAKyM,GAAKb,GAC/Bc,EAAQ1M,KAAK2M,IAAI,EAAI3M,KAAKyM,GAAKb,GAE1B9lB,EAAI,EAAGA,EAAI6lB,EAAG7lB,GAAK8lB,EAI1B,IAHA,IAAIgB,EAASL,EACTM,EAASH,EAEJtQ,EAAI,EAAGA,EAAIkQ,EAAGlQ,IAAK,CAC1B,IAAI0Q,EAAKX,EAAKrmB,EAAIsW,GACd2Q,EAAKX,EAAKtmB,EAAIsW,GAEd4Q,EAAKb,EAAKrmB,EAAIsW,EAAIkQ,GAClBW,EAAKb,EAAKtmB,EAAIsW,EAAIkQ,GAElBY,EAAKN,EAASI,EAAKH,EAASI,EAEhCA,EAAKL,EAASK,EAAKJ,EAASG,EAC5BA,EAAKE,EAELf,EAAKrmB,EAAIsW,GAAK0Q,EAAKE,EACnBZ,EAAKtmB,EAAIsW,GAAK2Q,EAAKE,EAEnBd,EAAKrmB,EAAIsW,EAAIkQ,GAAKQ,EAAKE,EACvBZ,EAAKtmB,EAAIsW,EAAIkQ,GAAKS,EAAKE,EAGnB7Q,IAAMwP,IACRsB,EAAKX,EAAQK,EAASF,EAAQG,EAE9BA,EAASN,EAAQM,EAASH,EAAQE,EAClCA,EAASM,KAOnB/B,EAAK9iB,UAAU8kB,YAAc,SAAsB/nB,EAAGoS,GACpD,IAAImU,EAAqB,EAAjB3L,KAAKK,IAAI7I,EAAGpS,GAChBgoB,EAAU,EAAJzB,EACNpmB,EAAI,EACR,IAAKomB,EAAIA,EAAI,EAAI,EAAGA,EAAGA,KAAU,EAC/BpmB,IAGF,OAAO,GAAKA,EAAI,EAAI6nB,GAGtBjC,EAAK9iB,UAAUglB,UAAY,SAAoBpB,EAAKC,EAAKP,GACvD,KAAIA,GAAK,GAET,IAAK,IAAIpmB,EAAI,EAAGA,EAAIomB,EAAI,EAAGpmB,IAAK,CAC9B,IAAIF,EAAI4mB,EAAI1mB,GAEZ0mB,EAAI1mB,GAAK0mB,EAAIN,EAAIpmB,EAAI,GACrB0mB,EAAIN,EAAIpmB,EAAI,GAAKF,EAEjBA,EAAI6mB,EAAI3mB,GAER2mB,EAAI3mB,IAAM2mB,EAAIP,EAAIpmB,EAAI,GACtB2mB,EAAIP,EAAIpmB,EAAI,IAAMF,IAItB8lB,EAAK9iB,UAAUilB,aAAe,SAAuBC,EAAI5B,GAEvD,IADA,IAAItJ,EAAQ,EACH9c,EAAI,EAAGA,EAAIomB,EAAI,EAAGpmB,IAAK,CAC9B,IAAIyb,EAAoC,KAAhChB,KAAKwN,MAAMD,EAAG,EAAIhoB,EAAI,GAAKomB,GACjC3L,KAAKwN,MAAMD,EAAG,EAAIhoB,GAAKomB,GACvBtJ,EAEFkL,EAAGhoB,GAAS,SAAJyb,EAGNqB,EADErB,EAAI,SACE,EAEAA,EAAI,SAAY,EAI5B,OAAOuM,GAGTpC,EAAK9iB,UAAUolB,WAAa,SAAqBF,EAAIxN,EAAKkM,EAAKN,GAE7D,IADA,IAAItJ,EAAQ,EACH9c,EAAI,EAAGA,EAAIwa,EAAKxa,IACvB8c,GAAyB,EAARkL,EAAGhoB,GAEpB0mB,EAAI,EAAI1mB,GAAa,KAAR8c,EAAgBA,KAAkB,GAC/C4J,EAAI,EAAI1mB,EAAI,GAAa,KAAR8c,EAAgBA,KAAkB,GAIrD,IAAK9c,EAAI,EAAIwa,EAAKxa,EAAIomB,IAAKpmB,EACzB0mB,EAAI1mB,GAAK,EAGXiZ,EAAiB,IAAV6D,GACP7D,EAA6B,KAAb,KAAR6D,KAGV8I,EAAK9iB,UAAUqlB,KAAO,SAAe/B,GAEnC,IADA,IAAIgC,EAAK,IAAI5lB,MAAM4jB,GACVpmB,EAAI,EAAGA,EAAIomB,EAAGpmB,IACrBooB,EAAGpoB,GAAK,EAGV,OAAOooB,GAGTxC,EAAK9iB,UAAU+iB,KAAO,SAAeC,EAAGC,EAAGnJ,GACzC,IAAIwJ,EAAI,EAAI3mB,KAAKmoB,YAAY9B,EAAErlB,OAAQslB,EAAEtlB,QAErCgmB,EAAMhnB,KAAK0mB,QAAQC,GAEnBiC,EAAI5oB,KAAK0oB,KAAK/B,GAEdM,EAAM,IAAIlkB,MAAM4jB,GAChBkC,EAAO,IAAI9lB,MAAM4jB,GACjBmC,EAAO,IAAI/lB,MAAM4jB,GAEjBoC,EAAO,IAAIhmB,MAAM4jB,GACjBqC,EAAQ,IAAIjmB,MAAM4jB,GAClBsC,EAAQ,IAAIlmB,MAAM4jB,GAElBuC,EAAO/L,EAAI7C,MACf4O,EAAKloB,OAAS2lB,EAEd3mB,KAAKyoB,WAAWpC,EAAE/L,MAAO+L,EAAErlB,OAAQimB,EAAKN,GACxC3mB,KAAKyoB,WAAWnC,EAAEhM,MAAOgM,EAAEtlB,OAAQ+nB,EAAMpC,GAEzC3mB,KAAKqnB,UAAUJ,EAAK2B,EAAGC,EAAMC,EAAMnC,EAAGK,GACtChnB,KAAKqnB,UAAU0B,EAAMH,EAAGI,EAAOC,EAAOtC,EAAGK,GAEzC,IAAK,IAAIzmB,EAAI,EAAGA,EAAIomB,EAAGpmB,IAAK,CAC1B,IAAI2nB,EAAKW,EAAKtoB,GAAKyoB,EAAMzoB,GAAKuoB,EAAKvoB,GAAK0oB,EAAM1oB,GAC9CuoB,EAAKvoB,GAAKsoB,EAAKtoB,GAAK0oB,EAAM1oB,GAAKuoB,EAAKvoB,GAAKyoB,EAAMzoB,GAC/CsoB,EAAKtoB,GAAK2nB,EAUZ,OAPAloB,KAAKqoB,UAAUQ,EAAMC,EAAMnC,GAC3B3mB,KAAKqnB,UAAUwB,EAAMC,EAAMI,EAAMN,EAAGjC,EAAGK,GACvChnB,KAAKqoB,UAAUa,EAAMN,EAAGjC,GACxB3mB,KAAKsoB,aAAaY,EAAMvC,GAExBxJ,EAAI9C,SAAWgM,EAAEhM,SAAWiM,EAAEjM,SAC9B8C,EAAInc,OAASqlB,EAAErlB,OAASslB,EAAEtlB,OACnBmc,EAAI/D,SAIbY,EAAG3W,UAAU8X,IAAM,SAAcC,GAC/B,IAAI+B,EAAM,IAAInD,EAAG,MAEjB,OADAmD,EAAI7C,MAAQ,IAAIvX,MAAM/C,KAAKgB,OAASoa,EAAIpa,QACjChB,KAAKumB,MAAMnL,EAAK+B,IAIzBnD,EAAG3W,UAAU8lB,KAAO,SAAe/N,GACjC,IAAI+B,EAAM,IAAInD,EAAG,MAEjB,OADAmD,EAAI7C,MAAQ,IAAIvX,MAAM/C,KAAKgB,OAASoa,EAAIpa,QACjCklB,EAAWlmB,KAAMob,EAAK+B,IAI/BnD,EAAG3W,UAAU0hB,KAAO,SAAe3J,GACjC,OAAOpb,KAAK0c,QAAQ6J,MAAMnL,EAAKpb,OAGjCga,EAAG3W,UAAUiZ,MAAQ,SAAgBlB,GACnC5B,EAAsB,iBAAR4B,GACd5B,EAAO4B,EAAM,UAIb,IADA,IAAIiC,EAAQ,EACH9c,EAAI,EAAGA,EAAIP,KAAKgB,OAAQT,IAAK,CACpC,IAAIyb,GAAqB,EAAhBhc,KAAKsa,MAAM/Z,IAAU6a,EAC1BgC,GAAU,SAAJpB,IAA0B,SAARqB,GAC5BA,IAAU,GACVA,GAAUrB,EAAI,SAAa,EAE3BqB,GAASD,IAAO,GAChBpd,KAAKsa,MAAM/Z,GAAU,SAAL6c,EAQlB,OALc,IAAVC,IACFrd,KAAKsa,MAAM/Z,GAAK8c,EAChBrd,KAAKgB,UAGAhB,MAGTga,EAAG3W,UAAU+lB,KAAO,SAAehO,GACjC,OAAOpb,KAAK0c,QAAQJ,MAAMlB,IAI5BpB,EAAG3W,UAAUgmB,IAAM,WACjB,OAAOrpB,KAAKmb,IAAInb,OAIlBga,EAAG3W,UAAUimB,KAAO,WAClB,OAAOtpB,KAAK+kB,KAAK/kB,KAAK0c,UAIxB1C,EAAG3W,UAAUmZ,IAAM,SAAcpB,GAC/B,IAAIY,EAxxCN,SAAqBZ,GAGnB,IAFA,IAAIY,EAAI,IAAIjZ,MAAMqY,EAAI0D,aAEb6B,EAAM,EAAGA,EAAM3E,EAAEhb,OAAQ2f,IAAO,CACvC,IAAI1E,EAAO0E,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjB3E,EAAE2E,IAAQvF,EAAId,MAAM2B,GAAQ,GAAK2E,KAAWA,EAG9C,OAAO5E,EA8wCCuN,CAAWnO,GACnB,GAAiB,IAAbY,EAAEhb,OAAc,OAAO,IAAIgZ,EAAG,GAIlC,IADA,IAAIuE,EAAMve,KACDO,EAAI,EAAGA,EAAIyb,EAAEhb,QACP,IAATgb,EAAEzb,GADsBA,IAAKge,EAAMA,EAAI8K,OAI7C,KAAM9oB,EAAIyb,EAAEhb,OACV,IAAK,IAAIwd,EAAID,EAAI8K,MAAO9oB,EAAIyb,EAAEhb,OAAQT,IAAKie,EAAIA,EAAE6K,MAClC,IAATrN,EAAEzb,KAENge,EAAMA,EAAIpD,IAAIqD,IAIlB,OAAOD,GAITvE,EAAG3W,UAAUmmB,OAAS,SAAiBC,GACrCjQ,EAAuB,iBAATiQ,GAA6B,GAARA,GACnC,IAGIlpB,EAHAL,EAAIupB,EAAO,GACXnC,GAAKmC,EAAOvpB,GAAK,GACjBwpB,EAAa,WAAe,GAAKxpB,GAAQ,GAAKA,EAGlD,GAAU,IAANA,EAAS,CACX,IAAImd,EAAQ,EAEZ,IAAK9c,EAAI,EAAGA,EAAIP,KAAKgB,OAAQT,IAAK,CAChC,IAAIopB,EAAW3pB,KAAKsa,MAAM/Z,GAAKmpB,EAC3BlpB,GAAsB,EAAhBR,KAAKsa,MAAM/Z,IAAUopB,GAAazpB,EAC5CF,KAAKsa,MAAM/Z,GAAKC,EAAI6c,EACpBA,EAAQsM,IAAc,GAAKzpB,EAGzBmd,IACFrd,KAAKsa,MAAM/Z,GAAK8c,EAChBrd,KAAKgB,UAIT,GAAU,IAANsmB,EAAS,CACX,IAAK/mB,EAAIP,KAAKgB,OAAS,EAAQ,GAALT,EAAQA,IAChCP,KAAKsa,MAAM/Z,EAAI+mB,GAAKtnB,KAAKsa,MAAM/Z,GAGjC,IAAKA,EAAI,EAAGA,EAAI+mB,EAAG/mB,IACjBP,KAAKsa,MAAM/Z,GAAK,EAGlBP,KAAKgB,QAAUsmB,EAGjB,OAAOtnB,KAAKoZ,SAGdY,EAAG3W,UAAUumB,MAAQ,SAAgBH,GAGnC,OADAjQ,EAAyB,IAAlBxZ,KAAKqa,UACLra,KAAKwpB,OAAOC,IAMrBzP,EAAG3W,UAAUqb,OAAS,SAAiB+K,EAAMI,EAAMC,GAEjD,IAAIC,EADJvQ,EAAuB,iBAATiQ,GAA6B,GAARA,GAGjCM,EADEF,GACGA,EAAQA,EAAO,IAAO,GAEvB,EAGN,IAAI3pB,EAAIupB,EAAO,GACXnC,EAAItM,KAAKC,KAAKwO,EAAOvpB,GAAK,GAAIF,KAAKgB,QACnCgpB,EAAO,SAAc,WAAc9pB,GAAMA,EACzC+pB,EAAcH,EAMlB,GAJAC,GAAKzC,EACLyC,EAAI/O,KAAKK,IAAI,EAAG0O,GAGZE,EAAa,CACf,IAAK,IAAI1pB,EAAI,EAAGA,EAAI+mB,EAAG/mB,IACrB0pB,EAAY3P,MAAM/Z,GAAKP,KAAKsa,MAAM/Z,GAEpC0pB,EAAYjpB,OAASsmB,EAGvB,GAAU,IAANA,QAEG,GAAItnB,KAAKgB,OAASsmB,EAEvB,IADAtnB,KAAKgB,QAAUsmB,EACV/mB,EAAI,EAAGA,EAAIP,KAAKgB,OAAQT,IAC3BP,KAAKsa,MAAM/Z,GAAKP,KAAKsa,MAAM/Z,EAAI+mB,QAGjCtnB,KAAKsa,MAAM,GAAK,EAChBta,KAAKgB,OAAS,EAGhB,IAAIqc,EAAQ,EACZ,IAAK9c,EAAIP,KAAKgB,OAAS,EAAQ,GAALT,IAAqB,IAAV8c,GAAoB0M,GAALxpB,GAASA,IAAK,CAChE,IAAI8b,EAAuB,EAAhBrc,KAAKsa,MAAM/Z,GACtBP,KAAKsa,MAAM/Z,GAAM8c,GAAU,GAAKnd,EAAOmc,IAASnc,EAChDmd,EAAQhB,EAAO2N,EAajB,OATIC,GAAyB,IAAV5M,IACjB4M,EAAY3P,MAAM2P,EAAYjpB,UAAYqc,GAGxB,IAAhBrd,KAAKgB,SACPhB,KAAKsa,MAAM,GAAK,EAChBta,KAAKgB,OAAS,GAGThB,KAAKoZ,SAGdY,EAAG3W,UAAU6mB,MAAQ,SAAgBT,EAAMI,EAAMC,GAG/C,OADAtQ,EAAyB,IAAlBxZ,KAAKqa,UACLra,KAAK0e,OAAO+K,EAAMI,EAAMC,IAIjC9P,EAAG3W,UAAU8mB,KAAO,SAAeV,GACjC,OAAOzpB,KAAK0c,QAAQkN,MAAMH,IAG5BzP,EAAG3W,UAAU+mB,MAAQ,SAAgBX,GACnC,OAAOzpB,KAAK0c,QAAQ8M,OAAOC,IAI7BzP,EAAG3W,UAAUgnB,KAAO,SAAeZ,GACjC,OAAOzpB,KAAK0c,QAAQwN,MAAMT,IAG5BzP,EAAG3W,UAAUinB,MAAQ,SAAgBb,GACnC,OAAOzpB,KAAK0c,QAAQgC,OAAO+K,IAI7BzP,EAAG3W,UAAUkc,MAAQ,SAAgBoB,GACnCnH,EAAsB,iBAARmH,GAA2B,GAAPA,GAClC,IAAIzgB,EAAIygB,EAAM,GACV2G,GAAK3G,EAAMzgB,GAAK,GAChBse,EAAI,GAAKte,EAGb,QAAIF,KAAKgB,QAAUsmB,OAGXtnB,KAAKsa,MAAMgN,GAEL9I,IAIhBxE,EAAG3W,UAAUknB,OAAS,SAAiBd,GACrCjQ,EAAuB,iBAATiQ,GAA6B,GAARA,GACnC,IAAIvpB,EAAIupB,EAAO,GACXnC,GAAKmC,EAAOvpB,GAAK,GAIrB,GAFAsZ,EAAyB,IAAlBxZ,KAAKqa,SAAgB,2CAExBra,KAAKgB,QAAUsmB,EACjB,OAAOtnB,KAQT,GALU,IAANE,GACFonB,IAEFtnB,KAAKgB,OAASga,KAAKC,IAAIqM,EAAGtnB,KAAKgB,QAErB,IAANd,EAAS,CACX,IAAI8pB,EAAO,SAAc,WAAc9pB,GAAMA,EAC7CF,KAAKsa,MAAMta,KAAKgB,OAAS,IAAMgpB,EAGjC,OAAOhqB,KAAKoZ,SAIdY,EAAG3W,UAAUmnB,MAAQ,SAAgBf,GACnC,OAAOzpB,KAAK0c,QAAQ6N,OAAOd,IAI7BzP,EAAG3W,UAAUgc,MAAQ,SAAgBjE,GAGnC,OAFA5B,EAAsB,iBAAR4B,GACd5B,EAAO4B,EAAM,UACTA,EAAM,EAAUpb,KAAKyqB,OAAOrP,GAGV,IAAlBpb,KAAKqa,UACa,IAAhBra,KAAKgB,SAAiC,EAAhBhB,KAAKsa,MAAM,IAAUc,GAC7Cpb,KAAKsa,MAAM,GAAKc,GAAuB,EAAhBpb,KAAKsa,MAAM,IAClCta,KAAKqa,SAAW,IAIlBra,KAAKqa,SAAW,EAChBra,KAAKyqB,MAAMrP,GACXpb,KAAKqa,SAAW,GALPra,MAUJA,KAAKuc,OAAOnB,IAGrBpB,EAAG3W,UAAUkZ,OAAS,SAAiBnB,GACrCpb,KAAKsa,MAAM,IAAMc,EAGjB,IAAK,IAAI7a,EAAI,EAAGA,EAAIP,KAAKgB,QAA2B,UAAjBhB,KAAKsa,MAAM/Z,GAAiBA,IAC7DP,KAAKsa,MAAM/Z,IAAM,SACbA,IAAMP,KAAKgB,OAAS,EACtBhB,KAAKsa,MAAM/Z,EAAI,GAAK,EAEpBP,KAAKsa,MAAM/Z,EAAI,KAKnB,OAFAP,KAAKgB,OAASga,KAAKK,IAAIrb,KAAKgB,OAAQT,EAAI,GAEjCP,MAITga,EAAG3W,UAAUonB,MAAQ,SAAgBrP,GAGnC,GAFA5B,EAAsB,iBAAR4B,GACd5B,EAAO4B,EAAM,UACTA,EAAM,EAAG,OAAOpb,KAAKqf,OAAOjE,GAEhC,GAAsB,IAAlBpb,KAAKqa,SAIP,OAHAra,KAAKqa,SAAW,EAChBra,KAAKqf,MAAMjE,GACXpb,KAAKqa,SAAW,EACTra,KAKT,GAFAA,KAAKsa,MAAM,IAAMc,EAEG,IAAhBpb,KAAKgB,QAAgBhB,KAAKsa,MAAM,GAAK,EACvCta,KAAKsa,MAAM,IAAMta,KAAKsa,MAAM,GAC5Bta,KAAKqa,SAAW,OAGhB,IAAK,IAAI9Z,EAAI,EAAGA,EAAIP,KAAKgB,QAAUhB,KAAKsa,MAAM/Z,GAAK,EAAGA,IACpDP,KAAKsa,MAAM/Z,IAAM,SACjBP,KAAKsa,MAAM/Z,EAAI,IAAM,EAIzB,OAAOP,KAAKoZ,SAGdY,EAAG3W,UAAUqnB,KAAO,SAAetP,GACjC,OAAOpb,KAAK0c,QAAQ2C,MAAMjE,IAG5BpB,EAAG3W,UAAUsnB,KAAO,SAAevP,GACjC,OAAOpb,KAAK0c,QAAQ+N,MAAMrP,IAG5BpB,EAAG3W,UAAUunB,KAAO,WAGlB,OAFA5qB,KAAKqa,SAAW,EAETra,MAGTga,EAAG3W,UAAU8b,IAAM,WACjB,OAAOnf,KAAK0c,QAAQkO,QAGtB5Q,EAAG3W,UAAUwnB,aAAe,SAAuBzP,EAAKD,EAAK2P,GAC3D,IACIvqB,EAIAyb,EALAjB,EAAMK,EAAIpa,OAAS8pB,EAGvB9qB,KAAK2c,QAAQ5B,GAGb,IAAIsC,EAAQ,EACZ,IAAK9c,EAAI,EAAGA,EAAI6a,EAAIpa,OAAQT,IAAK,CAC/Byb,GAA6B,EAAxBhc,KAAKsa,MAAM/Z,EAAIuqB,IAAczN,EAClC,IAAI9B,GAAwB,EAAfH,EAAId,MAAM/Z,IAAU4a,EAEjCkC,IADArB,GAAa,SAART,IACS,KAAQA,EAAQ,SAAa,GAC3Cvb,KAAKsa,MAAM/Z,EAAIuqB,GAAa,SAAJ9O,EAE1B,KAAOzb,EAAIP,KAAKgB,OAAS8pB,EAAOvqB,IAE9B8c,GADArB,GAA6B,EAAxBhc,KAAKsa,MAAM/Z,EAAIuqB,IAAczN,IACrB,GACbrd,KAAKsa,MAAM/Z,EAAIuqB,GAAa,SAAJ9O,EAG1B,GAAc,IAAVqB,EAAa,OAAOrd,KAAKoZ,QAK7B,IAFAI,GAAkB,IAAX6D,GAEF9c,EADL8c,EAAQ,EACI9c,EAAIP,KAAKgB,OAAQT,IAE3B8c,GADArB,IAAsB,EAAhBhc,KAAKsa,MAAM/Z,IAAU8c,IACd,GACbrd,KAAKsa,MAAM/Z,GAAS,SAAJyb,EAIlB,OAFAhc,KAAKqa,SAAW,EAETra,KAAKoZ,SAGdY,EAAG3W,UAAU0nB,SAAW,SAAmB3P,EAAK4P,GAC9C,IAAIF,GAAQ9qB,KAAKgB,OAASoa,EAAIpa,QAE1BL,EAAIX,KAAK0c,QACTzZ,EAAImY,EAGJ6P,EAA8B,EAAxBhoB,EAAEqX,MAAMrX,EAAEjC,OAAS,GAGf,KADd8pB,EAAQ,GADM9qB,KAAK2e,WAAWsM,MAG5BhoB,EAAIA,EAAEmnB,MAAMU,GACZnqB,EAAE6oB,OAAOsB,GACTG,EAA8B,EAAxBhoB,EAAEqX,MAAMrX,EAAEjC,OAAS,IAI3B,IACIwd,EADAhM,EAAI7R,EAAEK,OAASiC,EAAEjC,OAGrB,GAAa,QAATgqB,EAAgB,EAClBxM,EAAI,IAAIxE,EAAG,OACThZ,OAASwR,EAAI,EACfgM,EAAElE,MAAQ,IAAIvX,MAAMyb,EAAExd,QACtB,IAAK,IAAIT,EAAI,EAAGA,EAAIie,EAAExd,OAAQT,IAC5Bie,EAAElE,MAAM/Z,GAAK,EAIjB,IAAI2qB,EAAOvqB,EAAE+b,QAAQmO,aAAa5nB,EAAG,EAAGuP,GAClB,IAAlB0Y,EAAK7Q,WACP1Z,EAAIuqB,EACA1M,IACFA,EAAElE,MAAM9H,GAAK,IAIjB,IAAK,IAAI4E,EAAI5E,EAAI,EAAQ,GAAL4E,EAAQA,IAAK,CAC/B,IAAI+T,EAAmC,UAAL,EAAxBxqB,EAAE2Z,MAAMrX,EAAEjC,OAASoW,KACE,EAA5BzW,EAAE2Z,MAAMrX,EAAEjC,OAASoW,EAAI,IAO1B,IAHA+T,EAAKnQ,KAAKC,IAAKkQ,EAAKF,EAAO,EAAG,UAE9BtqB,EAAEkqB,aAAa5nB,EAAGkoB,EAAI/T,GACA,IAAfzW,EAAE0Z,UACP8Q,IACAxqB,EAAE0Z,SAAW,EACb1Z,EAAEkqB,aAAa5nB,EAAG,EAAGmU,GAChBzW,EAAEgd,WACLhd,EAAE0Z,UAAY,GAGdmE,IACFA,EAAElE,MAAMlD,GAAK+T,GAajB,OAVI3M,GACFA,EAAEpF,QAEJzY,EAAEyY,QAGW,QAAT4R,GAA4B,IAAVF,GACpBnqB,EAAE+d,OAAOoM,GAGJ,CACLM,IAAK5M,GAAK,KACVhb,IAAK7C,IAQTqZ,EAAG3W,UAAUgoB,OAAS,SAAiBjQ,EAAK4P,EAAMM,GAGhD,OAFA9R,GAAQ4B,EAAIuC,UAER3d,KAAK2d,SACA,CACLyN,IAAK,IAAIpR,EAAG,GACZxW,IAAK,IAAIwW,EAAG,IAKM,IAAlBha,KAAKqa,UAAmC,IAAjBe,EAAIf,UAC7BkE,EAAMve,KAAK2f,MAAM0L,OAAOjQ,EAAK4P,GAEhB,QAATA,IACFI,EAAM7M,EAAI6M,IAAIzL,OAGH,QAATqL,IACFxnB,EAAM+a,EAAI/a,IAAImc,MACV2L,GAA6B,IAAjB9nB,EAAI6W,UAClB7W,EAAIqd,KAAKzF,IAIN,CACLgQ,IAAKA,EACL5nB,IAAKA,IAIa,IAAlBxD,KAAKqa,UAAmC,IAAjBe,EAAIf,UAC7BkE,EAAMve,KAAKqrB,OAAOjQ,EAAIuE,MAAOqL,GAEhB,QAATA,IACFI,EAAM7M,EAAI6M,IAAIzL,OAGT,CACLyL,IAAKA,EACL5nB,IAAK+a,EAAI/a,MAI0B,IAAlCxD,KAAKqa,SAAWe,EAAIf,WACvBkE,EAAMve,KAAK2f,MAAM0L,OAAOjQ,EAAIuE,MAAOqL,GAEtB,QAATA,IACFxnB,EAAM+a,EAAI/a,IAAImc,MACV2L,GAA6B,IAAjB9nB,EAAI6W,UAClB7W,EAAIsd,KAAK1F,IAIN,CACLgQ,IAAK7M,EAAI6M,IACT5nB,IAAKA,IAOL4X,EAAIpa,OAAShB,KAAKgB,QAAUhB,KAAKwb,IAAIJ,GAAO,EACvC,CACLgQ,IAAK,IAAIpR,EAAG,GACZxW,IAAKxD,MAKU,IAAfob,EAAIpa,OACO,QAATgqB,EACK,CACLI,IAAKprB,KAAKurB,KAAKnQ,EAAId,MAAM,IACzB9W,IAAK,MAII,QAATwnB,EACK,CACLI,IAAK,KACL5nB,IAAK,IAAIwW,EAAGha,KAAK4d,KAAKxC,EAAId,MAAM,MAI7B,CACL8Q,IAAKprB,KAAKurB,KAAKnQ,EAAId,MAAM,IACzB9W,IAAK,IAAIwW,EAAGha,KAAK4d,KAAKxC,EAAId,MAAM,MAI7Bta,KAAK+qB,SAAS3P,EAAK4P,GAlF1B,IAAII,EAAK5nB,EAAK+a,GAsFhBvE,EAAG3W,UAAU+nB,IAAM,SAAchQ,GAC/B,OAAOpb,KAAKqrB,OAAOjQ,EAAK,OAAO,GAAOgQ,KAIxCpR,EAAG3W,UAAUG,IAAM,SAAc4X,GAC/B,OAAOpb,KAAKqrB,OAAOjQ,EAAK,OAAO,GAAO5X,KAGxCwW,EAAG3W,UAAUmoB,KAAO,SAAepQ,GACjC,OAAOpb,KAAKqrB,OAAOjQ,EAAK,OAAO,GAAM5X,KAIvCwW,EAAG3W,UAAUooB,SAAW,SAAmBrQ,GACzC,IAAIsQ,EAAK1rB,KAAKqrB,OAAOjQ,GAGrB,GAAIsQ,EAAGloB,IAAIma,SAAU,OAAO+N,EAAGN,IAE/B,IAAI5nB,EAA0B,IAApBkoB,EAAGN,IAAI/Q,SAAiBqR,EAAGloB,IAAIsd,KAAK1F,GAAOsQ,EAAGloB,IAEpDmoB,EAAOvQ,EAAIkP,MAAM,GACjBsB,EAAKxQ,EAAIqD,MAAM,GACfjD,EAAMhY,EAAIgY,IAAImQ,GAGlB,OAAInQ,EAAM,GAAY,IAAPoQ,GAAoB,IAARpQ,EAAkBkQ,EAAGN,IAGrB,IAApBM,EAAGN,IAAI/Q,SAAiBqR,EAAGN,IAAIX,MAAM,GAAKiB,EAAGN,IAAI/L,MAAM,IAGhErF,EAAG3W,UAAUua,KAAO,SAAexC,GACjC5B,EAAO4B,GAAO,UAId,IAHA,IAAIta,GAAK,GAAK,IAAMsa,EAEhByQ,EAAM,EACDtrB,EAAIP,KAAKgB,OAAS,EAAQ,GAALT,EAAQA,IACpCsrB,GAAO/qB,EAAI+qB,GAAuB,EAAhB7rB,KAAKsa,MAAM/Z,KAAW6a,EAG1C,OAAOyQ,GAIT7R,EAAG3W,UAAUwa,MAAQ,SAAgBzC,GACnC5B,EAAO4B,GAAO,UAGd,IADA,IAAIiC,EAAQ,EACH9c,EAAIP,KAAKgB,OAAS,EAAQ,GAALT,EAAQA,IAAK,CACzC,IAAIyb,GAAqB,EAAhBhc,KAAKsa,MAAM/Z,IAAkB,SAAR8c,EAC9Brd,KAAKsa,MAAM/Z,GAAMyb,EAAIZ,EAAO,EAC5BiC,EAAQrB,EAAIZ,EAGd,OAAOpb,KAAKoZ,SAGdY,EAAG3W,UAAUkoB,KAAO,SAAenQ,GACjC,OAAOpb,KAAK0c,QAAQmB,MAAMzC,IAG5BpB,EAAG3W,UAAUyoB,KAAO,SAAehrB,GACjC0Y,EAAsB,IAAf1Y,EAAEuZ,UACTb,GAAQ1Y,EAAE6c,UAEV,IAAI0I,EAAIrmB,KACJsmB,EAAIxlB,EAAE4b,QAGR2J,EADiB,IAAfA,EAAEhM,SACAgM,EAAEmF,KAAK1qB,GAEPulB,EAAE3J,QAaR,IATA,IAAIqP,EAAI,IAAI/R,EAAG,GACXgS,EAAI,IAAIhS,EAAG,GAGXiS,EAAI,IAAIjS,EAAG,GACXkS,EAAI,IAAIlS,EAAG,GAEXmS,EAAI,EAED9F,EAAE+F,UAAY9F,EAAE8F,UACrB/F,EAAE3H,OAAO,GACT4H,EAAE5H,OAAO,KACPyN,EAMJ,IAHA,IAAIE,EAAK/F,EAAE5J,QACP4P,EAAKjG,EAAE3J,SAEH2J,EAAE1I,UAAU,CAClB,IAAK,IAAIpd,EAAI,EAAGgsB,EAAK,EAAyB,IAArBlG,EAAE/L,MAAM,GAAKiS,IAAahsB,EAAI,KAAMA,EAAGgsB,IAAO,GACvE,GAAQ,EAAJhsB,EAEF,IADA8lB,EAAE3H,OAAOne,GACI,EAANA,MACDwrB,EAAES,SAAWR,EAAEQ,WACjBT,EAAElL,KAAKwL,GACPL,EAAElL,KAAKwL,IAGTP,EAAErN,OAAO,GACTsN,EAAEtN,OAAO,GAIb,IAAK,IAAItH,EAAI,EAAGqV,EAAK,EAAyB,IAArBnG,EAAEhM,MAAM,GAAKmS,IAAarV,EAAI,KAAMA,EAAGqV,IAAO,GACvE,GAAQ,EAAJrV,EAEF,IADAkP,EAAE5H,OAAOtH,GACI,EAANA,MACD6U,EAAEO,SAAWN,EAAEM,WACjBP,EAAEpL,KAAKwL,GACPH,EAAEpL,KAAKwL,IAGTL,EAAEvN,OAAO,GACTwN,EAAExN,OAAO,GAIG,GAAZ2H,EAAE7K,IAAI8K,IACRD,EAAEvF,KAAKwF,GACPyF,EAAEjL,KAAKmL,GACPD,EAAElL,KAAKoL,KAEP5F,EAAExF,KAAKuF,GACP4F,EAAEnL,KAAKiL,GACPG,EAAEpL,KAAKkL,IAIX,MAAO,CACLrrB,EAAGsrB,EACHhpB,EAAGipB,EACHQ,IAAKpG,EAAEkD,OAAO2C,KAOlBnS,EAAG3W,UAAUspB,OAAS,SAAiB7rB,GACrC0Y,EAAsB,IAAf1Y,EAAEuZ,UACTb,GAAQ1Y,EAAE6c,UAEV,IAAIhd,EAAIX,KACJiD,EAAInC,EAAE4b,QAGR/b,EADiB,IAAfA,EAAE0Z,SACA1Z,EAAE6qB,KAAK1qB,GAEPH,EAAE+b,QAQR,IALA,IAuCI6B,EAvCAqO,EAAK,IAAI5S,EAAG,GACZ6S,EAAK,IAAI7S,EAAG,GAEZ8S,EAAQ7pB,EAAEyZ,QAEK,EAAZ/b,EAAEosB,KAAK,IAAsB,EAAZ9pB,EAAE8pB,KAAK,IAAQ,CACrC,IAAK,IAAIxsB,EAAI,EAAGgsB,EAAK,EAAyB,IAArB5rB,EAAE2Z,MAAM,GAAKiS,IAAahsB,EAAI,KAAMA,EAAGgsB,IAAO,GACvE,GAAQ,EAAJhsB,EAEF,IADAI,EAAE+d,OAAOne,GACI,EAANA,KACDqsB,EAAGJ,SACLI,EAAG/L,KAAKiM,GAGVF,EAAGlO,OAAO,GAId,IAAK,IAAItH,EAAI,EAAGqV,EAAK,EAAyB,IAArBxpB,EAAEqX,MAAM,GAAKmS,IAAarV,EAAI,KAAMA,EAAGqV,IAAO,GACvE,GAAQ,EAAJrV,EAEF,IADAnU,EAAEyb,OAAOtH,GACI,EAANA,KACDyV,EAAGL,SACLK,EAAGhM,KAAKiM,GAGVD,EAAGnO,OAAO,GAIE,GAAZ/d,EAAE6a,IAAIvY,IACRtC,EAAEmgB,KAAK7d,GACP2pB,EAAG9L,KAAK+L,KAER5pB,EAAE6d,KAAKngB,GACPksB,EAAG/L,KAAK8L,IAeZ,OATErO,EADgB,IAAd5d,EAAEosB,KAAK,GACHH,EAEAC,GAGAE,KAAK,GAAK,GAChBxO,EAAIsC,KAAK/f,GAGJyd,GAGTvE,EAAG3W,UAAUqpB,IAAM,SAActR,GAC/B,GAAIpb,KAAK2d,SAAU,OAAOvC,EAAI+D,MAC9B,GAAI/D,EAAIuC,SAAU,OAAO3d,KAAKmf,MAE9B,IAAIxe,EAAIX,KAAK0c,QACTzZ,EAAImY,EAAIsB,QACZ/b,EAAE0Z,SAAW,EAIb,IAAK,IAAIyQ,EAHT7nB,EAAEoX,SAAW,EAGO1Z,EAAEyrB,UAAYnpB,EAAEmpB,SAAUtB,IAC5CnqB,EAAE+d,OAAO,GACTzb,EAAEyb,OAAO,GAGX,OAAG,CACD,KAAO/d,EAAEyrB,UACPzrB,EAAE+d,OAAO,GAEX,KAAOzb,EAAEmpB,UACPnpB,EAAEyb,OAAO,GAGX,IAAIxe,EAAIS,EAAE6a,IAAIvY,GACd,GAAI/C,EAAI,EAAG,CAET,IAAIG,EAAIM,EACRA,EAAIsC,EACJA,EAAI5C,OACC,GAAU,IAANH,GAAyB,IAAd+C,EAAE8pB,KAAK,GAC3B,MAGFpsB,EAAEmgB,KAAK7d,GAGT,OAAOA,EAAEumB,OAAOsB,IAIlB9Q,EAAG3W,UAAU2pB,KAAO,SAAe5R,GACjC,OAAOpb,KAAK8rB,KAAK1Q,GAAKza,EAAE6qB,KAAKpQ,IAG/BpB,EAAG3W,UAAU+oB,OAAS,WACpB,OAA+B,IAAP,EAAhBpsB,KAAKsa,MAAM,KAGrBN,EAAG3W,UAAUmpB,MAAQ,WACnB,OAA+B,IAAP,EAAhBxsB,KAAKsa,MAAM,KAIrBN,EAAG3W,UAAUob,MAAQ,SAAgBrD,GACnC,OAAOpb,KAAKsa,MAAM,GAAKc,GAIzBpB,EAAG3W,UAAU4pB,MAAQ,SAAgBtM,GACnCnH,EAAsB,iBAARmH,GACd,IAAIzgB,EAAIygB,EAAM,GACV2G,GAAK3G,EAAMzgB,GAAK,GAChBse,EAAI,GAAKte,EAGb,GAAIF,KAAKgB,QAAUsmB,EAGjB,OAFAtnB,KAAK2c,QAAQ2K,EAAI,GACjBtnB,KAAKsa,MAAMgN,IAAM9I,EACVxe,KAKT,IADA,IAAIqd,EAAQmB,EACHje,EAAI+mB,EAAa,IAAVjK,GAAe9c,EAAIP,KAAKgB,OAAQT,IAAK,CACnD,IAAIyb,EAAoB,EAAhBhc,KAAKsa,MAAM/Z,GAEnB8c,GADArB,GAAKqB,KACS,GACdrB,GAAK,SACLhc,KAAKsa,MAAM/Z,GAAKyb,EAMlB,OAJc,IAAVqB,IACFrd,KAAKsa,MAAM/Z,GAAK8c,EAChBrd,KAAKgB,UAEAhB,MAGTga,EAAG3W,UAAUsa,OAAS,WACpB,OAAuB,IAAhB3d,KAAKgB,QAAkC,IAAlBhB,KAAKsa,MAAM,IAGzCN,EAAG3W,UAAU0pB,KAAO,SAAe3R,GACjC,IAOImD,EAPAlE,EAAWe,EAAM,EAErB,GAAsB,IAAlBpb,KAAKqa,WAAmBA,EAAU,OAAQ,EAC9C,GAAsB,IAAlBra,KAAKqa,UAAkBA,EAAU,OAAO,EAK5C,GAHAra,KAAKoZ,QAGa,EAAdpZ,KAAKgB,OACPud,EAAM,MACD,CACDlE,IACFe,GAAOA,GAGT5B,EAAO4B,GAAO,SAAW,qBAEzB,IAAIY,EAAoB,EAAhBhc,KAAKsa,MAAM,GACnBiE,EAAMvC,IAAMZ,EAAM,EAAIY,EAAIZ,GAAO,EAAI,EAEvC,OAAsB,IAAlBpb,KAAKqa,SAA8B,GAANkE,EAC1BA,GAOTvE,EAAG3W,UAAUmY,IAAM,SAAcJ,GAC/B,GAAsB,IAAlBpb,KAAKqa,UAAmC,IAAjBe,EAAIf,SAAgB,OAAQ,EACvD,GAAsB,IAAlBra,KAAKqa,UAAmC,IAAjBe,EAAIf,SAAgB,OAAO,EAEtD,IAAIkE,EAAMve,KAAKktB,KAAK9R,GACpB,OAAsB,IAAlBpb,KAAKqa,SAA8B,GAANkE,EAC1BA,GAITvE,EAAG3W,UAAU6pB,KAAO,SAAe9R,GAEjC,GAAIpb,KAAKgB,OAASoa,EAAIpa,OAAQ,OAAO,EACrC,GAAIhB,KAAKgB,OAASoa,EAAIpa,OAAQ,OAAQ,EAGtC,IADA,IAAIud,EAAM,EACDhe,EAAIP,KAAKgB,OAAS,EAAQ,GAALT,EAAQA,IAAK,CACzC,IAAII,EAAoB,EAAhBX,KAAKsa,MAAM/Z,GACf0C,EAAmB,EAAfmY,EAAId,MAAM/Z,GAElB,GAAII,IAAMsC,EAAV,CACItC,EAAIsC,EACNsb,GAAO,EACMtb,EAAJtC,IACT4d,EAAM,GAER,OAEF,OAAOA,GAGTvE,EAAG3W,UAAU8pB,IAAM,SAAc/R,GAC/B,OAA0B,IAAnBpb,KAAK+sB,KAAK3R,IAGnBpB,EAAG3W,UAAU+pB,GAAK,SAAahS,GAC7B,OAAyB,IAAlBpb,KAAKwb,IAAIJ,IAGlBpB,EAAG3W,UAAUgqB,KAAO,SAAejS,GACjC,OAAyB,GAAlBpb,KAAK+sB,KAAK3R,IAGnBpB,EAAG3W,UAAUiqB,IAAM,SAAclS,GAC/B,OAAwB,GAAjBpb,KAAKwb,IAAIJ,IAGlBpB,EAAG3W,UAAUkqB,IAAM,SAAcnS,GAC/B,OAA2B,IAApBpb,KAAK+sB,KAAK3R,IAGnBpB,EAAG3W,UAAUmqB,GAAK,SAAapS,GAC7B,OAA0B,IAAnBpb,KAAKwb,IAAIJ,IAGlBpB,EAAG3W,UAAUoqB,KAAO,SAAerS,GACjC,OAAOpb,KAAK+sB,KAAK3R,IAAQ,GAG3BpB,EAAG3W,UAAUqqB,IAAM,SAActS,GAC/B,OAAOpb,KAAKwb,IAAIJ,IAAQ,GAG1BpB,EAAG3W,UAAUsqB,IAAM,SAAcvS,GAC/B,OAA0B,IAAnBpb,KAAK+sB,KAAK3R,IAGnBpB,EAAG3W,UAAUuqB,GAAK,SAAaxS,GAC7B,OAAyB,IAAlBpb,KAAKwb,IAAIJ,IAOlBpB,EAAGO,IAAM,SAAca,GACrB,OAAO,IAAIyS,EAAIzS,IAGjBpB,EAAG3W,UAAUyqB,MAAQ,SAAgBC,GAGnC,OAFAvU,GAAQxZ,KAAKua,IAAK,yCAClBf,EAAyB,IAAlBxZ,KAAKqa,SAAgB,iCACrB0T,EAAIC,UAAUhuB,MAAMiuB,UAAUF,IAGvC/T,EAAG3W,UAAU6qB,QAAU,WAErB,OADA1U,EAAOxZ,KAAKua,IAAK,wDACVva,KAAKua,IAAI4T,YAAYnuB,OAG9Bga,EAAG3W,UAAU4qB,UAAY,SAAoBF,GAE3C,OADA/tB,KAAKua,IAAMwT,EACJ/tB,MAGTga,EAAG3W,UAAU+qB,SAAW,SAAmBL,GAEzC,OADAvU,GAAQxZ,KAAKua,IAAK,yCACXva,KAAKiuB,UAAUF,IAGxB/T,EAAG3W,UAAUgrB,OAAS,SAAiBjT,GAErC,OADA5B,EAAOxZ,KAAKua,IAAK,sCACVva,KAAKua,IAAItR,IAAIjJ,KAAMob,IAG5BpB,EAAG3W,UAAUirB,QAAU,SAAkBlT,GAEvC,OADA5B,EAAOxZ,KAAKua,IAAK,uCACVva,KAAKua,IAAIsG,KAAK7gB,KAAMob,IAG7BpB,EAAG3W,UAAUkrB,OAAS,SAAiBnT,GAErC,OADA5B,EAAOxZ,KAAKua,IAAK,sCACVva,KAAKua,IAAIwG,IAAI/gB,KAAMob,IAG5BpB,EAAG3W,UAAUmrB,QAAU,SAAkBpT,GAEvC,OADA5B,EAAOxZ,KAAKua,IAAK,uCACVva,KAAKua,IAAIuG,KAAK9gB,KAAMob,IAG7BpB,EAAG3W,UAAUorB,OAAS,SAAiBrT,GAErC,OADA5B,EAAOxZ,KAAKua,IAAK,sCACVva,KAAKua,IAAImU,IAAI1uB,KAAMob,IAG5BpB,EAAG3W,UAAUsrB,OAAS,SAAiBvT,GAGrC,OAFA5B,EAAOxZ,KAAKua,IAAK,sCACjBva,KAAKua,IAAIqU,SAAS5uB,KAAMob,GACjBpb,KAAKua,IAAIY,IAAInb,KAAMob,IAG5BpB,EAAG3W,UAAUwrB,QAAU,SAAkBzT,GAGvC,OAFA5B,EAAOxZ,KAAKua,IAAK,sCACjBva,KAAKua,IAAIqU,SAAS5uB,KAAMob,GACjBpb,KAAKua,IAAIwK,KAAK/kB,KAAMob,IAG7BpB,EAAG3W,UAAUyrB,OAAS,WAGpB,OAFAtV,EAAOxZ,KAAKua,IAAK,sCACjBva,KAAKua,IAAIwU,SAAS/uB,MACXA,KAAKua,IAAI8O,IAAIrpB,OAGtBga,EAAG3W,UAAU2rB,QAAU,WAGrB,OAFAxV,EAAOxZ,KAAKua,IAAK,uCACjBva,KAAKua,IAAIwU,SAAS/uB,MACXA,KAAKua,IAAI+O,KAAKtpB,OAIvBga,EAAG3W,UAAU4rB,QAAU,WAGrB,OAFAzV,EAAOxZ,KAAKua,IAAK,uCACjBva,KAAKua,IAAIwU,SAAS/uB,MACXA,KAAKua,IAAI2U,KAAKlvB,OAGvBga,EAAG3W,UAAU8rB,QAAU,WAGrB,OAFA3V,EAAOxZ,KAAKua,IAAK,uCACjBva,KAAKua,IAAIwU,SAAS/uB,MACXA,KAAKua,IAAIyS,KAAKhtB,OAIvBga,EAAG3W,UAAU+rB,OAAS,WAGpB,OAFA5V,EAAOxZ,KAAKua,IAAK,sCACjBva,KAAKua,IAAIwU,SAAS/uB,MACXA,KAAKua,IAAIoF,IAAI3f,OAGtBga,EAAG3W,UAAUgsB,OAAS,SAAiBjU,GAGrC,OAFA5B,EAAOxZ,KAAKua,MAAQa,EAAIb,IAAK,qBAC7Bva,KAAKua,IAAIwU,SAAS/uB,MACXA,KAAKua,IAAIiC,IAAIxc,KAAMob,IAI5B,IAAIkU,EAAS,CACXC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,MAIV,SAASC,EAAQpoB,EAAMzG,GAErBd,KAAKuH,KAAOA,EACZvH,KAAKc,EAAI,IAAIkZ,EAAGlZ,EAAG,IACnBd,KAAKI,EAAIJ,KAAKc,EAAEge,YAChB9e,KAAK2D,EAAI,IAAIqW,EAAG,GAAGwP,OAAOxpB,KAAKI,GAAG0gB,KAAK9gB,KAAKc,GAE5Cd,KAAK4vB,IAAM5vB,KAAK6vB,OA2ClB,SAASC,IACPH,EAAO5uB,KACLf,KACA,OACA,2EA+DJ,SAAS+vB,IACPJ,EAAO5uB,KACLf,KACA,OACA,kEAIJ,SAASgwB,IACPL,EAAO5uB,KACLf,KACA,OACA,yDAIJ,SAASiwB,IAEPN,EAAO5uB,KACLf,KACA,QACA,uEA8CJ,SAAS6tB,EAAKrb,GACZ,GAAiB,iBAANA,EAAgB,CACzB,IAAI0d,EAAQlW,EAAGmW,OAAO3d,GACtBxS,KAAKwS,EAAI0d,EAAMpvB,EACfd,KAAKkwB,MAAQA,OAEb1W,EAAOhH,EAAE2a,IAAI,GAAI,kCACjBntB,KAAKwS,EAAIA,EACTxS,KAAKkwB,MAAQ,KAkOjB,SAASE,EAAM5d,GACbqb,EAAI9sB,KAAKf,KAAMwS,GAEfxS,KAAK8qB,MAAQ9qB,KAAKwS,EAAEsM,YAChB9e,KAAK8qB,MAAQ,IAAO,IACtB9qB,KAAK8qB,OAAS,GAAM9qB,KAAK8qB,MAAQ,IAGnC9qB,KAAKE,EAAI,IAAI8Z,EAAG,GAAGwP,OAAOxpB,KAAK8qB,OAC/B9qB,KAAK4rB,GAAK5rB,KAAKqwB,KAAKrwB,KAAKE,EAAEmpB,OAC3BrpB,KAAKswB,KAAOtwB,KAAKE,EAAEysB,OAAO3sB,KAAKwS,GAE/BxS,KAAKuwB,KAAOvwB,KAAKswB,KAAKnV,IAAInb,KAAKE,GAAGuqB,MAAM,GAAGW,IAAIprB,KAAKwS,GACpDxS,KAAKuwB,KAAOvwB,KAAKuwB,KAAK/E,KAAKxrB,KAAKE,GAChCF,KAAKuwB,KAAOvwB,KAAKE,EAAE6gB,IAAI/gB,KAAKuwB,MAta9BZ,EAAOtsB,UAAUwsB,KAAO,WACtB,IAAID,EAAM,IAAI5V,EAAG,MAEjB,OADA4V,EAAItV,MAAQ,IAAIvX,MAAMiY,KAAKe,KAAK/b,KAAKI,EAAI,KAClCwvB,GAGTD,EAAOtsB,UAAUmtB,QAAU,SAAkBpV,GAM3C,IAHA,IACIqV,EADAvwB,EAAIkb,EAINpb,KAAK0wB,MAAMxwB,EAAGF,KAAK4vB,MAGnBa,GADAvwB,GADAA,EAAIF,KAAK2wB,MAAMzwB,IACT2gB,KAAK7gB,KAAK4vB,MACP9Q,aACK9e,KAAKI,IAErB,IAAIob,EAAMiV,EAAOzwB,KAAKI,GAAK,EAAIF,EAAEgtB,KAAKltB,KAAKc,GAU3C,OATY,IAAR0a,GACFtb,EAAEoa,MAAM,GAAK,EACbpa,EAAEc,OAAS,GACI,EAANwa,EACTtb,EAAE4gB,KAAK9gB,KAAKc,GAEZZ,EAAEkZ,QAGGlZ,GAGTyvB,EAAOtsB,UAAUqtB,MAAQ,SAAgBE,EAAOzT,GAC9CyT,EAAMlS,OAAO1e,KAAKI,EAAG,EAAG+c,IAG1BwS,EAAOtsB,UAAUstB,MAAQ,SAAgBvV,GACvC,OAAOA,EAAI2J,KAAK/kB,KAAK2D,IASvBgW,EAASmW,EAAMH,GAEfG,EAAKzsB,UAAUqtB,MAAQ,SAAgBE,EAAOC,GAK5C,IAHA,IAEIC,EAAS9V,KAAKC,IAAI2V,EAAM5vB,OAAQ,GAC3BT,EAAI,EAAGA,EAAIuwB,EAAQvwB,IAC1BswB,EAAOvW,MAAM/Z,GAAKqwB,EAAMtW,MAAM/Z,GAIhC,GAFAswB,EAAO7vB,OAAS8vB,EAEZF,EAAM5vB,QAAU,EAGlB,OAFA4vB,EAAMtW,MAAM,GAAK,OACjBsW,EAAM5vB,OAAS,GAKjB,IAAI+vB,EAAOH,EAAMtW,MAAM,GAGvB,IAFAuW,EAAOvW,MAAMuW,EAAO7vB,UAhBT,QAgBqB+vB,EAE3BxwB,EAAI,GAAIA,EAAIqwB,EAAM5vB,OAAQT,IAAK,CAClC,IAAIywB,EAAwB,EAAjBJ,EAAMtW,MAAM/Z,GACvBqwB,EAAMtW,MAAM/Z,EAAI,KApBP,QAoBeywB,IAAgB,EAAMD,IAAS,GACvDA,EAAOC,EAETD,KAAU,GAEG,KADbH,EAAMtW,MAAM/Z,EAAI,IAAMwwB,IACW,GAAfH,EAAM5vB,OACtB4vB,EAAM5vB,QAAU,GAEhB4vB,EAAM5vB,QAAU,GAIpB8uB,EAAKzsB,UAAUstB,MAAQ,SAAgBvV,GAErCA,EAAId,MAAMc,EAAIpa,QAAU,EACxBoa,EAAId,MAAMc,EAAIpa,OAAS,GAAK,EAC5Boa,EAAIpa,QAAU,EAId,IADA,IAAIoc,EAAK,EACA7c,EAAI,EAAGA,EAAI6a,EAAIpa,OAAQT,IAAK,CACnC,IAAIyb,EAAmB,EAAfZ,EAAId,MAAM/Z,GAClB6c,GAAU,IAAJpB,EACNZ,EAAId,MAAM/Z,GAAU,SAAL6c,EACfA,EAAS,GAAJpB,GAAaoB,EAAK,SAAa,GAUtC,OANkC,IAA9BhC,EAAId,MAAMc,EAAIpa,OAAS,KACzBoa,EAAIpa,SAC8B,IAA9Boa,EAAId,MAAMc,EAAIpa,OAAS,IACzBoa,EAAIpa,UAGDoa,GASTzB,EAASoW,EAAMJ,GAQfhW,EAASqW,EAAML,GASfhW,EAASsW,EAAQN,GAEjBM,EAAO5sB,UAAUstB,MAAQ,SAAgBvV,GAGvC,IADA,IAAIiC,EAAQ,EACH9c,EAAI,EAAGA,EAAI6a,EAAIpa,OAAQT,IAAK,CACnC,IAAIwe,EAA0B,IAAL,EAAf3D,EAAId,MAAM/Z,IAAiB8c,EACjCD,EAAU,SAAL2B,EACTA,KAAQ,GAER3D,EAAId,MAAM/Z,GAAK6c,EACfC,EAAQ0B,EAKV,OAHc,IAAV1B,IACFjC,EAAId,MAAMc,EAAIpa,UAAYqc,GAErBjC,GAITpB,EAAGmW,OAAS,SAAgB5oB,GAE1B,GAAI+nB,EAAO/nB,GAAO,OAAO+nB,EAAO/nB,GAEhC,IAAI2oB,EACJ,GAAa,SAAT3oB,EACF2oB,EAAQ,IAAIJ,OACP,GAAa,SAATvoB,EACT2oB,EAAQ,IAAIH,OACP,GAAa,SAATxoB,EACT2oB,EAAQ,IAAIF,MACP,CAAA,GAAa,WAATzoB,EAGT,MAAM,IAAI3G,MAAM,iBAAmB2G,GAFnC2oB,EAAQ,IAAID,EAMd,OAFAX,EAAO/nB,GAAQ2oB,GAoBjBrC,EAAIxqB,UAAU0rB,SAAW,SAAmBpuB,GAC1C6Y,EAAsB,IAAf7Y,EAAE0Z,SAAgB,iCACzBb,EAAO7Y,EAAE4Z,IAAK,oCAGhBsT,EAAIxqB,UAAUurB,SAAW,SAAmBjuB,EAAGsC,GAC7CuW,EAAqC,IAA7B7Y,EAAE0Z,SAAWpX,EAAEoX,UAAiB,iCACxCb,EAAO7Y,EAAE4Z,KAAO5Z,EAAE4Z,MAAQtX,EAAEsX,IAC1B,oCAGJsT,EAAIxqB,UAAUgtB,KAAO,SAAe1vB,GAClC,OAAIX,KAAKkwB,MAAclwB,KAAKkwB,MAAMM,QAAQ7vB,GAAGstB,UAAUjuB,MAChDW,EAAE6qB,KAAKxrB,KAAKwS,GAAGyb,UAAUjuB,OAGlC6tB,EAAIxqB,UAAUsc,IAAM,SAAchf,GAChC,OAAIA,EAAEgd,SACGhd,EAAE+b,QAGJ1c,KAAKwS,EAAEuO,IAAIpgB,GAAGstB,UAAUjuB,OAGjC6tB,EAAIxqB,UAAU4F,IAAM,SAActI,EAAGsC,GACnCjD,KAAK4uB,SAASjuB,EAAGsC,GAEjB,IAAIsb,EAAM5d,EAAEsI,IAAIhG,GAIhB,OAHuB,GAAnBsb,EAAI/C,IAAIxb,KAAKwS,IACf+L,EAAIuC,KAAK9gB,KAAKwS,GAET+L,EAAI0P,UAAUjuB,OAGvB6tB,EAAIxqB,UAAUwd,KAAO,SAAelgB,EAAGsC,GACrCjD,KAAK4uB,SAASjuB,EAAGsC,GAEjB,IAAIsb,EAAM5d,EAAEkgB,KAAK5d,GAIjB,OAHuB,GAAnBsb,EAAI/C,IAAIxb,KAAKwS,IACf+L,EAAIuC,KAAK9gB,KAAKwS,GAET+L,GAGTsP,EAAIxqB,UAAU0d,IAAM,SAAcpgB,EAAGsC,GACnCjD,KAAK4uB,SAASjuB,EAAGsC,GAEjB,IAAIsb,EAAM5d,EAAEogB,IAAI9d,GAIhB,OAHIsb,EAAIwO,KAAK,GAAK,GAChBxO,EAAIsC,KAAK7gB,KAAKwS,GAET+L,EAAI0P,UAAUjuB,OAGvB6tB,EAAIxqB,UAAUyd,KAAO,SAAengB,EAAGsC,GACrCjD,KAAK4uB,SAASjuB,EAAGsC,GAEjB,IAAIsb,EAAM5d,EAAEmgB,KAAK7d,GAIjB,OAHIsb,EAAIwO,KAAK,GAAK,GAChBxO,EAAIsC,KAAK7gB,KAAKwS,GAET+L,GAGTsP,EAAIxqB,UAAUqrB,IAAM,SAAc/tB,EAAGya,GAEnC,OADApb,KAAK+uB,SAASpuB,GACPX,KAAKqwB,KAAK1vB,EAAEypB,MAAMhP,KAG3ByS,EAAIxqB,UAAU0hB,KAAO,SAAepkB,EAAGsC,GAErC,OADAjD,KAAK4uB,SAASjuB,EAAGsC,GACVjD,KAAKqwB,KAAK1vB,EAAEokB,KAAK9hB,KAG1B4qB,EAAIxqB,UAAU8X,IAAM,SAAcxa,EAAGsC,GAEnC,OADAjD,KAAK4uB,SAASjuB,EAAGsC,GACVjD,KAAKqwB,KAAK1vB,EAAEwa,IAAIlY,KAGzB4qB,EAAIxqB,UAAUimB,KAAO,SAAe3oB,GAClC,OAAOX,KAAK+kB,KAAKpkB,EAAGA,EAAE+b,UAGxBmR,EAAIxqB,UAAUgmB,IAAM,SAAc1oB,GAChC,OAAOX,KAAKmb,IAAIxa,EAAGA,IAGrBktB,EAAIxqB,UAAU6rB,KAAO,SAAevuB,GAClC,GAAIA,EAAEgd,SAAU,OAAOhd,EAAE+b,QAEzB,IAAIuU,EAAOjxB,KAAKwS,EAAEiM,MAAM,GAIxB,GAHAjF,EAAOyX,EAAO,GAAM,GAGP,IAATA,EAAY,CACd,IAAIzU,EAAMxc,KAAKwS,EAAEvJ,IAAI,IAAI+Q,EAAG,IAAI0E,OAAO,GACvC,OAAO1e,KAAKwc,IAAI7b,EAAG6b,GAQrB,IAFA,IAAIgC,EAAIxe,KAAKwS,EAAEmY,KAAK,GAChBrD,EAAI,GACA9I,EAAEb,UAA2B,IAAfa,EAAEC,MAAM,IAC5B6I,IACA9I,EAAEE,OAAO,GAEXlF,GAAQgF,EAAEb,UAEV,IAAIuT,EAAM,IAAIlX,EAAG,GAAG8T,MAAM9tB,MACtBmxB,EAAOD,EAAI9B,SAIXgC,EAAOpxB,KAAKwS,EAAEmY,KAAK,GAAGjM,OAAO,GAC7B2S,EAAIrxB,KAAKwS,EAAEsM,YAGf,IAFAuS,EAAI,IAAIrX,EAAG,EAAIqX,EAAIA,GAAGvD,MAAM9tB,MAEW,IAAhCA,KAAKwc,IAAI6U,EAAGD,GAAM5V,IAAI2V,IAC3BE,EAAE/C,QAAQ6C,GAOZ,IAJA,IAAI3wB,EAAIR,KAAKwc,IAAI6U,EAAG7S,GAChBte,EAAIF,KAAKwc,IAAI7b,EAAG6d,EAAEkM,KAAK,GAAGhM,OAAO,IACjCre,EAAIL,KAAKwc,IAAI7b,EAAG6d,GAChBhM,EAAI8U,EACc,IAAfjnB,EAAEmb,IAAI0V,IAAY,CAEvB,IADA,IAAItB,EAAMvvB,EACDE,EAAI,EAAoB,IAAjBqvB,EAAIpU,IAAI0V,GAAY3wB,IAClCqvB,EAAMA,EAAId,SAEZtV,EAAOjZ,EAAIiS,GACX,IAAIvP,EAAIjD,KAAKwc,IAAIhc,EAAG,IAAIwZ,EAAG,GAAGwP,OAAOhX,EAAIjS,EAAI,IAE7CL,EAAIA,EAAEyuB,OAAO1rB,GACbzC,EAAIyC,EAAE6rB,SACNzuB,EAAIA,EAAEsuB,OAAOnuB,GACbgS,EAAIjS,EAGN,OAAOL,GAGT2tB,EAAIxqB,UAAU2pB,KAAO,SAAersB,GAClC,IAAI2wB,EAAM3wB,EAAEgsB,OAAO3sB,KAAKwS,GACxB,OAAqB,IAAjB8e,EAAIjX,UACNiX,EAAIjX,SAAW,EACRra,KAAKqwB,KAAKiB,GAAKlC,UAEfpvB,KAAKqwB,KAAKiB,IAIrBzD,EAAIxqB,UAAUmZ,IAAM,SAAc7b,EAAGya,GACnC,GAAIA,EAAIuC,SAAU,OAAO,IAAI3D,EAAG,GAAG8T,MAAM9tB,MACzC,GAAoB,IAAhBob,EAAI2R,KAAK,GAAU,OAAOpsB,EAAE+b,QAEhC,IACI6U,EAAM,IAAIxuB,MAAM,IACpBwuB,EAAI,GAAK,IAAIvX,EAAG,GAAG8T,MAAM9tB,MACzBuxB,EAAI,GAAK5wB,EACT,IAAK,IAAIJ,EAAI,EAAGA,EAAIgxB,EAAIvwB,OAAQT,IAC9BgxB,EAAIhxB,GAAKP,KAAKmb,IAAIoW,EAAIhxB,EAAI,GAAII,GAGhC,IAAI4d,EAAMgT,EAAI,GACVC,EAAU,EACVC,EAAa,EACb5W,EAAQO,EAAI0D,YAAc,GAK9B,IAJc,IAAVjE,IACFA,EAAQ,IAGLta,EAAI6a,EAAIpa,OAAS,EAAQ,GAALT,EAAQA,IAAK,CAEpC,IADA,IAAI8b,EAAOjB,EAAId,MAAM/Z,GACZ6W,EAAIyD,EAAQ,EAAQ,GAALzD,EAAQA,IAAK,CACnC,IAAIuJ,EAAOtE,GAAQjF,EAAK,EACpBmH,IAAQgT,EAAI,KACdhT,EAAMve,KAAKqpB,IAAI9K,IAGL,IAARoC,GAAyB,IAAZ6Q,GAKjBA,IAAY,EACZA,GAAW7Q,GA9BE,MA+Bb8Q,GACwC,IAANlxB,GAAiB,IAAN6W,KAE7CmH,EAAMve,KAAKmb,IAAIoD,EAAKgT,EAAIC,IAExBA,EADAC,EAAa,IAVXA,EAAa,EAajB5W,EAAQ,GAGV,OAAO0D,GAGTsP,EAAIxqB,UAAU2qB,UAAY,SAAoB5S,GAC5C,IAAIlb,EAAIkb,EAAIoQ,KAAKxrB,KAAKwS,GAEtB,OAAOtS,IAAMkb,EAAMlb,EAAEwc,QAAUxc,GAGjC2tB,EAAIxqB,UAAU8qB,YAAc,SAAsB/S,GAChD,IAAImD,EAAMnD,EAAIsB,QAEd,OADA6B,EAAIhE,IAAM,KACHgE,GAOTvE,EAAG0X,KAAO,SAAetW,GACvB,OAAO,IAAIgV,EAAKhV,IAmBlBzB,EAASyW,EAAMvC,GAEfuC,EAAK/sB,UAAU2qB,UAAY,SAAoB5S,GAC7C,OAAOpb,KAAKqwB,KAAKjV,EAAIgP,MAAMpqB,KAAK8qB,SAGlCsF,EAAK/sB,UAAU8qB,YAAc,SAAsB/S,GACjD,IAAIlb,EAAIF,KAAKqwB,KAAKjV,EAAID,IAAInb,KAAKswB,OAE/B,OADApwB,EAAEqa,IAAM,KACDra,GAGTkwB,EAAK/sB,UAAU0hB,KAAO,SAAepkB,EAAGsC,GACtC,GAAItC,EAAEgd,UAAY1a,EAAE0a,SAGlB,OAFAhd,EAAE2Z,MAAM,GAAK,EACb3Z,EAAEK,OAAS,EACJL,EAGT,IAAIN,EAAIM,EAAEokB,KAAK9hB,GACXzC,EAAIH,EAAEmqB,MAAMxqB,KAAK8qB,OAAO3P,IAAInb,KAAKuwB,MAAMhG,OAAOvqB,KAAK8qB,OAAO3P,IAAInb,KAAKwS,GACnE9R,EAAIL,EAAEygB,KAAKtgB,GAAGke,OAAO1e,KAAK8qB,OAC1BvM,EAAM7d,EAQV,OANqB,GAAjBA,EAAE8a,IAAIxb,KAAKwS,GACb+L,EAAM7d,EAAEogB,KAAK9gB,KAAKwS,GACT9R,EAAEqsB,KAAK,GAAK,IACrBxO,EAAM7d,EAAEmgB,KAAK7gB,KAAKwS,IAGb+L,EAAI0P,UAAUjuB,OAGvBowB,EAAK/sB,UAAU8X,IAAM,SAAcxa,EAAGsC,GACpC,GAAItC,EAAEgd,UAAY1a,EAAE0a,SAAU,OAAO,IAAI3D,EAAG,GAAGiU,UAAUjuB,MAEzD,IAAIK,EAAIM,EAAEwa,IAAIlY,GACVzC,EAAIH,EAAEmqB,MAAMxqB,KAAK8qB,OAAO3P,IAAInb,KAAKuwB,MAAMhG,OAAOvqB,KAAK8qB,OAAO3P,IAAInb,KAAKwS,GACnE9R,EAAIL,EAAEygB,KAAKtgB,GAAGke,OAAO1e,KAAK8qB,OAC1BvM,EAAM7d,EAOV,OANqB,GAAjBA,EAAE8a,IAAIxb,KAAKwS,GACb+L,EAAM7d,EAAEogB,KAAK9gB,KAAKwS,GACT9R,EAAEqsB,KAAK,GAAK,IACrBxO,EAAM7d,EAAEmgB,KAAK7gB,KAAKwS,IAGb+L,EAAI0P,UAAUjuB,OAGvBowB,EAAK/sB,UAAU2pB,KAAO,SAAersB,GAGnC,OADUX,KAAKqwB,KAAK1vB,EAAEgsB,OAAO3sB,KAAKwS,GAAG2I,IAAInb,KAAK4rB,KACnCqC,UAAUjuB,OAh2GzB,MAk2GqB,IAAXN,GAA0BA,EAAQM,OAE1C,CAACmT,OAAS,KAAKwe,GAAG,CAAC,SAASlxB,EAAQf,EAAOD,IAC7C,SAAWK,GACXJ,EAAOD,QAAU,SAASuB,GAAU,IAAI0C,EAAS,IAAI4P,WAAWtS,GAAqE,OAA3DlB,EAAO8xB,QAAU9xB,EAAO+xB,UAAUC,gBAAgBpuB,GAAgBA,KACzI3C,KAAKf,KAAuB,oBAAXF,OAAyBA,OAAyB,oBAATC,KAAuBA,KAAyB,oBAAXF,OAAyBA,OAAS,KAClI,IAAIkyB,GAAG,CAAC,SAAStxB,EAAQf,EAAOD,KAEhC,IAAIuyB,GAAG,CAAC,SAASvxB,EAAQf,EAAOD,GAClC,aAEA,IAAIwyB,EAAWxyB,EAEfwyB,EAAS5wB,QAAUZ,EAAQ,mBAAmBY,QAC9C4wB,EAASzgB,MAAQ/Q,EAAQ,oBACzBwxB,EAASC,KAAOzxB,EAAQ,WACxBwxB,EAASE,SAAW1xB,EAAQ,wBAC5BwxB,EAASG,MAAQ3xB,EAAQ,oBACzBwxB,EAASI,OAAS5xB,EAAQ,qBAG1BwxB,EAASK,GAAK7xB,EAAQ,iBACtBwxB,EAASM,MAAQ9xB,EAAQ,qBAEvB,CAAC+xB,kBAAkB,GAAGC,mBAAmB,GAAGC,oBAAoB,GAAGC,gBAAgB,GAAGC,mBAAmB,GAAGC,uBAAuB,GAAGC,mBAAmB,GAAGC,QAAU,KAAKC,GAAG,CAAC,SAASvyB,EAAQf,EAAOD,GACzM,aAEA,IAAIua,EAAKvZ,EAAQ,SAEb+Q,EADW/Q,EAAQ,kBACF+Q,MACjByhB,EAASzhB,EAAMyhB,OACfC,EAAS1hB,EAAM0hB,OACf1Z,EAAShI,EAAMgI,OAEnB,SAAS2Z,EAAUzrB,EAAM0rB,GACvBpzB,KAAK0H,KAAOA,EACZ1H,KAAKc,EAAI,IAAIkZ,EAAGoZ,EAAKtyB,EAAG,IAGxBd,KAAKua,IAAM6Y,EAAKlD,MAAQlW,EAAGO,IAAI6Y,EAAKlD,OAASlW,EAAG0X,KAAK1xB,KAAKc,GAG1Dd,KAAKqzB,KAAO,IAAIrZ,EAAG,GAAG8T,MAAM9tB,KAAKua,KACjCva,KAAKkxB,IAAM,IAAIlX,EAAG,GAAG8T,MAAM9tB,KAAKua,KAChCva,KAAKszB,IAAM,IAAItZ,EAAG,GAAG8T,MAAM9tB,KAAKua,KAGhCva,KAAKI,EAAIgzB,EAAKhzB,GAAK,IAAI4Z,EAAGoZ,EAAKhzB,EAAG,IAClCJ,KAAKmsB,EAAIiH,EAAKjH,GAAKnsB,KAAKuzB,cAAcH,EAAKjH,EAAGiH,EAAKI,MAGnDxzB,KAAKyzB,QAAU,IAAI1wB,MAAM,GACzB/C,KAAK0zB,QAAU,IAAI3wB,MAAM,GACzB/C,KAAK2zB,QAAU,IAAI5wB,MAAM,GACzB/C,KAAK4zB,QAAU,IAAI7wB,MAAM,GAGzB,IAAI8wB,EAAc7zB,KAAKI,GAAKJ,KAAKc,EAAEsqB,IAAIprB,KAAKI,IACvCyzB,GAAuC,EAAxBA,EAAY9G,KAAK,KACnC/sB,KAAK8zB,KAAO,MAEZ9zB,KAAK+zB,eAAgB,EACrB/zB,KAAK8zB,KAAO9zB,KAAKI,EAAE0tB,MAAM9tB,KAAKua,MAmNlC,SAASyZ,EAAU5B,EAAO1qB,GACxB1H,KAAKoyB,MAAQA,EACbpyB,KAAK0H,KAAOA,EACZ1H,KAAKi0B,YAAc,MAnNrBv0B,EAAOD,QAAU0zB,GAEP9vB,UAAU6wB,MAAQ,WAC1B,MAAM,IAAItzB,MAAM,oBAGlBuyB,EAAU9vB,UAAU8wB,SAAW,WAC7B,MAAM,IAAIvzB,MAAM,oBAGlBuyB,EAAU9vB,UAAU+wB,aAAe,SAAsBtzB,EAAG6C,GAC1D6V,EAAO1Y,EAAEmzB,aACT,IAAII,EAAUvzB,EAAEwzB,cAEZC,EAAMtB,EAAOtvB,EAAG,GAChB6wB,GAAK,GAAMH,EAAQI,KAAO,IAAOJ,EAAQI,KAAO,GAAM,EAAI,EAAI,GAClED,GAAK,EAIL,IADA,IAAIE,EAAO,GACFtd,EAAI,EAAGA,EAAImd,EAAIvzB,OAAQoW,GAAKid,EAAQI,KAAM,CACjD,IAAIE,EAAO,EACX,IAAShxB,EAAIyT,EAAIid,EAAQI,KAAO,EAAQrd,GAALzT,EAAQA,IACzCgxB,GAAQA,GAAQ,GAAKJ,EAAI5wB,GAC3B+wB,EAAKltB,KAAKmtB,GAKZ,IAFA,IAAIh0B,EAAIX,KAAK40B,OAAO,KAAM,KAAM,MAC5B3xB,EAAIjD,KAAK40B,OAAO,KAAM,KAAM,MACvBr0B,EAAIi0B,EAAO,EAAJj0B,EAAOA,IAAK,CAC1B,IAAS6W,EAAI,EAAGA,EAAIsd,EAAK1zB,OAAQoW,IAAK,EAChCud,EAAOD,EAAKtd,MACH7W,EACX0C,EAAIA,EAAE4xB,SAASR,EAAQS,OAAO1d,IACvBud,KAAUp0B,IACjB0C,EAAIA,EAAE4xB,SAASR,EAAQS,OAAO1d,GAAGuI,QAErChf,EAAIA,EAAEsI,IAAIhG,GAEZ,OAAOtC,EAAEo0B,OAGX5B,EAAU9vB,UAAU2xB,SAAW,SAAkBl0B,EAAG6C,GAClD,IAAIqY,EAAI,EAGJiZ,EAAYn0B,EAAEo0B,cAAclZ,GAChCA,EAAIiZ,EAAU1D,IAQd,IAPA,IAAIA,EAAM0D,EAAUH,OAGhBP,EAAMtB,EAAOtvB,EAAGqY,GAGhB6P,EAAM7rB,KAAK40B,OAAO,KAAM,KAAM,MACzBr0B,EAAIg0B,EAAIvzB,OAAS,EAAQ,GAALT,EAAQA,IAAK,CAExC,IAASoD,EAAI,EAAQ,GAALpD,GAAqB,IAAXg0B,EAAIh0B,GAAUA,IACtCoD,IAKF,GAJS,GAALpD,GACFoD,IACFkoB,EAAMA,EAAIsJ,KAAKxxB,GAEXpD,EAAI,EACN,MACF,IAAI8wB,EAAIkD,EAAIh0B,GACZiZ,EAAa,IAAN6X,GAIHxF,EAHW,WAAX/qB,EAAE4G,KAEI,EAAJ2pB,EACIxF,EAAIgJ,SAAStD,EAAKF,EAAI,GAAM,IAE5BxF,EAAIgJ,SAAStD,GAAMF,EAAI,GAAM,GAAG1R,OAGhC,EAAJ0R,EACIxF,EAAI5iB,IAAIsoB,EAAKF,EAAI,GAAM,IAEvBxF,EAAI5iB,IAAIsoB,GAAMF,EAAI,GAAM,GAAG1R,OAGvC,MAAkB,WAAX7e,EAAE4G,KAAoBmkB,EAAIkJ,MAAQlJ,GAG3CsH,EAAU9vB,UAAU+xB,YAAc,SAAqBC,EACAP,EACAQ,EACAva,EACAwa,GAOrD,IANA,IAAIC,EAAWx1B,KAAKyzB,QAChBlC,EAAMvxB,KAAK0zB,QACXa,EAAMv0B,KAAK2zB,QAGXtY,EAAM,EACD9a,EAAI,EAAGA,EAAIwa,EAAKxa,IAAK,CAC5B,IACI00B,GADAn0B,EAAIg0B,EAAOv0B,IACG20B,cAAcG,GAChCG,EAASj1B,GAAK00B,EAAU1D,IACxBA,EAAIhxB,GAAK00B,EAAUH,OAIrB,IAASv0B,EAAIwa,EAAM,EAAQ,GAALxa,EAAQA,GAAK,EAAG,CACpC,IAAII,EAAIJ,EAAI,EACR0C,EAAI1C,EACR,GAAoB,IAAhBi1B,EAAS70B,IAA4B,IAAhB60B,EAASvyB,GAAlC,CAQA,IAAIwyB,EAAO,CACTX,EAAOn0B,GACP,KACA,KACAm0B,EAAO7xB,IAI4B,IAAjC6xB,EAAOn0B,GAAG2lB,EAAE9K,IAAIsZ,EAAO7xB,GAAGqjB,IAC5BmP,EAAK,GAAKX,EAAOn0B,GAAGsI,IAAI6rB,EAAO7xB,IAC/BwyB,EAAK,GAAKX,EAAOn0B,GAAG+0B,MAAMb,SAASC,EAAO7xB,GAAG0c,QACM,IAA1CmV,EAAOn0B,GAAG2lB,EAAE9K,IAAIsZ,EAAO7xB,GAAGqjB,EAAE8I,WACrCqG,EAAK,GAAKX,EAAOn0B,GAAG+0B,MAAMb,SAASC,EAAO7xB,IAC1CwyB,EAAK,GAAKX,EAAOn0B,GAAGsI,IAAI6rB,EAAO7xB,GAAG0c,SAElC8V,EAAK,GAAKX,EAAOn0B,GAAG+0B,MAAMb,SAASC,EAAO7xB,IAC1CwyB,EAAK,GAAKX,EAAOn0B,GAAG+0B,MAAMb,SAASC,EAAO7xB,GAAG0c,QAG/C,IAAItY,EAAQ,EACT,GACA,GACA,GACA,EACD,EACA,EACA,EACA,EACA,GAGEsuB,EAAMzC,EAAOoC,EAAO30B,GAAI20B,EAAOryB,IACnCoY,EAAML,KAAKK,IAAIsa,EAAI,GAAG30B,OAAQqa,GAC9BkZ,EAAI5zB,GAAK,IAAIoC,MAAMsY,GACnBkZ,EAAItxB,GAAK,IAAIF,MAAMsY,GACnB,IAAK,IAAIjE,EAAI,EAAGA,EAAIiE,EAAKjE,IAAK,CAC5B,IAAIwe,EAAiB,EAAZD,EAAI,GAAGve,GACZye,EAAiB,EAAZF,EAAI,GAAGve,GAEhBmd,EAAI5zB,GAAGyW,GAAK/P,EAAiB,GAAVuuB,EAAK,IAAUC,EAAK,IACvCtB,EAAItxB,GAAGmU,GAAK,EACZma,EAAI5wB,GAAK80B,QAhDTlB,EAAI5zB,GAAKsyB,EAAOqC,EAAO30B,GAAI60B,EAAS70B,IACpC4zB,EAAItxB,GAAKgwB,EAAOqC,EAAOryB,GAAIuyB,EAASvyB,IACpCoY,EAAML,KAAKK,IAAIkZ,EAAI5zB,GAAGK,OAAQqa,GAC9BA,EAAML,KAAKK,IAAIkZ,EAAItxB,GAAGjC,OAAQqa,GAiDlC,IAAIwQ,EAAM7rB,KAAK40B,OAAO,KAAM,KAAM,MAC9BhF,EAAM5vB,KAAK4zB,QACf,IAASrzB,EAAI8a,EAAU,GAAL9a,EAAQA,IAAK,CAG7B,IAFA,IAAIoD,EAAI,EAEI,GAALpD,GAAQ,CACb,IAAI8yB,GAAO,EACX,IAASjc,EAAI,EAAGA,EAAI2D,EAAK3D,IACvBwY,EAAIxY,GAAiB,EAAZmd,EAAInd,GAAG7W,GACD,IAAXqvB,EAAIxY,KACNic,GAAO,GAEX,IAAKA,EACH,MACF1vB,IACApD,IAKF,GAHS,GAALA,GACFoD,IACFkoB,EAAMA,EAAIsJ,KAAKxxB,GACXpD,EAAI,EACN,MAEF,IAAS6W,EAAI,EAAGA,EAAI2D,EAAK3D,IAAK,CAC5B,IACItW,EADAuwB,EAAIzB,EAAIxY,GAEF,IAANia,IAES,EAAJA,EACPvwB,EAAIywB,EAAIna,GAAIia,EAAI,GAAM,GACfA,EAAI,IACXvwB,EAAIywB,EAAIna,IAAKia,EAAI,GAAM,GAAG1R,OAG1BkM,EADa,WAAX/qB,EAAE4G,KACEmkB,EAAIgJ,SAAS/zB,GAEb+qB,EAAI5iB,IAAInI,KAIpB,IAASP,EAAI,EAAGA,EAAIwa,EAAKxa,IACvBgxB,EAAIhxB,GAAK,KAEX,OAAIg1B,EACK1J,EAEAA,EAAIkJ,QAQf5B,EAAUa,UAAYA,GAEZ3wB,UAAUuqB,GAAK,WACvB,MAAM,IAAIhtB,MAAM,oBAGlBozB,EAAU3wB,UAAU8wB,SAAW,WAC7B,OAAOn0B,KAAKoyB,MAAM+B,SAASn0B,OAG7BmzB,EAAU9vB,UAAUyyB,YAAc,SAAqBvhB,EAAOwhB,GAC5DxhB,EAAQ/C,EAAMsK,QAAQvH,EAAOwhB,GAE7B,IAAIhb,EAAM/a,KAAKc,EAAEsd,aAGjB,IAAkB,IAAb7J,EAAM,IAA4B,IAAbA,EAAM,IAA4B,IAAbA,EAAM,KACjDA,EAAMvT,OAAS,GAAM,EAAI+Z,EAS3B,OARiB,IAAbxG,EAAM,GACRiF,EAAOjF,EAAMA,EAAMvT,OAAS,GAAK,GAAM,GACnB,IAAbuT,EAAM,IACbiF,EAAOjF,EAAMA,EAAMvT,OAAS,GAAK,GAAM,GAE9BhB,KAAKk0B,MAAM3f,EAAMlI,MAAM,EAAG,EAAI0O,GACnBxG,EAAMlI,MAAM,EAAI0O,EAAK,EAAI,EAAIA,IAG9C,IAAkB,IAAbxG,EAAM,IAA4B,IAAbA,EAAM,KAC3BA,EAAMvT,OAAS,IAAM+Z,EAC/B,OAAO/a,KAAKg2B,WAAWzhB,EAAMlI,MAAM,EAAG,EAAI0O,GAAmB,IAAbxG,EAAM,IAExD,MAAM,IAAI3T,MAAM,yBAGlBozB,EAAU3wB,UAAU4yB,iBAAmB,SAA0BF,GAC/D,OAAO/1B,KAAKiI,OAAO8tB,GAAK,IAG1B/B,EAAU3wB,UAAU6yB,QAAU,SAAiBC,GAC7C,IAAIpb,EAAM/a,KAAKoyB,MAAMtxB,EAAEsd,aACnBiI,EAAIrmB,KAAKo2B,OAAOta,QAAQ,KAAMf,GAElC,OAAIob,EACK,CAAEn2B,KAAKq2B,OAAOjK,SAAW,EAAO,GAAO9e,OAAO+Y,GAEhD,CAAE,GAAO/Y,OAAO+Y,EAAGrmB,KAAKq2B,OAAOva,QAAQ,KAAMf,KAGtDiZ,EAAU3wB,UAAU4E,OAAS,SAAgB8tB,EAAKI,GAChD,OAAO3kB,EAAMvJ,OAAOjI,KAAKk2B,QAAQC,GAAUJ,IAG7C/B,EAAU3wB,UAAUizB,WAAa,SAAoBC,GACnD,GAAIv2B,KAAKi0B,YACP,OAAOj0B,KAET,IAAIi0B,EAAc,CAChBI,QAAS,KACTE,IAAK,KACLiC,KAAM,MAOR,OALAvC,EAAYM,IAAMv0B,KAAKk1B,cAAc,GACrCjB,EAAYI,QAAUr0B,KAAKs0B,YAAY,EAAGiC,GAC1CtC,EAAYuC,KAAOx2B,KAAKy2B,WACxBz2B,KAAKi0B,YAAcA,EAEZj0B,MAGTg0B,EAAU3wB,UAAUqzB,YAAc,SAAqB/yB,GACrD,IAAK3D,KAAKi0B,YACR,OAAO,EAET,IAAII,EAAUr0B,KAAKi0B,YAAYI,QAC/B,QAAKA,GAGEA,EAAQS,OAAO9zB,QAAUga,KAAKe,MAAMpY,EAAEmb,YAAc,GAAKuV,EAAQI,OAG1ET,EAAU3wB,UAAUixB,YAAc,SAAqBG,EAAM8B,GAC3D,GAAIv2B,KAAKi0B,aAAej0B,KAAKi0B,YAAYI,QACvC,OAAOr0B,KAAKi0B,YAAYI,QAI1B,IAFA,IAAIA,EAAU,CAAEr0B,MACZ6rB,EAAM7rB,KACDO,EAAI,EAAGA,EAAIg2B,EAAOh2B,GAAKk0B,EAAM,CACpC,IAAK,IAAIrd,EAAI,EAAGA,EAAIqd,EAAMrd,IACxByU,EAAMA,EAAI8K,MACZtC,EAAQ7sB,KAAKqkB,GAEf,MAAO,CACL4I,KAAMA,EACNK,OAAQT,IAIZL,EAAU3wB,UAAU6xB,cAAgB,SAAuB3D,GACzD,GAAIvxB,KAAKi0B,aAAej0B,KAAKi0B,YAAYM,IACvC,OAAOv0B,KAAKi0B,YAAYM,IAK1B,IAHA,IAAIhW,EAAM,CAAEve,MACRqb,GAAO,GAAKkW,GAAO,EACnBoF,EAAc,IAARtb,EAAY,KAAOrb,KAAK22B,MACzBp2B,EAAI,EAAGA,EAAI8a,EAAK9a,IACvBge,EAAIhe,GAAKge,EAAIhe,EAAI,GAAG0I,IAAI0tB,GAC1B,MAAO,CACLpF,IAAKA,EACLuD,OAAQvW,IAIZyV,EAAU3wB,UAAUozB,SAAW,WAC7B,OAAO,MAGTzC,EAAU3wB,UAAU8xB,KAAO,SAAcxxB,GAEvC,IADA,IAAIzD,EAAIF,KACCO,EAAI,EAAGA,EAAIoD,EAAGpD,IACrBL,EAAIA,EAAEy2B,MACR,OAAOz2B,IAGP,CAAC02B,iBAAiB,GAAGC,QAAQ,IAAIC,GAAG,CAAC,SAASr2B,EAAQf,EAAOD,GAC/DC,EAAOD,QAAU,IACf,IAAIs3B,GAAG,CAAC,SAASt2B,EAAQf,EAAOD,GAClC,aAEA,IAAI2yB,EAAQ3yB,EAEZ2yB,EAAMlY,KAAOzZ,EAAQ,UACrB2xB,EAAM4E,MAAQv2B,EAAQ,WACtB2xB,EAAMV,KAAOjxB,EAAQ,UACrB2xB,EAAM6E,QAAUx2B,EAAQ,cAEtB,CAACy2B,SAAS,GAAGC,YAAY,GAAGC,SAAS,GAAGC,UAAU,KAAKziB,GAAG,CAAC,SAASnU,EAAQf,EAAOD,GACrF+G,UAAU,GAAG,IAAI,GAAG6G,MAAM5N,EAAQ+G,YAChC,CAAC8wB,IAAM,KAAKC,GAAG,CAAC,SAAS92B,EAAQf,EAAOD,GAC1C,aAEA,IAAI2yB,EAAQ3xB,EAAQ,YAChBwxB,EAAWxxB,EAAQ,kBACnBuZ,EAAKvZ,EAAQ,SACbkZ,EAAWlZ,EAAQ,YACnB+2B,EAAOpF,EAAMlY,KAEbV,EAASyY,EAASzgB,MAAMgI,OAE5B,SAASie,EAAWrE,GAClBoE,EAAKz2B,KAAKf,KAAM,QAASozB,GAEzBpzB,KAAKW,EAAI,IAAIqZ,EAAGoZ,EAAKzyB,EAAG,IAAImtB,MAAM9tB,KAAKua,KACvCva,KAAKiD,EAAI,IAAI+W,EAAGoZ,EAAKnwB,EAAG,IAAI6qB,MAAM9tB,KAAKua,KACvCva,KAAK03B,KAAO13B,KAAKszB,IAAInE,UAErBnvB,KAAK23B,MAAqC,IAA7B33B,KAAKW,EAAEutB,UAAUnB,KAAK,GACnC/sB,KAAK43B,OAAmD,IAA1C53B,KAAKW,EAAEutB,UAAUnN,IAAI/gB,KAAKc,GAAGisB,MAAM,GAGjD/sB,KAAK63B,KAAO73B,KAAK83B,iBAAiB1E,GAClCpzB,KAAK+3B,YAAc,IAAIh1B,MAAM,GAC7B/C,KAAKg4B,YAAc,IAAIj1B,MAAM,GAoO/B,SAASk1B,EAAM7F,EAAO/L,EAAGC,EAAG4R,GAC1BV,EAAKxD,UAAUjzB,KAAKf,KAAMoyB,EAAO,UACvB,OAAN/L,GAAoB,OAANC,GAChBtmB,KAAKqmB,EAAI,KACTrmB,KAAKsmB,EAAI,KACTtmB,KAAKm4B,KAAM,IAEXn4B,KAAKqmB,EAAI,IAAIrM,EAAGqM,EAAG,IACnBrmB,KAAKsmB,EAAI,IAAItM,EAAGsM,EAAG,IAEf4R,IACFl4B,KAAKqmB,EAAE+H,SAASpuB,KAAKoyB,MAAM7X,KAC3Bva,KAAKsmB,EAAE8H,SAASpuB,KAAKoyB,MAAM7X,MAExBva,KAAKqmB,EAAE9L,MACVva,KAAKqmB,EAAIrmB,KAAKqmB,EAAEyH,MAAM9tB,KAAKoyB,MAAM7X,MAC9Bva,KAAKsmB,EAAE/L,MACVva,KAAKsmB,EAAItmB,KAAKsmB,EAAEwH,MAAM9tB,KAAKoyB,MAAM7X,MACnCva,KAAKm4B,KAAM,GA4Nf,SAASC,EAAOhG,EAAO/L,EAAGC,EAAG+K,GAC3BmG,EAAKxD,UAAUjzB,KAAKf,KAAMoyB,EAAO,YACvB,OAAN/L,GAAoB,OAANC,GAAoB,OAAN+K,GAC9BrxB,KAAKqmB,EAAIrmB,KAAKoyB,MAAMlB,IACpBlxB,KAAKsmB,EAAItmB,KAAKoyB,MAAMlB,IACpBlxB,KAAKqxB,EAAI,IAAIrX,EAAG,KAEhBha,KAAKqmB,EAAI,IAAIrM,EAAGqM,EAAG,IACnBrmB,KAAKsmB,EAAI,IAAItM,EAAGsM,EAAG,IACnBtmB,KAAKqxB,EAAI,IAAIrX,EAAGqX,EAAG,KAEhBrxB,KAAKqmB,EAAE9L,MACVva,KAAKqmB,EAAIrmB,KAAKqmB,EAAEyH,MAAM9tB,KAAKoyB,MAAM7X,MAC9Bva,KAAKsmB,EAAE/L,MACVva,KAAKsmB,EAAItmB,KAAKsmB,EAAEwH,MAAM9tB,KAAKoyB,MAAM7X,MAC9Bva,KAAKqxB,EAAE9W,MACVva,KAAKqxB,EAAIrxB,KAAKqxB,EAAEvD,MAAM9tB,KAAKoyB,MAAM7X,MAEnCva,KAAKq4B,KAAOr4B,KAAKqxB,IAAMrxB,KAAKoyB,MAAMlB,IAlepCvX,EAAS8d,EAAYD,IACrB93B,EAAOD,QAAUg4B,GAENp0B,UAAUy0B,iBAAmB,SAA0B1E,GAEhE,GAAKpzB,KAAK23B,OAAU33B,KAAKmsB,GAAMnsB,KAAKI,GAAwB,IAAnBJ,KAAKc,EAAE8c,KAAK,GAArD,CAIA,IAAI4Y,EACA8B,EACJ,GAAIlF,EAAKoD,KACPA,EAAO,IAAIxc,EAAGoZ,EAAKoD,KAAM,IAAI1I,MAAM9tB,KAAKua,SACnC,CACL,IAAIge,EAAQv4B,KAAKw4B,cAAcx4B,KAAKc,GAGpC01B,GADAA,EAAO+B,EAAM,GAAG/c,IAAI+c,EAAM,IAAM,EAAIA,EAAM,GAAKA,EAAM,IACzCzK,MAAM9tB,KAAKua,KAEzB,GAAI6Y,EAAKkF,OACPA,EAAS,IAAIte,EAAGoZ,EAAKkF,OAAQ,QACxB,CAEL,IAAIG,EAAUz4B,KAAKw4B,cAAcx4B,KAAKI,GACsB,IAAxDJ,KAAKmsB,EAAEhR,IAAIsd,EAAQ,IAAIpS,EAAE7K,IAAIxb,KAAKmsB,EAAE9F,EAAEsI,OAAO6H,IAC/C8B,EAASG,EAAQ,IAEjBH,EAASG,EAAQ,GACjBjf,EAA2D,IAApDxZ,KAAKmsB,EAAEhR,IAAImd,GAAQjS,EAAE7K,IAAIxb,KAAKmsB,EAAE9F,EAAEsI,OAAO6H,MAiBpD,MAAO,CACLA,KAAMA,EACN8B,OAAQA,EACRI,MAdEtF,EAAKsF,MACCtF,EAAKsF,MAAM9qB,IAAI,SAAS+qB,GAC9B,MAAO,CACLh4B,EAAG,IAAIqZ,EAAG2e,EAAIh4B,EAAG,IACjBsC,EAAG,IAAI+W,EAAG2e,EAAI11B,EAAG,OAIbjD,KAAK44B,cAAcN,MAU/Bb,EAAWp0B,UAAUm1B,cAAgB,SAAuBpd,GAI1D,IAAIb,EAAMa,IAAQpb,KAAKc,EAAId,KAAKua,IAAMP,EAAG0X,KAAKtW,GAC1Csc,EAAO,IAAI1d,EAAG,GAAG8T,MAAMvT,GAAK4U,UAC5B0J,EAAQnB,EAAKtI,SAEb9H,EAAI,IAAItN,EAAG,GAAG8T,MAAMvT,GAAK6U,SAASH,UAAUN,OAAO+I,GAIvD,MAAO,CAFEmB,EAAMxK,OAAO/G,GAAG4G,UAChB2K,EAAMtK,OAAOjH,GAAG4G,YAI3BuJ,EAAWp0B,UAAUu1B,cAAgB,SAAuBN,GA2B1D,IAzBA,IAYIpX,EACA8B,EAEA3B,EACA8B,EAEA3B,EACA8B,EAEAwV,EAEA54B,EACAmmB,EAxBA0S,EAAW/4B,KAAKI,EAAEkqB,MAAMtP,KAAKge,MAAMh5B,KAAKI,EAAE0e,YAAc,IAIxDpe,EAAI43B,EACJhxB,EAAItH,KAAKI,EAAEsc,QACXkQ,EAAK,IAAI5S,EAAG,GACZif,EAAK,IAAIjf,EAAG,GACZ6S,EAAK,IAAI7S,EAAG,GACZkf,EAAK,IAAIlf,EAAG,GAaZzZ,EAAI,EAGa,IAAdG,EAAEqsB,KAAK,IAAU,CACtB,IAAIvO,EAAIlX,EAAE8jB,IAAI1qB,GACdR,EAAIoH,EAAEyZ,IAAIvC,EAAErD,IAAIza,IAChB2lB,EAAIwG,EAAG9L,IAAIvC,EAAErD,IAAIyR,IACjB,IAAItG,EAAI4S,EAAGnY,IAAIvC,EAAErD,IAAI8d,IAErB,IAAK5X,GAAMnhB,EAAEsb,IAAIud,GAAY,EAC3B7X,EAAK4X,EAAMnZ,MACXqD,EAAK4J,EACLvL,EAAKnhB,EAAEyf,MACPwD,EAAKkD,OACA,GAAIhF,GAAc,KAAN9gB,EACjB,MAIF+G,EAAI5G,EACJA,EAHAo4B,EAAQ54B,EAIR2sB,EAAKD,EACLA,EAAKvG,EACL6S,EAAKD,EACLA,EAAK3S,EAEP9E,EAAKthB,EAAEyf,MACP2D,EAAK+C,EAEL,IAAI8S,EAAO9X,EAAGgI,MAAMpgB,IAAIka,EAAGkG,OAiB3B,OAfsB,GADX7H,EAAG6H,MAAMpgB,IAAIqa,EAAG+F,OAClB7N,IAAI2d,KACX3X,EAAKN,EACLoC,EAAKN,GAIH3B,EAAGhH,WACLgH,EAAKA,EAAG1B,MACRwD,EAAKA,EAAGxD,OAEN6B,EAAGnH,WACLmH,EAAKA,EAAG7B,MACR2D,EAAKA,EAAG3D,OAGH,CACL,CAAEhf,EAAG0gB,EAAIpe,EAAGkgB,GACZ,CAAExiB,EAAG6gB,EAAIve,EAAGqgB,KAIhBmU,EAAWp0B,UAAU+1B,WAAa,SAAoBz1B,GACpD,IAAI+0B,EAAQ14B,KAAK63B,KAAKa,MAClBW,EAAKX,EAAM,GACXY,EAAKZ,EAAM,GAEXa,EAAKD,EAAGr2B,EAAEkY,IAAIxX,GAAG8nB,SAASzrB,KAAKI,GAC/Bo5B,EAAKH,EAAGp2B,EAAE0c,MAAMxE,IAAIxX,GAAG8nB,SAASzrB,KAAKI,GAErCq5B,EAAKF,EAAGpe,IAAIke,EAAG14B,GACf+4B,EAAKF,EAAGre,IAAIme,EAAG34B,GACfg5B,EAAKJ,EAAGpe,IAAIke,EAAGp2B,GACf22B,EAAKJ,EAAGre,IAAIme,EAAGr2B,GAKnB,MAAO,CAAE42B,GAFAl2B,EAAEod,IAAI0Y,GAAI1Y,IAAI2Y,GAENI,GADRH,EAAG1wB,IAAI2wB,GAAIja,QAItB8X,EAAWp0B,UAAU2yB,WAAa,SAAoB3P,EAAG+B,IACvD/B,EAAI,IAAIrM,EAAGqM,EAAG,KACP9L,MACL8L,EAAIA,EAAEyH,MAAM9tB,KAAKua,MAEnB,IAAI2e,EAAK7S,EAAEyI,SAASH,OAAOtI,GAAGiI,QAAQjI,EAAEsI,OAAO3uB,KAAKW,IAAI2tB,QAAQtuB,KAAKiD,GACjEqjB,EAAI4S,EAAGjK,UACX,GAA6C,IAAzC3I,EAAEwI,SAASP,OAAO2K,GAAI1d,IAAIxb,KAAKqzB,MACjC,MAAM,IAAIzyB,MAAM,iBAIlB,IAAI4rB,EAAQlG,EAAE4H,UAAU1B,QAIxB,OAHIpE,IAAQoE,IAAUpE,GAAOoE,KAC3BlG,EAAIA,EAAE8I,UAEDpvB,KAAKk0B,MAAM7N,EAAGC,IAGvBmR,EAAWp0B,UAAU8wB,SAAW,SAAkBD,GAChD,GAAIA,EAAMiE,IACR,OAAO,EAET,IAAI9R,EAAI6N,EAAM7N,EACVC,EAAI4N,EAAM5N,EAEVyT,EAAK/5B,KAAKW,EAAEguB,OAAOtI,GACnB2T,EAAM3T,EAAEyI,SAASH,OAAOtI,GAAGiI,QAAQyL,GAAIzL,QAAQtuB,KAAKiD,GACxD,OAA2C,IAApCqjB,EAAEwI,SAASN,QAAQwL,GAAKjN,KAAK,IAGtC0K,EAAWp0B,UAAU42B,gBACjB,SAAyBnF,EAAQQ,EAAQC,GAG3C,IAFA,IAAI2E,EAAUl6B,KAAK+3B,YACfoC,EAAUn6B,KAAKg4B,YACVz3B,EAAI,EAAGA,EAAIu0B,EAAO9zB,OAAQT,IAAK,CACtC,IAAImwB,EAAQ1wB,KAAKo5B,WAAW9D,EAAO/0B,IAC/BO,EAAIg0B,EAAOv0B,GACXi2B,EAAO11B,EAAE21B,WAET/F,EAAMmJ,GAAGxf,WACXqW,EAAMmJ,GAAGpa,OACT3e,EAAIA,EAAE6e,KAAI,IAER+Q,EAAMoJ,GAAGzf,WACXqW,EAAMoJ,GAAGra,OACT+W,EAAOA,EAAK7W,KAAI,IAGlBua,EAAY,EAAJ35B,GAASO,EACjBo5B,EAAY,EAAJ35B,EAAQ,GAAKi2B,EACrB2D,EAAY,EAAJ55B,GAASmwB,EAAMmJ,GACvBM,EAAY,EAAJ55B,EAAQ,GAAKmwB,EAAMoJ,GAK7B,IAHA,IAAIvb,EAAMve,KAAKo1B,YAAY,EAAG8E,EAASC,EAAa,EAAJ55B,EAAOg1B,GAG9Cne,EAAI,EAAGA,EAAQ,EAAJ7W,EAAO6W,IACzB8iB,EAAQ9iB,GAAK,KACb+iB,EAAQ/iB,GAAK,KAEf,OAAOmH,GAwBT5E,EAASse,EAAOT,EAAKxD,WAErByD,EAAWp0B,UAAU6wB,MAAQ,SAAe7N,EAAGC,EAAG4R,GAChD,OAAO,IAAID,EAAMj4B,KAAMqmB,EAAGC,EAAG4R,IAG/BT,EAAWp0B,UAAUkwB,cAAgB,SAAuB6G,EAAK7f,GAC/D,OAAO0d,EAAMoC,SAASr6B,KAAMo6B,EAAK7f,IAGnC0d,EAAM50B,UAAUozB,SAAW,WACzB,GAAKz2B,KAAKoyB,MAAMyF,KAAhB,CAGA,IAAIyC,EAAMt6B,KAAKi0B,YACf,GAAIqG,GAAOA,EAAI9D,KACb,OAAO8D,EAAI9D,KAEb,IAAIA,EAAOx2B,KAAKoyB,MAAM8B,MAAMl0B,KAAKqmB,EAAEsI,OAAO3uB,KAAKoyB,MAAMyF,KAAKrB,MAAOx2B,KAAKsmB,GACtE,GAAIgU,EAAK,CACP,IAAIlI,EAAQpyB,KAAKoyB,MACbmI,EAAU,SAASz5B,GACrB,OAAOsxB,EAAM8B,MAAMpzB,EAAEulB,EAAEsI,OAAOyD,EAAMyF,KAAKrB,MAAO11B,EAAEwlB,KAEpDgU,EAAI9D,KAAOA,GACNvC,YAAc,CACjBuC,KAAM,KACNjC,IAAK+F,EAAI/F,KAAO,CACdhD,IAAK+I,EAAI/F,IAAIhD,IACbuD,OAAQwF,EAAI/F,IAAIO,OAAOlnB,IAAI2sB,IAE7BlG,QAASiG,EAAIjG,SAAW,CACtBI,KAAM6F,EAAIjG,QAAQI,KAClBK,OAAQwF,EAAIjG,QAAQS,OAAOlnB,IAAI2sB,KAIrC,OAAO/D,IAGTyB,EAAM50B,UAAU2a,OAAS,WACvB,OAAKhe,KAAKi0B,YAGH,CAAEj0B,KAAKqmB,EAAGrmB,KAAKsmB,EAAGtmB,KAAKi0B,aAAe,CAC3CI,QAASr0B,KAAKi0B,YAAYI,SAAW,CACnCI,KAAMz0B,KAAKi0B,YAAYI,QAAQI,KAC/BK,OAAQ90B,KAAKi0B,YAAYI,QAAQS,OAAOzoB,MAAM,IAEhDkoB,IAAKv0B,KAAKi0B,YAAYM,KAAO,CAC3BhD,IAAKvxB,KAAKi0B,YAAYM,IAAIhD,IAC1BuD,OAAQ90B,KAAKi0B,YAAYM,IAAIO,OAAOzoB,MAAM,MATrC,CAAErM,KAAKqmB,EAAGrmB,KAAKsmB,IAc1B2R,EAAMoC,SAAW,SAAkBjI,EAAOgI,EAAK7f,GAC1B,iBAAR6f,IACTA,EAAMrrB,KAAKC,MAAMorB,IACnB,IAAI7b,EAAM6T,EAAM8B,MAAMkG,EAAI,GAAIA,EAAI,GAAI7f,GACtC,IAAK6f,EAAI,GACP,OAAO7b,EAET,SAASic,EAAUJ,GACjB,OAAOhI,EAAM8B,MAAMkG,EAAI,GAAIA,EAAI,GAAI7f,GAGrC,IAAI+f,EAAMF,EAAI,GAYd,OAXA7b,EAAI0V,YAAc,CAChBuC,KAAM,KACNnC,QAASiG,EAAIjG,SAAW,CACtBI,KAAM6F,EAAIjG,QAAQI,KAClBK,OAAQ,CAAEvW,GAAMjR,OAAOgtB,EAAIjG,QAAQS,OAAOlnB,IAAI4sB,KAEhDjG,IAAK+F,EAAI/F,KAAO,CACdhD,IAAK+I,EAAI/F,IAAIhD,IACbuD,OAAQ,CAAEvW,GAAMjR,OAAOgtB,EAAI/F,IAAIO,OAAOlnB,IAAI4sB,MAGvCjc,GAGT0Z,EAAM50B,UAAUyZ,QAAU,WACxB,OAAI9c,KAAKy6B,aACA,sBACF,gBAAkBz6B,KAAKqmB,EAAE6H,UAAUzd,SAAS,GAAI,GACnD,OAASzQ,KAAKsmB,EAAE4H,UAAUzd,SAAS,GAAI,GAAK,KAGlDwnB,EAAM50B,UAAUo3B,WAAa,WAC3B,OAAOz6B,KAAKm4B,KAGdF,EAAM50B,UAAU4F,IAAM,SAAanI,GAEjC,GAAId,KAAKm4B,IACP,OAAOr3B,EAGT,GAAIA,EAAEq3B,IACJ,OAAOn4B,KAGT,GAAIA,KAAK4tB,GAAG9sB,GACV,OAAOd,KAAK22B,MAGd,GAAI32B,KAAK2f,MAAMiO,GAAG9sB,GAChB,OAAOd,KAAKoyB,MAAM8B,MAAM,KAAM,MAGhC,GAAwB,IAApBl0B,KAAKqmB,EAAE7K,IAAI1a,EAAEulB,GACf,OAAOrmB,KAAKoyB,MAAM8B,MAAM,KAAM,MAEhC,IAAI1zB,EAAIR,KAAKsmB,EAAEiI,OAAOztB,EAAEwlB,GACN,IAAd9lB,EAAEusB,KAAK,KACTvsB,EAAIA,EAAEmuB,OAAO3uB,KAAKqmB,EAAEkI,OAAOztB,EAAEulB,GAAG8I,YAClC,IAAIuL,EAAKl6B,EAAEsuB,SAASN,QAAQxuB,KAAKqmB,GAAGmI,QAAQ1tB,EAAEulB,GAC1CsU,EAAKn6B,EAAEmuB,OAAO3uB,KAAKqmB,EAAEkI,OAAOmM,IAAKlM,QAAQxuB,KAAKsmB,GAClD,OAAOtmB,KAAKoyB,MAAM8B,MAAMwG,EAAIC,IAG9B1C,EAAM50B,UAAUszB,IAAM,WACpB,GAAI32B,KAAKm4B,IACP,OAAOn4B,KAGT,IAAI46B,EAAM56B,KAAKsmB,EAAE+H,OAAOruB,KAAKsmB,GAC7B,GAAoB,IAAhBsU,EAAI7N,KAAK,GACX,OAAO/sB,KAAKoyB,MAAM8B,MAAM,KAAM,MAEhC,IAAIvzB,EAAIX,KAAKoyB,MAAMzxB,EAEfksB,EAAK7sB,KAAKqmB,EAAEyI,SACZ+L,EAAQD,EAAIzL,UACZ3uB,EAAIqsB,EAAGwB,OAAOxB,GAAIyB,QAAQzB,GAAIyB,QAAQ3tB,GAAGguB,OAAOkM,GAEhDH,EAAKl6B,EAAEsuB,SAASN,QAAQxuB,KAAKqmB,EAAEgI,OAAOruB,KAAKqmB,IAC3CsU,EAAKn6B,EAAEmuB,OAAO3uB,KAAKqmB,EAAEkI,OAAOmM,IAAKlM,QAAQxuB,KAAKsmB,GAClD,OAAOtmB,KAAKoyB,MAAM8B,MAAMwG,EAAIC,IAG9B1C,EAAM50B,UAAU+yB,KAAO,WACrB,OAAOp2B,KAAKqmB,EAAE6H,WAGhB+J,EAAM50B,UAAUgzB,KAAO,WACrB,OAAOr2B,KAAKsmB,EAAE4H,WAGhB+J,EAAM50B,UAAU8X,IAAM,SAAaxX,GAGjC,OAFAA,EAAI,IAAIqW,EAAGrW,EAAG,IAEV3D,KAAK02B,YAAY/yB,GACZ3D,KAAKoyB,MAAMgC,aAAap0B,KAAM2D,GAC9B3D,KAAKoyB,MAAMyF,KACX73B,KAAKoyB,MAAM6H,gBAAgB,CAAEj6B,MAAQ,CAAE2D,IAEvC3D,KAAKoyB,MAAM4C,SAASh1B,KAAM2D,IAGrCs0B,EAAM50B,UAAUy3B,OAAS,SAAgBjB,EAAIH,EAAII,GAC/C,IAAIhF,EAAS,CAAE90B,KAAM05B,GACjBpE,EAAS,CAAEuE,EAAIC,GACnB,OAAI95B,KAAKoyB,MAAMyF,KACN73B,KAAKoyB,MAAM6H,gBAAgBnF,EAAQQ,GAEnCt1B,KAAKoyB,MAAMgD,YAAY,EAAGN,EAAQQ,EAAQ,IAGrD2C,EAAM50B,UAAU03B,QAAU,SAAiBlB,EAAIH,EAAII,GACjD,IAAIhF,EAAS,CAAE90B,KAAM05B,GACjBpE,EAAS,CAAEuE,EAAIC,GACnB,OAAI95B,KAAKoyB,MAAMyF,KACN73B,KAAKoyB,MAAM6H,gBAAgBnF,EAAQQ,GAAQ,GAE3Ct1B,KAAKoyB,MAAMgD,YAAY,EAAGN,EAAQQ,EAAQ,GAAG,IAGxD2C,EAAM50B,UAAUuqB,GAAK,SAAY9sB,GAC/B,OAAOd,OAASc,GACTd,KAAKm4B,MAAQr3B,EAAEq3B,MACVn4B,KAAKm4B,KAA2B,IAApBn4B,KAAKqmB,EAAE7K,IAAI1a,EAAEulB,IAAgC,IAApBrmB,KAAKsmB,EAAE9K,IAAI1a,EAAEwlB,KAGhE2R,EAAM50B,UAAUsc,IAAM,SAAaqb,GACjC,GAAIh7B,KAAKm4B,IACP,OAAOn4B,KAET,IAAIue,EAAMve,KAAKoyB,MAAM8B,MAAMl0B,KAAKqmB,EAAGrmB,KAAKsmB,EAAE8I,UAC1C,GAAI4L,GAAeh7B,KAAKi0B,YAAa,CACnC,IAAIqG,EAAMt6B,KAAKi0B,YACXgH,EAAS,SAASn6B,GACpB,OAAOA,EAAE6e,OAEXpB,EAAI0V,YAAc,CAChBM,IAAK+F,EAAI/F,KAAO,CACdhD,IAAK+I,EAAI/F,IAAIhD,IACbuD,OAAQwF,EAAI/F,IAAIO,OAAOlnB,IAAIqtB,IAE7B5G,QAASiG,EAAIjG,SAAW,CACtBI,KAAM6F,EAAIjG,QAAQI,KAClBK,OAAQwF,EAAIjG,QAAQS,OAAOlnB,IAAIqtB,KAIrC,OAAO1c,GAGT0Z,EAAM50B,UAAUqyB,IAAM,WACpB,OAAI11B,KAAKm4B,IACAn4B,KAAKoyB,MAAMwC,OAAO,KAAM,KAAM,MAE7B50B,KAAKoyB,MAAMwC,OAAO50B,KAAKqmB,EAAGrmB,KAAKsmB,EAAGtmB,KAAKoyB,MAAMlB,MAwBzDvX,EAASye,EAAQZ,EAAKxD,WAEtByD,EAAWp0B,UAAUuxB,OAAS,SAAgBvO,EAAGC,EAAG+K,GAClD,OAAO,IAAI+G,EAAOp4B,KAAMqmB,EAAGC,EAAG+K,IAGhC+G,EAAO/0B,UAAU0xB,IAAM,WACrB,GAAI/0B,KAAKy6B,aACP,OAAOz6B,KAAKoyB,MAAM8B,MAAM,KAAM,MAEhC,IAAIgH,EAAOl7B,KAAKqxB,EAAElC,UACdgM,EAAQD,EAAKpM,SACbiL,EAAK/5B,KAAKqmB,EAAEsI,OAAOwM,GACnBC,EAAKp7B,KAAKsmB,EAAEqI,OAAOwM,GAAOxM,OAAOuM,GAErC,OAAOl7B,KAAKoyB,MAAM8B,MAAM6F,EAAIqB,IAG9BhD,EAAO/0B,UAAUsc,IAAM,WACrB,OAAO3f,KAAKoyB,MAAMwC,OAAO50B,KAAKqmB,EAAGrmB,KAAKsmB,EAAE8I,SAAUpvB,KAAKqxB,IAGzD+G,EAAO/0B,UAAU4F,IAAM,SAAanI,GAElC,GAAId,KAAKy6B,aACP,OAAO35B,EAGT,GAAIA,EAAE25B,aACJ,OAAOz6B,KAGT,IAAIq7B,EAAMv6B,EAAEuwB,EAAEvC,SACVwM,EAAKt7B,KAAKqxB,EAAEvC,SACZyM,EAAKv7B,KAAKqmB,EAAEsI,OAAO0M,GACnBG,EAAK16B,EAAEulB,EAAEsI,OAAO2M,GAChBG,EAAKz7B,KAAKsmB,EAAEqI,OAAO0M,EAAI1M,OAAO7tB,EAAEuwB,IAChCqK,EAAK56B,EAAEwlB,EAAEqI,OAAO2M,EAAG3M,OAAO3uB,KAAKqxB,IAE/BtH,EAAIwR,EAAGhN,OAAOiN,GACdt7B,EAAIu7B,EAAGlN,OAAOmN,GAClB,GAAkB,IAAd3R,EAAEgD,KAAK,GACT,OAAkB,IAAd7sB,EAAE6sB,KAAK,GACF/sB,KAAKoyB,MAAMwC,OAAO,KAAM,KAAM,MAE9B50B,KAAK22B,MAGhB,IAAIgF,EAAK5R,EAAE+E,SACP8M,EAAKD,EAAGhN,OAAO5E,GACfziB,EAAIi0B,EAAG5M,OAAOgN,GAEdjB,EAAKx6B,EAAE4uB,SAASR,QAAQsN,GAAIpN,QAAQlnB,GAAGknB,QAAQlnB,GAC/CqzB,EAAKz6B,EAAEyuB,OAAOrnB,EAAEknB,QAAQkM,IAAKlM,QAAQiN,EAAG9M,OAAOiN,IAC/CC,EAAK77B,KAAKqxB,EAAE1C,OAAO7tB,EAAEuwB,GAAG1C,OAAO5E,GAEnC,OAAO/pB,KAAKoyB,MAAMwC,OAAO8F,EAAIC,EAAIkB,IAGnCzD,EAAO/0B,UAAUwxB,SAAW,SAAkB/zB,GAE5C,GAAId,KAAKy6B,aACP,OAAO35B,EAAE40B,MAGX,GAAI50B,EAAE25B,aACJ,OAAOz6B,KAGT,IAAIs7B,EAAKt7B,KAAKqxB,EAAEvC,SACZyM,EAAKv7B,KAAKqmB,EACVmV,EAAK16B,EAAEulB,EAAEsI,OAAO2M,GAChBG,EAAKz7B,KAAKsmB,EACVoV,EAAK56B,EAAEwlB,EAAEqI,OAAO2M,GAAI3M,OAAO3uB,KAAKqxB,GAEhCtH,EAAIwR,EAAGhN,OAAOiN,GACdt7B,EAAIu7B,EAAGlN,OAAOmN,GAClB,GAAkB,IAAd3R,EAAEgD,KAAK,GACT,OAAkB,IAAd7sB,EAAE6sB,KAAK,GACF/sB,KAAKoyB,MAAMwC,OAAO,KAAM,KAAM,MAE9B50B,KAAK22B,MAGhB,IAAIgF,EAAK5R,EAAE+E,SACP8M,EAAKD,EAAGhN,OAAO5E,GACfziB,EAAIi0B,EAAG5M,OAAOgN,GAEdjB,EAAKx6B,EAAE4uB,SAASR,QAAQsN,GAAIpN,QAAQlnB,GAAGknB,QAAQlnB,GAC/CqzB,EAAKz6B,EAAEyuB,OAAOrnB,EAAEknB,QAAQkM,IAAKlM,QAAQiN,EAAG9M,OAAOiN,IAC/CC,EAAK77B,KAAKqxB,EAAE1C,OAAO5E,GAEvB,OAAO/pB,KAAKoyB,MAAMwC,OAAO8F,EAAIC,EAAIkB,IAGnCzD,EAAO/0B,UAAU8xB,KAAO,SAAc3Y,GACpC,GAAY,IAARA,EACF,OAAOxc,KACT,GAAIA,KAAKy6B,aACP,OAAOz6B,KACT,IAAKwc,EACH,OAAOxc,KAAK22B,MAEd,GAAI32B,KAAKoyB,MAAMuF,OAAS33B,KAAKoyB,MAAMwF,OAAQ,CAEzC,IADA,IAAI13B,EAAIF,KACCO,EAAI,EAAGA,EAAIic,EAAKjc,IACvBL,EAAIA,EAAEy2B,MACR,OAAOz2B,EAKT,IAAIS,EAAIX,KAAKoyB,MAAMzxB,EACf+2B,EAAO13B,KAAKoyB,MAAMsF,KAElBoE,EAAK97B,KAAKqmB,EACV0V,EAAK/7B,KAAKsmB,EACV0V,EAAKh8B,KAAKqxB,EACV4K,EAAMD,EAAGlN,SAASA,SAGlBoN,EAAMH,EAAG1N,OAAO0N,GACpB,IAASx7B,EAAI,EAAGA,EAAIic,EAAKjc,IAAK,CAC5B,IAAI47B,EAAML,EAAGhN,SACTsN,EAAOF,EAAIpN,SACXuN,EAAOD,EAAKtN,SACZtuB,EAAI27B,EAAI9N,OAAO8N,GAAK7N,QAAQ6N,GAAK7N,QAAQ3tB,EAAEguB,OAAOsN,IAElDK,EAAKR,EAAGnN,OAAOyN,GACf1B,EAAKl6B,EAAEsuB,SAASN,QAAQ8N,EAAGjO,OAAOiO,IAClCC,EAAKD,EAAG9N,QAAQkM,GAChB8B,EAAMh8B,EAAEmuB,OAAO4N,GACnBC,EAAMA,EAAIlO,QAAQkO,GAAKhO,QAAQ6N,GAC/B,IAAIR,EAAKK,EAAIvN,OAAOqN,GAChBz7B,EAAI,EAAIic,IACVyf,EAAMA,EAAItN,OAAO0N,IAEnBP,EAAKpB,EACLsB,EAAKH,EACLK,EAAMM,EAGR,OAAOx8B,KAAKoyB,MAAMwC,OAAOkH,EAAII,EAAIvN,OAAO+I,GAAOsE,IAGjD5D,EAAO/0B,UAAUszB,IAAM,WACrB,OAAI32B,KAAKy6B,aACAz6B,KAELA,KAAKoyB,MAAMuF,MACN33B,KAAKy8B,WACLz8B,KAAKoyB,MAAMwF,OACX53B,KAAK08B,YAEL18B,KAAK28B,QAGhBvE,EAAO/0B,UAAUo5B,SAAW,WAC1B,IAAI/B,EACAC,EACAkB,EAEJ,GAAI77B,KAAKq4B,KAAM,CAMb,IAAIuE,EAAK58B,KAAKqmB,EAAEyI,SAEZ+N,EAAK78B,KAAKsmB,EAAEwI,SAEZgO,EAAOD,EAAG/N,SAEVxH,EAAItnB,KAAKqmB,EAAEgI,OAAOwO,GAAI/N,SAASN,QAAQoO,GAAIpO,QAAQsO,GACvDxV,EAAIA,EAAEgH,QAAQhH,GAEd,IAAI9U,EAAIoqB,EAAGvO,OAAOuO,GAAItO,QAAQsO,GAE1Bv8B,EAAImS,EAAEsc,SAASN,QAAQlH,GAAGkH,QAAQlH,GAGlCyV,EAAQD,EAAKxO,QAAQwO,GAEzBC,GADAA,EAAQA,EAAMzO,QAAQyO,IACRzO,QAAQyO,GAGtBrC,EAAKr6B,EAELs6B,EAAKnoB,EAAEmc,OAAOrH,EAAEkH,QAAQnuB,IAAImuB,QAAQuO,GAEpClB,EAAK77B,KAAKsmB,EAAE+H,OAAOruB,KAAKsmB,OACnB,CAML,IAAI3lB,EAAIX,KAAKqmB,EAAEyI,SAEX7rB,EAAIjD,KAAKsmB,EAAEwI,SAEXtuB,EAAIyC,EAAE6rB,SAEN9rB,EAAIhD,KAAKqmB,EAAEgI,OAAOprB,GAAG6rB,SAASN,QAAQ7tB,GAAG6tB,QAAQhuB,GACrDwC,EAAIA,EAAEsrB,QAAQtrB,GAEd,IAAI7C,EAAIQ,EAAE0tB,OAAO1tB,GAAG2tB,QAAQ3tB,GAExBnB,EAAIW,EAAE2uB,SAGNkO,EAAKx8B,EAAE8tB,QAAQ9tB,GAEnBw8B,GADAA,EAAKA,EAAG1O,QAAQ0O,IACR1O,QAAQ0O,GAGhBtC,EAAKl7B,EAAEgvB,QAAQxrB,GAAGwrB,QAAQxrB,GAE1B23B,EAAKx6B,EAAEwuB,OAAO3rB,EAAEwrB,QAAQkM,IAAKlM,QAAQwO,GAGrCnB,GADAA,EAAK77B,KAAKsmB,EAAEqI,OAAO3uB,KAAKqxB,IAChB/C,QAAQuN,GAGlB,OAAO77B,KAAKoyB,MAAMwC,OAAO8F,EAAIC,EAAIkB,IAGnCzD,EAAO/0B,UAAUq5B,UAAY,WAC3B,IAAIhC,EACAC,EACAkB,EAEJ,GAAI77B,KAAKq4B,KAAM,CAMb,IAAIuE,EAAK58B,KAAKqmB,EAAEyI,SAEZ+N,EAAK78B,KAAKsmB,EAAEwI,SAEZgO,EAAOD,EAAG/N,SAEVxH,EAAItnB,KAAKqmB,EAAEgI,OAAOwO,GAAI/N,SAASN,QAAQoO,GAAIpO,QAAQsO,GACvDxV,EAAIA,EAAEgH,QAAQhH,GAEd,IAAI9U,EAAIoqB,EAAGvO,OAAOuO,GAAItO,QAAQsO,GAAItO,QAAQtuB,KAAKoyB,MAAMzxB,GAEjDN,EAAImS,EAAEsc,SAASN,QAAQlH,GAAGkH,QAAQlH,GAEtCoT,EAAKr6B,EAEL,IAAI08B,EAAQD,EAAKxO,QAAQwO,GAEzBC,GADAA,EAAQA,EAAMzO,QAAQyO,IACRzO,QAAQyO,GACtBpC,EAAKnoB,EAAEmc,OAAOrH,EAAEkH,QAAQnuB,IAAImuB,QAAQuO,GAEpClB,EAAK77B,KAAKsmB,EAAE+H,OAAOruB,KAAKsmB,OACnB,CAKL,IAAIwG,EAAQ9sB,KAAKqxB,EAAEvC,SAEfmO,EAAQj9B,KAAKsmB,EAAEwI,SAEf0H,EAAOx2B,KAAKqmB,EAAEsI,OAAOsO,GAErBC,EAAQl9B,KAAKqmB,EAAEkI,OAAOzB,GAAO6B,OAAO3uB,KAAKqmB,EAAEgI,OAAOvB,IACtDoQ,EAAQA,EAAM7O,OAAO6O,GAAO5O,QAAQ4O,GAEpC,IAAIC,EAAQ3G,EAAKlI,QAAQkI,GAErB4G,GADJD,EAAQA,EAAM7O,QAAQ6O,IACJ9O,OAAO8O,GACzBzC,EAAKwC,EAAMpO,SAASN,QAAQ4O,GAE5BvB,EAAK77B,KAAKsmB,EAAE+H,OAAOruB,KAAKqxB,GAAGvC,SAASN,QAAQyO,GAAOzO,QAAQ1B,GAE3D,IAAIuQ,EAAUJ,EAAMnO,SAGpBuO,GADAA,GADAA,EAAUA,EAAQ/O,QAAQ+O,IACR/O,QAAQ+O,IACR/O,QAAQ+O,GAC1B1C,EAAKuC,EAAMvO,OAAOwO,EAAM3O,QAAQkM,IAAKlM,QAAQ6O,GAG/C,OAAOr9B,KAAKoyB,MAAMwC,OAAO8F,EAAIC,EAAIkB,IAGnCzD,EAAO/0B,UAAUs5B,KAAO,WACtB,IAAIh8B,EAAIX,KAAKoyB,MAAMzxB,EAGfm7B,EAAK97B,KAAKqmB,EACV0V,EAAK/7B,KAAKsmB,EACV0V,EAAKh8B,KAAKqxB,EACV4K,EAAMD,EAAGlN,SAASA,SAElBqN,EAAML,EAAGhN,SACTwO,EAAMvB,EAAGjN,SAETtuB,EAAI27B,EAAI9N,OAAO8N,GAAK7N,QAAQ6N,GAAK7N,QAAQ3tB,EAAEguB,OAAOsN,IAElDsB,EAAOzB,EAAGzN,OAAOyN,GAEjBQ,GADJiB,EAAOA,EAAKjP,QAAQiP,IACN5O,OAAO2O,GACjB5C,EAAKl6B,EAAEsuB,SAASN,QAAQ8N,EAAGjO,OAAOiO,IAClCC,EAAKD,EAAG9N,QAAQkM,GAEhB8C,EAAOF,EAAIxO,SAGf0O,GADAA,GADAA,EAAOA,EAAKlP,QAAQkP,IACRlP,QAAQkP,IACRlP,QAAQkP,GACpB,IAAI7C,EAAKn6B,EAAEmuB,OAAO4N,GAAI/N,QAAQgP,GAC1B3B,EAAKE,EAAG1N,OAAO0N,GAAIpN,OAAOqN,GAE9B,OAAOh8B,KAAKoyB,MAAMwC,OAAO8F,EAAIC,EAAIkB,IAGnCzD,EAAO/0B,UAAUo6B,KAAO,WACtB,IAAKz9B,KAAKoyB,MAAMuF,MACd,OAAO33B,KAAK22B,MAAM1tB,IAAIjJ,MAMxB,IAAI48B,EAAK58B,KAAKqmB,EAAEyI,SAEZ+N,EAAK78B,KAAKsmB,EAAEwI,SAEZ4O,EAAK19B,KAAKqxB,EAAEvC,SAEZgO,EAAOD,EAAG/N,SAEVtc,EAAIoqB,EAAGvO,OAAOuO,GAAItO,QAAQsO,GAE1Be,EAAKnrB,EAAEsc,SAEP3uB,EAAIH,KAAKqmB,EAAEgI,OAAOwO,GAAI/N,SAASN,QAAQoO,GAAIpO,QAAQsO,GAKnDc,GAFJz9B,GADAA,GADAA,EAAIA,EAAEmuB,QAAQnuB,IACRkuB,OAAOluB,GAAGmuB,QAAQnuB,IAClBquB,QAAQmP,IAEH7O,SAEPzuB,EAAIy8B,EAAKxO,QAAQwO,GAGrBz8B,GADAA,GADAA,EAAIA,EAAEiuB,QAAQjuB,IACRiuB,QAAQjuB,IACRiuB,QAAQjuB,GAEd,IAAIK,EAAI8R,EAAE8b,QAAQnuB,GAAG2uB,SAASN,QAAQmP,GAAInP,QAAQoP,GAAIpP,QAAQnuB,GAE1Dw9B,EAAOhB,EAAGlO,OAAOjuB,GAErBm9B,GADAA,EAAOA,EAAKvP,QAAQuP,IACRvP,QAAQuP,GACpB,IAAInD,EAAK16B,KAAKqmB,EAAEsI,OAAOiP,GAAIpP,QAAQqP,GAEnCnD,GADAA,EAAKA,EAAGpM,QAAQoM,IACRpM,QAAQoM,GAEhB,IAAIC,EAAK36B,KAAKsmB,EAAEqI,OAAOjuB,EAAEiuB,OAAOtuB,EAAEmuB,QAAQ9tB,IAAI8tB,QAAQruB,EAAEwuB,OAAOiP,KAG/DjD,GADAA,GADAA,EAAKA,EAAGrM,QAAQqM,IACRrM,QAAQqM,IACRrM,QAAQqM,GAEhB,IAAIkB,EAAK77B,KAAKqxB,EAAEhD,OAAOluB,GAAG2uB,SAASN,QAAQkP,GAAIlP,QAAQoP,GAEvD,OAAO59B,KAAKoyB,MAAMwC,OAAO8F,EAAIC,EAAIkB,IAGnCzD,EAAO/0B,UAAU8X,IAAM,SAAaxX,EAAGm6B,GAGrC,OAFAn6B,EAAI,IAAIqW,EAAGrW,EAAGm6B,GAEP99B,KAAKoyB,MAAM4C,SAASh1B,KAAM2D,IAGnCy0B,EAAO/0B,UAAUuqB,GAAK,SAAY9sB,GAChC,GAAe,WAAXA,EAAE4G,KACJ,OAAO1H,KAAK4tB,GAAG9sB,EAAE40B,OAEnB,GAAI11B,OAASc,EACX,OAAO,EAGT,IAAIw6B,EAAKt7B,KAAKqxB,EAAEvC,SACZuM,EAAMv6B,EAAEuwB,EAAEvC,SACd,GAA2D,IAAvD9uB,KAAKqmB,EAAEsI,OAAO0M,GAAK7M,QAAQ1tB,EAAEulB,EAAEsI,OAAO2M,IAAKvO,KAAK,GAClD,OAAO,EAGT,IAAIgR,EAAKzC,EAAG3M,OAAO3uB,KAAKqxB,GACpB2M,EAAM3C,EAAI1M,OAAO7tB,EAAEuwB,GACvB,OAA8D,IAAvDrxB,KAAKsmB,EAAEqI,OAAOqP,GAAKxP,QAAQ1tB,EAAEwlB,EAAEqI,OAAOoP,IAAKhR,KAAK,IAGzDqL,EAAO/0B,UAAU46B,OAAS,SAAgB5X,GACxC,IAAI6X,EAAKl+B,KAAKqxB,EAAEvC,SACZ5G,EAAK7B,EAAEyH,MAAM9tB,KAAKoyB,MAAM7X,KAAKoU,OAAOuP,GACxC,GAAuB,IAAnBl+B,KAAKqmB,EAAE7K,IAAI0M,GACb,OAAO,EAIT,IAFA,IAAIiW,EAAK9X,EAAE3J,QACPrc,EAAIL,KAAKoyB,MAAM0B,KAAKnF,OAAOuP,KACtB,CAEP,GADAC,EAAGtd,KAAK7gB,KAAKoyB,MAAMhyB,GACS,GAAxB+9B,EAAG3iB,IAAIxb,KAAKoyB,MAAMtxB,GACpB,OAAO,EAGT,GADAonB,EAAGoG,QAAQjuB,GACY,IAAnBL,KAAKqmB,EAAE7K,IAAI0M,GACb,OAAO,EAEX,OAAO,GAGTkQ,EAAO/0B,UAAUyZ,QAAU,WACzB,OAAI9c,KAAKy6B,aACA,uBACF,iBAAmBz6B,KAAKqmB,EAAE5V,SAAS,GAAI,GAC1C,OAASzQ,KAAKsmB,EAAE7V,SAAS,GAAI,GAC7B,OAASzQ,KAAKqxB,EAAE5gB,SAAS,GAAI,GAAK,KAGxC2nB,EAAO/0B,UAAUo3B,WAAa,WAE5B,OAA0B,IAAnBz6B,KAAKqxB,EAAEtE,KAAK,KAGnB,CAAC6J,iBAAiB,GAAGwH,WAAW,GAAGvH,QAAQ,EAAEld,SAAW,KAAK0kB,GAAG,CAAC,SAAS59B,EAAQf,EAAOD,GAC3F,aAEA,IAqKI66B,EArKAjI,EAAS5yB,EAET6+B,EAAO79B,EAAQ,WACfwxB,EAAWxxB,EAAQ,eAEnB+Y,EAASyY,EAASzgB,MAAMgI,OAE5B,SAAS+kB,EAAYC,GACE,UAAjBA,EAAQ92B,KACV1H,KAAKoyB,MAAQ,IAAIH,EAASG,MAAM4E,MAAMwH,GACd,YAAjBA,EAAQ92B,KACf1H,KAAKoyB,MAAQ,IAAIH,EAASG,MAAM6E,QAAQuH,GAExCx+B,KAAKoyB,MAAQ,IAAIH,EAASG,MAAMV,KAAK8M,GACvCx+B,KAAKmsB,EAAInsB,KAAKoyB,MAAMjG,EACpBnsB,KAAKI,EAAIJ,KAAKoyB,MAAMhyB,EACpBJ,KAAKs+B,KAAOE,EAAQF,KAEpB9kB,EAAOxZ,KAAKmsB,EAAEgI,WAAY,iBAC1B3a,EAAOxZ,KAAKmsB,EAAEhR,IAAInb,KAAKI,GAAGq6B,aAAc,2BAI1C,SAASgE,EAAYl3B,EAAMi3B,GACzBt9B,OAAOC,eAAekxB,EAAQ9qB,EAAM,CAClCm3B,cAAc,EACdC,YAAY,EACZC,IAAK,WACH,IAAIxM,EAAQ,IAAImM,EAAYC,GAM5B,OALAt9B,OAAOC,eAAekxB,EAAQ9qB,EAAM,CAClCm3B,cAAc,EACdC,YAAY,EACZv9B,MAAOgxB,IAEFA,KAbbC,EAAOkM,YAAcA,EAkBrBE,EAAY,OAAQ,CAClB/2B,KAAM,QACNwoB,MAAO,OACPpvB,EAAG,wDACHH,EAAG,wDACHsC,EAAG,wDACH7C,EAAG,wDACHk+B,KAAMA,EAAKO,OACXrL,MAAM,EACNrH,EAAG,CACD,wDACA,2DAIJsS,EAAY,OAAQ,CAClB/2B,KAAM,QACNwoB,MAAO,OACPpvB,EAAG,iEACHH,EAAG,iEACHsC,EAAG,iEACH7C,EAAG,iEACHk+B,KAAMA,EAAKO,OACXrL,MAAM,EACNrH,EAAG,CACD,iEACA,oEAIJsS,EAAY,OAAQ,CAClB/2B,KAAM,QACNwoB,MAAO,KACPpvB,EAAG,0EACHH,EAAG,0EACHsC,EAAG,0EACH7C,EAAG,0EACHk+B,KAAMA,EAAKO,OACXrL,MAAM,EACNrH,EAAG,CACD,0EACA,6EAIJsS,EAAY,OAAQ,CAClB/2B,KAAM,QACNwoB,MAAO,KACPpvB,EAAG,8GAEHH,EAAG,8GAEHsC,EAAG,8GAEH7C,EAAG,8GAEHk+B,KAAMA,EAAKQ,OACXtL,MAAM,EACNrH,EAAG,CACD,8GAEA,iHAKJsS,EAAY,OAAQ,CAClB/2B,KAAM,QACNwoB,MAAO,KACPpvB,EAAG,2JAGHH,EAAG,2JAGHsC,EAAG,2JAGH7C,EAAG,2JAGHk+B,KAAMA,EAAKS,OACXvL,MAAM,EACNrH,EAAG,CACD,2JAGA,8JAMJsS,EAAY,aAAc,CACxB/2B,KAAM,OACNwoB,MAAO,SACPpvB,EAAG,sEACHH,EAAG,QACHsC,EAAG,IACH7C,EAAG,sEACHk+B,KAAMA,EAAKO,OACXrL,MAAM,EACNrH,EAAG,CACD,OAIJsS,EAAY,UAAW,CACrB/2B,KAAM,UACNwoB,MAAO,SACPpvB,EAAG,sEACHH,EAAG,KACHH,EAAG,IAEHwC,EAAG,sEACH5C,EAAG,sEACHk+B,KAAMA,EAAKO,OACXrL,MAAM,EACNrH,EAAG,CACD,mEAGA,sEAKJ,IACEmO,EAAM75B,EAAQ,2BACd,MAAON,GACPm6B,OAAM0E,EAGRP,EAAY,YAAa,CACvB/2B,KAAM,QACNwoB,MAAO,OACPpvB,EAAG,0EACHH,EAAG,IACHsC,EAAG,IACH7C,EAAG,0EACH2pB,EAAG,IACHuU,KAAMA,EAAKO,OAGXrI,KAAM,mEACN8B,OAAQ,mEACRI,MAAO,CACL,CACE/3B,EAAG,mCACHsC,EAAG,qCAEL,CACEtC,EAAG,oCACHsC,EAAG,qCAIPuwB,MAAM,EACNrH,EAAG,CACD,mEACA,mEACAmO,MAIF,CAAC2E,cAAc,GAAGC,0BAA0B,GAAGC,UAAU,KAAKC,GAAG,CAAC,SAAS3+B,EAAQf,EAAOD,GAC5F,aAEA,IAAIua,EAAKvZ,EAAQ,SACbwxB,EAAWxxB,EAAQ,kBAEnB+Y,EADQyY,EAASzgB,MACFgI,OAEf6lB,EAAU5+B,EAAQ,SAClB6+B,EAAY7+B,EAAQ,eAExB,SAAS8+B,EAAGf,GACV,KAAMx+B,gBAAgBu/B,GACpB,OAAO,IAAIA,EAAGf,GAGO,iBAAZA,IACThlB,EAAOyY,EAASI,OAAOnvB,eAAes7B,GAAU,iBAAmBA,GAEnEA,EAAUvM,EAASI,OAAOmM,IAIxBA,aAAmBvM,EAASI,OAAOkM,cACrCC,EAAU,CAAEpM,MAAOoM,IAErBx+B,KAAKoyB,MAAQoM,EAAQpM,MAAMA,MAC3BpyB,KAAKI,EAAIJ,KAAKoyB,MAAMhyB,EACpBJ,KAAKw/B,GAAKx/B,KAAKI,EAAEkqB,MAAM,GACvBtqB,KAAKmsB,EAAInsB,KAAKoyB,MAAMjG,EAGpBnsB,KAAKmsB,EAAIqS,EAAQpM,MAAMjG,EACvBnsB,KAAKmsB,EAAEmK,WAAWkI,EAAQpM,MAAMhyB,EAAE0e,YAAc,GAGhD9e,KAAKs+B,KAAOE,EAAQF,MAAQE,EAAQpM,MAAMkM,MAE5C5+B,EAAOD,QAAU8/B,GAEdl8B,UAAUo8B,QAAU,SAAiBjB,GACtC,OAAO,IAAIa,EAAQr/B,KAAMw+B,IAG3Be,EAAGl8B,UAAUq8B,eAAiB,SAAwBC,EAAM5J,GAC1D,OAAOsJ,EAAQO,YAAY5/B,KAAM2/B,EAAM5J,IAGzCwJ,EAAGl8B,UAAUw8B,cAAgB,SAAuBC,EAAK/J,GACvD,OAAOsJ,EAAQU,WAAW//B,KAAM8/B,EAAK/J,IAGvCwJ,EAAGl8B,UAAU28B,WAAa,SAAoBxB,GACvCA,IACHA,EAAU,IAYZ,IATA,IAAIyB,EAAO,IAAIhO,EAASE,SAAS,CAC/BmM,KAAMt+B,KAAKs+B,KACX4B,KAAM1B,EAAQ0B,KACdC,QAAS3B,EAAQ2B,SAAWlO,EAASC,KAAKlyB,KAAKs+B,KAAK8B,cACpDv6B,MAAO7F,KAAKI,EAAE0b,YAGZvH,EAAQvU,KAAKI,EAAEge,aACfiiB,EAAMrgC,KAAKI,EAAE2gB,IAAI,IAAI/G,EAAG,MACzB,CACD,IAAI2lB,EAAO,IAAI3lB,EAAGimB,EAAKK,SAAS/rB,IAChC,KAAoB,EAAhBorB,EAAKnkB,IAAI6kB,IAIb,OADAV,EAAKtgB,MAAM,GACJrf,KAAK0/B,eAAeC,KAI/BJ,EAAGl8B,UAAUk9B,aAAe,SAAqB7mB,EAAK8mB,GACpD,IAAI1T,EAA2B,EAAnBpT,EAAI0E,aAAmBpe,KAAKI,EAAE0e,YAG1C,OAFY,EAARgO,IACFpT,EAAMA,EAAI4Q,MAAMwC,KACb0T,GAAgC,GAAnB9mB,EAAI8B,IAAIxb,KAAKI,GACtBsZ,EAAIqH,IAAI/gB,KAAKI,GAEbsZ,GAGX6lB,EAAGl8B,UAAUo9B,KAAO,SAAc/mB,EAAK/S,EAAKovB,EAAKyI,GAC5B,iBAARzI,IACTyI,EAAUzI,EACVA,EAAM,MAEHyI,IACHA,EAAU,IAEZ73B,EAAM3G,KAAK0/B,eAAe/4B,EAAKovB,GAC/Brc,EAAM1Z,KAAKugC,aAAa,IAAIvmB,EAAGN,EAAK,KAqBpC,IAlBA,IAAInF,EAAQvU,KAAKI,EAAEge,aACfsiB,EAAO/5B,EAAIg6B,aAAa7kB,QAAQ,KAAMvH,GAGtC1O,EAAQ6T,EAAIoC,QAAQ,KAAMvH,GAG1B0rB,EAAO,IAAIhO,EAASE,SAAS,CAC/BmM,KAAMt+B,KAAKs+B,KACX6B,QAASO,EACT76B,MAAOA,EACPq6B,KAAM1B,EAAQ0B,KACdU,QAASpC,EAAQoC,UAIfC,EAAM7gC,KAAKI,EAAE2gB,IAAI,IAAI/G,EAAG,IAEnB8mB,EAAO,GAASA,IAAQ,CAC/B,IAAIn9B,EAAI66B,EAAQ76B,EACZ66B,EAAQ76B,EAAEm9B,GACV,IAAI9mB,EAAGimB,EAAKK,SAAStgC,KAAKI,EAAEge,eAEhC,MADAza,EAAI3D,KAAKugC,aAAa58B,GAAG,IACnBopB,KAAK,IAAM,GAAmB,GAAdppB,EAAE6X,IAAIqlB,IAA5B,CAGA,IAAIE,EAAK/gC,KAAKmsB,EAAEhR,IAAIxX,GACpB,IAAIo9B,EAAGtG,aAAP,CAGA,IAAIuG,EAAMD,EAAG3K,OACTl2B,EAAI8gC,EAAIxV,KAAKxrB,KAAKI,GACtB,GAAkB,IAAdF,EAAE6sB,KAAK,GAAX,CAGA,IAAIzF,EAAI3jB,EAAEqpB,KAAKhtB,KAAKI,GAAG+a,IAAIjb,EAAEib,IAAIxU,EAAIg6B,cAAc9f,KAAKnH,IAExD,GAAkB,KADlB4N,EAAIA,EAAEkE,KAAKxrB,KAAKI,IACV2sB,KAAK,GAAX,CAGA,IAAIkU,GAAiBF,EAAG1K,OAAO7J,QAAU,EAAI,IACT,IAAfwU,EAAIxlB,IAAItb,GAAW,EAAI,GAQ5C,OALIs+B,EAAQ0C,WAA8B,EAAjB5Z,EAAE9L,IAAIxb,KAAKw/B,MAClClY,EAAItnB,KAAKI,EAAE2gB,IAAIuG,GACf2Z,GAAiB,GAGZ,IAAI3B,EAAU,CAAEp/B,EAAGA,EAAGonB,EAAGA,EAAG2Z,cAAeA,UAItD1B,EAAGl8B,UAAU89B,OAAS,SAAgBznB,EAAKhR,EAAW/B,EAAKovB,GACzDrc,EAAM1Z,KAAKugC,aAAa,IAAIvmB,EAAGN,EAAK,KACpC/S,EAAM3G,KAAK6/B,cAAcl5B,EAAKovB,GAI9B,IAAI71B,GAHJwI,EAAY,IAAI42B,EAAU52B,EAAW,QAGnBxI,EACdonB,EAAI5e,EAAU4e,EAClB,GAAIpnB,EAAE6sB,KAAK,GAAK,GAAsB,GAAjB7sB,EAAEsb,IAAIxb,KAAKI,GAC9B,OAAO,EACT,GAAIknB,EAAEyF,KAAK,GAAK,GAAsB,GAAjBzF,EAAE9L,IAAIxb,KAAKI,GAC9B,OAAO,EAGT,IAeIU,EAfAsgC,EAAO9Z,EAAE0F,KAAKhtB,KAAKI,GACnBm7B,EAAK6F,EAAKjmB,IAAIzB,GAAK8R,KAAKxrB,KAAKI,GAC7Bo7B,EAAK4F,EAAKjmB,IAAIjb,GAAGsrB,KAAKxrB,KAAKI,GAE/B,OAAKJ,KAAKoyB,MAAM2B,gBAWZjzB,EAAId,KAAKmsB,EAAE4O,QAAQQ,EAAI50B,EAAI06B,YAAa7F,IACtCf,cAMC35B,EAAEm9B,OAAO/9B,KAjBVY,EAAId,KAAKmsB,EAAE2O,OAAOS,EAAI50B,EAAI06B,YAAa7F,IACrCf,cAGkC,IAAjC35B,EAAEs1B,OAAO5K,KAAKxrB,KAAKI,GAAGob,IAAItb,IAgBrCq/B,EAAGl8B,UAAUi+B,cAAgB,SAAS5nB,EAAKhR,EAAW0O,EAAG2e,GACvDvc,GAAQ,EAAIpC,KAAOA,EAAG,4CACtB1O,EAAY,IAAI42B,EAAU52B,EAAWqtB,GAErC,IAAI31B,EAAIJ,KAAKI,EACTD,EAAI,IAAI6Z,EAAGN,GACXxZ,EAAIwI,EAAUxI,EACdonB,EAAI5e,EAAU4e,EAGdia,EAAa,EAAJnqB,EACToqB,EAAcpqB,GAAK,EACvB,GAA8C,GAA1ClX,EAAEsb,IAAIxb,KAAKoyB,MAAMtxB,EAAE0qB,KAAKxrB,KAAKoyB,MAAMhyB,KAAYohC,EACjD,MAAM,IAAI5gC,MAAM,wCAIhBV,EADEshC,EACExhC,KAAKoyB,MAAM4D,WAAW91B,EAAE+I,IAAIjJ,KAAKoyB,MAAMhyB,GAAImhC,GAE3CvhC,KAAKoyB,MAAM4D,WAAW91B,EAAGqhC,GAE/B,IAAIE,EAAO/4B,EAAUxI,EAAE8sB,KAAK5sB,GACxBq7B,EAAKr7B,EAAE2gB,IAAI5gB,GAAGgb,IAAIsmB,GAAMjW,KAAKprB,GAC7Bs7B,EAAKpU,EAAEnM,IAAIsmB,GAAMjW,KAAKprB,GAI1B,OAAOJ,KAAKmsB,EAAE2O,OAAOW,EAAIv7B,EAAGw7B,IAG9B6D,EAAGl8B,UAAUq+B,oBAAsB,SAASvhC,EAAGuI,EAAWi5B,EAAG5L,GAE3D,GAAgC,QADhCrtB,EAAY,IAAI42B,EAAU52B,EAAWqtB,IACvBkL,cACZ,OAAOv4B,EAAUu4B,cAEnB,IAAK,IAAI1gC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,IAAIqhC,EACJ,IACEA,EAAS5hC,KAAKshC,cAAcnhC,EAAGuI,EAAWnI,GAC1C,MAAOJ,GACP,SAGF,GAAIyhC,EAAOhU,GAAG+T,GACZ,OAAOphC,EAEX,MAAM,IAAIK,MAAM,0CAGhB,CAACg2B,iBAAiB,GAAGiL,QAAQ,GAAGC,cAAc,GAAGjL,QAAQ,IAAIkL,GAAG,CAAC,SAASthC,EAAQf,EAAOD,GAC3F,aAEA,IAAIua,EAAKvZ,EAAQ,SAGb+Y,EAFW/Y,EAAQ,kBACF+Q,MACFgI,OAEnB,SAAS6lB,EAAQ/M,EAAIkM,GACnBx+B,KAAKsyB,GAAKA,EACVtyB,KAAK2/B,KAAO,KACZ3/B,KAAK8/B,IAAM,KAGPtB,EAAQmB,MACV3/B,KAAKgiC,eAAexD,EAAQmB,KAAMnB,EAAQyD,SACxCzD,EAAQsB,KACV9/B,KAAKkiC,cAAc1D,EAAQsB,IAAKtB,EAAQ2D,SAE5CziC,EAAOD,QAAU4/B,GAETU,WAAa,SAAoBzN,EAAIwN,EAAK/J,GAChD,OAAI+J,aAAeT,EACVS,EAEF,IAAIT,EAAQ/M,EAAI,CACrBwN,IAAKA,EACLqC,OAAQpM,KAIZsJ,EAAQO,YAAc,SAAqBtN,EAAIqN,EAAM5J,GACnD,OAAI4J,aAAgBN,EACXM,EAEF,IAAIN,EAAQ/M,EAAI,CACrBqN,KAAMA,EACNsC,QAASlM,KAIbsJ,EAAQh8B,UAAU8wB,SAAW,WAC3B,IAAI2L,EAAM9/B,KAAKqhC,YAEf,OAAIvB,EAAIrF,aACC,CAAE/2B,QAAQ,EAAO2E,OAAQ,sBAC7By3B,EAAI3L,WAEJ2L,EAAI3kB,IAAInb,KAAKsyB,GAAGF,MAAMhyB,GAAGq6B,aAGvB,CAAE/2B,QAAQ,EAAM2E,OAAQ,MAFtB,CAAE3E,QAAQ,EAAO2E,OAAQ,uBAFzB,CAAE3E,QAAQ,EAAO2E,OAAQ,8BAOpCg3B,EAAQh8B,UAAUg+B,UAAY,SAAmBlL,EAASJ,GAUxD,MARuB,iBAAZI,IACTJ,EAAMI,EACNA,EAAU,MAGPn2B,KAAK8/B,MACR9/B,KAAK8/B,IAAM9/B,KAAKsyB,GAAGnG,EAAEhR,IAAInb,KAAK2/B,OAE3B5J,EAGE/1B,KAAK8/B,IAAI73B,OAAO8tB,EAAKI,GAFnBn2B,KAAK8/B,KAKhBT,EAAQh8B,UAAUs9B,WAAa,SAAoB5K,GACjD,MAAY,QAARA,EACK/1B,KAAK2/B,KAAKlvB,SAAS,GAAI,GAEvBzQ,KAAK2/B,MAGhBN,EAAQh8B,UAAU2+B,eAAiB,SAAwBr7B,EAAKovB,GAC9D/1B,KAAK2/B,KAAO,IAAI3lB,EAAGrT,EAAKovB,GAAO,IAI/B/1B,KAAK2/B,KAAO3/B,KAAK2/B,KAAKnU,KAAKxrB,KAAKsyB,GAAGF,MAAMhyB,IAG3Ci/B,EAAQh8B,UAAU6+B,cAAgB,SAAuBv7B,EAAKovB,GAC5D,GAAIpvB,EAAI0f,GAAK1f,EAAI2f,EAWf,MAP2B,SAAvBtmB,KAAKsyB,GAAGF,MAAM1qB,KAChB8R,EAAO7S,EAAI0f,EAAG,qBACkB,UAAvBrmB,KAAKsyB,GAAGF,MAAM1qB,MACS,YAAvB1H,KAAKsyB,GAAGF,MAAM1qB,MACvB8R,EAAO7S,EAAI0f,GAAK1f,EAAI2f,EAAG,qCAEzBtmB,KAAK8/B,IAAM9/B,KAAKsyB,GAAGF,MAAM8B,MAAMvtB,EAAI0f,EAAG1f,EAAI2f,IAG5CtmB,KAAK8/B,IAAM9/B,KAAKsyB,GAAGF,MAAM0D,YAAYnvB,EAAKovB,IAI5CsJ,EAAQh8B,UAAU++B,OAAS,SAAgBtC,GACzC,OAAOA,EAAI3kB,IAAInb,KAAK2/B,MAAMvJ,QAI5BiJ,EAAQh8B,UAAUo9B,KAAO,SAAc/mB,EAAKqc,EAAKyI,GAC/C,OAAOx+B,KAAKsyB,GAAGmO,KAAK/mB,EAAK1Z,KAAM+1B,EAAKyI,IAGtCa,EAAQh8B,UAAU89B,OAAS,SAAgBznB,EAAKhR,GAC9C,OAAO1I,KAAKsyB,GAAG6O,OAAOznB,EAAKhR,EAAW1I,OAGxCq/B,EAAQh8B,UAAUyZ,QAAU,WAC1B,MAAO,eAAiB9c,KAAK2/B,MAAQ3/B,KAAK2/B,KAAKlvB,SAAS,GAAI,IACrD,UAAYzQ,KAAK8/B,KAAO9/B,KAAK8/B,IAAIhjB,WAAa,OAGrD,CAAC8Z,iBAAiB,GAAGC,QAAQ,IAAIwL,GAAG,CAAC,SAAS5hC,EAAQf,EAAOD,GAC/D,aAEA,IAAIua,EAAKvZ,EAAQ,SAGb+Q,EADW/Q,EAAQ,kBACF+Q,MACjBgI,EAAShI,EAAMgI,OAEnB,SAAS8lB,EAAUd,EAASzI,GAC1B,GAAIyI,aAAmBc,EACrB,OAAOd,EAELx+B,KAAKsiC,WAAW9D,EAASzI,KAG7Bvc,EAAOglB,EAAQt+B,GAAKs+B,EAAQlX,EAAG,4BAC/BtnB,KAAKE,EAAI,IAAI8Z,EAAGwkB,EAAQt+B,EAAG,IAC3BF,KAAKsnB,EAAI,IAAItN,EAAGwkB,EAAQlX,EAAG,SACG0X,IAA1BR,EAAQyC,cACVjhC,KAAKihC,cAAgB,KAErBjhC,KAAKihC,cAAgBzC,EAAQyC,eAIjC,SAASsB,IACPviC,KAAKwiC,MAAQ,EAGf,SAASC,EAAUC,EAAK5hC,GACtB,IAAI6hC,EAAUD,EAAI5hC,EAAE0hC,SACpB,KAAgB,IAAVG,GACJ,OAAOA,EAIT,IAFA,IAAIC,EAAqB,GAAVD,EACXlpB,EAAM,EACDlZ,EAAI,EAAG0b,EAAMnb,EAAE0hC,MAAOjiC,EAAIqiC,EAAUriC,IAAK0b,IAChDxC,IAAQ,EACRA,GAAOipB,EAAIzmB,GAGb,OADAnb,EAAE0hC,MAAQvmB,EACHxC,EAGT,SAASopB,EAAUH,GAGjB,IAFA,IAAIniC,EAAI,EACJwa,EAAM2nB,EAAI1hC,OAAS,GACf0hC,EAAIniC,MAAqB,IAAbmiC,EAAIniC,EAAI,KAAcA,EAAIwa,GAC5Cxa,IAEF,OAAU,IAANA,EACKmiC,EAEFA,EAAIr2B,MAAM9L,GAyCnB,SAASuiC,EAAgBC,EAAKhoB,GAC5B,GAAIA,EAAM,IACRgoB,EAAIv7B,KAAKuT,OADX,CAIA,IAAIioB,EAAS,GAAKhoB,KAAKtQ,IAAIqQ,GAAOC,KAAKioB,MAAQ,GAE/C,IADAF,EAAIv7B,KAAc,IAATw7B,KACAA,GACPD,EAAIv7B,KAAMuT,KAASioB,GAAU,GAAM,KAErCD,EAAIv7B,KAAKuT,KAjFXrb,EAAOD,QAAU6/B,GAiCPj8B,UAAUi/B,WAAa,SAAoB78B,EAAMswB,GACzDtwB,EAAO+L,EAAMsK,QAAQrW,EAAMswB,GAC3B,IAAIj1B,EAAI,IAAIyhC,EACZ,GAAwB,KAApB98B,EAAK3E,EAAE0hC,SACT,OAAO,EAGT,GADUC,EAAUh9B,EAAM3E,GACfA,EAAE0hC,QAAW/8B,EAAKzE,OAC3B,OAAO,EAET,GAAwB,IAApByE,EAAK3E,EAAE0hC,SACT,OAAO,EAET,IAAI/R,EAAOgS,EAAUh9B,EAAM3E,GACvBZ,EAAIuF,EAAK4G,MAAMvL,EAAE0hC,MAAO/R,EAAO3vB,EAAE0hC,OAErC,GADA1hC,EAAE0hC,OAAS/R,EACa,IAApBhrB,EAAK3E,EAAE0hC,SACT,OAAO,EAET,IAAIU,EAAOT,EAAUh9B,EAAM3E,GAC3B,GAAI2E,EAAKzE,SAAWkiC,EAAOpiC,EAAE0hC,MAC3B,OAAO,EAET,IAAIlb,EAAI7hB,EAAK4G,MAAMvL,EAAE0hC,MAAOU,EAAOpiC,EAAE0hC,OAYrC,OAXa,IAATtiC,EAAE,IAAoB,IAAPA,EAAE,KACnBA,EAAIA,EAAEmM,MAAM,IAED,IAATib,EAAE,IAAoB,IAAPA,EAAE,KACnBA,EAAIA,EAAEjb,MAAM,IAGdrM,KAAKE,EAAI,IAAI8Z,EAAG9Z,GAChBF,KAAKsnB,EAAI,IAAItN,EAAGsN,KAChBtnB,KAAKihC,cAAgB,OAkBvB3B,EAAUj8B,UAAU8/B,MAAQ,SAAepN,GACzC,IAAI71B,EAAIF,KAAKE,EAAE4b,UACXwL,EAAItnB,KAAKsnB,EAAExL,UAYf,IATW,IAAP5b,EAAE,KACJA,EAAI,CAAE,GAAIoN,OAAOpN,IAER,IAAPonB,EAAE,KACJA,EAAI,CAAE,GAAIha,OAAOga,IAEnBpnB,EAAI2iC,EAAU3iC,GACdonB,EAAIub,EAAUvb,KAENA,EAAE,IAAe,IAAPA,EAAE,KAClBA,EAAIA,EAAEjb,MAAM,GAEd,IAAI02B,EAAM,CAAE,GACZD,EAAgBC,EAAK7iC,EAAEc,SACvB+hC,EAAMA,EAAIz1B,OAAOpN,IACbsH,KAAK,GACTs7B,EAAgBC,EAAKzb,EAAEtmB,QACvB,IAAIoiC,EAAWL,EAAIz1B,OAAOga,GACtB/I,EAAM,CAAE,IAGZ,OAFAukB,EAAgBvkB,EAAK6kB,EAASpiC,QAC9Bud,EAAMA,EAAIjR,OAAO81B,GACV5xB,EAAMvJ,OAAOsW,EAAKwX,KAGzB,CAACa,iBAAiB,GAAGC,QAAQ,IAAIwM,GAAG,CAAC,SAAS5iC,EAAQf,EAAOD,GAC/D+G,UAAU,GAAG,IAAI,GAAG6G,MAAM5N,EAAQ+G,YAChC,CAAC8wB,IAAM,KAAKgM,GAAG,CAAC,SAAS7iC,EAAQf,EAAOD,GAC1C,aAEA,IAAI6+B,EAAO79B,EAAQ,WAEf+Q,EADW/Q,EAAQ,eACF+Q,MACjBgI,EAAShI,EAAMgI,OAEnB,SAAS+pB,EAAS/E,GAChB,KAAMx+B,gBAAgBujC,GACpB,OAAO,IAAIA,EAAS/E,GACtBx+B,KAAKs+B,KAAOE,EAAQF,KACpBt+B,KAAKwjC,aAAehF,EAAQgF,WAE5BxjC,KAAK8wB,OAAS9wB,KAAKs+B,KAAKmF,QACxBzjC,KAAK0jC,WAAalF,EAAQkF,YAAc1jC,KAAKs+B,KAAK8B,aAElDpgC,KAAK2jC,OAAS,KACd3jC,KAAK4jC,eAAiB,KACtB5jC,KAAK6jC,EAAI,KACT7jC,KAAK8jC,EAAI,KAET,IAAI3D,EAAU3uB,EAAMsK,QAAQ0iB,EAAQ2B,QAAS3B,EAAQuF,YACjDl+B,EAAQ2L,EAAMsK,QAAQ0iB,EAAQ34B,MAAO24B,EAAQwF,UAC7C9D,EAAO1uB,EAAMsK,QAAQ0iB,EAAQ0B,KAAM1B,EAAQoC,SAC/CpnB,EAAO2mB,EAAQn/B,QAAWhB,KAAK0jC,WAAa,EACrC,mCAAqC1jC,KAAK0jC,WAAa,SAC9D1jC,KAAKwa,MAAM2lB,EAASt6B,EAAOq6B,IAE7BxgC,EAAOD,QAAU8jC,GAERlgC,UAAUmX,MAAQ,SAAc2lB,EAASt6B,EAAOq6B,GACvD,IAAI+D,EAAO9D,EAAQ7yB,OAAOzH,GAAOyH,OAAO4yB,GAExClgC,KAAK6jC,EAAI,IAAI9gC,MAAM/C,KAAK8wB,OAAS,GACjC9wB,KAAK8jC,EAAI,IAAI/gC,MAAM/C,KAAK8wB,OAAS,GACjC,IAAK,IAAIvwB,EAAI,EAAGA,EAAIP,KAAK8jC,EAAE9iC,OAAQT,IACjCP,KAAK6jC,EAAEtjC,GAAK,EACZP,KAAK8jC,EAAEvjC,GAAK,EAGdP,KAAKkkC,QAAQD,GACbjkC,KAAK2jC,OAAS,EACd3jC,KAAK4jC,eAAiB,iBAGxBL,EAASlgC,UAAU8gC,MAAQ,WACzB,OAAO,IAAI7F,EAAK8F,KAAKpkC,KAAKs+B,KAAMt+B,KAAK6jC,IAGvCN,EAASlgC,UAAU6gC,QAAU,SAAgBD,GAC3C,IAAII,EAAOrkC,KAAKmkC,QACAG,OAAOtkC,KAAK8jC,GACZQ,OAAO,CAAE,IACrBL,IACFI,EAAOA,EAAKC,OAAOL,IACrBjkC,KAAK6jC,EAAIQ,EAAKE,SACdvkC,KAAK8jC,EAAI9jC,KAAKmkC,QAAQG,OAAOtkC,KAAK8jC,GAAGS,SAChCN,IAGLjkC,KAAK6jC,EAAI7jC,KAAKmkC,QACAG,OAAOtkC,KAAK8jC,GACZQ,OAAO,CAAE,IACTA,OAAOL,GACPM,SACdvkC,KAAK8jC,EAAI9jC,KAAKmkC,QAAQG,OAAOtkC,KAAK8jC,GAAGS,WAGvChB,EAASlgC,UAAUsgC,OAAS,SAAgBxD,EAAS4D,EAAY96B,EAAKu7B,GAE1C,iBAAfT,IACTS,EAASv7B,EACTA,EAAM86B,EACNA,EAAa,MAGf5D,EAAU3uB,EAAMyM,SAASkiB,EAAS4D,GAClC96B,EAAMuI,EAAMyM,SAAShV,EAAKu7B,GAE1BhrB,EAAO2mB,EAAQn/B,QAAWhB,KAAK0jC,WAAa,EACrC,mCAAqC1jC,KAAK0jC,WAAa,SAE9D1jC,KAAKkkC,QAAQ/D,EAAQ7yB,OAAOrE,GAAO,KACnCjJ,KAAK2jC,OAAS,GAGhBJ,EAASlgC,UAAUi9B,SAAW,SAAkBvlB,EAAKgb,EAAK9sB,EAAKu7B,GAC7D,GAAIxkC,KAAK2jC,OAAS3jC,KAAK4jC,eACrB,MAAM,IAAIhjC,MAAM,sBAGC,iBAARm1B,IACTyO,EAASv7B,EACTA,EAAM8sB,EACNA,EAAM,MAIJ9sB,IACFA,EAAMuI,EAAMsK,QAAQ7S,EAAKu7B,GACzBxkC,KAAKkkC,QAAQj7B,IAIf,IADA,IAAIw7B,EAAO,GACJA,EAAKzjC,OAAS+Z,GACnB/a,KAAK8jC,EAAI9jC,KAAKmkC,QAAQG,OAAOtkC,KAAK8jC,GAAGS,SACrCE,EAAOA,EAAKn3B,OAAOtN,KAAK8jC,GAG1B,IAAIvlB,EAAMkmB,EAAKp4B,MAAM,EAAG0O,GAGxB,OAFA/a,KAAKkkC,QAAQj7B,GACbjJ,KAAK2jC,SACEnyB,EAAMvJ,OAAOsW,EAAKwX,KAGzB,CAACkJ,cAAc,GAAGE,UAAU,KAAKtqB,GAAG,CAAC,SAASpU,EAAQf,EAAOD,GAC/DC,EAAOD,aAAUu/B,GACf,IAAI0F,GAAG,CAAC,SAASjkC,EAAQf,EAAOD,GAClC,aAEA,IAAI+R,EAAQ/R,EACRua,EAAKvZ,EAAQ,SAuCjB,SAASkkC,EAAMtoB,GACb,OAAoB,IAAhBA,EAAKrb,OACA,IAAMqb,EAENA,EAIX,SAASuoB,EAAMlrB,GAEb,IADA,IAAI6E,EAAM,GACDhe,EAAI,EAAGA,EAAImZ,EAAI1Y,OAAQT,IAC9Bge,GAAOomB,EAAMjrB,EAAInZ,GAAGkQ,SAAS,KAC/B,OAAO8N,EAjDT/M,EAAMgI,OAAS,SAAgBC,EAAKC,GAClC,IAAKD,EACH,MAAM,IAAI7Y,MAAM8Y,GAAO,qBAiC3BlI,EAAMsK,QA9BN,SAAiBpC,EAAKqc,GACpB,GAAIhzB,MAAMoE,QAAQuS,GAChB,OAAOA,EAAIrN,QACb,IAAKqN,EACH,MAAO,GACT,IAAI6E,EAAM,GACV,GAAmB,iBAAR7E,EAAkB,CAC3B,IAAK,IAAInZ,EAAI,EAAGA,EAAImZ,EAAI1Y,OAAQT,IAC9Bge,EAAIhe,GAAc,EAATmZ,EAAInZ,GACf,OAAOge,EAET,GAAKwX,GAUE,GAAY,QAARA,EAIT,KAHArc,EAAMA,EAAIiC,QAAQ,eAAgB,KAC1B3a,OAAS,GAAM,IACrB0Y,EAAM,IAAMA,GACLnZ,EAAI,EAAGA,EAAImZ,EAAI1Y,OAAQT,GAAK,EACnCge,EAAI/W,KAAKsL,SAAS4G,EAAInZ,GAAKmZ,EAAInZ,EAAI,GAAI,UAdzC,IAAK,IAAIA,EAAI,EAAGA,EAAImZ,EAAI1Y,OAAQT,IAAK,CACnC,IAAIC,EAAIkZ,EAAItF,WAAW7T,GACnBwe,EAAKve,GAAK,EACV4c,EAAS,IAAJ5c,EACLue,EACFR,EAAI/W,KAAKuX,EAAI3B,GAEbmB,EAAI/W,KAAK4V,GASf,OAAOmB,GAUT/M,EAAMmzB,MAAQA,EAQdnzB,EAAMozB,MAAQA,EAEdpzB,EAAMvJ,OAAS,SAAgB86B,EAAKhN,GAClC,MAAY,QAARA,EACK6O,EAAM7B,GAENA,GA+BXvxB,EAAMyhB,OA3BN,SAAgB7X,EAAKY,GAInB,IAHA,IAAIuY,EAAM,GACNhM,EAAK,GAAMvM,EAAI,EACfrY,EAAIyX,EAAIsB,QACQ,GAAb/Y,EAAEopB,KAAK,IAAS,CACrB,IAAIsE,EACJ,GAAI1tB,EAAE6oB,QAAS,CACb,IAAIhpB,EAAMG,EAAE8a,MAAM8J,EAAK,GAErB8I,GADS9I,GAAM,GAAK,EAAlB/kB,GACG+kB,GAAM,GAAK/kB,EAEZA,EACNG,EAAE8mB,MAAM4G,QAERA,EAAI,EAENkD,EAAI/sB,KAAK6pB,GAIT,IADA,IAAIvG,EAAuB,IAAdnnB,EAAEopB,KAAK,IAAgC,IAApBppB,EAAE8a,MAAM8J,EAAK,GAAavM,EAAI,EAAK,EAC1Dzb,EAAI,EAAGA,EAAIuqB,EAAOvqB,IACzBg0B,EAAI/sB,KAAK,GACX7D,EAAE+a,OAAOoM,GAGX,OAAOyJ,GA2DT/iB,EAAM0hB,OAtDN,SAAgB2G,EAAIC,GAClB,IAAInE,EAAM,CACR,GACA,IAGFkE,EAAKA,EAAGnd,QACRod,EAAKA,EAAGpd,QAGR,IAFA,IAAImoB,EAAK,EACLC,EAAK,EACa,EAAfjL,EAAG9M,MAAM8X,IAA0B,EAAf/K,EAAG/M,MAAM+X,IAAS,CAG3C,IAMIvJ,EAYAC,EAIEuJ,EAtBFC,EAAOnL,EAAGpb,MAAM,GAAKomB,EAAM,EAC3BI,EAAOnL,EAAGrb,MAAM,GAAKqmB,EAAM,EACnB,IAARE,IACFA,GAAO,GACG,IAARC,IACFA,GAAO,GAGP1J,EADgB,IAAP,EAANyJ,GACE,EAGO,IADRD,EAAMlL,EAAGpb,MAAM,GAAKomB,EAAM,IACN,IAAPE,GAAqB,IAARE,EAGvBD,GAFCA,EAIVrP,EAAI,GAAGnuB,KAAK+zB,GAIVC,EADgB,IAAP,EAANyJ,GACE,EAGO,IADRF,EAAMjL,EAAGrb,MAAM,GAAKqmB,EAAM,IACN,IAAPC,GAAqB,IAARC,EAGvBC,GAFCA,EAIVtP,EAAI,GAAGnuB,KAAKg0B,GAGR,EAAIqJ,IAAOtJ,EAAK,IAClBsJ,EAAK,EAAIA,GACP,EAAIC,IAAOtJ,EAAK,IAClBsJ,EAAK,EAAIA,GACXjL,EAAGnb,OAAO,GACVob,EAAGpb,OAAO,GAGZ,OAAOiX,GAWTnkB,EAAM0zB,eAPN,SAAwB9K,EAAK7yB,EAAM49B,GACjC,IAAIx+B,EAAM,IAAMY,EAChB6yB,EAAI/2B,UAAUkE,GAAQ,WACpB,YAAqBy3B,IAAdh/B,KAAK2G,GAAqB3G,KAAK2G,GAC/B3G,KAAK2G,GAAOw+B,EAASpkC,KAAKf,QASrCwR,EAAM4zB,WAJN,SAAoB7wB,GAClB,MAAwB,iBAAVA,EAAqB/C,EAAMsK,QAAQvH,EAAO,OACrBA,GAOrC/C,EAAM6zB,UAHN,SAAmB9wB,GACjB,OAAO,IAAIyF,EAAGzF,EAAO,MAAO,QAK5B,CAACsiB,QAAQ,IAAIyO,GAAG,CAAC,SAAS7kC,EAAQf,EAAOD,GAC3CC,EAAOD,QAAQ,CAAC4B,QAAU,UACxB,IAAIkkC,GAAG,CAAC,SAAS9kC,EAAQf,EAAOD,GAClC,IAAI6+B,EAAO7+B,EAEX6+B,EAAK9sB,MAAQ/Q,EAAQ,gBACrB69B,EAAKkH,OAAS/kC,EAAQ,iBACtB69B,EAAKmH,IAAMhlC,EAAQ,cACnB69B,EAAKoH,OAASjlC,EAAQ,iBACtB69B,EAAK8F,KAAO3jC,EAAQ,eAGpB69B,EAAKqH,KAAOrH,EAAKmH,IAAIE,KACrBrH,EAAKO,OAASP,EAAKmH,IAAI5G,OACvBP,EAAKsH,OAAStH,EAAKmH,IAAIG,OACvBtH,EAAKQ,OAASR,EAAKmH,IAAI3G,OACvBR,EAAKS,OAAST,EAAKmH,IAAI1G,OACvBT,EAAKuH,UAAYvH,EAAKoH,OAAOG,WAE3B,CAACC,gBAAgB,GAAGC,cAAc,GAAGC,gBAAgB,GAAGC,aAAa,GAAGC,eAAe,KAAKC,GAAG,CAAC,SAAS1lC,EAAQf,EAAOD,GAC1H,aAEA,IAAI+R,EAAQ/Q,EAAQ,WAChB+Y,EAAS/Y,EAAQ,uBAErB,SAAS2lC,IACPpmC,KAAKqmC,QAAU,KACfrmC,KAAKsmC,aAAe,EACpBtmC,KAAKumC,UAAYvmC,KAAKoD,YAAYmjC,UAClCvmC,KAAKyjC,QAAUzjC,KAAKoD,YAAYqgC,QAChCzjC,KAAKogC,aAAepgC,KAAKoD,YAAYg9B,aACrCpgC,KAAKwmC,UAAYxmC,KAAKoD,YAAYojC,UAAY,EAC9CxmC,KAAKma,OAAS,MAEdna,KAAKymC,QAAUzmC,KAAKumC,UAAY,EAChCvmC,KAAK0mC,SAAW1mC,KAAKumC,UAAY,IAEnC9mC,EAAQ2mC,UAAYA,GAEV/iC,UAAUihC,OAAS,SAAgB5qB,EAAKqc,GAUhD,GARArc,EAAMlI,EAAMsK,QAAQpC,EAAKqc,GACpB/1B,KAAKqmC,QAGRrmC,KAAKqmC,QAAUrmC,KAAKqmC,QAAQ/4B,OAAOoM,GAFnC1Z,KAAKqmC,QAAU3sB,EAGjB1Z,KAAKsmC,cAAgB5sB,EAAI1Y,OAGrBhB,KAAKqmC,QAAQrlC,QAAUhB,KAAKymC,QAAS,CAIvC,IAAIvmC,GAHJwZ,EAAM1Z,KAAKqmC,SAGCrlC,OAAShB,KAAKymC,QAC1BzmC,KAAKqmC,QAAU3sB,EAAIrN,MAAMqN,EAAI1Y,OAASd,EAAGwZ,EAAI1Y,QACjB,IAAxBhB,KAAKqmC,QAAQrlC,SACfhB,KAAKqmC,QAAU,MAEjB3sB,EAAMlI,EAAMm1B,OAAOjtB,EAAK,EAAGA,EAAI1Y,OAASd,EAAGF,KAAKma,QAChD,IAAK,IAAI5Z,EAAI,EAAGA,EAAImZ,EAAI1Y,OAAQT,GAAKP,KAAK0mC,SACxC1mC,KAAKkkC,QAAQxqB,EAAKnZ,EAAGA,EAAIP,KAAK0mC,UAGlC,OAAO1mC,MAGTomC,EAAU/iC,UAAUkhC,OAAS,SAAgBxO,GAI3C,OAHA/1B,KAAKskC,OAAOtkC,KAAK4mC,QACjBptB,EAAwB,OAAjBxZ,KAAKqmC,SAELrmC,KAAK6mC,QAAQ9Q,IAGtBqQ,EAAU/iC,UAAUujC,KAAO,WACzB,IAAI7rB,EAAM/a,KAAKsmC,aACX/xB,EAAQvU,KAAKymC,QACb9iC,EAAI4Q,GAAUwG,EAAM/a,KAAKwmC,WAAajyB,EACtCgK,EAAM,IAAIxb,MAAMY,EAAI3D,KAAKwmC,WAC7BjoB,EAAI,GAAK,IACT,IAAK,IAAIhe,EAAI,EAAGA,EAAIoD,EAAGpD,IACrBge,EAAIhe,GAAK,EAIX,GADAwa,IAAQ,EACY,QAAhB/a,KAAKma,OAAkB,CACzB,IAAK,IAAI9Z,EAAI,EAAGA,EAAIL,KAAKwmC,UAAWnmC,IAClCke,EAAIhe,KAAO,EAEbge,EAAIhe,KAAO,EACXge,EAAIhe,KAAO,EACXge,EAAIhe,KAAO,EACXge,EAAIhe,KAAO,EACXge,EAAIhe,KAAQwa,IAAQ,GAAM,IAC1BwD,EAAIhe,KAAQwa,IAAQ,GAAM,IAC1BwD,EAAIhe,KAAQwa,IAAQ,EAAK,IACzBwD,EAAIhe,KAAa,IAANwa,OAWX,IATAwD,EAAIhe,KAAa,IAANwa,EACXwD,EAAIhe,KAAQwa,IAAQ,EAAK,IACzBwD,EAAIhe,KAAQwa,IAAQ,GAAM,IAC1BwD,EAAIhe,KAAQwa,IAAQ,GAAM,IAC1BwD,EAAIhe,KAAO,EACXge,EAAIhe,KAAO,EACXge,EAAIhe,KAAO,EACXge,EAAIhe,KAAO,EAENF,EAAI,EAAGA,EAAIL,KAAKwmC,UAAWnmC,IAC9Bke,EAAIhe,KAAO,EAGf,OAAOge,IAGP,CAACpM,UAAU,GAAG20B,sBAAsB,KAAKC,GAAG,CAAC,SAAStmC,EAAQf,EAAOD,GACvE,aAEA,IAAI+R,EAAQ/Q,EAAQ,WAChB+Y,EAAS/Y,EAAQ,uBAErB,SAASumC,EAAK1I,EAAM33B,EAAKovB,GACvB,KAAM/1B,gBAAgBgnC,GACpB,OAAO,IAAIA,EAAK1I,EAAM33B,EAAKovB,GAC7B/1B,KAAKinC,KAAO3I,EACZt+B,KAAKumC,UAAYjI,EAAKiI,UAAY,EAClCvmC,KAAKyjC,QAAUnF,EAAKmF,QAAU,EAC9BzjC,KAAKknC,MAAQ,KACblnC,KAAKmnC,MAAQ,KAEbnnC,KAAKwa,MAAMhJ,EAAMsK,QAAQnV,EAAKovB,KAEhCr2B,EAAOD,QAAUunC,GAEZ3jC,UAAUmX,MAAQ,SAAc7T,GAE/BA,EAAI3F,OAAShB,KAAKumC,YACpB5/B,GAAM,IAAI3G,KAAKinC,MAAO3C,OAAO39B,GAAK49B,UACpC/qB,EAAO7S,EAAI3F,QAAUhB,KAAKumC,WAG1B,IAAK,IAAIhmC,EAAIoG,EAAI3F,OAAQT,EAAIP,KAAKumC,UAAWhmC,IAC3CoG,EAAIa,KAAK,GAEX,IAAKjH,EAAI,EAAGA,EAAIoG,EAAI3F,OAAQT,IAC1BoG,EAAIpG,IAAM,GAIZ,IAHAP,KAAKknC,OAAQ,IAAIlnC,KAAKinC,MAAO3C,OAAO39B,GAG/BpG,EAAI,EAAGA,EAAIoG,EAAI3F,OAAQT,IAC1BoG,EAAIpG,IAAM,IACZP,KAAKmnC,OAAQ,IAAInnC,KAAKinC,MAAO3C,OAAO39B,IAGtCqgC,EAAK3jC,UAAUihC,OAAS,SAAgB5qB,EAAKqc,GAE3C,OADA/1B,KAAKknC,MAAM5C,OAAO5qB,EAAKqc,GAChB/1B,MAGTgnC,EAAK3jC,UAAUkhC,OAAS,SAAgBxO,GAEtC,OADA/1B,KAAKmnC,MAAM7C,OAAOtkC,KAAKknC,MAAM3C,UACtBvkC,KAAKmnC,MAAM5C,OAAOxO,KAGzB,CAAC5jB,UAAU,GAAG20B,sBAAsB,KAAKM,GAAG,CAAC,SAAS3mC,EAAQf,EAAOD,GACvEC,EAAOD,QAAU,CAAComC,UAAW,OAC3B,IAAIwB,GAAG,CAAC,SAAS5mC,EAAQf,EAAOD,GAClC,aAEAA,EAAQkmC,KAAOllC,EAAQ,WACvBhB,EAAQmmC,OAASnlC,EAAQ,aACzBhB,EAAQo/B,OAASp+B,EAAQ,aACzBhB,EAAQq/B,OAASr+B,EAAQ,aACzBhB,EAAQs/B,OAASt+B,EAAQ,cAEvB,CAAC6mC,UAAU,GAAGC,YAAY,GAAGC,YAAY,GAAGC,YAAY,GAAGC,YAAY,KAAK5yB,GAAG,CAAC,SAASrU,EAAQf,EAAOD,GAC1G+G,UAAU,GAAG,IAAI,GAAG6G,MAAM5N,EAAQ+G,YAChC,CAAC8wB,IAAM,KAAKqQ,GAAG,CAAC,SAASlnC,EAAQf,EAAOD,GAC1C+G,UAAU,GAAG,IAAI,GAAG6G,MAAM5N,EAAQ+G,YAChC,CAAC8wB,IAAM,KAAKsQ,GAAG,CAAC,SAASnnC,EAAQf,EAAOD,GAC1C,aAEA,IAAI+R,EAAQ/Q,EAAQ,YAChB+kC,EAAS/kC,EAAQ,aACjBonC,EAAYpnC,EAAQ,YACpB+Y,EAAS/Y,EAAQ,uBAEjBqnC,EAAQt2B,EAAMs2B,MACdC,EAAUv2B,EAAMu2B,QAChBC,EAAUx2B,EAAMw2B,QAChBC,EAAOJ,EAAUI,KACjBC,EAAQL,EAAUK,MAClBC,EAASN,EAAUM,OACnBC,EAASP,EAAUO,OACnBC,EAASR,EAAUQ,OACnBC,EAAST,EAAUS,OAEnBlC,EAAYZ,EAAOY,UAEnBmC,EAAW,CACb,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,YAGtC,SAASC,IACP,KAAMxoC,gBAAgBwoC,GACpB,OAAO,IAAIA,EAEbpC,EAAUrlC,KAAKf,MACfA,KAAK+pB,EAAI,CACP,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,YAEtC/pB,KAAK2D,EAAI4kC,EACTvoC,KAAKyoC,EAAI,IAAI1lC,MAAM,IAErByO,EAAMmI,SAAS6uB,EAAQpC,IACvB1mC,EAAOD,QAAU+oC,GAEVjC,UAAY,IACnBiC,EAAO/E,QAAU,IACjB+E,EAAOpI,aAAe,IACtBoI,EAAOhC,UAAY,GAEnBgC,EAAOnlC,UAAU6gC,QAAU,SAAiBxqB,EAAKmB,GAG/C,IAFA,IAAI4tB,EAAIzoC,KAAKyoC,EAEJloC,EAAI,EAAGA,EAAI,GAAIA,IACtBkoC,EAAEloC,GAAKmZ,EAAImB,EAAQta,GACrB,KAAOA,EAAIkoC,EAAEznC,OAAQT,IACnBkoC,EAAEloC,GAAKwnC,EAAQO,EAAOG,EAAEloC,EAAI,IAAKkoC,EAAEloC,EAAI,GAAI8nC,EAAOI,EAAEloC,EAAI,KAAMkoC,EAAEloC,EAAI,KAEtE,IAAII,EAAIX,KAAK+pB,EAAE,GACX9mB,EAAIjD,KAAK+pB,EAAE,GACXvpB,EAAIR,KAAK+pB,EAAE,GACX/mB,EAAIhD,KAAK+pB,EAAE,GACX5pB,EAAIH,KAAK+pB,EAAE,GACXvqB,EAAIQ,KAAK+pB,EAAE,GACXoC,EAAInsB,KAAK+pB,EAAE,GACXA,EAAI/pB,KAAK+pB,EAAE,GAGf,IADAvQ,EAAOxZ,KAAK2D,EAAE3C,SAAWynC,EAAEznC,QACtBT,EAAI,EAAGA,EAAIkoC,EAAEznC,OAAQT,IAAK,CAC7B,IAAI2U,EAAK8yB,EAAQje,EAAGqe,EAAOjoC,GAAI8nC,EAAK9nC,EAAGX,EAAG2sB,GAAInsB,KAAK2D,EAAEpD,GAAIkoC,EAAEloC,IACvD4U,EAAK2yB,EAAMK,EAAOxnC,GAAIunC,EAAMvnC,EAAGsC,EAAGzC,IACtCupB,EAAIoC,EACJA,EAAI3sB,EACJA,EAAIW,EACJA,EAAI2nC,EAAM9kC,EAAGkS,GACblS,EAAIxC,EACJA,EAAIyC,EACJA,EAAItC,EACJA,EAAImnC,EAAM5yB,EAAIC,GAGhBnV,KAAK+pB,EAAE,GAAK+d,EAAM9nC,KAAK+pB,EAAE,GAAIppB,GAC7BX,KAAK+pB,EAAE,GAAK+d,EAAM9nC,KAAK+pB,EAAE,GAAI9mB,GAC7BjD,KAAK+pB,EAAE,GAAK+d,EAAM9nC,KAAK+pB,EAAE,GAAIvpB,GAC7BR,KAAK+pB,EAAE,GAAK+d,EAAM9nC,KAAK+pB,EAAE,GAAI/mB,GAC7BhD,KAAK+pB,EAAE,GAAK+d,EAAM9nC,KAAK+pB,EAAE,GAAI5pB,GAC7BH,KAAK+pB,EAAE,GAAK+d,EAAM9nC,KAAK+pB,EAAE,GAAIvqB,GAC7BQ,KAAK+pB,EAAE,GAAK+d,EAAM9nC,KAAK+pB,EAAE,GAAIoC,GAC7BnsB,KAAK+pB,EAAE,GAAK+d,EAAM9nC,KAAK+pB,EAAE,GAAIA,IAG/Bye,EAAOnlC,UAAUwjC,QAAU,SAAgB9Q,GACzC,MAAY,QAARA,EACKvkB,EAAMk3B,QAAQ1oC,KAAK+pB,EAAG,OAEtBvY,EAAMm3B,QAAQ3oC,KAAK+pB,EAAG,SAG/B,CAAC6e,YAAY,GAAGC,WAAW,GAAGC,WAAW,GAAGhC,sBAAsB,KAAKiC,GAAG,CAAC,SAAStoC,EAAQf,EAAOD,GACrG+G,UAAU,GAAG,IAAI,GAAG6G,MAAM5N,EAAQ+G,YAChC,CAAC8wB,IAAM,KAAK0R,GAAG,CAAC,SAASvoC,EAAQf,EAAOD,GAC1C,aAEA,IAAI+R,EAAQ/Q,EAAQ,YAChB+kC,EAAS/kC,EAAQ,aACjB+Y,EAAS/Y,EAAQ,uBAEjBwoC,EAAYz3B,EAAMy3B,UAClBC,EAAY13B,EAAM03B,UAClBC,EAAW33B,EAAM23B,SACjBC,EAAW53B,EAAM43B,SACjBC,EAAQ73B,EAAM63B,MACdC,EAAW93B,EAAM83B,SACjBC,EAAW/3B,EAAM+3B,SACjBC,EAAah4B,EAAMg4B,WACnBC,EAAaj4B,EAAMi4B,WACnBC,EAAal4B,EAAMk4B,WACnBC,EAAan4B,EAAMm4B,WAEnBvD,EAAYZ,EAAOY,UAEnBwD,EAAW,CACb,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,UAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,YAGtC,SAASC,IACP,KAAM7pC,gBAAgB6pC,GACpB,OAAO,IAAIA,EAEbzD,EAAUrlC,KAAKf,MACfA,KAAK+pB,EAAI,CACP,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,UACZ,UAAY,WACZ,WAAY,WACd/pB,KAAK2D,EAAIimC,EACT5pC,KAAKyoC,EAAI,IAAI1lC,MAAM,KAyIrB,SAAS+mC,EAAQC,EAAIC,EAAIC,EAAIC,EAAIC,GAC/B,IAAIjqC,EAAK6pC,EAAKE,GAASF,EAAMI,EAG7B,OAFIjqC,EAAI,IACNA,GAAK,YACAA,EAGT,SAASkqC,EAAQL,EAAIC,EAAIC,EAAIC,EAAIC,EAAIE,GACnC,IAAInqC,EAAK8pC,EAAKE,GAASF,EAAMK,EAG7B,OAFInqC,EAAI,IACNA,GAAK,YACAA,EAGT,SAASoqC,EAASP,EAAIC,EAAIC,EAAIC,EAAIC,GAChC,IAAIjqC,EAAK6pC,EAAKE,EAAOF,EAAKI,EAAOF,EAAKE,EAGtC,OAFIjqC,EAAI,IACNA,GAAK,YACAA,EAGT,SAASqqC,EAASR,EAAIC,EAAIC,EAAIC,EAAIC,EAAIE,GACpC,IAAInqC,EAAK8pC,EAAKE,EAAOF,EAAKK,EAAOH,EAAKG,EAGtC,OAFInqC,EAAI,IACNA,GAAK,YACAA,EAGT,SAASsqC,EAAUT,EAAIC,GACrB,IAII9pC,EAJQ+oC,EAAUc,EAAIC,EAAI,IAClBf,EAAUe,EAAID,EAAI,GAClBd,EAAUe,EAAID,EAAI,GAK9B,OAFI7pC,EAAI,IACNA,GAAK,YACAA,EAGT,SAASuqC,EAAUV,EAAIC,GACrB,IAII9pC,EAJQgpC,EAAUa,EAAIC,EAAI,IAClBd,EAAUc,EAAID,EAAI,GAClBb,EAAUc,EAAID,EAAI,GAK9B,OAFI7pC,EAAI,IACNA,GAAK,YACAA,EAGT,SAASwqC,EAAUX,EAAIC,GACrB,IAII9pC,EAJQ+oC,EAAUc,EAAIC,EAAI,IAClBf,EAAUc,EAAIC,EAAI,IAClBf,EAAUe,EAAID,EAAI,GAK9B,OAFI7pC,EAAI,IACNA,GAAK,YACAA,EAGT,SAASyqC,EAAUZ,EAAIC,GACrB,IAII9pC,EAJQgpC,EAAUa,EAAIC,EAAI,IAClBd,EAAUa,EAAIC,EAAI,IAClBd,EAAUc,EAAID,EAAI,GAK9B,OAFI7pC,EAAI,IACNA,GAAK,YACAA,EAGT,SAAS0qC,EAAUb,EAAIC,GACrB,IAII9pC,EAJQ+oC,EAAUc,EAAIC,EAAI,GAClBf,EAAUc,EAAIC,EAAI,GAClBb,EAASY,EAAIC,EAAI,GAK7B,OAFI9pC,EAAI,IACNA,GAAK,YACAA,EAGT,SAAS2qC,EAAUd,EAAIC,GACrB,IAII9pC,EAJQgpC,EAAUa,EAAIC,EAAI,GAClBd,EAAUa,EAAIC,EAAI,GAClBZ,EAASW,EAAIC,EAAI,GAK7B,OAFI9pC,EAAI,IACNA,GAAK,YACAA,EAGT,SAAS4qC,EAAUf,EAAIC,GACrB,IAII9pC,EAJQ+oC,EAAUc,EAAIC,EAAI,IAClBf,EAAUe,EAAID,EAAI,IAClBZ,EAASY,EAAIC,EAAI,GAK7B,OAFI9pC,EAAI,IACNA,GAAK,YACAA,EAGT,SAAS6qC,EAAUhB,EAAIC,GACrB,IAII9pC,EAJQgpC,EAAUa,EAAIC,EAAI,IAClBd,EAAUc,EAAID,EAAI,IAClBX,EAASW,EAAIC,EAAI,GAK7B,OAFI9pC,EAAI,IACNA,GAAK,YACAA,EAxPTsR,EAAMmI,SAASkwB,EAAQzD,IACvB1mC,EAAOD,QAAUoqC,GAEVtD,UAAY,KACnBsD,EAAOpG,QAAU,IACjBoG,EAAOzJ,aAAe,IACtByJ,EAAOrD,UAAY,IAEnBqD,EAAOxmC,UAAU2nC,cAAgB,SAAuBtxB,EAAKmB,GAI3D,IAHA,IAAI4tB,EAAIzoC,KAAKyoC,EAGJloC,EAAI,EAAGA,EAAI,GAAIA,IACtBkoC,EAAEloC,GAAKmZ,EAAImB,EAAQta,GACrB,KAAOA,EAAIkoC,EAAEznC,OAAQT,GAAK,EAAG,CAC3B,IAAI0qC,EAAQH,EAAUrC,EAAEloC,EAAI,GAAIkoC,EAAEloC,EAAI,IAClC2qC,EAAQH,EAAUtC,EAAEloC,EAAI,GAAIkoC,EAAEloC,EAAI,IAClC4qC,EAAQ1C,EAAEloC,EAAI,IACd6qC,EAAQ3C,EAAEloC,EAAI,IACd8qC,EAAQT,EAAUnC,EAAEloC,EAAI,IAAKkoC,EAAEloC,EAAI,KACnC+qC,EAAQT,EAAUpC,EAAEloC,EAAI,IAAKkoC,EAAEloC,EAAI,KACnCgrC,EAAQ9C,EAAEloC,EAAI,IACdirC,EAAQ/C,EAAEloC,EAAI,IAElBkoC,EAAEloC,GAAKipC,EACLyB,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPC,EAAOC,GACT/C,EAAEloC,EAAI,GAAKkpC,EACTwB,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPC,EAAOC,KAIb3B,EAAOxmC,UAAU6gC,QAAU,SAAiBxqB,EAAKmB,GAC/C7a,KAAKgrC,cAActxB,EAAKmB,GAExB,IAAI4tB,EAAIzoC,KAAKyoC,EAETgD,EAAKzrC,KAAK+pB,EAAE,GACZ2hB,EAAK1rC,KAAK+pB,EAAE,GACZ4hB,EAAK3rC,KAAK+pB,EAAE,GACZ6hB,EAAK5rC,KAAK+pB,EAAE,GACZ8hB,EAAK7rC,KAAK+pB,EAAE,GACZ+hB,EAAK9rC,KAAK+pB,EAAE,GACZgiB,EAAK/rC,KAAK+pB,EAAE,GACZiiB,EAAKhsC,KAAK+pB,EAAE,GACZkiB,EAAKjsC,KAAK+pB,EAAE,GACZmiB,EAAKlsC,KAAK+pB,EAAE,GACZoiB,EAAKnsC,KAAK+pB,EAAE,IACZqiB,EAAKpsC,KAAK+pB,EAAE,IACZsiB,EAAKrsC,KAAK+pB,EAAE,IACZuiB,EAAKtsC,KAAK+pB,EAAE,IACZwiB,EAAKvsC,KAAK+pB,EAAE,IACZyiB,EAAKxsC,KAAK+pB,EAAE,IAEhBvQ,EAAOxZ,KAAK2D,EAAE3C,SAAWynC,EAAEznC,QAC3B,IAAK,IAAIT,EAAI,EAAGA,EAAIkoC,EAAEznC,OAAQT,GAAK,EAAG,CACpC,IAAI0qC,EAAQsB,EACRrB,EAAQsB,EACRrB,EAAQT,EAAUuB,EAAIC,GACtBd,EAAQT,EAAUsB,EAAIC,GACtBb,EAAQvB,EAAQmC,EAAIC,EAAIC,EAAIC,EAAIC,GAChCf,EAAQlB,EAAQ6B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GACpCf,EAAQvrC,KAAK2D,EAAEpD,GACfirC,EAAQxrC,KAAK2D,EAAEpD,EAAI,GACnBksC,EAAQhE,EAAEloC,GACVmsC,EAAQjE,EAAEloC,EAAI,GAEdosC,EAAQjD,EACVuB,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPiB,EAAOC,GACLE,EAAQjD,EACVsB,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPC,EAAOC,EACPiB,EAAOC,GAETzB,EAAQT,EAAUiB,EAAIC,GACtBR,EAAQT,EAAUgB,EAAIC,GACtBP,EAAQb,EAASmB,EAAIC,EAAIC,EAAIC,EAAIC,GACjCT,EAAQb,EAASkB,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAErC,IAAIe,EAAQvD,EAAS2B,EAAOC,EAAOC,EAAOC,GACtC0B,EAAQvD,EAAS0B,EAAOC,EAAOC,EAAOC,GAE1CmB,EAAKF,EACLG,EAAKF,EAELD,EAAKF,EACLG,EAAKF,EAELD,EAAKF,EACLG,EAAKF,EAELD,EAAK3C,EAASyC,EAAIC,EAAIW,EAAOC,GAC7BV,EAAK3C,EAASyC,EAAIA,EAAIW,EAAOC,GAE7Bb,EAAKF,EACLG,EAAKF,EAELD,EAAKF,EACLG,EAAKF,EAELD,EAAKF,EACLG,EAAKF,EAELD,EAAKnC,EAASqD,EAAOC,EAAOC,EAAOC,GACnCpB,EAAKnC,EAASoD,EAAOC,EAAOC,EAAOC,GAGrCzD,EAAMrpC,KAAK+pB,EAAG,EAAG0hB,EAAIC,GACrBrC,EAAMrpC,KAAK+pB,EAAG,EAAG4hB,EAAIC,GACrBvC,EAAMrpC,KAAK+pB,EAAG,EAAG8hB,EAAIC,GACrBzC,EAAMrpC,KAAK+pB,EAAG,EAAGgiB,EAAIC,GACrB3C,EAAMrpC,KAAK+pB,EAAG,EAAGkiB,EAAIC,GACrB7C,EAAMrpC,KAAK+pB,EAAG,GAAIoiB,EAAIC,GACtB/C,EAAMrpC,KAAK+pB,EAAG,GAAIsiB,EAAIC,GACtBjD,EAAMrpC,KAAK+pB,EAAG,GAAIwiB,EAAIC,IAGxB3C,EAAOxmC,UAAUwjC,QAAU,SAAgB9Q,GACzC,MAAY,QAARA,EACKvkB,EAAMk3B,QAAQ1oC,KAAK+pB,EAAG,OAEtBvY,EAAMm3B,QAAQ3oC,KAAK+pB,EAAG,SAuH/B,CAAC6e,YAAY,GAAGC,WAAW,GAAG/B,sBAAsB,KAAKiG,GAAG,CAAC,SAAStsC,EAAQf,EAAOD,GACvF,aAEA,IACIutC,EADQvsC,EAAQ,YACDusC,OAYnB,SAAS/E,EAAK5hB,EAAGC,EAAG+K,GAClB,OAAQhL,EAAIC,GAAQD,EAAKgL,EAI3B,SAAS6W,EAAM7hB,EAAGC,EAAG+K,GACnB,OAAQhL,EAAIC,EAAMD,EAAIgL,EAAM/K,EAAI+K,EAIlC,SAAS4b,EAAI5mB,EAAGC,EAAG+K,GACjB,OAAOhL,EAAIC,EAAI+K,EAbjB5xB,EAAQytC,KARR,SAAc5lB,EAAGjB,EAAGC,EAAG+K,GACrB,OAAU,IAAN/J,EACK2gB,EAAK5hB,EAAGC,EAAG+K,GACV,IAAN/J,GAAiB,IAANA,EACN2lB,EAAI5mB,EAAGC,EAAG+K,GACT,IAAN/J,EACK4gB,EAAM7hB,EAAGC,EAAG+K,QADrB,GAQF5xB,EAAQwoC,KAAOA,EAKfxoC,EAAQyoC,MAAQA,EAKhBzoC,EAAQwtC,IAAMA,EAKdxtC,EAAQ0oC,OAHR,SAAgB9hB,GACd,OAAO2mB,EAAO3mB,EAAG,GAAK2mB,EAAO3mB,EAAG,IAAM2mB,EAAO3mB,EAAG,KAOlD5mB,EAAQ2oC,OAHR,SAAgB/hB,GACd,OAAO2mB,EAAO3mB,EAAG,GAAK2mB,EAAO3mB,EAAG,IAAM2mB,EAAO3mB,EAAG,KAOlD5mB,EAAQ4oC,OAHR,SAAgBhiB,GACd,OAAO2mB,EAAO3mB,EAAG,GAAK2mB,EAAO3mB,EAAG,IAAOA,IAAM,GAO/C5mB,EAAQ6oC,OAHR,SAAgBjiB,GACd,OAAO2mB,EAAO3mB,EAAG,IAAM2mB,EAAO3mB,EAAG,IAAOA,IAAM,KAI9C,CAACwiB,WAAW,KAAKsE,GAAG,CAAC,SAAS1sC,EAAQf,EAAOD,GAC/C,aAEA,IAAI+Z,EAAS/Y,EAAQ,uBACjBkZ,EAAWlZ,EAAQ,YA4CvB,SAAS2sC,EAAMpxB,GAKb,OAJWA,IAAM,GACLA,IAAM,EAAK,MACXA,GAAK,EAAK,UACN,IAAJA,IAAa,MACV,EAgBjB,SAAS2oB,EAAMtoB,GACb,OAAoB,IAAhBA,EAAKrb,OACA,IAAMqb,EAENA,EAIX,SAASgxB,EAAMhxB,GACb,OAAoB,IAAhBA,EAAKrb,OACA,IAAMqb,EACU,IAAhBA,EAAKrb,OACL,KAAOqb,EACS,IAAhBA,EAAKrb,OACL,MAAQqb,EACQ,IAAhBA,EAAKrb,OACL,OAASqb,EACO,IAAhBA,EAAKrb,OACL,QAAUqb,EACM,IAAhBA,EAAKrb,OACL,SAAWqb,EACK,IAAhBA,EAAKrb,OACL,UAAYqb,EAEZA,EAvFX5c,EAAQka,SAAWA,EAgCnBla,EAAQqc,QA9BR,SAAiBpC,EAAKqc,GACpB,GAAIhzB,MAAMoE,QAAQuS,GAChB,OAAOA,EAAIrN,QACb,IAAKqN,EACH,MAAO,GACT,IAAI6E,EAAM,GACV,GAAmB,iBAAR7E,EACT,GAAKqc,GAUE,GAAY,QAARA,EAIT,KAHArc,EAAMA,EAAIiC,QAAQ,eAAgB,KAC1B3a,OAAS,GAAM,IACrB0Y,EAAM,IAAMA,GACTnZ,EAAI,EAAGA,EAAImZ,EAAI1Y,OAAQT,GAAK,EAC/Bge,EAAI/W,KAAKsL,SAAS4G,EAAInZ,GAAKmZ,EAAInZ,EAAI,GAAI,UAdzC,IAAK,IAAIA,EAAI,EAAGA,EAAImZ,EAAI1Y,OAAQT,IAAK,CACnC,IAAIC,EAAIkZ,EAAItF,WAAW7T,GACnBwe,EAAKve,GAAK,EACV4c,EAAS,IAAJ5c,EACLue,EACFR,EAAI/W,KAAKuX,EAAI3B,GAEbmB,EAAI/W,KAAK4V,QAUf,IAAK7c,EAAI,EAAGA,EAAImZ,EAAI1Y,OAAQT,IAC1Bge,EAAIhe,GAAc,EAATmZ,EAAInZ,GAEjB,OAAOge,GAUT9e,EAAQmlC,MANR,SAAelrB,GAEb,IADA,IAAI6E,EAAM,GACDhe,EAAI,EAAGA,EAAImZ,EAAI1Y,OAAQT,IAC9Bge,GAAOomB,EAAMjrB,EAAInZ,GAAGkQ,SAAS,KAC/B,OAAO8N,GAWT9e,EAAQ2tC,MAAQA,EAYhB3tC,EAAQipC,QAVR,SAAiBhvB,EAAKS,GAEpB,IADA,IAAIoE,EAAM,GACDhe,EAAI,EAAGA,EAAImZ,EAAI1Y,OAAQT,IAAK,CACnC,IAAIyb,EAAItC,EAAInZ,GACG,WAAX4Z,IACF6B,EAAIoxB,EAAMpxB,IACZuC,GAAO8uB,EAAMrxB,EAAEvL,SAAS,KAE1B,OAAO8N,GAUT9e,EAAQklC,MAAQA,EAoBhBllC,EAAQ4tC,MAAQA,EAgBhB5tC,EAAQknC,OAdR,SAAgBjtB,EAAKmB,EAAOC,EAAKX,GAC/B,IAAIY,EAAMD,EAAMD,EAChBrB,EAAOuB,EAAM,GAAM,GAEnB,IADA,IAAIwD,EAAM,IAAIxb,MAAMgY,EAAM,GACjBxa,EAAI,EAAGoD,EAAIkX,EAAOta,EAAIge,EAAIvd,OAAQT,IAAKoD,GAAK,EAAG,CACtD,IAAIqY,EAEFA,EADa,QAAX7B,EACGT,EAAI/V,IAAM,GAAO+V,EAAI/V,EAAI,IAAM,GAAO+V,EAAI/V,EAAI,IAAM,EAAK+V,EAAI/V,EAAI,GAEjE+V,EAAI/V,EAAI,IAAM,GAAO+V,EAAI/V,EAAI,IAAM,GAAO+V,EAAI/V,EAAI,IAAM,EAAK+V,EAAI/V,GACxE4a,EAAIhe,GAAKyb,IAAM,EAEjB,OAAOuC,GAsBT9e,EAAQkpC,QAlBR,SAAiBjvB,EAAKS,GAEpB,IADA,IAAIoE,EAAM,IAAIxb,MAAmB,EAAb2W,EAAI1Y,QACfT,EAAI,EAAGoD,EAAI,EAAGpD,EAAImZ,EAAI1Y,OAAQT,IAAKoD,GAAK,EAAG,CAClD,IAAI6O,EAAIkH,EAAInZ,GACG,QAAX4Z,GACFoE,EAAI5a,GAAK6O,IAAM,GACf+L,EAAI5a,EAAI,GAAM6O,IAAM,GAAM,IAC1B+L,EAAI5a,EAAI,GAAM6O,IAAM,EAAK,IACzB+L,EAAI5a,EAAI,GAAS,IAAJ6O,IAEb+L,EAAI5a,EAAI,GAAK6O,IAAM,GACnB+L,EAAI5a,EAAI,GAAM6O,IAAM,GAAM,IAC1B+L,EAAI5a,EAAI,GAAM6O,IAAM,EAAK,IACzB+L,EAAI5a,GAAS,IAAJ6O,GAGb,OAAO+L,GAOT9e,EAAQutC,OAHR,SAAgBhxB,EAAG/Y,GACjB,OAAQ+Y,IAAM/Y,EAAM+Y,GAAM,GAAK/Y,GAOjCxD,EAAQ6tC,OAHR,SAAgBtxB,EAAG/Y,GACjB,OAAQ+Y,GAAK/Y,EAAM+Y,IAAO,GAAK/Y,GAOjCxD,EAAQqoC,MAHR,SAAennC,EAAGsC,GAChB,OAAQtC,EAAIsC,IAAO,GAOrBxD,EAAQ8tC,QAHR,SAAiB5sC,EAAGsC,EAAGzC,GACrB,OAAQG,EAAIsC,EAAIzC,IAAO,GAOzBf,EAAQsoC,QAHR,SAAiBpnC,EAAGsC,EAAGzC,EAAGwC,GACxB,OAAQrC,EAAIsC,EAAIzC,EAAIwC,IAAO,GAO7BvD,EAAQuoC,QAHR,SAAiBrnC,EAAGsC,EAAGzC,EAAGwC,EAAG7C,GAC3B,OAAQQ,EAAIsC,EAAIzC,EAAIwC,EAAI7C,IAAO,GAajCV,EAAQ4pC,MATR,SAAe3G,EAAK8K,EAAK/B,EAAIC,GAC3B,IAAIC,EAAKjJ,EAAI8K,GAGTpwB,EAAMsuB,EAFDhJ,EAAI8K,EAAM,KAEI,EACnBzuB,GAAM3B,EAAKsuB,EAAK,EAAI,GAAKD,EAAKE,EAClCjJ,EAAI8K,GAAOzuB,IAAO,EAClB2jB,EAAI8K,EAAM,GAAKpwB,GASjB3d,EAAQ6pC,SALR,SAAkBmC,EAAIC,EAAIC,EAAIC,GAG5B,OAFUF,EAAKE,IAAQ,EACRF,EAAK,EAAI,GAAKD,EAAKE,IACpB,GAQhBlsC,EAAQ8pC,SAJR,SAAkBkC,EAAIC,EAAIC,EAAIC,GAE5B,OADSF,EAAKE,IACA,GAiBhBnsC,EAAQ+pC,WAbR,SAAoBiC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAC9C,IAAI3uB,EAAQ,EACRD,EAAKsuB,EAST,OAPAruB,IADAD,EAAMA,EAAKwuB,IAAQ,GACLF,EAAK,EAAI,EAEvBruB,IADAD,EAAMA,EAAK0uB,IAAQ,GACLA,EAAK,EAAI,EAIdL,EAAKE,EAAKE,EAAKE,GAFxB1uB,IADAD,EAAMA,EAAK4uB,IAAQ,GACLA,EAAK,EAAI,KAGT,GAQhBvsC,EAAQgqC,WAJR,SAAoBgC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAE9C,OADSN,EAAKE,EAAKE,EAAKE,IACV,GAmBhBvsC,EAAQiqC,WAfR,SAAoB+B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GACtD,IAAI7uB,EAAQ,EACRD,EAAKsuB,EAWT,OATAruB,IADAD,EAAMA,EAAKwuB,IAAQ,GACLF,EAAK,EAAI,EAEvBruB,IADAD,EAAMA,EAAK0uB,IAAQ,GACLA,EAAK,EAAI,EAEvBzuB,IADAD,EAAMA,EAAK4uB,IAAQ,GACLA,EAAK,EAAI,EAIdP,EAAKE,EAAKE,EAAKE,EAAKE,GAF7B5uB,IADAD,EAAMA,EAAK8uB,IAAQ,GACLA,EAAK,EAAI,KAGT,GAShBzsC,EAAQkqC,WALR,SAAoB8B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAGtD,OAFSR,EAAKE,EAAKE,EAAKE,EAAKE,IAEf,GAQhBzsC,EAAQwpC,UAJR,SAAmBwC,EAAIC,EAAItwB,GAEzB,OADSswB,GAAO,GAAKtwB,EAASqwB,IAAOrwB,KACxB,GAQf3b,EAAQypC,UAJR,SAAmBuC,EAAIC,EAAItwB,GAEzB,OADSqwB,GAAO,GAAKrwB,EAASswB,IAAOtwB,KACxB,GAOf3b,EAAQ0pC,SAHR,SAAkBsC,EAAIC,EAAItwB,GACxB,OAAOqwB,IAAOrwB,GAQhB3b,EAAQ2pC,SAJR,SAAkBqC,EAAIC,EAAItwB,GAExB,OADSqwB,GAAO,GAAKrwB,EAASswB,IAAOtwB,KACxB,IAIb,CAACzB,SAAW,GAAGmtB,sBAAsB,KAAK2G,GAAG,CAAC,SAAShtC,EAAQf,EAAOD,GAC3C,mBAAlByB,OAAOoC,OAEhB5D,EAAOD,QAAU,SAAkBma,EAAMC,GACvCD,EAAKE,OAASD,EACdD,EAAKvW,UAAYnC,OAAOoC,OAAOuW,EAAUxW,UAAW,CAClDD,YAAa,CACXhC,MAAOwY,EACP+kB,YAAY,EACZ+O,UAAU,EACVhP,cAAc,MAMpBh/B,EAAOD,QAAU,SAAkBma,EAAMC,GACvCD,EAAKE,OAASD,EACd,IAAIE,EAAW,aACfA,EAAS1W,UAAYwW,EAAUxW,UAC/BuW,EAAKvW,UAAY,IAAI0W,EACrBH,EAAKvW,UAAUD,YAAcwW,IAI/B,IAAI+zB,GAAG,CAAC,SAASltC,EAAQf,EAAOD,IAClC,SAAWmuC,EAAQ9tC,IAUnB,WACE,aAEA,IAAI8S,EAAyB,iBAAX/S,OAAsBA,OAAS,IAClC+S,EAAKi7B,oBAAyC,iBAAZD,GAAwBA,EAAQE,UAAYF,EAAQE,SAASC,OAE5Gn7B,EAAO9S,GAmET,IAjEA,IAAIkuC,GAAap7B,EAAKq7B,sBAA0C,iBAAXvuC,GAAuBA,EAAOD,QAC/EyuC,EAAY,mBAAmBxd,MAAM,IAIrCyd,EAAQ,CAAC,EAAG,EAAG,GAAI,IACnBC,GAAK,CAAC,EAAG,EAAG,MAAO,EAAG,MAAO,WAAY,WAAY,WAAY,MAAO,EAAG,WACrE,EAAG,WAAY,WAAY,MAAO,WAAY,IAAK,EAAG,IAAK,EAAG,WAAY,EAC1E,WAAY,EAAG,WAAY,EAAG,IAAK,WAAY,MAAO,WAAY,MAClE,WAAY,MAAO,WAAY,IAAK,WAAY,MAAO,EAAG,WAAY,WACtE,WAAY,WAAY,MAAO,WAAY,WAAY,EAAG,WAAY,YAC5EC,EAAO,CAAC,IAAK,IAAK,IAAK,KAEvBC,EAAe,CAAC,MAAO,SAAU,cAAe,SAEhDC,EAAqB,SAAU9kB,EAAMzQ,EAASw1B,GAChD,OAAO,SAAU1pC,GACf,OAAO,IAAI2pC,EAAOhlB,EAAMzQ,EAASyQ,GAAM6a,OAAOx/B,GAAS0pC,OAIvDE,EAA0B,SAAUjlB,EAAMzQ,EAASw1B,GACrD,OAAO,SAAU1pC,EAAS6pC,GACxB,OAAO,IAAIF,EAAOhlB,EAAMzQ,EAAS21B,GAAYrK,OAAOx/B,GAAS0pC,OAI7DI,EAAe,SAAUnlB,EAAMzQ,GACjC,IAAI7S,EAASooC,EAAmB9kB,EAAMzQ,EAAS,OAC/C7S,EAAO7C,OAAS,WACd,OAAO,IAAImrC,EAAOhlB,EAAMzQ,EAASyQ,IAEnCtjB,EAAOm+B,OAAS,SAAUx/B,GACxB,OAAOqB,EAAO7C,SAASghC,OAAOx/B,IAEhC,IAAK,IAAIvE,EAAI,EAAGA,EAAI+tC,EAAattC,SAAUT,EAAG,CAC5C,IAAImH,EAAO4mC,EAAa/tC,GACxB4F,EAAOuB,GAAQ6mC,EAAmB9kB,EAAMzQ,EAAStR,GAEnD,OAAOvB,GAkBL0oC,EAAa,CACf,CAACtnC,KAAM,SAAUyR,QAvDE,CAAC,EAAG,IAAK,MAAO,UAuDOyQ,KAAM4kB,EAAMO,aAAcA,GACpE,CAACrnC,KAAM,OAAQyR,QAvDH,CAAC,EAAG,KAAM,OAAQ,WAuDGyQ,KAAM4kB,EAAMO,aAAcA,GAC3D,CAACrnC,KAAM,QAASyR,QA1DE,CAAC,GAAI,KAAM,QAAS,WA0DEyQ,KAhDzB,CAAC,IAAK,KAgDqCmlB,aAlBpC,SAAUnlB,EAAMzQ,GACtC,IAAI7S,EAASuoC,EAAwBjlB,EAAMzQ,EAAS,OACpD7S,EAAO7C,OAAS,SAAUqrC,GACxB,OAAO,IAAIF,EAAOhlB,EAAMzQ,EAAS21B,IAEnCxoC,EAAOm+B,OAAS,SAAUx/B,EAAS6pC,GACjC,OAAOxoC,EAAO7C,OAAOqrC,GAAYrK,OAAOx/B,IAE1C,IAAK,IAAIvE,EAAI,EAAGA,EAAI+tC,EAAattC,SAAUT,EAAG,CAC5C,IAAImH,EAAO4mC,EAAa/tC,GACxB4F,EAAOuB,GAAQgnC,EAAwBjlB,EAAMzQ,EAAStR,GAExD,OAAOvB,KASL2oC,EAAU,GAAIC,EAAc,GAEvBxuC,EAAI,EAAGA,EAAIsuC,EAAW7tC,SAAUT,EAGvC,IAFA,IAAIyuC,EAAYH,EAAWtuC,GACvBkpB,EAAQulB,EAAUvlB,KACbrS,EAAI,EAAGA,EAAIqS,EAAKzoB,SAAUoW,EAAG,CACpC,IAAI63B,EAAaD,EAAUznC,KAAM,IAAMkiB,EAAKrS,GAC5C23B,EAAYvnC,KAAKynC,GACjBH,EAAQG,GAAcD,EAAUJ,aAAanlB,EAAKrS,GAAI43B,EAAUh2B,SAIpE,SAASy1B,EAAOhlB,EAAMzQ,EAAS21B,GAC7B3uC,KAAKkvC,OAAS,GACdlvC,KAAKsnB,EAAI,GACTtnB,KAAKgZ,QAAUA,EACfhZ,KAAK2uC,WAAaA,EAClB3uC,KAAKmvC,OAAQ,EACbnvC,KAAKgX,MAAQ,EACbhX,KAAK6a,MAAQ,EACb7a,KAAKovC,WAAc,MAAQ3lB,GAAQ,IAAO,EAC1CzpB,KAAKqvC,UAAYrvC,KAAKovC,YAAc,EACpCpvC,KAAKsvC,aAAeX,GAAc,EAClC3uC,KAAKuvC,YAA2B,GAAbZ,IAAoB,EAEvC,IAAK,IAAIpuC,EAAI,EAAGA,EAAI,KAAMA,EACxBP,KAAKsnB,EAAE/mB,GAAK,EAIhBkuC,EAAOprC,UAAUihC,OAAS,SAAUx/B,GAClC,IAAI0qC,EAA+B,iBAAZ1qC,EACnB0qC,GAAa1qC,EAAQ1B,cAAgBgQ,cACvCtO,EAAU,IAAIwO,WAAWxO,IAK3B,IAHA,IACuDvE,EAAGM,EADtDG,EAAS8D,EAAQ9D,OAAQkuC,EAASlvC,KAAKkvC,OAAQG,EAAYrvC,KAAKqvC,UAClED,EAAapvC,KAAKovC,WAAY/nC,EAAQ,EAAGigB,EAAItnB,KAAKsnB,EAE7CjgB,EAAQrG,GAAQ,CACrB,GAAIhB,KAAKmvC,MAGP,IAFAnvC,KAAKmvC,OAAQ,EACbD,EAAO,GAAKlvC,KAAKgX,MACZzW,EAAI,EAAGA,EAAI6uC,EAAa,IAAK7uC,EAChC2uC,EAAO3uC,GAAK,EAGhB,GAAIivC,EACF,IAAKjvC,EAAIP,KAAK6a,MAAOxT,EAAQrG,GAAUT,EAAI8uC,IAAahoC,EACtD6nC,EAAO3uC,GAAK,IAAMuE,EAAQuC,IAAU8mC,EAAY,EAAN5tC,UAG5C,IAAKA,EAAIP,KAAK6a,MAAOxT,EAAQrG,GAAUT,EAAI8uC,IAAahoC,GACtDxG,EAAOiE,EAAQsP,WAAW/M,IACf,IACT6nC,EAAO3uC,GAAK,IAAMM,GAAQstC,EAAY,EAAN5tC,MACvBM,EAAO,KAChBquC,EAAO3uC,GAAK,KAAO,IAAQM,GAAQ,IAAOstC,EAAY,EAAN5tC,MAEvCM,EAAO,OAAkB,OAARA,EAC1BquC,EAAO3uC,GAAK,KAAO,IAAQM,GAAQ,KAAQstC,EAAY,EAAN5tC,MAIjDM,EAAO,QAAoB,KAAPA,IAAiB,GAAqC,KAA9BiE,EAAQsP,aAAa/M,IACjE6nC,EAAO3uC,GAAK,KAAO,IAAQM,GAAQ,KAAQstC,EAAY,EAAN5tC,KACjD2uC,EAAO3uC,GAAK,KAAO,IAASM,GAAQ,GAAM,KAAUstC,EAAY,EAAN5tC,MAL1D2uC,EAAO3uC,GAAK,KAAO,IAASM,GAAQ,EAAK,KAAUstC,EAAY,EAAN5tC,MAHzD2uC,EAAO3uC,GAAK,KAAO,IAAe,GAAPM,IAAiBstC,EAAY,EAAN5tC,MAexD,GAAS8uC,IADTrvC,KAAKyvC,cAAgBlvC,GACD,CAGlB,IAFAP,KAAK6a,MAAQta,EAAI8uC,EACjBrvC,KAAKgX,MAAQk4B,EAAOE,GACf7uC,EAAI,EAAGA,EAAI6uC,IAAc7uC,EAC5B+mB,EAAE/mB,IAAM2uC,EAAO3uC,GAEjBf,EAAE8nB,GACFtnB,KAAKmvC,OAAQ,OAEbnvC,KAAK6a,MAAQta,EAGjB,OAAOP,MAGTyuC,EAAOprC,UAAUqsC,SAAW,WAC1B,IAAIR,EAASlvC,KAAKkvC,OAAQ3uC,EAAIP,KAAKyvC,cAAeL,EAAapvC,KAAKovC,WAAY9nB,EAAItnB,KAAKsnB,EAEzF,GADA4nB,EAAO3uC,GAAK,IAAMP,KAAKgZ,QAAY,EAAJzY,GAC3BP,KAAKyvC,gBAAkBzvC,KAAKqvC,UAE9B,IADAH,EAAO,GAAKA,EAAOE,GACd7uC,EAAI,EAAGA,EAAI6uC,EAAa,IAAK7uC,EAChC2uC,EAAO3uC,GAAK,EAIhB,IADA2uC,EAAOE,EAAa,IAAM,WACrB7uC,EAAI,EAAGA,EAAI6uC,IAAc7uC,EAC5B+mB,EAAE/mB,IAAM2uC,EAAO3uC,GAEjBf,EAAE8nB,IAGJmnB,EAAOprC,UAAUoN,SAAWg+B,EAAOprC,UAAUyV,IAAM,WACjD9Y,KAAK0vC,WAKL,IAHA,IAEc14B,EAFVo4B,EAAapvC,KAAKovC,WAAY9nB,EAAItnB,KAAKsnB,EAAGgoB,EAAetvC,KAAKsvC,aAC9DC,EAAavvC,KAAKuvC,WAAYhvC,EAAI,EAAG6W,EAAI,EACzC0B,EAAM,GACH1B,EAAIk4B,GAAc,CACvB,IAAK/uC,EAAI,EAAGA,EAAI6uC,GAAch4B,EAAIk4B,IAAgB/uC,IAAK6W,EACrDJ,EAAQsQ,EAAE/mB,GACVuY,GAAOo1B,EAAWl3B,GAAS,EAAK,IAAQk3B,EAAkB,GAARl3B,GAC3Ck3B,EAAWl3B,GAAS,GAAM,IAAQk3B,EAAWl3B,GAAS,EAAK,IAC3Dk3B,EAAWl3B,GAAS,GAAM,IAAQk3B,EAAWl3B,GAAS,GAAM,IAC5Dk3B,EAAWl3B,GAAS,GAAM,IAAQk3B,EAAWl3B,GAAS,GAAM,IAEjEI,EAAIg4B,GAAe,IACrB5vC,EAAE8nB,GACF/mB,EAAI,GAeR,OAZIgvC,IACFv4B,EAAQsQ,EAAE/mB,GACO,EAAbgvC,IACFz2B,GAAOo1B,EAAWl3B,GAAS,EAAK,IAAQk3B,EAAkB,GAARl3B,IAEnC,EAAbu4B,IACFz2B,GAAOo1B,EAAWl3B,GAAS,GAAM,IAAQk3B,EAAWl3B,GAAS,EAAK,KAEnD,EAAbu4B,IACFz2B,GAAOo1B,EAAWl3B,GAAS,GAAM,IAAQk3B,EAAWl3B,GAAS,GAAM,MAGhE8B,GA+BT21B,EAAOprC,UAAU8P,OA5BjBs7B,EAAOprC,UAAUssC,YAAc,WAC7B3vC,KAAK0vC,WAEL,IAGIv8B,EAHAi8B,EAAapvC,KAAKovC,WAAY9nB,EAAItnB,KAAKsnB,EAAGgoB,EAAetvC,KAAKsvC,aAC9DC,EAAavvC,KAAKuvC,WAAYhvC,EAAI,EAAG6W,EAAI,EACzC7C,EAAQvU,KAAK2uC,YAAc,EAG7Bx7B,EADEo8B,EACO,IAAIn8B,YAAak8B,EAAe,GAAM,GAEtC,IAAIl8B,YAAYmB,GAG3B,IADA,IAAIq7B,EAAQ,IAAIC,YAAY18B,GACrBiE,EAAIk4B,GAAc,CACvB,IAAK/uC,EAAI,EAAGA,EAAI6uC,GAAch4B,EAAIk4B,IAAgB/uC,IAAK6W,EACrDw4B,EAAMx4B,GAAKkQ,EAAE/mB,GAEX6W,EAAIg4B,GAAe,GACrB5vC,EAAE8nB,GAON,OAJIioB,IACFK,EAAMrvC,GAAK+mB,EAAE/mB,GACb4S,EAASA,EAAO9G,MAAM,EAAGkI,IAEpBpB,GAKTs7B,EAAOprC,UAAUkhC,OAASkK,EAAOprC,UAAUusC,MAAQ,WACjD5vC,KAAK0vC,WAKL,IAHA,IAEgBI,EAAQ94B,EAFpBo4B,EAAapvC,KAAKovC,WAAY9nB,EAAItnB,KAAKsnB,EAAGgoB,EAAetvC,KAAKsvC,aAC9DC,EAAavvC,KAAKuvC,WAAYhvC,EAAI,EAAG6W,EAAI,EACzCw4B,EAAQ,GACLx4B,EAAIk4B,GAAc,CACvB,IAAK/uC,EAAI,EAAGA,EAAI6uC,GAAch4B,EAAIk4B,IAAgB/uC,IAAK6W,EACrD04B,EAAS14B,GAAK,EACdJ,EAAQsQ,EAAE/mB,GACVqvC,EAAME,GAAkB,IAAR94B,EAChB44B,EAAME,EAAS,GAAM94B,GAAS,EAAK,IACnC44B,EAAME,EAAS,GAAM94B,GAAS,GAAM,IACpC44B,EAAME,EAAS,GAAM94B,GAAS,GAAM,IAElCI,EAAIg4B,GAAe,GACrB5vC,EAAE8nB,GAgBN,OAbIioB,IACFO,EAAS14B,GAAK,EACdJ,EAAQsQ,EAAE/mB,GACO,EAAbgvC,IACFK,EAAME,GAAkB,IAAR94B,GAED,EAAbu4B,IACFK,EAAME,EAAS,GAAM94B,GAAS,EAAK,KAEpB,EAAbu4B,IACFK,EAAME,EAAS,GAAM94B,GAAS,GAAM,MAGjC44B,GAGT,IAAIpwC,EAAI,SAAU8nB,GAChB,IAAIyC,EAAGnD,EAAGxmB,EAAG2vC,EAAIxW,EAAIC,EAAIwW,EAAIC,EAAIC,EAAIC,EAAIC,EAAIpT,EAAIqT,EAC7CrtB,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAI2rB,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAC3EC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAC3EC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAC/E,IAAKzyC,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB2vC,EAAKzoB,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCiS,EAAKjS,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCkS,EAAKlS,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC0oB,EAAK1oB,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC2oB,EAAK3oB,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC4oB,EAAK5oB,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC6oB,EAAK7oB,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC8oB,EAAK9oB,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAItCyC,GAHAiT,EAAK1V,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,MAG3BkS,GAAM,EAAMwW,IAAO,IAC9BppB,GAHAypB,EAAK/oB,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,MAG3B0oB,GAAM,EAAMxW,IAAO,IAC9BlS,EAAE,IAAMyC,EACRzC,EAAE,IAAMV,EACRU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EACTU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EACTU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EACTU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EACTmD,EAAIgmB,GAAOE,GAAM,EAAMC,IAAO,IAC9BtpB,EAAI2S,GAAO2W,GAAM,EAAMD,IAAO,IAC9B3oB,EAAE,IAAMyC,EACRzC,EAAE,IAAMV,EACRU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EACTU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EACTU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EACTU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EACTmD,EAAIyP,GAAO2W,GAAM,EAAMC,IAAO,IAC9BxpB,EAAIopB,GAAOI,GAAM,EAAMD,IAAO,IAC9B7oB,EAAE,IAAMyC,EACRzC,EAAE,IAAMV,EACRU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EACTU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EACTU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EACTU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EACTmD,EAAIkmB,GAAOjT,GAAM,EAAMqT,IAAO,IAC9BzpB,EAAIspB,GAAOG,GAAM,EAAMrT,IAAO,IAC9B1V,EAAE,IAAMyC,EACRzC,EAAE,IAAMV,EACRU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EACTU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EACTU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EACTU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EACTmD,EAAIomB,GAAOJ,GAAM,EAAMxW,IAAO,IAC9B3S,EAAIwpB,GAAO7W,GAAM,EAAMwW,IAAO,IAC9BzoB,EAAE,IAAMyC,EACRzC,EAAE,IAAMV,EACRU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EACTU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EACTU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EACTU,EAAE,KAAOyC,EACTzC,EAAE,KAAOV,EAET5D,EAAKsE,EAAE,GACPnE,EAAKmE,EAAE,GACPsqB,EAAOtqB,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCuqB,EAAOvqB,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCopB,EAAOppB,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCqpB,EAAOrpB,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCorB,GAAOprB,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCqrB,GAAOrrB,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCkqB,EAAOlqB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCmqB,EAAOnqB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC0pB,EAAO1pB,EAAE,IAAM,EAAMA,EAAE,KAAO,GAC9B2pB,EAAO3pB,EAAE,IAAM,EAAMA,EAAE,KAAO,GAC9BhE,EAAMgE,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChC7D,EAAM6D,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChCwqB,EAAOxqB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCyqB,EAAOzqB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCspB,EAAOtpB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCupB,EAAOvpB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCsrB,GAAOtrB,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCurB,GAAOvrB,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC8qB,GAAO9qB,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/B+qB,GAAO/qB,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/B4pB,EAAO5pB,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC6pB,EAAO7pB,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC1D,EAAM0D,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChCvD,EAAMuD,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChC0qB,EAAO1qB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC2qB,EAAO3qB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCwpB,EAAOxpB,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCypB,EAAOzpB,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCgpB,EAAOhpB,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/BipB,EAAOjpB,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/BgrB,GAAOhrB,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCirB,GAAOjrB,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjC8pB,EAAO9pB,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjC+pB,EAAO/pB,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCpD,EAAMoD,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChCjD,EAAMiD,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChC4qB,EAAO5qB,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjC6qB,EAAO7qB,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCoqB,EAAOpqB,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/BqqB,EAAOrqB,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/BkpB,EAAOlpB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCmpB,EAAOnpB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCkrB,GAAOlrB,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCmrB,GAAOnrB,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCgqB,EAAOhqB,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCiqB,EAAOjqB,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC9C,EAAM8C,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChC3C,EAAM2C,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAEhCA,EAAE,GAAKtE,GAAOM,EAAKM,EACnB0D,EAAE,GAAKnE,GAAOM,EAAKM,EACnBuD,EAAE,IAAMgpB,GAAQE,EAAME,EACtBppB,EAAE,IAAMipB,GAAQE,EAAME,EACtBrpB,EAAE,IAAM0pB,GAAQE,EAAME,EACtB9pB,EAAE,IAAM2pB,GAAQE,EAAME,EACtB/pB,EAAE,IAAMoqB,GAAQE,EAAME,EACtBxqB,EAAE,IAAMqqB,GAAQE,EAAME,EACtBzqB,EAAE,IAAM8qB,IAAQE,GAAME,GACtBlrB,EAAE,IAAM+qB,IAAQE,GAAME,GACtBnrB,EAAE,GAAKhE,GAAOM,EAAKM,EACnBoD,EAAE,GAAK7D,GAAOM,EAAKM,EACnBiD,EAAE,IAAMkpB,GAAQE,EAAME,EACtBtpB,EAAE,IAAMmpB,GAAQE,EAAME,EACtBvpB,EAAE,IAAM4pB,GAAQE,EAAME,EACtBhqB,EAAE,IAAM6pB,GAAQE,EAAME,EACtBjqB,EAAE,IAAMsqB,GAAQE,EAAME,EACtB1qB,EAAE,IAAMuqB,GAAQE,EAAME,EACtB3qB,EAAE,IAAMgrB,IAAQE,GAAME,GACtBprB,EAAE,IAAMirB,IAAQE,GAAME,GACtBrrB,EAAE,GAAK1D,GAAOM,EAAKM,EACnB8C,EAAE,GAAKvD,GAAOM,EAAKM,EACnB2C,EAAE,IAAMopB,GAAQE,EAAME,EACtBxpB,EAAE,IAAMqpB,GAAQE,EAAME,EACtBzpB,EAAE,IAAM8pB,GAAQE,EAAME,EACtBlqB,EAAE,IAAM+pB,GAAQE,EAAME,EACtBnqB,EAAE,IAAMwqB,GAAQE,EAAME,EACtB5qB,EAAE,IAAMyqB,GAAQE,EAAME,EACtB7qB,EAAE,IAAMkrB,IAAQE,GAAME,GACtBtrB,EAAE,IAAMmrB,IAAQE,GAAME,GACtBvrB,EAAE,GAAKpD,GAAOM,EAAKxB,EACnBsE,EAAE,GAAKjD,GAAOM,EAAKxB,EACnBmE,EAAE,IAAMspB,GAAQE,EAAMR,EACtBhpB,EAAE,IAAMupB,GAAQE,EAAMR,EACtBjpB,EAAE,IAAMgqB,GAAQE,EAAMR,EACtB1pB,EAAE,IAAMiqB,GAAQE,EAAMR,EACtB3pB,EAAE,IAAM0qB,GAAQE,EAAMR,EACtBpqB,EAAE,IAAM2qB,GAAQE,EAAMR,EACtBrqB,EAAE,IAAMorB,IAAQE,GAAMR,GACtB9qB,EAAE,IAAMqrB,IAAQE,GAAMR,GACtB/qB,EAAE,GAAK9C,GAAOxB,EAAKM,EACnBgE,EAAE,GAAK3C,GAAOxB,EAAKM,EACnB6D,EAAE,IAAMwpB,GAAQR,EAAME,EACtBlpB,EAAE,IAAMypB,GAAQR,EAAME,EACtBnpB,EAAE,IAAMkqB,GAAQR,EAAME,EACtB5pB,EAAE,IAAMmqB,GAAQR,EAAME,EACtB7pB,EAAE,IAAM4qB,GAAQR,EAAME,EACtBtqB,EAAE,IAAM6qB,GAAQR,EAAME,EACtBvqB,EAAE,IAAMsrB,IAAQR,GAAME,GACtBhrB,EAAE,IAAMurB,IAAQR,GAAME,GAEtBjrB,EAAE,IAAM8mB,GAAGhuC,GACXknB,EAAE,IAAM8mB,GAAGhuC,EAAI,IAInB,GAAI4tC,EACFtuC,EAAOD,QAAUqvC,OAEjB,IAASvuC,EAAI,EAAGA,EAAIwuC,EAAY/tC,SAAUT,EACxCqS,EAAKm8B,EAAYxuC,IAAMuuC,EAAQC,EAAYxuC,IA9cjD,KAmdGQ,KAAKf,KAAKS,EAAQ,YAA8B,oBAAXX,OAAyBA,OAAyB,oBAATC,KAAuBA,KAAyB,oBAAXF,OAAyBA,OAAS,KACtJ,CAACizC,SAAW,KAAKC,GAAG,CAAC,SAAStyC,EAAQf,EAAOD,GAG/C,SAAS+Z,EAAOC,EAAKC,GACnB,IAAKD,EACH,MAAM,IAAI7Y,MAAM8Y,GAAO,qBAJ3Bha,EAAOD,QAAU+Z,GAOVw5B,MAAQ,SAAqBpsB,EAAG1mB,EAAGwZ,GACxC,GAAIkN,GAAK1mB,EACP,MAAM,IAAIU,MAAM8Y,GAAQ,qBAAuBkN,EAAI,OAAS1mB,KAG9D,IAAI+yC,GAAG,CAAC,SAASxyC,EAAQf,EAAOD,GAClCC,EAAOD,QAAU,CAAEyzC,SAAS,IAC1B,IAAIC,GAAG,CAAC,SAAS1yC,EAAQf,EAAOD,IAClC,SAAW2zC,GACX,cAEA,SAAUxgC,GACN,IAAIygC,EAAY,WAIhB,SAAS7K,EAAOh2B,GACZ,IAAIqxB,EAAI,CACL,WAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,WAAY,WAAY,UAChD,UAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,UAAY,UAChD,UAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,UAAY,UAAY,UAAY,UAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,UAAY,UAAY,UAChD,UAAY,UAAY,UAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,WAAY,WAAY,WAAY,YAGnCyP,EAAK,WAAYC,EAAK,WAAY5X,EAAK,WAAYC,EAAK,WACxD4X,EAAK,WAAYC,EAAK,WAAYC,EAAK,UAAYC,EAAK,WACxD33B,EAAI,IAAIjZ,MAAM,IAElB,SAASmsC,EAAOpuC,GAEZ,IADA,IAAImb,EAAM,EAAGlB,EAAMja,EAAEE,OACP,IAAP+Z,GAAW,CACd,IAAoEra,EAAGH,EAAG6W,EAAGklB,EAAIC,EAA7E57B,EAAI2yC,EAAIrwC,EAAIswC,EAAI/yC,EAAIm7B,EAAI34B,EAAI44B,EAAIz7B,EAAIqzC,EAAIh0C,EAAIi0C,EAAItnB,EAAIunB,EAAI3pB,EAAI4pB,EAEhE,IAAKpzC,EAAI,EAAGA,EAAI,GAAIA,IAChB6W,EAAI6E,EAAQ,EAAF1b,EACVyb,EAAEzb,IAAc,IAAPO,EAAEsW,KAAY,IAAiB,IAATtW,EAAEsW,EAAE,KAAY,IACpC,IAATtW,EAAEsW,EAAE,KAAY,EAAe,IAATtW,EAAEsW,EAAE,GAGhC,IAAK7W,EAAI,GAAIA,EAAI,GAAIA,IAEjB+7B,IADA57B,EAAIsb,EAAEzb,EAAE,MACG,GAAOG,GAAG,KAAcA,IAAI,GAAOA,GAAG,IAAaA,IAAI,GAGlE67B,IADA77B,EAAIsb,EAAEzb,EAAE,OACG,EAAMG,GAAG,KAAaA,IAAI,GAAOA,GAAG,IAAaA,IAAI,EAEhEsb,EAAEzb,IAAQ+7B,EAAKtgB,EAAEzb,EAAE,GAAM,IAAOg8B,EAAKvgB,EAAEzb,EAAE,IAAO,GAAM,EAG1D,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAChB+7B,KAAWn8B,IAAI,EAAMA,GAAG,KAAaA,IAAI,GAAOA,GAAG,KACxCA,IAAI,GAAOA,GAAG,KAAeA,EAAIX,GAAOW,EAAIgsB,GAAO,IACtDpC,GAAM8Z,EAAEtjC,GAAKyb,EAAEzb,GAAM,GAAM,GAAM,EAEzCg8B,IAAS57B,IAAI,EAAMA,GAAG,KAAaA,IAAI,GAAOA,GAAG,KACxCA,IAAI,GAAOA,GAAG,MAAeA,EAAIsC,EAAMtC,EAAIH,EAAMyC,EAAIzC,GAAO,EAErEupB,EAAIoC,EACJA,EAAI3sB,EACJA,EAAIW,EACJA,EAAK6C,EAAIs5B,EAAM,EACft5B,EAAIxC,EACJA,EAAIyC,EACJA,EAAItC,EACJA,EAAK27B,EAAKC,EAAM,EAGpB+W,EAAMA,EAAK3yC,EAAK,EAChB4yC,EAAMA,EAAKtwC,EAAK,EAChB04B,EAAMA,EAAKn7B,EAAK,EAChBo7B,EAAMA,EAAK54B,EAAK,EAChBwwC,EAAMA,EAAKrzC,EAAK,EAChBszC,EAAMA,EAAKj0C,EAAK,EAChBk0C,EAAMA,EAAKvnB,EAAK,EAChBwnB,EAAMA,EAAK5pB,EAAK,EAEhB9N,GAAO,GACPlB,GAAO,IAIfm0B,EAAO18B,GAEP,IAAIjS,EAAGqzC,EAAYphC,EAAExR,OAAS,GAC9B6yC,EAAYrhC,EAAExR,OAAS,UAAc,EACrC8yC,EAAWthC,EAAExR,QAAU,EACvB+yC,EAAYH,EAAY,GAAM,GAAK,IACnC9yC,EAAI0R,EAAEnG,MAAMmG,EAAExR,OAAS4yC,EAAWphC,EAAExR,QAGpC,IADAF,EAAE0G,KAAK,KACFjH,EAAIqzC,EAAY,EAAGrzC,EAAIwzC,EAAUxzC,IAAOO,EAAE0G,KAAK,GAYpD,OAXA1G,EAAE0G,KAAMqsC,IAAW,GAAM,KACzB/yC,EAAE0G,KAAMqsC,IAAW,GAAM,KACzB/yC,EAAE0G,KAAMqsC,IAAW,EAAM,KACzB/yC,EAAE0G,KAAMqsC,IAAW,EAAM,KACzB/yC,EAAE0G,KAAMssC,IAAW,GAAM,KACzBhzC,EAAE0G,KAAMssC,IAAW,GAAM,KACzBhzC,EAAE0G,KAAMssC,IAAW,EAAM,KACzBhzC,EAAE0G,KAAMssC,IAAW,EAAM,KAEzB5E,EAAOpuC,GAEA,CACFwyC,IAAK,GAAM,IAAOA,IAAK,GAAM,IAAOA,IAAK,EAAK,IAAOA,IAAK,EAAK,IAC/DC,IAAK,GAAM,IAAOA,IAAK,GAAM,IAAOA,IAAK,EAAK,IAAOA,IAAK,EAAK,IAC/D5X,IAAK,GAAM,IAAOA,IAAK,GAAM,IAAOA,IAAK,EAAK,IAAOA,IAAK,EAAK,IAC/DC,IAAK,GAAM,IAAOA,IAAK,GAAM,IAAOA,IAAK,EAAK,IAAOA,IAAK,EAAK,IAC/D4X,IAAK,GAAM,IAAOA,IAAK,GAAM,IAAOA,IAAK,EAAK,IAAOA,IAAK,EAAK,IAC/DC,IAAK,GAAM,IAAOA,IAAK,GAAM,IAAOA,IAAK,EAAK,IAAOA,IAAK,EAAK,IAC/DC,IAAK,GAAM,IAAOA,IAAK,GAAM,IAAOA,IAAK,EAAK,IAAOA,IAAK,EAAK,IAC/DC,IAAK,GAAM,IAAOA,IAAK,GAAM,IAAOA,IAAK,EAAK,IAAOA,IAAK,EAAK,KAIxE,SAASK,EAA2BC,EAAUC,EAAMC,GAIhD,IAAI5zC,EAFJ0zC,EAAWA,EAASjzC,QAAU,GAAKizC,EAAWzL,EAAOyL,GAGrD,IAAIG,EAAW,GAAKF,EAAKlzC,OAAS,EAC9BkmC,EAAQ,IAAInkC,MAAMqxC,GAClBC,EAAW,IAAItxC,MAAM,IACrBuxC,EAAK,GAGT,IAAK/zC,EAAI,EAAGA,EAAI,GAAIA,IAAK2mC,EAAM3mC,GAAK,GACpC,IAAKA,EAAI,EAAGA,EAAI0zC,EAASjzC,OAAQT,IAAK2mC,EAAM3mC,IAAM0zC,EAAS1zC,GAC3D,IAAKA,EAAI,EAAGA,EAAI2zC,EAAKlzC,OAAQT,IAAK2mC,EAAM,GAAG3mC,GAAK2zC,EAAK3zC,GACrD,IAAKA,EAAI6zC,EAAW,EAAG7zC,EAAI6zC,EAAU7zC,IAAK2mC,EAAM3mC,GAAK,EAGrD,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAK8zC,EAAS9zC,GAAK,GACvC,IAAKA,EAAI,EAAGA,EAAI0zC,EAASjzC,OAAQT,IAAK8zC,EAAS9zC,IAAM0zC,EAAS1zC,GAG9D,SAASg0C,IACL,IAAK,IAAIh0C,EAAI6zC,EAAS,EAAQA,EAAS,GAAd7zC,EAAiBA,IAAK,CAE3C,GADA2mC,EAAM3mC,KACF2mC,EAAM3mC,IAAM,IAAM,OACtB2mC,EAAM3mC,GAAK,GAKnB,KAAgB,IAAT4zC,GACHI,IACAD,EAAKA,EAAGhnC,OAAOk7B,EAAO6L,EAAS/mC,OAAOk7B,EAAOtB,MAC7CiN,GAAS,GAOb,OALY,EAARA,IACAI,IACAD,EAAKA,EAAGhnC,OAAOk7B,EAAO6L,EAAS/mC,OAAOk7B,EAAOtB,KAAS76B,MAAM,EAAG8nC,KAG5DG,EAKX,SAASE,EAAgBC,EAAIC,EAAIx0C,EAAGmmB,EAAGsuB,GACnC,IAAIp0C,EAGJ,IADAq0C,EAAUH,EAAkB,IAAb,EAAIv0C,EAAI,GAASy0C,EAAI,EAAG,IAClCp0C,EAAI,EAAGA,EAAI,EAAIL,EAAGK,IACnBs0C,EAASJ,EAAQ,GAAJl0C,EAAQo0C,EAAI,IACzBG,EAAUH,EAAItuB,GACduuB,EAAUD,EAAI,EAAGF,EAAIC,EAAU,GAAJn0C,EAAS,IAGxC,IAAKA,EAAI,EAAGA,EAAIL,EAAGK,IACfq0C,EAAUH,EAAIC,EAAU,EAAJn0C,EAAS,GAAIk0C,EAAS,GAAJl0C,EAAS,IAGnD,IAAKA,EAAI,EAAGA,EAAIL,EAAGK,IACfq0C,EAAUH,EAAIC,EAAmB,IAAT,EAAJn0C,EAAQ,GAASk0C,EAAc,IAATl0C,EAAIL,GAAS,IAI/D,SAAS60C,EAAEp0C,EAAGsC,GACV,OAAQtC,GAAKsC,EAAMtC,IAAO,GAAKsC,EAGnC,SAAS6xC,EAAU9oB,EAAG3F,GAClBuuB,EAAU5oB,EAAG,EAAG3F,EAAG,EAAG,IAEtB,IAAK,IAAI9lB,EAAI,EAAO,EAAJA,EAAOA,GAAK,EACxB8lB,EAAG,IAAM0uB,EAAE1uB,EAAG,GAAKA,EAAE,IAAK,GAC1BA,EAAG,IAAM0uB,EAAE1uB,EAAG,GAAKA,EAAG,GAAI,GAC1BA,EAAE,KAAO0uB,EAAE1uB,EAAG,GAAKA,EAAG,GAAI,IAC1BA,EAAG,IAAM0uB,EAAE1uB,EAAE,IAAMA,EAAG,GAAI,IAC1BA,EAAG,IAAM0uB,EAAE1uB,EAAG,GAAKA,EAAG,GAAI,GAC1BA,EAAE,KAAO0uB,EAAE1uB,EAAG,GAAKA,EAAG,GAAI,GAC1BA,EAAG,IAAM0uB,EAAE1uB,EAAE,IAAMA,EAAG,GAAI,IAC1BA,EAAG,IAAM0uB,EAAE1uB,EAAG,GAAKA,EAAE,IAAK,IAC1BA,EAAE,KAAO0uB,EAAE1uB,EAAE,IAAMA,EAAG,GAAI,GAC1BA,EAAG,IAAM0uB,EAAE1uB,EAAE,IAAMA,EAAE,IAAK,GAC1BA,EAAG,IAAM0uB,EAAE1uB,EAAG,GAAKA,EAAE,IAAK,IAC1BA,EAAE,KAAO0uB,EAAE1uB,EAAG,GAAKA,EAAG,GAAI,IAC1BA,EAAG,IAAM0uB,EAAE1uB,EAAE,IAAMA,EAAE,IAAK,GAC1BA,EAAG,IAAM0uB,EAAE1uB,EAAG,GAAKA,EAAE,IAAK,GAC1BA,EAAE,KAAO0uB,EAAE1uB,EAAG,GAAKA,EAAG,GAAI,IAC1BA,EAAE,KAAO0uB,EAAE1uB,EAAE,IAAMA,EAAG,GAAI,IAC1BA,EAAG,IAAM0uB,EAAE1uB,EAAG,GAAKA,EAAG,GAAI,GAC1BA,EAAG,IAAM0uB,EAAE1uB,EAAG,GAAKA,EAAG,GAAI,GAC1BA,EAAG,IAAM0uB,EAAE1uB,EAAG,GAAKA,EAAG,GAAI,IAC1BA,EAAG,IAAM0uB,EAAE1uB,EAAG,GAAKA,EAAG,GAAI,IAC1BA,EAAG,IAAM0uB,EAAE1uB,EAAG,GAAKA,EAAG,GAAI,GAC1BA,EAAG,IAAM0uB,EAAE1uB,EAAG,GAAKA,EAAG,GAAI,GAC1BA,EAAG,IAAM0uB,EAAE1uB,EAAG,GAAKA,EAAG,GAAI,IAC1BA,EAAG,IAAM0uB,EAAE1uB,EAAG,GAAKA,EAAG,GAAI,IAC1BA,EAAE,KAAO0uB,EAAE1uB,EAAE,IAAMA,EAAG,GAAI,GAC1BA,EAAG,IAAM0uB,EAAE1uB,EAAE,IAAMA,EAAE,IAAK,GAC1BA,EAAG,IAAM0uB,EAAE1uB,EAAG,GAAKA,EAAE,IAAK,IAC1BA,EAAE,KAAO0uB,EAAE1uB,EAAG,GAAKA,EAAG,GAAI,IAC1BA,EAAE,KAAO0uB,EAAE1uB,EAAE,IAAMA,EAAE,IAAK,GAC1BA,EAAE,KAAO0uB,EAAE1uB,EAAE,IAAMA,EAAE,IAAK,GAC1BA,EAAE,KAAO0uB,EAAE1uB,EAAE,IAAMA,EAAE,IAAK,IAC1BA,EAAE,KAAO0uB,EAAE1uB,EAAE,IAAMA,EAAE,IAAK,IAG9B,IAAK9lB,EAAI,EAAGA,EAAI,KAAMA,EAClByrB,EAAEzrB,IAAM8lB,EAAE9lB,GAKlB,SAASs0C,EAAS7/B,EAAGC,EAAIiX,EAAGnR,GACxB,IAAK,IAAIxa,EAAI,EAAGA,EAAIwa,EAAKxa,IACrB2rB,EAAE3rB,IAAMyU,EAAEC,EAAK1U,GAIvB,SAASq0C,EAAUI,EAAKC,EAAQx4B,EAAMy4B,EAASl0C,GAC3C,KAAOA,KACHyb,EAAKy4B,KAAaF,EAAIC,KAI9B,SAASE,EAAe70C,GACpB,IAAKA,GAA0B,iBAAdA,EAAQ,OACrB,OAAO,EAEX,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAEU,OAAQT,IAAK,CAC/B,GAAqB,iBAAVD,EAAEC,GAAoB,OAAO,EAExC,IAAI+G,EAAIwL,SAASxS,EAAEC,IACnB,GAAI+G,GAAKhH,EAAEC,IAAM+G,EAAI,GAAU,KAALA,EACtB,OAAO,EAGf,OAAO,EAGX,SAAS8tC,EAAch0C,EAAOmG,GAC1B,IAAI8tC,EAAWviC,SAAS1R,GACxB,GAAIA,GAASi0C,EAAY,MAAM,IAAIz0C,MAAM,WAAa2G,GACtD,OAAO8tC,EAKX,SAASC,EAAOrB,EAAUC,EAAMvtB,EAAGzmB,EAAGY,EAAGqzC,EAAOoB,GAE5C,IAAKA,EAAY,MAAM,IAAI30C,MAAM,oBAQjC,GANA+lB,EAAIyuB,EAAczuB,EAAG,KACrBzmB,EAAIk1C,EAAcl1C,EAAG,KACrBY,EAAIs0C,EAAct0C,EAAG,KAErBqzC,EAAQiB,EAAcjB,EAAO,SAEnB,IAANxtB,GAA6B,IAAjBA,EAAKA,EAAI,GAAa,MAAM,IAAI/lB,MAAM,wBAEtD,GAAQyyC,EAAY,IAAMnzC,EAAtBymB,EAA2B,MAAM,IAAI/lB,MAAM,eAC/C,GAAQyyC,EAAY,IAAMvyC,EAAtBZ,EAA2B,MAAM,IAAIU,MAAM,eAE/C,IAAKu0C,EAAelB,GAChB,MAAM,IAAIrzC,MAAM,uCAIpB,GAFAqzC,EAAWlxC,MAAMM,UAAUgJ,MAAMtL,KAAKkzC,IAEjCkB,EAAejB,GAChB,MAAM,IAAItzC,MAAM,mCAEpBszC,EAAOnxC,MAAMM,UAAUgJ,MAAMtL,KAAKmzC,GAIlC,IAFA,IAAIjxC,EAAI+wC,EAA2BC,EAAUC,EAAU,IAAJpzC,EAAUZ,GACzD8rB,EAAI,IAAI6jB,YAAgB,GAAJ/uC,EAASZ,GACxBK,EAAI,EAAGA,EAAIyrB,EAAEhrB,OAAQT,IAAK,CAC/B,IAAI6W,EAAQ,EAAJ7W,EACRyrB,EAAEzrB,IAAkB,IAAX0C,EAAEmU,EAAI,KAAc,IACT,IAAXnU,EAAEmU,EAAI,KAAc,IACT,IAAXnU,EAAEmU,EAAI,KAAc,GACT,IAAXnU,EAAEmU,EAAI,KAAc,EAGjC,IAkBYo+B,EACRC,EAnBAC,EAAK,IAAI7F,YAAY,GAAK3vC,GAC1B4jC,EAAI,IAAI+L,YAAY,GAAK3vC,EAAIymB,GAE7B+tB,EAAK,GAAKx0C,EAGVmmB,EAAI,IAAIwpB,YAAY,IACpB8E,EAAK,IAAI9E,YAAY,IAErB8F,EAAW70C,EAAI6lB,EAAI,EACnBivB,EAAY,EACZC,EAAgB,KAGhBC,GAAO,EAGPC,EAAQ,EACRC,EAAK,EAILC,EAAQnjC,SAAS,IAAO5S,GAGxBg2C,OAAqC,IAAnB,EAAkC9C,EAAe3lC,WAInE0oC,EAAkB,WAClB,GAAIL,EACA,OAAOP,EAAS,IAAI30C,MAAM,aAAcg1C,EAAYD,GAGxD,OAAQI,GACJ,KAAK,EAIDnB,EAAU5oB,EAFVypB,EAAU,GAALO,EAAU91C,EAEEw1C,EAAI,EAAGhB,GAExBqB,EAAQ,EACRP,EAAK,EAIT,KAAK,EAIWS,GADRG,EAAQzvB,EAAI6uB,KACKY,EAAQH,GAC7B,IAAK,IAAI11C,EAAI,EAAGA,EAAI61C,EAAO71C,IACvBq0C,EAAUc,EAAI,EAAG5R,GAAI0R,EAAKj1C,GAAKm0C,EAAIA,GACnCF,EAAgBkB,EAAIhB,EAAIx0C,EAAGmmB,EAAGsuB,GASlC,GALAa,GAAMY,EACNR,GAAaQ,GAGTC,EAAYvjC,SAAS,IAAO8iC,EAAYD,MAC1BE,EAAe,CAE7B,GADAC,EAAOP,EAAS,KAAMK,EAAYD,GACtB,MACZE,EAAgBQ,EAGpB,GAAIb,EAAK7uB,EACL,MAGJ6uB,EAAK,EACLO,EAAQ,EAIZ,KAAK,EAGD,IAAIK,EAcAC,EAbQJ,GADRG,EAAQzvB,EAAI6uB,KACKY,EAAQH,GAC7B,IAAS11C,EAAI,EAAGA,EAAI61C,EAAO71C,IAAK,CAC5B,IACI6W,EAAIs+B,EADmB,IAAb,EAAIx1C,EAAI,IACAymB,EAAI,EAC1BkuB,EAAS/Q,EAAG1sB,EAAIs9B,EAAIgB,EAAIhB,GACxBF,EAAgBkB,EAAIhB,EAAIx0C,EAAGmmB,EAAGsuB,GASlC,GALAa,GAAMY,EACNR,GAAaQ,GAGTC,EAAYvjC,SAAS,IAAO8iC,EAAYD,MAC1BE,EAAe,CAE7B,GADAC,EAAOP,EAAS,KAAMK,EAAYD,GACtB,MACZE,EAAgBQ,EAGpB,GAAIb,EAAK7uB,EACL,MAOJ,GAJAiuB,EAAUc,EAAI,EAAG1pB,EAAGypB,EAAIf,KAGxBsB,EACSl1C,EAAG,CACRi1C,EAAQ,EACR,MAGJ9yC,EAAI,GACJ,IAAS1C,EAAI,EAAGA,EAAIyrB,EAAEhrB,OAAQT,IAC1B0C,EAAEuE,KAAMwkB,EAAEzrB,IAAO,EAAK,KACtB0C,EAAEuE,KAAMwkB,EAAEzrB,IAAO,EAAK,KACtB0C,EAAEuE,KAAMwkB,EAAEzrB,IAAM,GAAM,KACtB0C,EAAEuE,KAAMwkB,EAAEzrB,IAAM,GAAM,KAG1B,IAAI+1C,EAAatC,EAA2BC,EAAUhxC,EAAGkxC,GAGzD,OAAOoB,EAAS,KAAM,EAAKe,GAI/BJ,EAASC,IAIbA,SAIgB,IAAd,EACPz2C,EAAOD,QAAU61C,EAST1iC,IAGHA,EAAK0iC,SACL1iC,EAAK2jC,QAAU3jC,EAAK0iC,QAGxB1iC,EAAK0iC,OAASA,GAhctB,CAmcGt1C,QAEAe,KAAKf,KAAKS,EAAQ,UAAU2yC,eAC7B,CAACoD,OAAS,KAAKC,GAAG,CAAC,SAASh2C,EAAQf,EAAOD,IAC7C,SAAWmuC,EAAQ9tC,IAClB,SAAUA,EAAQk/B,GACf,aAEA,IAAIl/B,EAAOszC,aAAX,CAIA,IAIIA,EA8GIsD,EAdAC,EAvBAC,EACAC,EA9EJC,EAAa,EACbC,EAAgB,GAChBC,GAAwB,EACxBC,EAAMn3C,EAAOo3C,SAyIbC,EAAWj2C,OAAOk2C,gBAAkBl2C,OAAOk2C,eAAet3C,GAC9Dq3C,EAAWA,GAAYA,EAAS1pC,WAAa0pC,EAAWr3C,EAGf,qBAArC,GAAG2Q,SAAS1P,KAAKjB,EAAO8tC,SA9FxBwF,EAAe,WACX,IAAIiE,EAASC,EAA6B9wC,WAE1C,OADAonC,EAAQsI,SAASqB,EAAiBC,EAAcH,IACzCA,IAIf,WAGI,GAAIv3C,EAAO23C,cAAgB33C,EAAO43C,cAAe,CAC7C,IAAIC,GAA4B,EAC5BC,EAAe93C,EAAO+3C,UAM1B,OALA/3C,EAAO+3C,UAAY,WACfF,GAA4B,GAEhC73C,EAAO23C,YAAY,GAAI,KACvB33C,EAAO+3C,UAAYD,EACZD,GAgFJG,GAIAh4C,EAAOi4C,iBApDVpB,EAAU,IAAIoB,gBACVC,MAAMH,UAAY,SAASztC,GAE/BotC,EADaptC,EAAM3E,OAIvB2tC,EAAe,WACX,IAAIiE,EAASC,EAA6B9wC,WAE1C,OADAmwC,EAAQsB,MAAMR,YAAYJ,GACnBA,IA+CJJ,GAAO,uBAAwBA,EAAIiB,cAAc,WA1CpDxB,EAAOO,EAAIkB,gBACf/E,EAAe,WACX,IAAIiE,EAASC,EAA6B9wC,WAGtC4xC,EAASnB,EAAIiB,cAAc,UAQ/B,OAPAE,EAAOC,mBAAqB,WACxBb,EAAaH,GACbe,EAAOC,mBAAqB,KAC5B3B,EAAK4B,YAAYF,GACjBA,EAAS,MAEb1B,EAAK6B,YAAYH,GACVf,IAKXjE,EAAe,WACX,IAAIiE,EAASC,EAA6B9wC,WAE1C,OADAiH,WAAW8pC,EAAiBC,EAAcH,GAAS,GAC5CA,IA1DPT,EAAgB,gBAAkB57B,KAAKw9B,SAAW,IAClD3B,EAAkB,SAASzsC,GACvBA,EAAMquC,SAAW34C,GACK,iBAAfsK,EAAM3E,MACyB,IAAtC2E,EAAM3E,KAAKqG,QAAQ8qC,IACnBY,GAAcptC,EAAM3E,KAAK4G,MAAMuqC,EAAc51C,UAIjDlB,EAAO44C,iBACP54C,EAAO44C,iBAAiB,UAAW7B,GAAiB,GAEpD/2C,EAAO64C,YAAY,YAAa9B,GAGpCzD,EAAe,WACX,IAAIiE,EAASC,EAA6B9wC,WAE1C,OADA1G,EAAO23C,YAAYb,EAAgBS,EAAQ,KACpCA,IAsEfF,EAAS/D,aAAeA,EACxB+D,EAASyB,eAAiBA,EAhK1B,SAAStB,EAA6B7uC,GAElC,OADAsuC,EAAcD,GAAcS,EAAiBlqC,MAAM2xB,EAAWv2B,GACvDquC,IAKX,SAASS,EAAiBsB,GACtB,IAAIpwC,EAAO,GAAG4D,MAAMtL,KAAKyF,UAAW,GACpC,OAAO,WACoB,mBAAZqyC,EACPA,EAAQxrC,MAAM2xB,EAAWv2B,GAEzB,IAAKqwC,SAAS,GAAKD,EAAnB,IAKZ,SAASrB,EAAaH,GAGlB,GAAIL,EAGAvpC,WAAW8pC,EAAiBC,EAAcH,GAAS,OAChD,CACH,IAAI0B,EAAOhC,EAAcM,GACzB,GAAI0B,EAAM,CACN/B,GAAwB,EACxB,IACI+B,IACF,QACEH,EAAevB,GACfL,GAAwB,KAMxC,SAAS4B,EAAevB,UACbN,EAAcM,IArD7B,CA8KkB,oBAATt3C,UAAyC,IAAXD,EAAyBE,KAAOF,EAASC,QAE7EgB,KAAKf,KAAKS,EAAQ,YAA8B,oBAAXX,OAAyBA,OAAyB,oBAATC,KAAuBA,KAAyB,oBAAXF,OAAyBA,OAAS,KACtJ,CAACizC,SAAW,KAAKkG,GAAG,CAAC,SAASv4C,EAAQf,EAAOD,IAC/C,SAAWK,GACXJ,EAAOD,QAAU,CAAE2zC,aAActzC,EAAOszC,gBACrCryC,KAAKf,KAAuB,oBAAXF,OAAyBA,OAAyB,oBAATC,KAAuBA,KAAyB,oBAAXF,OAAyBA,OAAS,KAClI,IAAIo5C,GAAG,CAAC,SAASx4C,EAAQf,EAAOD,IAClC,SAAWK,GAEX,IAAIo5C,EAEJ,GAAIp5C,EAAO8xB,QAAUA,OAAOE,gBAAiB,CAG3C,IAAIqnB,EAAS,IAAI7lC,WAAW,IAC5B4lC,EAAM,WAEJ,OADAtnB,OAAOE,gBAAgBqnB,GAChBA,GAIX,IAAKD,EAAK,CAKR,IAAKE,EAAQ,IAAIr2C,MAAM,IACvBm2C,EAAM,WACJ,IAAK,IAAWh5C,EAAPK,EAAI,EAAMA,EAAI,GAAIA,IACN,IAAV,EAAJA,KAAiBL,EAAoB,WAAhB8a,KAAKw9B,UAC/BY,EAAM74C,GAAKL,MAAY,EAAJK,IAAa,GAAK,IAGvC,OAAO64C,GAIX15C,EAAOD,QAAUy5C,IAGdn4C,KAAKf,KAAuB,oBAAXF,OAAyBA,OAAyB,oBAATC,KAAuBA,KAAyB,oBAAXF,OAAyBA,OAAS,KAClI,IAAIw5C,GAAG,CAAC,SAAS54C,EAAQf,EAAOD,GAclC,IALA,IAAI65C,EAAO74C,EAAQ,SAGf84C,EAAa,GACbC,EAAa,GACRj5C,EAAI,EAAGA,EAAI,IAAKA,IACvBg5C,EAAWh5C,IAAMA,EAAI,KAAOkQ,SAAS,IAAI4D,OAAO,GAChDmlC,EAAWD,EAAWh5C,IAAMA,EAuB9B,SAASk5C,EAAQ/W,EAAKoN,GACpB,IAAIvvC,EAAIuvC,GAAU,EAAG4J,EAAMH,EAC3B,OAAQG,EAAIhX,EAAIniC,MAAQm5C,EAAIhX,EAAIniC,MACxBm5C,EAAIhX,EAAIniC,MAAQm5C,EAAIhX,EAAIniC,MAAQ,IAChCm5C,EAAIhX,EAAIniC,MAAQm5C,EAAIhX,EAAIniC,MAAQ,IAChCm5C,EAAIhX,EAAIniC,MAAQm5C,EAAIhX,EAAIniC,MAAQ,IAChCm5C,EAAIhX,EAAIniC,MAAQm5C,EAAIhX,EAAIniC,MAAQ,IAChCm5C,EAAIhX,EAAIniC,MAAQm5C,EAAIhX,EAAIniC,MACxBm5C,EAAIhX,EAAIniC,MAAQm5C,EAAIhX,EAAIniC,MACxBm5C,EAAIhX,EAAIniC,MAAQm5C,EAAIhX,EAAIniC,MASlC,IAAIo5C,EAAaL,IAGbM,EAAU,CACI,EAAhBD,EAAW,GACXA,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,IAIrEE,EAAmD,OAAtCF,EAAW,IAAM,EAAIA,EAAW,IAG7CG,EAAa,EAAGC,EAAa,EAiFjC,SAASC,EAAGxb,EAASkE,EAAKoN,GAExB,IAAIvvC,EAAImiC,GAAOoN,GAAU,EAEF,iBAAb,IACRpN,EAAiB,UAAXlE,EAAsB,IAAIz7B,MAAM,IAAM,KAC5Cy7B,EAAU,MAIZ,IAAIyb,GAFJzb,EAAUA,GAAW,IAEFga,SAAWha,EAAQ0a,KAAOI,KAO7C,GAJAW,EAAK,GAAgB,GAAVA,EAAK,GAAa,GAC7BA,EAAK,GAAgB,GAAVA,EAAK,GAAa,IAGzBvX,EACF,IAAK,IAAIwX,EAAK,EAAGA,EAAK,GAAIA,IACxBxX,EAAIniC,EAAI25C,GAAMD,EAAKC,GAIvB,OAAOxX,GAAO+W,EAAQQ,GAIxB,IAAIE,EAAOH,EACXG,EAAK9gB,GA1GL,SAAYmF,EAASkE,EAAKoN,GACxB,IAAIvvC,EAAImiC,GAAOoN,GAAU,EACrB7sC,EAAIy/B,GAAO,GAIX0X,OAAgCpb,KAFpCR,EAAUA,GAAW,IAEE4b,SAAyB5b,EAAQ4b,SAAWP,EAM/DQ,OAA0Brb,IAAlBR,EAAQ6b,MAAsB7b,EAAQ6b,OAAQ,IAAIC,MAAOC,UAIjEC,OAA0Bxb,IAAlBR,EAAQgc,MAAsBhc,EAAQgc,MAAQT,EAAa,EAGnEU,EAAMJ,EAAQP,GAAeU,EAAQT,GAAY,IAcrD,GAXIU,EAAK,QAA0Bzb,IAArBR,EAAQ4b,WACpBA,EAAWA,EAAW,EAAI,QAKvBK,EAAK,GAAaX,EAARO,SAAyCrb,IAAlBR,EAAQgc,QAC5CA,EAAQ,GAIG,KAATA,EACF,MAAM,IAAI55C,MAAM,mDAGlBk5C,EAAaO,EAEbR,EAAYO,EAMZ,IAAIM,GAA4B,KAAb,WAHnBL,GAAS,eAJTN,EAAaS,IAOoC,WACjDv3C,EAAE1C,KAAOm6C,IAAO,GAAK,IACrBz3C,EAAE1C,KAAOm6C,IAAO,GAAK,IACrBz3C,EAAE1C,KAAOm6C,IAAO,EAAI,IACpBz3C,EAAE1C,KAAY,IAALm6C,EAGT,IAAIC,EAAON,EAAQ,WAAc,IAAS,UAC1Cp3C,EAAE1C,KAAOo6C,IAAQ,EAAI,IACrB13C,EAAE1C,KAAa,IAANo6C,EAGT13C,EAAE1C,KAAOo6C,IAAQ,GAAK,GAAM,GAC5B13C,EAAE1C,KAAOo6C,IAAQ,GAAK,IAGtB13C,EAAE1C,KAAO65C,IAAa,EAAI,IAG1Bn3C,EAAE1C,KAAkB,IAAX65C,EAIT,IADA,IAAIrM,EAAOvP,EAAQuP,MAAQ6L,EAClBx5C,EAAI,EAAGA,EAAI,EAAGA,IACrB6C,EAAE1C,EAAIH,GAAK2tC,EAAK3tC,GAGlB,OAAOsiC,GAAY+W,EAAQx2C,IAmC7Bk3C,EAAKH,GAAKA,EACVG,EAAKnrC,MAhKL,SAAesY,EAAGob,EAAKoN,GACrB,IAAIvvC,EAAKmiC,GAAOoN,GAAW,EAAGoK,EAAK,EAUnC,IARAxX,EAAMA,GAAO,GACbpb,EAAE/a,cAAcoP,QAAQ,eAAgB,SAASi/B,GAC3CV,EAAK,KACPxX,EAAIniC,EAAI25C,KAAQV,EAAWoB,MAKxBV,EAAK,IACVxX,EAAIniC,EAAI25C,KAAQ,EAGlB,OAAOxX,GAkJTyX,EAAKV,QAAUA,EAEf/5C,EAAOD,QAAU06C,GAEf,CAACU,QAAQ,KAAKC,GAAG,CAAC,SAASr6C,EAAQf,EAAOD,GAC5C,aACAyB,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IACI1B,EAAOD,QAAQs7C,eAAiBA,eAEpC,MAAOjyC,GACH2B,QAAQC,IAAI,0CACZhL,EAAOD,QAAQs7C,eAAiB,OAGlC,IAAIC,GAAG,CAAC,SAASv6C,EAAQf,EAAOD,GAClC,aACAyB,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAIG,EAAed,EAAQ,uBAKvBoJ,EAA0B,WAC1B,SAASA,IACLtI,EAAaE,QAAQzB,KAAM,YAK/B,OAHA6J,EAASC,WAAa,SAAU1I,GAC5B,OAAOG,EAAaI,OAAOP,EAAO,aAE/ByI,EAPkB,GAS7BpK,EAAQoK,SAAWA,GAGjB,CAACoxC,sBAAsB,KAAKC,GAAG,CAAC,SAASz6C,EAAQf,EAAOD,GAC1D,aACA,IACQkD,EADJC,EAAa5C,MAAQA,KAAK4C,YACtBD,EAAgBzB,OAAO2B,gBACtB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAInC,KAAKmC,EAAOA,EAAEC,eAAepC,KAAIkC,EAAElC,GAAKmC,EAAEnC,KAClE,SAAUkC,EAAGC,GAEhB,SAASE,IAAOnD,KAAKoD,YAAcJ,EADnCL,EAAcK,EAAGC,GAEjBD,EAAEK,UAAkB,OAANJ,EAAa/B,OAAOoC,OAAOL,IAAME,EAAGE,UAAYJ,EAAEI,UAAW,IAAIF,KAGnFI,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAI2C,EAAYtD,EAAQ,oBACpBqB,EAAcrB,EAAQ,sBACtBuD,EAAUvD,EAAQ,kBAClB06C,EAAS16C,EAAQ,iBACjB26C,EAAa36C,EAAQ,qBACrBc,EAAed,EAAQ,uBACvB46C,EAAQ56C,EAAQ,gBAChB66C,EAAgB76C,EAAQ,wBACxB86C,EAAS96C,EAAQ,iBACjB+6C,EAAQ/6C,EAAQ,gBAChBoD,EAASN,EAAa9C,EAAQ,cAG9ByD,EAAsBzD,EAAQ,uBAIlC,SAASg7C,EAAMC,EAAQttC,GACnB,IAAI1K,EAAS,GACb,IAAK,IAAIiD,KAAO+0C,EACZ,IACI,IAAIt6C,EAAQs6C,EAAO/0C,GAAKyH,EAAOzH,SACjBq4B,IAAV59B,IACAsC,EAAOiD,GAAOvF,GAGtB,MAAO0H,GAGH,MAFAA,EAAM6yC,SAAWh1C,EACjBmC,EAAM8yC,WAAaxtC,EAAOzH,GACpBmC,EAGd,OAAOpF,EAEX,SAASm4C,EAAUJ,EAAOK,GACtB,OAAO,SAAW16C,GACd,OAAa,MAATA,EACO06C,EAEJL,EAAMr6C,IAWrB,SAAS26C,EAAQN,GACb,OAAO,SAAW7L,GACd,IAAK7sC,MAAMoE,QAAQyoC,GACf,MAAM,IAAIhvC,MAAM,gBAEpB,IAAI8C,EAAS,GAIb,OAHAksC,EAAM9oC,QAAQ,SAAU1F,GACpBsC,EAAO8D,KAAKi0C,EAAMr6C,MAEfsC,GAGf,SAASs4C,EAAU1d,GACf,MAAsB,iBAAX,GAAuD,KAAhCt6B,EAAQmE,cAAcm2B,GAC7CA,EAAK/xB,eAEhB1I,EAAOoB,WAAW,eAAgBpB,EAAOkG,iBAAkB,CAAEC,IAAK,OAAQ5I,MAAOk9B,IAC1E,MAEX,SAAS2d,EAAYhiC,GACjB,OAAOnY,EAAYK,aAAa8X,GAAQ6D,WAyB5C,SAASo+B,EAAaC,GAClB,IAAKn4C,EAAQsK,YAAY6tC,GACrB,MAAM,IAAIv7C,MAAM,mBAEpB,KAAOu7C,EAAQn7C,OAAS,IACpBm7C,EAAU,MAAQA,EAAQ9tC,UAAU,GAExC,OAAO8tC,EAQX,SAASC,EAAcC,GACnB,GAAgB,MAAZA,EACA,MAAO,SAEX,GAAiB,aAAbA,EACA,MAAO,MAEX,GAAiB,WAAbA,GAAsC,YAAbA,EACzB,OAAOA,EAEX,GAA0B,iBAAf,EACP,OAAOr4C,EAAQs4C,cAAct4C,EAAQmK,QAAQkuC,IAEjD,GAAIr4C,EAAQsK,YAAY+tC,GACpB,OAAOr4C,EAAQs4C,cAAcD,GAEjC,MAAM,IAAIz7C,MAAM,oBAEpB,IAAI27C,EAAoB,CACpBje,KAAM0d,EACNhvC,UAAW6uC,EAAUG,EAAW,MAChCQ,YAAaX,EAAUI,EAAa,MACpCQ,iBAAkBZ,EAAUI,EAAa,MACzCv2C,KAAM3B,EAAUW,WAChBkB,SAAU9D,EAAYK,aACtBwD,SAAU7D,EAAYK,aACtB2D,GAAI+1C,EAAU93C,EAAUW,WAAY,MACpCtD,MAAOU,EAAYK,aACnB0D,MAAOo2C,EACPx2C,KAAMzB,EAAQmK,QACdjO,EAAG27C,EAAUK,GACb50B,EAAGu0B,EAAUK,GACb50C,EAAGu0C,EAAUI,GACbS,QAASb,EAAU93C,EAAUW,WAAY,MACzCi4C,IAAKd,EAAU73C,EAAQmK,UAE3B,SAASyuC,EAAyBv3C,GAmB9B,GAjBuB,MAAnBA,EAAY2D,KAAuC,MAAxB3D,EAAYM,WACvCN,EAAYM,SAAWN,EAAY2D,KAInC3D,EAAYS,IAAMhE,EAAYK,aAAakD,EAAYS,IAAI6X,WAC3DtY,EAAYS,GAAK,8CAGI,MAArBT,EAAYurB,OAAqC,MAApBvrB,EAAYI,OACzCJ,EAAYI,KAAOJ,EAAYurB,OAGb,MAAlBvrB,EAAYS,IAAqC,MAAvBT,EAAYq3C,UACtCr3C,EAAYq3C,QAAU34C,EAAU4K,mBAAmBtJ,KAGlDA,EAAYs3C,KAETt3C,EAAYiC,GAAKjC,EAAYnF,GAAKmF,EAAYiiB,EAAG,CACjD,IAAIq1B,EAAM,CACN34C,EAAQ64C,WAAW74C,EAAQmK,QAAQ9I,EAAYQ,QAC/C7B,EAAQ64C,WAAW74C,EAAQmK,QAAQ9I,EAAYO,WAC/C5B,EAAQ64C,WAAW74C,EAAQmK,QAAQ9I,EAAYM,WAC9CN,EAAYS,IAAM,KACnB9B,EAAQ64C,WAAW74C,EAAQmK,QAAQ9I,EAAYjE,OAAS,OACxD4C,EAAQmK,QAAQ9I,EAAYI,MAAQ,MACpCzB,EAAQ64C,WAAW74C,EAAQmK,QAAQ9I,EAAYiC,GAAK,OACpDtD,EAAQ64C,WAAW74C,EAAQmK,QAAQ9I,EAAYnF,IAC/C8D,EAAQ64C,WAAW74C,EAAQmK,QAAQ9I,EAAYiiB,KAEnDjiB,EAAYs3C,IAAMtB,EAAMpzC,OAAO00C,GAGvC,IAAIj5C,EAAS+3C,EAAMc,EAAmBl3C,GAClCy3C,EAAYz3C,EAAYy3C,UAmB5B,OAlBI94C,EAAQsK,YAAYwuC,KACpBA,EAAYh7C,EAAYK,aAAa26C,GAAWh/B,YAEzB,iBAAhB,GAAwC,MAAZpa,EAAO4D,KAC1Cw1C,GAAap5C,EAAO4D,EAAI,IAAM,GACd,IACZw1C,EAAY,GAEhBA,EAAYhqC,SAASgqC,IAEE,iBAAhB,IACPA,EAAY,GAEhBp5C,EAAOo5C,UAAYA,EAEfp5C,EAAOsJ,WAAoD,MAAvCtJ,EAAOsJ,UAAU2O,QAAQ,KAAM,MACnDjY,EAAOsJ,UAAY,MAEhBtJ,EAEX,IAAIq5C,EAAc,CACdze,KAAM0d,EACNgB,WAAYhB,EACZ/hC,OAAQgiC,EACRgB,UAAWhB,EACXp2C,MAAOg2C,EAAU73C,EAAQmK,SACzB+uC,WAzIJ,SAAyB97C,GACrB,IAAIkG,EAAIxF,EAAYK,aAAaf,GACjC,IACI,OAAOkG,EAAEwW,WAEb,MAAOhV,IACP,OAAO,MAoIPnD,SAAU7D,EAAYK,aACtBg7C,QAASr7C,EAAYK,aACrBi7C,MAAOr5C,EAAUW,WACjB24C,UAAWr5C,EAAQmK,QACnBmvC,aAAczB,EAAUE,EAAQC,KAEhCuB,EAA8Bh8C,EAAaqF,YAAYm2C,GAE3D,SAASS,EAAWxmC,EAAOymC,GAIvB,OAHoB,MAAhBzmC,EAAM0mC,QAAiC,MAAf1mC,EAAMomC,QAC9BpmC,EAAMomC,MAAQpmC,EAAM0mC,QAEjBjC,EAAMgC,EAAsBF,EAA8BR,EAAa/lC,GALlFumC,EAA4BD,aAAezB,EAAUE,EAAQa,IAO7D,IAAIe,EAA2B,CAC3Bj4C,KAAMm2C,EAAU93C,EAAUW,YAC1BmB,MAAOg2C,EAAUI,GACjBt2C,SAAUk2C,EAAU/5C,EAAYK,cAChCyD,SAAUi2C,EAAU/5C,EAAYK,cAChC2D,GAAI+1C,EAAU93C,EAAUW,YACxBtD,MAAOy6C,EAAU/5C,EAAYK,cAC7BsD,KAAMo2C,EAAU73C,EAAQmK,UAE5B,SAASyvC,EAAwBv4C,GAC7B,OAAOo2C,EAAMkC,EAA0Bt4C,GAE3C,IAAIw4C,EAA8B,CAC9BC,oBAAqBjC,EAAUI,GAC/BQ,iBAAkBR,EAClBO,YAAaP,EACb/uC,gBAAiB8uC,EACjB13C,QAASP,EAAUW,WACnB0E,OAAQ2yC,EAAQC,GAChBv2C,KAAMzB,EAAQmK,QACd4vC,SAAU9B,EACVjvC,UAAWgvC,GAKf,IAAIgC,EAA2B,CAC3B9yC,gBAAiB2wC,EAAU93C,EAAUW,WAAY,MACjD+3C,iBAAkBR,EAClBrpC,KAAMipC,EAAUG,GAChBmB,QAASr7C,EAAYK,aACrB87C,UAAWpC,EAAU73C,EAAQmK,SAC7BnB,UAAWgvC,EACX9uC,gBAAiB8uC,EACjBkC,KAAMnC,EAXV,SAAoCrxC,GAChC,OAAO+wC,EAAMoC,EAA6BnzC,KAW1C8xC,YAAaP,EACbkC,kBAAmBr8C,EAAYK,aAC/Bi8C,OAAQvC,EAAUI,IA2BtB,IAAIoC,EAAe,CACfC,UAAWzC,EAAUO,OAAepd,GACpCuf,QAAS1C,EAAUO,OAAepd,GAClC16B,QAASu3C,EAAU93C,EAAUW,gBAAYs6B,GACzC51B,OAAQyyC,EAfZ,SAAS2C,EAAYp1C,GASjB,OARIrG,MAAMoE,QAAQiC,GACdA,EAAOtC,QAAQ,SAAUsF,GACrBoyC,EAAYpyC,KAGD,MAAVhD,GACL4yC,EAAU5yC,GAEPA,QAMwB41B,IAKnC,IAhQsByc,EAAOgD,EAgQzBC,EAAY,CACZlC,YAAaX,EAAUI,GACvBjvC,UAAW6uC,EAAUG,GACrBS,iBAAkBR,EAClB0C,QAAS9C,EA7Nb,SAAsBz6C,GAClB,GAAuB,kBAAZ,EACP,OAAOA,EAEX,GAAuB,iBAAZ,EAAsB,CAC7B,GAAc,SAAVA,EACA,OAAO,EAEX,GAAc,UAAVA,EACA,OAAO,EAGf,MAAM,IAAIR,MAAM,oBAAsBQ,KAkNtCkD,QAASP,EAAUW,WACnBe,MAtQkBg2C,EAsQCz3C,EAAQmK,QAtQFswC,EAsQW,KArQ7B,SAAWr9C,GACd,OAAKA,EAGEq6C,EAAMr6C,GAFFq9C,IAoQfr1C,OAAQ2yC,EAAQC,GAChB9uC,gBAAiB8uC,EACjB+B,SAAU9B,GAEd,SAAS2C,EAASl0C,GACd,OAAO+wC,EAAMiD,EAAWh0C,GAI5B,SAASm0C,EAAgBz1C,GACrB,OAAOA,EAAOwE,IAAI,SAAUxB,GACxB,MAAuB,iBAAZ,EACAA,EAEFrJ,MAAMoE,QAAQiF,IACnBA,EAAMtF,QAAQ,SAAUsF,GACN,OAAVA,GAAmD,KAAjCpI,EAAQmE,cAAciE,IACxCvI,EAAOoB,WAAW,gBAAiBpB,EAAOkG,iBAAkB,CAAEY,SAAU,QAASvJ,MAAOgL,MAGzFA,EAAM/C,KAAK,MAEH,OAAV+C,EACE,GAEJvI,EAAOoB,WAAW,sBAAuBpB,EAAOkG,iBAAkB,CAAEY,SAAU,QAASvJ,MAAOgL,MACtG/C,KAAK,KAmBZ,SAASH,EAAYiB,GACjB,GAA2B,iBAAhB,EAA0B,CACjC,GAAyC,KAArCnG,EAAQmE,cAAcgC,GACtB,MAAO,WAAapG,EAAUW,WAAWyF,GAG7C,GAAkB,WADlBA,EAAYA,EAAUoC,gBACqB,YAAdpC,GAAyC,UAAdA,EACpD,OAAOA,EAEN,GAAyC,KAArCnG,EAAQmE,cAAcgC,GAC3B,MAAO,MAAQA,MAGlB,CAAA,GAAIpH,MAAMoE,QAAQgD,GACnB,MAAO,WAAa00C,EAAgB10C,GAEnC,GAAIA,GAAoC,iBAAhB,EACzB,MAAO,WAAaA,EAAU7F,SAAW,IAAM,IAAMu6C,EAAgB10C,EAAUf,QAAU,IAE7F,MAAM,IAAIxI,MAAM,mBAAqBuJ,GAEzC,IAAI20C,EAA8B,SAAUz6C,GAExC,SAASy6C,EAAajtC,GAClB,IAAIrN,EAAQH,EAAOtD,KAAKf,OAASA,KAEjC,GADA6D,EAAO6F,SAASlF,EAAON,EAAoB2F,UACvCgI,aAAmBlN,QACnBpD,EAAakD,eAAeD,EAAO,QAASqN,EAAQ7M,KAAK,SAAU6M,GAE/D,OADAtQ,EAAakD,eAAeD,EAAO,WAAYqN,GACxCA,SAGV,CACD,IAAIktC,EAAe3D,EAAW4D,WAAuB,MAAXntC,EAAmB,YAAcA,GACvEktC,GACAx9C,EAAakD,eAAeD,EAAO,WAAYu6C,GAC/Cx9C,EAAakD,eAAeD,EAAO,QAASG,QAAQC,QAAQJ,EAAMy6C,YAGlEp7C,EAAOoB,WAAW,kBAAmBpB,EAAOkG,iBAAkB,CAAEC,IAAK,UAAW5I,MAAOyQ,IAc/F,OAXArN,EAAM06C,kBAAoB,EAE1B16C,EAAM26C,UAAY,GAElB36C,EAAM+F,QAAU,GAChB/F,EAAM46C,iBAAmB,IAKzB56C,EAAM66C,SAAW,CAAEroC,MAAOxS,EAAM06C,kBACzB16C,EA4oBX,OA3qBA5B,EAAUk8C,EAAcz6C,GAiCxBy6C,EAAaz7C,UAAUi8C,QAAU,WAC7B,IAAI96C,EAAQxE,KACZA,KAAKu/C,iBAAiBv6C,KAAK,SAAUw3C,GAEjC,GAAIA,IAAgBh4C,EAAM06C,iBAA1B,EAGgC,IAA5B16C,EAAM06C,mBACN16C,EAAM06C,iBAAmB1C,EAAc,GAG3C,IAAK,IAAIj8C,EAAIiE,EAAM06C,iBAAmB,EAAG3+C,GAAKi8C,EAAaj8C,IACnDiE,EAAM66C,SAASroC,MAAQzW,IACvBiE,EAAM66C,SAASroC,MAAQzW,EAGvBW,OAAO+I,KAAKzF,EAAM66C,UAAUv4C,QAAQ,SAAUH,GAC9B,UAARA,GAGAnC,EAAM66C,SAAS14C,GAAOpG,EAAI,WACnBiE,EAAM66C,SAAS14C,MAIlCnC,EAAM4I,KAAK,QAAS7M,GAGxB,IAAIi/C,EAAc,GA2DlB,OAzDAh7C,EAAM+F,QAAQzD,QAAQ,SAAUsD,GAC5B,IAAIq1C,EAAQr1C,EAAMs1C,IAAIhvB,MAAM,KAC5B,OAAQ+uB,EAAM,IACV,IAAK,KACD,IAAIE,EAASF,EAAM,GACnBj7C,EAAM2I,sBAAsBwyC,GAAQ36C,KAAK,SAAU46C,GAC/C,OAAKA,GAAkC,MAAvBA,EAAQpD,cAGxBh4C,EAAM66C,SAAS,KAAOM,GAAUC,EAAQpD,YACxCh4C,EAAM4I,KAAKuyC,EAAQC,IACZ,OACRp1C,MAAM,SAAU1B,GAAStE,EAAM4I,KAAK,QAAStE,KAChD,MAEJ,IAAK,UACD,IAAI+2C,EAAYJ,EAAM,GAClBj7C,EAAM26C,UAAUU,KAChBL,EAAYK,GAAar7C,EAAM26C,UAAUU,IAE7Cr7C,EAAMs7C,WAAWD,EAAW,UAAU76C,KAAK,SAAU+6C,GACjD,IAAIC,EAAchgD,KAAKm/C,UAAUU,GACjC,IAAIG,IAAeD,EAAQnyB,GAAGoyB,GAK9B,OAFAhgD,KAAKm/C,UAAUU,GAAaE,EAC5B//C,KAAKoN,KAAKyyC,EAAWE,GACd,OACRv1C,MAAM,SAAU1B,GAAStE,EAAM4I,KAAK,QAAStE,KAChD,MAEJ,IAAK,SACD,IAAIxE,EAAUm7C,EAAM,GAChBr2C,EAA2Bq2C,EAAM,GAtI7C/uB,MAAM,MAAM9iB,IAAI,SAAUxB,GAClC,IAAIqzC,EAAQrzC,EAAMskB,MAAM,KACxB,OAAqB,IAAjB+uB,EAAMz+C,OACW,KAAby+C,EAAM,GACC,KAEJrzC,EAEJqzC,EAAM7xC,IAAI,SAAUxB,GACvB,MAAc,KAAVA,EACO,KAEJA,MA2HSD,EAAW,CACX7H,QAASA,EACTg6C,UAAW95C,EAAM06C,iBAAmB,EACpCX,QAAS/B,EACTpzC,OAAQA,GAEZ5E,EAAMy7C,QAAQ9zC,GAAUnH,KAAK,SAAUk5C,GACnC,GAAoB,IAAhBA,EAAKl9C,OAQT,OALAk9C,EAAKp3C,QAAQ,SAAU4D,GACnBlG,EAAM66C,SAAS,KAAO30C,EAAIsC,WAAatC,EAAI8xC,YAC3Ch4C,EAAM66C,SAAS,KAAO30C,EAAIwC,iBAAmBxC,EAAI8xC,YACjDh4C,EAAM4I,KAAKjB,EAAUzB,KAElB,OACRF,MAAM,SAAU1B,GAAStE,EAAM4I,KAAK,QAAStE,QAK5DtE,EAAM06C,iBAAmB1C,EACzBh4C,EAAM26C,UAAYK,EACX,QACRh1C,MAAM,SAAU1B,MACnB9I,KAAKkgD,UAETpB,EAAaz7C,UAAU88C,iBAAmB,SAAU3D,GAChDx8C,KAAKk/C,iBAAmB1C,EACxBx8C,KAAKs/C,WAETp+C,OAAOC,eAAe29C,EAAaz7C,UAAW,UAAW,CACrDu7B,IAAK,WACD,OAAO5+B,KAAKi/C,UAEhBtgB,YAAY,EACZD,cAAc,IAElBogB,EAAaz7C,UAAU27C,WAAa,WAChC,OAAOh/C,KAAKogD,OAEhBl/C,OAAOC,eAAe29C,EAAaz7C,UAAW,cAAe,CACzDu7B,IAAK,WACD,OAAI5+B,KAAKk/C,iBAAmB,EACjB,KAEJl/C,KAAKk/C,kBAEhBvgB,YAAY,EACZD,cAAc,IAElBx9B,OAAOC,eAAe29C,EAAaz7C,UAAW,UAAW,CACrDu7B,IAAK,WACD,OAAwB,MAAhB5+B,KAAKqgD,SAEjBvsC,IAAK,SAAU1S,GACX,IAAIoD,EAAQxE,KACZyN,WAAW,WACHrM,IAAUoD,EAAM67C,QAChB77C,EAAM67C,QAAUC,YAAY97C,EAAM86C,QAAQiB,KAAK/7C,GAAQA,EAAMg8C,kBAEvDp/C,GAASoD,EAAM67C,UACrBI,cAAcj8C,EAAM67C,SACpB77C,EAAM67C,QAAU,OAErB,IAEP1hB,YAAY,EACZD,cAAc,IAElBx9B,OAAOC,eAAe29C,EAAaz7C,UAAW,kBAAmB,CAC7Du7B,IAAK,WACD,OAAO5+B,KAAKo/C,kBAEhBtrC,IAAK,SAAU1S,GACX,IAAIoD,EAAQxE,KACZ,GAAuB,iBAAZ,GAAwBoB,GAAS,GAAK0R,SAAS0B,OAAOpT,KAAWA,EACxE,MAAM,IAAIR,MAAM,4BAEpBZ,KAAKo/C,iBAAmBh+C,EACpBpB,KAAKqgD,UACLI,cAAczgD,KAAKqgD,SACnBrgD,KAAKqgD,QAAUC,YAAY,WAAc97C,EAAM86C,WAAct/C,KAAKo/C,oBAG1EzgB,YAAY,EACZD,cAAc,IAIlBogB,EAAaz7C,UAAUq9C,mBAAqB,SAAUxzC,EAAiByzC,GACnE,IAAIn8C,EAAQxE,KACZ,OAAOw7C,EAAMoF,KAAK,WACd,OAAOp8C,EAAM2I,sBAAsBD,GAAiBlI,KAAK,SAAU46C,GAC/D,GAAe,MAAXA,EAGJ,OAAOA,KAEZ,CAAEiB,UAAW7gD,QAEpB8+C,EAAaz7C,UAAUk8C,eAAiB,WACpC,IAAI/6C,EAAQxE,KACZ,OAAOA,KAAKogD,MAAMp7C,KAAK,WACnB,OAAOR,EAAMs8C,QAAQ,iBAAkB,IAAI97C,KAAK,SAAUtB,GACtD,IAAItC,EAAQ0R,SAASpP,GACrB,GAAItC,GAASsC,EACT,MAAM,IAAI9C,MAAM,qCAEpB,OAAOQ,OAInB09C,EAAaz7C,UAAU09C,YAAc,WACjC,IAAIv8C,EAAQxE,KACZ,OAAOA,KAAKogD,MAAMp7C,KAAK,WACnB,OAAOR,EAAMs8C,QAAQ,cAAe,IAAI97C,KAAK,SAAUtB,GACnD,OAAO5B,EAAYK,aAAauB,QAI5Co7C,EAAaz7C,UAAUy8C,WAAa,SAAUv2C,EAAe8yC,GACzD,IAAI73C,EAAQxE,KACZ,OAAOA,KAAKogD,MAAMp7C,KAAK,WACnB,OAAOzD,EAAay/C,kBAAkB,CAAEz3C,cAAeA,EAAe8yC,SAAUA,IAAYr3C,KAAK,SAAUi8C,GACvG,IAAI13C,EAAgB03C,EAAG13C,cAAe8yC,EAAW4E,EAAG5E,SACpD,OAAO73C,EAAMmD,YAAY4B,GAAevE,KAAK,SAAUV,GACnD,IAAIgC,EAAS,CAAEhC,QAASA,EAAS+3C,SAAUD,EAAcC,IACzD,OAAO73C,EAAMs8C,QAAQ,aAAcx6C,GAAQtB,KAAK,SAAUtB,GACtD,OAAO5B,EAAYK,aAAauB,YAMpDo7C,EAAaz7C,UAAU69C,oBAAsB,SAAU33C,EAAe8yC,GAClE,IAAI73C,EAAQxE,KACZ,OAAOA,KAAKogD,MAAMp7C,KAAK,WACnB,OAAOzD,EAAay/C,kBAAkB,CAAEz3C,cAAeA,EAAe8yC,SAAUA,IAAYr3C,KAAK,SAAUi8C,GACvG,IAAI13C,EAAgB03C,EAAG13C,cAAe8yC,EAAW4E,EAAG5E,SACpD,OAAO73C,EAAMmD,YAAY4B,GAAevE,KAAK,SAAUV,GACnD,IAAIgC,EAAS,CAAEhC,QAASA,EAAS+3C,SAAUD,EAAcC,IACzD,OAAO73C,EAAMs8C,QAAQ,sBAAuBx6C,GAAQtB,KAAK,SAAUtB,GAC/D,OAAO5B,EAAYK,aAAauB,GAAQoa,oBAM5DghC,EAAaz7C,UAAU4H,QAAU,SAAU1B,EAAe8yC,GACtD,IAAI73C,EAAQxE,KACZ,OAAOA,KAAKogD,MAAMp7C,KAAK,WACnB,OAAOzD,EAAay/C,kBAAkB,CAAEz3C,cAAeA,EAAe8yC,SAAUA,IAAYr3C,KAAK,SAAUi8C,GACvG,IAAI13C,EAAgB03C,EAAG13C,cAAe8yC,EAAW4E,EAAG5E,SACpD,OAAO73C,EAAMmD,YAAY4B,GAAevE,KAAK,SAAUV,GACnD,IAAIgC,EAAS,CAAEhC,QAASA,EAAS+3C,SAAUD,EAAcC,IACzD,OAAO73C,EAAMs8C,QAAQ,UAAWx6C,GAAQtB,KAAK,SAAUtB,GACnD,OAAOM,EAAQmK,QAAQzK,YAM3Co7C,EAAaz7C,UAAU89C,aAAe,SAAU53C,EAAe63C,EAAU/E,GACrE,IAAI73C,EAAQxE,KACZ,OAAOA,KAAKogD,MAAMp7C,KAAK,WACnB,OAAOzD,EAAay/C,kBAAkB,CAAEz3C,cAAeA,EAAe63C,SAAUA,EAAU/E,SAAUA,IAAYr3C,KAAK,SAAUi8C,GAC3H,IAAI13C,EAAgB03C,EAAG13C,cAAe63C,EAAWH,EAAGG,SAAU/E,EAAW4E,EAAG5E,SAC5E,OAAO73C,EAAMmD,YAAY4B,GAAevE,KAAK,SAAUV,GACnD,IAAIgC,EAAS,CACThC,QAASA,EACT+3C,SAAUD,EAAcC,GACxB+E,SAAUp9C,EAAQs4C,cAAct4C,EAAQmK,QAAQizC,KAEpD,OAAO58C,EAAMs8C,QAAQ,eAAgBx6C,GAAQtB,KAAK,SAAUtB,GACxD,OAAOM,EAAQmK,QAAQzK,YAM3Co7C,EAAaz7C,UAAU+B,gBAAkB,SAAUi8C,GAC/C,IAAI78C,EAAQxE,KACZ,OAAOA,KAAKogD,MAAMp7C,KAAK,WACnB,OAAOzD,EAAay/C,kBAAkB,CAAEK,kBAAmBA,IAAqBr8C,KAAK,SAAUi8C,GAC3F,IAAII,EAAoBJ,EAAGI,kBACvB/6C,EAAS,CAAE+6C,kBAAmBr9C,EAAQmK,QAAQkzC,IAClD,OAAO78C,EAAMs8C,QAAQ,kBAAmBx6C,GAAQtB,KAAK,SAAUs5B,GAC3D,OAAO95B,EAAM88C,iBAAiBhG,EAActsC,MAAMqyC,GAAoB/iB,IACvE,SAAUx1B,GAKT,MAJAA,EAAMzD,YAAci2C,EAActsC,MAAMqyC,GACpCv4C,EAAMzD,YAAYi5B,OAClBx1B,EAAMoE,gBAAkBpE,EAAMzD,YAAYi5B,MAExCx1B,SAMtBg2C,EAAaz7C,UAAUi+C,iBAAmB,SAAU76C,EAAI63B,GACpD,IAAI95B,EAAQxE,KACZ,GAAoC,KAAhCgE,EAAQmE,cAAcm2B,GACtB,MAAM,IAAI19B,MAAM,sCAEpB,IAAI8C,EAAS+C,EAkBb,OAhBY,MAAR63B,GAAgB73B,EAAG63B,OAASA,GAC5Bz6B,EAAOoB,WAAW,2DAA4DpB,EAAOgM,cAAe,CAAE0xC,aAAc96C,EAAG63B,KAAMkjB,aAAcljB,IAE/It+B,KAAKq/C,SAAS,KAAO54C,EAAG63B,MAAQ,UAEhC56B,EAAOsH,KAAO,WACV,OAAOxG,EAAMk8C,mBAAmBpiB,GAAMt5B,KAAK,SAAU46C,GAOjD,OANuB,IAAnBA,EAAQxB,QACRv6C,EAAOoB,WAAW,qBAAsBpB,EAAO2E,eAAgB,CAC3D0E,gBAAiBoxB,EACjBj5B,YAAaoB,IAGdm5C,KAGRl8C,GAEXo7C,EAAaz7C,UAAUtC,KAAO,SAAUsE,GACpC,IAAIb,EAAQxE,KACRyG,EAAKlF,EAAaqF,YAAYvB,GAClC,OAAOrF,KAAKogD,MAAMp7C,KAAK,WACnB,OAAOzD,EAAay/C,kBAAkBv6C,GAAIzB,KAAK,SAAUyB,GACrD,OAAOjC,EAAMi9C,cAAch7C,EAAI,CAAC,KAAM,SAASzB,KAAK,SAAUyB,GAC1D,IAAIH,EAAS,CAAEjB,YAAau4C,EAAwBn3C,IACpD,OAAOjC,EAAMs8C,QAAQ,OAAQx6C,GAAQtB,KAAK,SAAUtB,GAChD,OAAOM,EAAQmK,QAAQzK,YAM3Co7C,EAAaz7C,UAAU0F,YAAc,SAAU1D,GAC3C,IAAIb,EAAQxE,KACRyG,EAAK,CACLX,GAAIT,EAAYS,GAChBJ,KAAML,EAAYK,KAClBD,KAAMJ,EAAYI,KAClBG,SAAUP,EAAYO,SACtBxE,MAAOiE,EAAYjE,OAEvB,OAAOpB,KAAKogD,MAAMp7C,KAAK,WACnB,OAAOzD,EAAay/C,kBAAkBv6C,GAAIzB,KAAK,SAAUyB,GACrD,OAAOjC,EAAMi9C,cAAch7C,EAAI,CAAC,KAAM,SAASzB,KAAK,SAAUyB,GAC1D,IAAIH,EAAS,CAAEjB,YAAau4C,EAAwBn3C,IACpD,OAAOjC,EAAMs8C,QAAQ,cAAex6C,GAAQtB,KAAK,SAAUtB,GACvD,OAAO5B,EAAYK,aAAauB,YAMpDo7C,EAAaz7C,UAAU0J,SAAW,SAAU20C,EAAqBjE,GAC7D,IAAIj5C,EAAQxE,KACZ,OAAOA,KAAKogD,MAAMp7C,KAAK,WACnB,OAAOzD,EAAay/C,kBAAkB,CAAEU,oBAAqBA,IAAuB18C,KAAK,SAAUi8C,GAC/F,IAAIS,EAAsBT,EAAGS,oBAC7B,IACI,IAAI10C,EAAYhJ,EAAQmK,QAAQuzC,GAChC,GAAyC,KAArC19C,EAAQmE,cAAc6E,GACtB,OAAOwuC,EAAMoF,KAAK,WACd,OAAOp8C,EAAMs8C,QAAQ,WAAY,CAAE9zC,UAAWA,EAAWywC,sBAAuBA,IAAuBz4C,KAAK,SAAUgS,GAClH,OAAa,MAATA,EACwC,MAApCxS,EAAM66C,SAAS,KAAOryC,GACf,UAEX,EAEGwwC,EAAWxmC,EAAOymC,MAE9B,CAAEoD,UAAWr8C,IAGxB,MAAOsE,IACP,IACI,IAAI64C,GAAiB,IACjBC,EAAaxF,EAAcsF,GAI/B,OAHI19C,EAAQsK,YAAYszC,KACpBD,EAAgB7uC,SAAS8uC,EAAWvzC,UAAU,GAAI,KAE/CmtC,EAAMoF,KAAK,WACd,OAAOp8C,EAAMs8C,QAAQ,WAAY,CAAEzE,SAAUuF,EAAYnE,sBAAuBA,IAAuBz4C,KAAK,SAAUgS,GAClH,GAAa,MAATA,EAAe,CACf,GAAI2qC,EAAgBn9C,EAAM66C,SAASroC,MAC/B,OAEJ,OAAO,KAEX,OAAOwmC,EAAWxmC,EAAOymC,MAE9B,CAAEoD,UAAWr8C,IAEpB,MAAOsE,IACP,MAAM,IAAIlI,MAAM,wCAI5Bk+C,EAAaz7C,UAAU4J,eAAiB,SAAUC,GAC9C,IAAI1I,EAAQxE,KACZ,OAAOA,KAAKogD,MAAMp7C,KAAK,WACnB,OAAOzD,EAAay/C,kBAAkB,CAAE9zC,gBAAiBA,IAAmBlI,KAAK,SAAUi8C,GACvF,IAAI/zC,EAAkB+zC,EAAG/zC,gBACrB5G,EAAS,CAAE4G,gBAAiB8uC,EAAU9uC,IAC1C,OAAOsuC,EAAMoF,KAAK,WACd,OAAOp8C,EAAMs8C,QAAQ,iBAAkBx6C,GAAQtB,KAAK,SAAUtB,GAC1D,OAAc,MAAVA,EAC8C,MAA1Cc,EAAM66C,SAAS,KAAOnyC,GACf,UAEX,EAEG4xC,EAAalC,yBAAyBl5C,MAElD,CAAEm9C,UAAWr8C,SAI5Bs6C,EAAaz7C,UAAU8J,sBAAwB,SAAUD,GACrD,IAAI1I,EAAQxE,KACZ,OAAOA,KAAKogD,MAAMp7C,KAAK,WACnB,OAAOzD,EAAay/C,kBAAkB,CAAE9zC,gBAAiBA,IAAmBlI,KAAK,SAAUi8C,GACvF,IAAI/zC,EAAkB+zC,EAAG/zC,gBACrB5G,EAAS,CAAE4G,gBAAiB8uC,EAAU9uC,IAC1C,OAAOsuC,EAAMoF,KAAK,WACd,OAAOp8C,EAAMs8C,QAAQ,wBAAyBx6C,GAAQtB,KAAK,SAAUtB,GACjE,OAAc,MAAVA,EAC8C,MAA1Cc,EAAM66C,SAAS,KAAOnyC,GACf,UAEX,IA1hBpBxJ,EAAS+3C,EAAMuC,EAHU6D,EA+hBsBn+C,IA3hB5Cw6C,KAAKp3C,QAAQ,SAAUg7C,EAAOz6C,GACA,MAA7By6C,EAAMhE,sBACNgE,EAAMhE,oBAAsBz2C,KAGH,MAA7Bw6C,EAAmBzD,SACnB16C,EAAOq+C,WAAY,GAEhBr+C,GAZX,IAAiCm+C,EAGzBn+C,KA8hBW,CAAEm9C,UAAWr8C,SAI5Bs6C,EAAaz7C,UAAU48C,QAAU,SAAU92C,GACvC,IAAI3E,EAAQxE,KACZ,OAAOA,KAAKogD,MAAMp7C,KAAK,WACnB,OAAOzD,EAAay/C,kBAAkB73C,GAAQnE,KAAK,SAAUmE,GACzD,OAAO3E,EAAMi9C,cAAct4C,EAAQ,CAAC,YAAYnE,KAAK,SAAUmE,GAC3D,IA3gBCA,EA2gBG7C,EAAS,CAAE6C,QA3gBdA,EA2gBkCA,EA1gB5CsyC,EAAM4C,EAAcl1C,KA2gBX,OAAO3E,EAAMs8C,QAAQ,UAAWx6C,GAAQtB,KAAK,SAAUtB,GACnD,OAAOq4C,EAAQ6C,EAAR7C,CAAkBr4C,YAM7Co7C,EAAaz7C,UAAU2+C,cAAgB,WACnC,IAAIx9C,EAAQxE,KACZ,OAAOA,KAAKogD,MAAMp7C,KAAK,WACnB,OAAOR,EAAMs8C,QAAQ,gBAAiB,IAAI97C,KAAK,SAAUtB,GAErD,OAAOA,OAKnBo7C,EAAaz7C,UAAUo+C,cAAgB,SAAUrzC,EAAQnE,GACrD,IAAIlC,EAAW,GACXrE,EAASnC,EAAaqF,YAAYwH,GAUtC,OATAnE,EAAKnD,QAAQ,SAAUH,GACA,MAAfjD,EAAOiD,IAGXoB,EAASP,KAAKxH,KAAK2H,YAAYjE,EAAOiD,IAAM3B,KAAK,SAAUV,GACvDZ,EAAOiD,GAAOrC,MAGnBtE,MACI2E,QAAQ8C,IAAIM,GAAU/C,KAAK,WAAc,OAAOtB,KAE3Do7C,EAAaz7C,UAAU4+C,aAAe,SAAU16C,GAC5C,IAAI/C,EAAQxE,KAEZ,OAAOA,KAAKg/C,aAAah6C,KAAK,SAAU6M,GAE/BA,EAAQqwC,YACTr+C,EAAOoB,WAAW,2BAA4BpB,EAAOqB,sBAAuB,CAAEH,UAAW,MAAO8M,QAASA,EAAQtK,OAGrH,IAAI9B,EAAO,aAAe01C,EAAOgH,SAAS56C,GAAM8G,UAAU,GACtDhJ,EAAc,CAAES,GAAI+L,EAAQqwC,WAAYz8C,KAAMA,GAClD,OAAOjB,EAAMzD,KAAKsE,GAAaL,KAAK,SAAUS,GAE1C,OAAoC,KAAhCzB,EAAQmE,cAAc1C,GACf,KAEJ1B,EAAUW,WAAWV,EAAQoE,aAAa3C,EAAM,UAInEq5C,EAAaz7C,UAAUsE,YAAc,SAAUJ,GAC3C,IAAI/C,EAAQxE,KAEZ,GAAIuH,aAAgB5C,QAChB,OAAO4C,EAAKvC,KAAK,SAAUuE,GACvB,OAAO/E,EAAMmD,YAAY4B,KAIjC,IACI,OAAO5E,QAAQC,QAAQb,EAAUW,WAAW6C,IAEhD,MAAOuB,IACP,IAAI/I,EAAOC,KACPoiD,EAAWjH,EAAOgH,SAAS56C,GAE/B,OAAOvH,KAAKiiD,aAAa16C,GAAMvC,KAAK,SAAUq9C,GAE1C,IACIh9C,EAAc,CAAES,GAAIu8C,EAAiB58C,KAD9B,aAAe28C,EAAS/zC,UAAU,IAE7C,OAAOtO,EAAKgB,KAAKsE,KAElBL,KAAK,SAAUS,GACd,GAAoC,KAAhCzB,EAAQmE,cAAc1C,GACtB,OAAO,KAEX,IAAInB,EAAUP,EAAUW,WAAWV,EAAQoE,aAAa3C,EAAM,KAC9D,MAAgB,+CAAZnB,EACO,KAEJA,KAGfw6C,EAAaz7C,UAAUi/C,cAAgB,SAAUh+C,GAC7C,IAAIE,EAAQxE,KACZ,GAAIsE,aAAmBK,QACnB,OAAOL,EAAQU,KAAK,SAAUV,GAC1B,OAAOE,EAAM89C,cAAch+C,KAInC,IAAIiD,GADJjD,EAAUP,EAAUW,WAAWJ,IACZ+J,UAAU,GAAK,gBAC9Bk0C,EAAWpH,EAAOgH,SAAS56C,GAC3BxH,EAAOC,KACX,OAAOA,KAAKiiD,aAAa16C,GAAMvC,KAAK,SAAUq9C,GAC1C,IAAKA,EACD,OAAO,KAGX,IACIh9C,EAAc,CAAES,GAAIu8C,EAAiB58C,KAD9B,aAAe88C,EAASl0C,UAAU,IAE7C,OAAOtO,EAAKgB,KAAKsE,KAClBL,KAAK,SAAUS,GAId,IAFAA,EAAOA,EAAK4I,UAAU,IAEbrN,OAAS,GACd,OAAO,KAGX,IADAyE,EAAOA,EAAK4I,UAAU,KACbrN,OAAS,GACd,OAAO,KAEX,IAAIA,EAASc,EAAYK,aAAa,KAAOsD,EAAK4I,UAAU,EAAG,KAAKyP,WAEpE,GAAI,EAAI9c,GADRyE,EAAOA,EAAK4I,UAAU,KACArN,OAClB,OAAO,KAEX,IAAIuG,EAAOg0C,EAAOiH,aAAa,KAAO/8C,EAAK4I,UAAU,EAAG,EAAIrN,IAE5D,OAAOjB,EAAK4H,YAAYJ,GAAMvC,KAAK,SAAUy9C,GACzC,OAAIA,GAAQn+C,EACD,KAEJiD,OAInBu3C,EAAalC,yBAA2B,SAAUv3C,GAC9C,OAAOu3C,EAAyBv3C,IAEpCy5C,EAAaz7C,UAAU68C,OAAS,aAEhCpB,EAAaz7C,UAAUy9C,QAAU,SAAU36C,EAAQG,GAE/C,OADAzC,EAAOoB,WAAWkB,EAAS,mBAAoBtC,EAAOiM,gBAAiB,CAAE/K,UAAWoB,IAC7E,MAEX24C,EAAaz7C,UAAUq/C,cAAgB,WACnCj4C,QAAQC,IAAI,2DAEhBo0C,EAAaz7C,UAAUs/C,aAAe,aAEtC7D,EAAaz7C,UAAUmJ,kBAAoB,SAAUrC,EAAWuC,EAAUC,GACtE3M,KAAKuK,QAAQ/C,KAAK,CACdk4C,IAAKx2C,EAAYiB,GACjBuC,SAAUA,EACVC,KAAMA,IAEQ,YAAdxC,GACAnK,KAAK0iD,gBAET1iD,KAAK4iD,SAAU,GAEnB9D,EAAaz7C,UAAUkK,GAAK,SAAUpD,EAAWuC,GAE7C,OADA1M,KAAKwM,kBAAkBrC,EAAWuC,GAAU,GACrC1M,MAEX8+C,EAAaz7C,UAAUsJ,KAAO,SAAUxC,EAAWuC,GAE/C,OADA1M,KAAKwM,kBAAkBrC,EAAWuC,GAAU,GACrC1M,MAEX8+C,EAAaz7C,UAAUq1C,iBAAmB,SAAUvuC,EAAWuC,GAC3D,OAAO1M,KAAKuN,GAAGpD,EAAWuC,IAE9BoyC,EAAaz7C,UAAU+J,KAAO,SAAUjD,GAGpC,IAFA,IAAI3F,EAAQxE,KACRyI,EAAO,GACFlC,EAAK,EAAGA,EAAKC,UAAUxF,OAAQuF,IACpCkC,EAAKlC,EAAK,GAAKC,UAAUD,GAE7B,IAAI7C,GAAS,EACTmI,EAAW3C,EAAYiB,GAW3B,OAVAnK,KAAKuK,QAAUvK,KAAKuK,QAAQpB,OAAO,SAAUiB,GACzC,OAAIA,EAAMs1C,MAAQ7zC,IAGlB4B,WAAW,WACPrD,EAAMsC,SAASW,MAAM7I,EAAOiE,IAC7B,GACH/E,GAAS,GACA0G,EAAU,QAEhB1G,GAEXo7C,EAAaz7C,UAAUqK,cAAgB,SAAUvD,GAC7C,IAAKA,EACD,OAAOnK,KAAKuK,QAAQvJ,OAExB,IAAI6K,EAAW3C,EAAYiB,GAC3B,OAAOnK,KAAKuK,QAAQpB,OAAO,SAAUiB,GACjC,OAAQA,EAAMs1C,MAAQ7zC,IACvB7K,QAEP89C,EAAaz7C,UAAUsK,UAAY,SAAUxD,GACzC,IAAI0B,EAAW3C,EAAYiB,GAC3B,OAAOnK,KAAKuK,QAAQpB,OAAO,SAAUiB,GACjC,OAAQA,EAAMs1C,MAAQ7zC,IACvB+B,IAAI,SAAUxD,GACb,OAAOA,EAAMsC,YAGrBoyC,EAAaz7C,UAAUwK,mBAAqB,SAAU1D,GAClD,IAAI0B,EAAW3C,EAAYiB,GAU3B,OATAnK,KAAKuK,QAAUvK,KAAKuK,QAAQpB,OAAO,SAAUiB,GACzC,OAAQA,EAAMs1C,MAAQ7zC,IAER,YAAd1B,GACAnK,KAAK2iD,eAEmB,IAAxB3iD,KAAKuK,QAAQvJ,SACbhB,KAAK4iD,SAAU,GAEZ5iD,MAEX8+C,EAAaz7C,UAAUyJ,eAAiB,SAAU3C,EAAWuC,GACzD,IAAIoB,GAAQ,EACRjC,EAAW3C,EAAYiB,GAiB3B,OAhBAnK,KAAKuK,QAAUvK,KAAKuK,QAAQpB,OAAO,SAAUiB,GACzC,OAAIA,EAAMs1C,MAAQ7zC,MAGdiC,IAGJA,GAAQ,MAGM,YAAd3D,GAA6D,IAAlCnK,KAAK0N,cAAc,YAC9C1N,KAAK2iD,eAEoB,IAAzB3iD,KAAK0N,kBACL1N,KAAK4iD,SAAU,GAEZ5iD,MAEJ8+C,EA5qBsB,CA6qB/B56C,EAAoB2F,UACtBpK,EAAQq/C,aAAeA,EACvBv9C,EAAakD,eAAeP,EAAoB2F,SAAU,WAAYtI,EAAashD,YAAY3+C,EAAoB2F,YAEjH,CAACi5C,YAAY,EAAEC,mBAAmB,GAAGC,qBAAqB,GAAGC,iBAAiB,GAAGC,gBAAgB,GAAGC,oBAAoB,GAAGlI,sBAAsB,GAAGmI,eAAe,GAAGC,uBAAuB,GAAGC,gBAAgB,GAAGC,eAAe,GAAGC,sBAAsB,KAAKC,GAAG,CAAC,SAAShjD,EAAQf,EAAOD,GAC9R,aACA,IACQkD,EADJC,EAAa5C,MAAQA,KAAK4C,YACtBD,EAAgBzB,OAAO2B,gBACtB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAInC,KAAKmC,EAAOA,EAAEC,eAAepC,KAAIkC,EAAElC,GAAKmC,EAAEnC,KAClE,SAAUkC,EAAGC,GAEhB,SAASE,IAAOnD,KAAKoD,YAAcJ,EADnCL,EAAcK,EAAGC,GAEjBD,EAAEK,UAAkB,OAANJ,EAAa/B,OAAOoC,OAAOL,IAAME,EAAGE,UAAYJ,EAAEI,UAAW,IAAIF,KAGnFI,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAIsiD,EAAkBjjD,EAAQ,mBAC1BuD,EAAUvD,EAAQ,kBAClBc,EAAed,EAAQ,uBACvB+6C,EAAQ/6C,EAAQ,gBAChBoD,EAASN,EAAa9C,EAAQ,cAGlC,SAASkjD,EAAqBt+C,GAC1B,IAAI3B,EAAS,GACb,IAAK,IAAIiD,KAAOtB,EACZ,GAAwB,MAApBA,EAAYsB,GAAhB,CAGA,IAAIvF,EAAQ4C,EAAQmK,QAAQ9I,EAAYsB,KACpC,CAAEhB,UAAU,EAAMC,UAAU,EAAMC,OAAO,EAAMzE,OAAO,IAAOuF,KAC7DvF,EAAQ4C,EAAQs4C,cAAcl7C,IAElCsC,EAAO8D,KAAKb,EAAM,IAAMvF,GAE5B,OAAOsC,EAAO2F,KAAK,KAEvB,SAASu6C,EAAUlgD,GAEf,GAAqB,GAAjBA,EAAO06C,SAAmC,qBAAnB16C,EAAOoB,SAAqD,0BAAnBpB,EAAOoB,SACvE,OAAOpB,EAAOA,OAElB,GAAqB,GAAjBA,EAAO06C,QAAiC,MAAlB16C,EAAOoB,QAAiB,CAE9C,IAAIgE,EAAQ,IAAIlI,MAAM,oBAEtB,MADAkI,EAAMpF,OAASqL,KAAKyB,UAAU9M,GACxBoF,EAEV,OAAOpF,EAAOA,OAElB,SAASmgD,EAAcngD,GACnB,GAAsB,OAAlBA,EAAOogD,QAIP,MAFIh7C,EAAQ,IAAIlI,MAAM,qBAChB8C,OAASqL,KAAKyB,UAAU9M,GACxBoF,EAEV,GAAIpF,EAAOoF,MAAO,CAEd,IAAIA,EAAQ,IAAIlI,MAAM8C,EAAOoF,MAAMhE,SAAW,iBAO9C,MANIpB,EAAOoF,MAAMjI,OACbiI,EAAMjI,KAAO6C,EAAOoF,MAAMjI,MAE1B6C,EAAOoF,MAAMrD,OACbqD,EAAMrD,KAAO/B,EAAOoF,MAAMrD,MAExBqD,EAEV,OAAOpF,EAAOA,OAGlB,SAASqgD,EAAY1H,GACjB,GAAiB,YAAbA,EACA,MAAM,IAAIz7C,MAAM,yBAEpB,MAAiB,WAAby7C,EACOA,EAEJvpC,SAASupC,EAAShuC,UAAU,GAAI,IAE3C,IAAI2D,EAAmC,SAAU3N,GAE7C,SAAS2N,EAAkBH,EAASmyC,GAChC,IAAIx/C,EAAQH,EAAOtD,KAAKf,KAAM6R,IAAY7R,KAC1C6D,EAAO6F,SAASlF,EAAOwN,GACvB,IAAIzK,EAAO,UACP/C,EAAMqN,UACNtK,EAAO/C,EAAMqN,QAAQtK,MAEzB,IAAI08C,EAAU,KACd,OAAQ18C,GACJ,IAAK,YACD08C,EAAU,2BACV,MACJ,IAAK,UACDA,EAAU,mCACV,MACJ,IAAK,UACDA,EAAU,mCACV,MACJ,IAAK,QACDA,EAAU,iCACV,MACJ,QACI,MAAM,IAAIrjD,MAAM,uBAIxB,OAFAW,EAAakD,eAAeD,EAAO,UAAWy/C,GAC9C1iD,EAAakD,eAAeD,EAAO,SAAUw/C,GACtCx/C,EAkMX,OA7NA5B,EAAUoP,EAAmB3N,GA6B7B2N,EAAkB3O,UAAUy9C,QAAU,SAAU36C,EAAQG,GAEpD,IAAI49C,EAAMlkD,KAAKikD,QACXD,EAAS,GAIb,OAHIhkD,KAAKgkD,SACLA,GAAU,WAAahkD,KAAKgkD,QAExB79C,GACJ,IAAK,iBAED,OADA+9C,GAAO,2CAA6CF,EAC7CxI,EAAM2I,UAAUD,EAAK,KAAML,GACtC,IAAK,cAED,OADAK,GAAO,wCAA0CF,EAC1CxI,EAAM2I,UAAUD,EAAK,KAAML,GACtC,IAAK,aAID,OAFAK,GAAO,8CAAgD59C,EAAOhC,QAC9D4/C,GAAO,QAAU59C,EAAO+1C,SAAW2H,EAC5BxI,EAAM2I,UAAUD,EAAK,KAAMN,GACtC,IAAK,sBAGD,OAFAM,GAAO,4DAA8D59C,EAAOhC,QAC5E4/C,GAAO,QAAU59C,EAAO+1C,SAAW2H,EAC5BxI,EAAM2I,UAAUD,EAAK,KAAML,GACtC,IAAK,UAGD,OAFAK,GAAO,gDAAkD59C,EAAOhC,QAChE4/C,GAAO,QAAU59C,EAAO+1C,SAAW2H,EAC5BxI,EAAM2I,UAAUD,EAAK,KAAML,GACtC,IAAK,eAID,OAHAK,GAAO,qDAAuD59C,EAAOhC,QACrE4/C,GAAO,aAAe59C,EAAO86C,SAC7B8C,GAAO,QAAU59C,EAAO+1C,SAAW2H,EAC5BxI,EAAM2I,UAAUD,EAAK,KAAML,GACtC,IAAK,kBAGD,OAFAK,GAAO,uDAAyD59C,EAAO+6C,kBACvE6C,GAAOF,EACAxI,EAAM2I,UAAUD,EAAK,KAAML,GAAer5C,MAAM,SAAU1B,GAa7D,MAXsE,GAAlEA,EAAMs7C,aAAa73C,cAAcT,QAAQ,uBACzCjI,EAAOoB,WAAW,qBAAsBpB,EAAOqM,mBAAoB,IAGH,GAAhEpH,EAAMs7C,aAAat4C,QAAQ,mCAC3BjI,EAAOoB,WAAW,8BAA+BpB,EAAOsM,cAAe,IAGF,GAArErH,EAAMs7C,aAAat4C,QAAQ,wCAC3BjI,EAAOoB,WAAW,0BAA2BpB,EAAOuM,wBAAyB,IAE3EtH,IAEd,IAAK,WACD,GAAIxC,EAAO+1C,SASP,OARA6H,GAAO,qDAAuD59C,EAAO+1C,SACjE/1C,EAAOm3C,oBACPyG,GAAO,gBAGPA,GAAO,iBAEXA,GAAOF,EACAxI,EAAM2I,UAAUD,EAAK,KAAML,GAEtC,MAAM,IAAIjjD,MAAM,yCACpB,IAAK,iBAGD,OAFAsjD,GAAO,4DAA8D59C,EAAO4G,gBAC5Eg3C,GAAOF,EACAxI,EAAM2I,UAAUD,EAAK,KAAML,GACtC,IAAK,wBAGD,OAFAK,GAAO,6DAA+D59C,EAAO4G,gBAC7Eg3C,GAAOF,EACAxI,EAAM2I,UAAUD,EAAK,KAAML,GACtC,IAAK,OAOD,OANIx+C,EAAcs+C,EAAqBr9C,EAAOjB,gBAE1CA,EAAc,IAAMA,GAExB6+C,GAAO,oCAAsC7+C,EAC7C6+C,GAAOF,EACAxI,EAAM2I,UAAUD,EAAK,KAAML,GACtC,IAAK,cACD,IAAIx+C,EAMJ,OANIA,EAAcs+C,EAAqBr9C,EAAOjB,gBAE1CA,EAAc,IAAMA,GAExB6+C,GAAO,4CAA8C7+C,EACrD6+C,GAAOF,EACAxI,EAAM2I,UAAUD,EAAK,KAAML,GACtC,IAAK,UACDK,GAAO,kCACP,IAWI,GAVI59C,EAAO6C,OAAOm1C,YACd4F,GAAO,cAAgBH,EAAYz9C,EAAO6C,OAAOm1C,YAEjDh4C,EAAO6C,OAAOo1C,UACd2F,GAAO,YAAcH,EAAYz9C,EAAO6C,OAAOo1C,UAE/Cj4C,EAAO6C,OAAO7E,UACd4/C,GAAO,YAAc59C,EAAO6C,OAAO7E,SAGnCgC,EAAO6C,OAAOC,QAAwC,EAA9B9C,EAAO6C,OAAOC,OAAOpI,OAAY,CACzD,GAAkC,EAA9BsF,EAAO6C,OAAOC,OAAOpI,OACrB,MAAM,IAAIJ,MAAM,4BAEpB,IAAIyjD,EAAS/9C,EAAO6C,OAAOC,OAAO,GAClC,GAAwB,iBAAb,GAA2C,KAAlBi7C,EAAOrjD,OACvC,MAAM,IAAIJ,MAAM,6BAEpBsjD,GAAO,WAAaG,GAG5B,MAAOv7C,GACH,OAAOnE,QAAQ2/C,OAAOx7C,GAE1Bo7C,GAAOF,EACP,IAAIjkD,EAAOC,KACX,OAAOw7C,EAAM2I,UAAUD,EAAK,KAAMN,GAAW5+C,KAAK,SAAUk5C,GACxD,IAAIqG,EAAM,GACNC,EAAM7/C,QAAQC,UAiBlB,OAhBAs5C,EAAKp3C,QAAQ,SAAU4D,GACnB85C,EAAMA,EAAIx/C,KAAK,WACX,OAAqB,MAAjB0F,EAAIsC,UACG,MAEXtC,EAAIsC,UAAYu3C,EAAI75C,EAAIwC,iBACH,MAAjBxC,EAAIsC,UACGjN,EAAKkN,eAAevC,EAAIwC,iBAAiBlI,KAAK,SAAUyB,GAG3D,OAFA89C,EAAI75C,EAAIwC,iBAAmBzG,EAAGuG,UAC9BtC,EAAIsC,UAAYvG,EAAGuG,UACZ,OAGR,UAGRw3C,EAAIx/C,KAAK,WACZ,OAAOk5C,MAGnB,IAAK,gBACD,MAA0B,cAAtBl+C,KAAK6R,QAAQtK,KACN5C,QAAQC,QAAQ,IAE3Bs/C,GAAO,oCACPA,GAAOF,EACAxI,EAAM2I,UAAUD,EAAK,KAAMN,GAAW5+C,KAAK,SAAUtB,GACxD,OAAO+gD,WAAW/gD,EAAOghD,WAKrC,OAAOrgD,EAAOhB,UAAUy9C,QAAQ//C,KAAKf,KAAMmG,EAAQG,IAGvD0L,EAAkB3O,UAAUshD,WAAa,SAAUp7C,EAAeq7C,EAAYC,GAC1E,IAAIX,EAAMlkD,KAAKikD,QACXD,EAAS,GAUb,OATIhkD,KAAKgkD,SACLA,GAAU,WAAahkD,KAAKgkD,QAEd,MAAdY,IACAA,EAAa,GAED,MAAZC,IACAA,EAAW,UAER7kD,KAAK2H,YAAY4B,GAAevE,KAAK,SAAUV,GAKlD,OAJA4/C,GAAO,6CAA+C5/C,EACtD4/C,GAAO,eAAiBU,EACxBV,GAAO,aAAeW,EACtBX,GAAO,YAAcF,EACdxI,EAAM2I,UAAUD,EAAK,KAAMN,GAAW5+C,KAAK,SAAUtB,GACxD,IAAImtB,EAAS,GAgBb,OAfAntB,EAAOoD,QAAQ,SAAUL,GACrB,CAAC,kBAAmB,MAAMK,QAAQ,SAAUH,GACzB,IAAXF,EAAGE,WACIF,EAAGE,KAGA,MAAdF,EAAGi2C,SAAyC,MAAtBj2C,EAAGyE,kBACzBzE,EAAGi2C,QAAUj2C,EAAGyE,iBAEpB,IAAI45C,EAAOpB,EAAgB5E,aAAalC,yBAAyBn2C,GAC7DA,EAAGs+C,YACHD,EAAK7H,UAAYnqC,SAASrM,EAAGs+C,YAEjCl0B,EAAOrpB,KAAKs9C,KAETj0B,OAIZ7e,EA9N2B,CA+NpC0xC,EAAgB5E,cAClBr/C,EAAQuS,kBAAoBA,GAE1B,CAAC8wC,YAAY,EAAEG,iBAAiB,GAAGhI,sBAAsB,GAAGsI,eAAe,GAAGyB,kBAAkB,KAAKC,GAAG,CAAC,SAASxkD,EAAQf,EAAOD,GACnI,aACA,IACQkD,EADJC,EAAa5C,MAAQA,KAAK4C,YACtBD,EAAgBzB,OAAO2B,gBACtB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAInC,KAAKmC,EAAOA,EAAEC,eAAepC,KAAIkC,EAAElC,GAAKmC,EAAEnC,KAClE,SAAUkC,EAAGC,GAEhB,SAASE,IAAOnD,KAAKoD,YAAcJ,EADnCL,EAAcK,EAAGC,GAEjBD,EAAEK,UAAkB,OAANJ,EAAa/B,OAAOoC,OAAOL,IAAME,EAAGE,UAAYJ,EAAEI,UAAW,IAAIF,KAGnFI,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAIsiD,EAAkBjjD,EAAQ,mBAC1BoD,EAASN,EAAa9C,EAAQ,cAKlC,SAASykD,EAAcC,GACnB,IAAIzhD,GAAS,EACT+3C,EAAQ,KAoBZ,OAnBA0J,EAASr+C,QAAQ,SAAU+K,GAER,MAAXA,EAKS,MAAT4pC,EAKAA,EAAMl0C,OAASsK,EAAQtK,MACvBk0C,EAAMj2C,UAAYqM,EAAQrM,SAC1Bi2C,EAAMyG,aAAerwC,EAAQqwC,YAGjCr+C,EAAOoB,WAAW,oBAAqBpB,EAAOkG,iBAAkB,CAAEC,IAAK,WAAY5I,MAAO+jD,IATtF1J,EAAQ5pC,EALRnO,GAAS,IAgBVA,EAEX,IAAIoO,EAAkC,SAAUzN,GAE5C,SAASyN,EAAiBP,GACtB,IAAI/M,EAAQxE,KACZ,GAAyB,IAArBuR,EAAUvQ,OACV,MAAM,IAAIJ,MAAM,gBAIpB,GADYskD,EAAc3zC,EAAU3D,IAAI,SAAU9M,GAAK,OAAOA,EAAE+Q,WAE5DrN,EAAQH,EAAOtD,KAAKf,KAAMuR,EAAU,GAAGM,UAAY7R,SAElD,CAED,IAAIolD,EAAUzgD,QAAQ8C,IAAI8J,EAAU3D,IAAI,SAAU9M,GAAK,OAAOA,EAAEk+C,gBAAkBh6C,KAAK,SAAUmgD,GAI7F,OAHKD,EAAcC,IACfthD,EAAOoB,WAAW,2BAA4BpB,EAAOgM,cAAe,IAEjEs1C,EAAS,KAEpB3gD,EAAQH,EAAOtD,KAAKf,KAAMolD,IAAYplD,KAK1C,OAHA6D,EAAO6F,SAASlF,EAAOsN,GAEvBtN,EAAM6gD,WAAa9zC,EAAUlF,MAAM,GAC5B7H,EAiCX,OAzDA5B,EAAUkP,EAAkBzN,GA0B5BnD,OAAOC,eAAe2Q,EAAiBzO,UAAW,YAAa,CAC3Du7B,IAAK,WAED,OAAO5+B,KAAKqlD,WAAWh5C,MAAM,IAEjCsyB,YAAY,EACZD,cAAc,IAElB5sB,EAAiBzO,UAAUy9C,QAAU,SAAU36C,EAAQG,GAEnD,IAAIiL,EAAYvR,KAAKuR,UACrB,OAAO,IAAI5M,QAAQ,SAAUC,EAAS0/C,GAClC,IAAIgB,EAAa,MACjB,SAASt0B,IACAzf,EAAUvQ,OAIAuQ,EAAUuZ,QAChBg2B,QAAQ36C,EAAQG,GAAQtB,KAAK,SAAUtB,GAC5C,OAAOkB,EAAQlB,KAChB8G,MAAM,SAAU1B,GACVw8C,IACDA,EAAax8C,GAEjB2E,WAAWujB,EAAM,KAVjBszB,EAAOgB,GAaft0B,MAGDlf,EA1D0B,CA2DnC4xC,EAAgB5E,cAClBr/C,EAAQqS,iBAAmBA,GAEzB,CAACgxC,YAAY,EAAEkC,kBAAkB,KAAKO,GAAG,CAAC,SAAS9kD,EAAQf,EAAOD,GACpE,aACAyB,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAI8C,EAAsBzD,EAAQ,uBAClChB,EAAQoK,SAAW3F,EAAoB2F,SACvC,IAAI65C,EAAkBjjD,EAAQ,mBAC9BhB,EAAQq/C,aAAe4E,EAAgB5E,aACvC,IAAI0G,EAAuB/kD,EAAQ,wBACnChB,EAAQuS,kBAAoBwzC,EAAqBxzC,kBACjD,IAAIyzC,EAAsBhlD,EAAQ,uBAClChB,EAAQqS,iBAAmB2zC,EAAoB3zC,iBAC/C,IAAI4zC,EAAiBjlD,EAAQ,kBAC7BhB,EAAQkmD,YAAcD,EAAeC,YACrC,IAAIC,EAAoBnlD,EAAQ,qBAChChB,EAAQsS,eAAiB6zC,EAAkB7zC,eAC3C,IAAI8zC,EAAsBplD,EAAQ,uBAClChB,EAAQqmD,gBAAkBD,EAAoBC,gBAC9CrmD,EAAQsmD,cAAgBF,EAAoBE,cAC5C,IAAIC,EAAkBvlD,EAAQ,mBAC9BhB,EAAQwmD,aAAeD,EAAgBC,cAErC,CAACzC,sBAAsB,GAAGwB,kBAAkB,GAAGkB,uBAAuB,GAAGC,sBAAsB,GAAGC,oBAAoB,GAAGC,iBAAiB,GAAGC,sBAAsB,GAAGC,kBAAkB,KAAKC,GAAG,CAAC,SAAS/lD,EAAQf,EAAOD,GAC3N,aACA,IACQkD,EADJC,EAAa5C,MAAQA,KAAK4C,YACtBD,EAAgBzB,OAAO2B,gBACtB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAInC,KAAKmC,EAAOA,EAAEC,eAAepC,KAAIkC,EAAElC,GAAKmC,EAAEnC,KAClE,SAAUkC,EAAGC,GAEhB,SAASE,IAAOnD,KAAKoD,YAAcJ,EADnCL,EAAcK,EAAGC,GAEjBD,EAAEK,UAAkB,OAANJ,EAAa/B,OAAOoC,OAAOL,IAAME,EAAGE,UAAYJ,EAAEI,UAAW,IAAIF,KAGnFI,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAIykD,EAAsBplD,EAAQ,uBAC9B26C,EAAa36C,EAAQ,qBACrBc,EAAed,EAAQ,uBACvBoD,EAASN,EAAa9C,EAAQ,cAC9BsR,EAAgC,SAAU1N,GAE1C,SAAS0N,EAAeF,EAAS40C,GAC7B,IAAIjiD,EAEAkiD,EAAO,KACX,QAFA70C,EAAUupC,EAAW4D,WAAuB,MAAXntC,EAAmB,YAAcA,IAElDtK,MACZ,IAAK,YACDm/C,EAAO,oBACP,MACJ,IAAK,UACDA,EAAO,oBACP,MACJ,IAAK,UACDA,EAAO,oBACP,MACJ,IAAK,QACDA,EAAO,kBACP,MACJ,QACI,MAAM,IAAI9lD,MAAM,uBAKxB,OAHA4D,EAAQH,EAAOtD,KAAKf,KAAM,WAAa0mD,EAAO,KAAOD,GAAkB,IAAK50C,IAAY7R,KACxF6D,EAAO6F,SAASlF,EAAOuN,GACvBxQ,EAAakD,eAAeD,EAAO,iBAAkBiiD,GAAkB,MAChEjiD,EAYX,OApCA5B,EAAUmP,EAAgB1N,GA0B1B0N,EAAe1O,UAAUq/C,cAAgB,WACrCj4C,QAAQC,IAAI,qDAEhBqH,EAAe1O,UAAUsjD,UAAY,SAAUriD,GAE3C,OADAT,EAAOoB,WAAW,kCAAmCpB,EAAOqB,sBAAuB,CAAEH,UAAW,cACzF,MAEXgN,EAAe1O,UAAUujD,aAAe,WACpC,OAAOjiD,QAAQC,QAAQ,KAEpBmN,EArCwB,CAsCjC8zC,EAAoBC,iBACtBrmD,EAAQsS,eAAiBA,GAEvB,CAAC+wC,YAAY,EAAEK,oBAAoB,GAAGlI,sBAAsB,GAAGqL,sBAAsB,KAAKO,GAAG,CAAC,SAASpmD,EAAQf,EAAOD,GACxH,aACAyB,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,KAEpD,IAAI0lD,GAAG,CAAC,SAASrmD,EAAQf,EAAOD,GAClC,aACA,IACQkD,EADJC,EAAa5C,MAAQA,KAAK4C,YACtBD,EAAgBzB,OAAO2B,gBACtB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAInC,KAAKmC,EAAOA,EAAEC,eAAepC,KAAIkC,EAAElC,GAAKmC,EAAEnC,KAClE,SAAUkC,EAAGC,GAEhB,SAASE,IAAOnD,KAAKoD,YAAcJ,EADnCL,EAAcK,EAAGC,GAEjBD,EAAEK,UAAkB,OAANJ,EAAa/B,OAAOoC,OAAOL,IAAME,EAAGE,UAAYJ,EAAEI,UAAW,IAAIF,KAGnFI,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IAEtD,IAAIsiD,EAAkBjjD,EAAQ,mBAC1B0D,EAAoB1D,EAAQ,sBAC5BsD,EAAYtD,EAAQ,oBACpBuD,EAAUvD,EAAQ,kBAClB26C,EAAa36C,EAAQ,qBACrBc,EAAed,EAAQ,uBACvB86C,EAAS96C,EAAQ,iBACjB+6C,EAAQ/6C,EAAQ,gBAChBoD,EAASN,EAAa9C,EAAQ,cAQlC,SAASmjD,EAAUmD,GACf,GAAIA,EAAQj+C,MAAO,CAEf,IAAIA,EAAQ,IAAIlI,MAAMmmD,EAAQj+C,MAAMhE,SAGpC,MAFAgE,EAAMjI,KAAOkmD,EAAQj+C,MAAMjI,KAC3BiI,EAAMrD,KAAOshD,EAAQj+C,MAAMrD,KACrBqD,EAEV,OAAOi+C,EAAQrjD,OAEnB,SAASsjD,EAAa5lD,GAClB,OAAIA,EACOA,EAAMmL,cAEVnL,EAEX,IAAI6lD,EAAoB,GACpBlB,EAA+B,SAAU1hD,GAEzC,SAAS0hD,EAAcmB,EAAkB3iD,EAAU4iD,GAC/C,IAAI3iD,EAAQH,EAAOtD,KAAKf,OAASA,KAEjC,GADA6D,EAAO6F,SAASlF,EAAOuhD,GACnBmB,IAAqBD,EACrB,MAAM,IAAIrmD,MAAM,8EAkBpB,OAhBAW,EAAakD,eAAeD,EAAO,WAAYD,GAE3C4iD,EACgC,iBAArB,EACP5lD,EAAakD,eAAeD,EAAO,WAAYT,EAAUW,WAAWyiD,IAEnC,iBAArB,EACZ5lD,EAAakD,eAAeD,EAAO,SAAU2iD,GAG7CtjD,EAAOoB,WAAW,2BAA4BpB,EAAOkG,iBAAkB,CAAEY,SAAU,iBAAkBvJ,MAAO+lD,IAIhH5lD,EAAakD,eAAeD,EAAO,SAAU,GAE1CA,EA2FX,OAlHA5B,EAAUmjD,EAAe1hD,GAiCzB0hD,EAAc1iD,UAAUqB,WAAa,WACjC,IAAIF,EAAQxE,KACZ,OAAIA,KAAKonD,SACEziD,QAAQC,QAAQ5E,KAAKonD,UAEzBpnD,KAAKuE,SAAS8iD,KAAK,eAAgB,IAAIriD,KAAK,SAAUsiD,GAKzD,OAJIA,EAAStmD,QAAUwD,EAAM+iD,QACzB1jD,EAAOoB,WAAW,oBAAsBT,EAAM+iD,OAAQ1jD,EAAOqB,sBAAuB,CAAEH,UAAW,eAErGP,EAAM4iD,SAAWrjD,EAAUW,WAAW4iD,EAAS9iD,EAAM+iD,SAC9C/iD,EAAM4iD,YAGrBrB,EAAc1iD,UAAUy8C,WAAa,SAAUzD,GAC3C,OAAOr8C,KAAKuE,SAASu7C,WAAW9/C,KAAK0E,aAAc23C,IAEvD0J,EAAc1iD,UAAU69C,oBAAsB,SAAU7E,GACpD,OAAOr8C,KAAKuE,SAAS28C,oBAAoBlhD,KAAK0E,aAAc23C,IAEhE0J,EAAc1iD,UAAU+B,gBAAkB,SAAUC,GAChD,IAAIb,EAAQxE,KACRyG,EAAKlF,EAAaqF,YAAYvB,GAYlC,OAXe,MAAXoB,EAAGf,OACHe,EAAGf,KAAO1F,KAAK0E,aAAaM,KAAK,SAAUV,GACvC,OAAKA,EAGEA,EAAQiI,cAFJ,QAKS,MAAxBlH,EAAYM,WACZc,EAAGd,SAAW3F,KAAKuE,SAASwE,YAAYtC,IAErClF,EAAay/C,kBAAkBv6C,GAAIzB,KAAK,SAAUyB,GACrD,OAAOjC,EAAMD,SAAS8iD,KAAK,sBAAuB,CAACvB,EAAgB0B,mBAAmB/gD,KAAMzB,KAAK,SAAUs5B,GACvG,OAAOkd,EAAMoF,KAAK,WACd,OAAOp8C,EAAMD,SAAS0I,eAAeqxB,GAAMt5B,KAAK,SAAUyB,GACtD,GAAW,OAAPA,EAGJ,OAAOjC,EAAMD,SAAS+8C,iBAAiB76C,EAAI63B,MAEhD,CAAEuiB,UAAWr8C,EAAMD,WAAYiG,MAAM,SAAU1B,GAE9C,MADAA,EAAMoE,gBAAkBoxB,EAClBx1B,KAEX,SAAUA,GAiBT,MAfwD,GAApDA,EAAMs7C,aAAat4C,QAAQ,uBAC3BjI,EAAOoB,WAAW,qBAAsBpB,EAAOqM,mBAAoB,CAC/D7K,YAAaoB,IAG8B,GAA/CqC,EAAMs7C,aAAat4C,QAAQ,kBAC3BjI,EAAOoB,WAAW,8BAA+BpB,EAAOsM,cAAe,CACnE9K,YAAaoB,IAGoD,GAArEqC,EAAMs7C,aAAat4C,QAAQ,wCAC3BjI,EAAOoB,WAAW,0BAA2BpB,EAAOuM,wBAAyB,CACzE/K,YAAaoB,IAGfqC,OAIlBi9C,EAAc1iD,UAAU8B,YAAc,SAAUL,GAC5C,IAAIN,EAAQxE,KACRyF,EAA8B,iBAAd,EAA0B81C,EAAOkM,YAAY3iD,GAAWA,EAC5E,OAAO9E,KAAK0E,aAAaM,KAAK,SAAUV,GAEpC,OAAOE,EAAMD,SAAS8iD,KAAK,WAAY,CAAC/iD,EAAQiI,cAAevI,EAAQmK,QAAQ1I,QAGvFsgD,EAAc1iD,UAAUqkD,OAAS,SAAUzT,GACvC,IAAI1vC,EAAWvE,KAAKuE,SACpB,OAAOvE,KAAK0E,aAAaM,KAAK,SAAUV,GACpC,OAAOC,EAAS8iD,KAAK,yBAA0B,CAAC/iD,EAAQiI,cAAe0nC,EAAU,UAGlF8R,EAnHuB,CAoHhC5hD,EAAkB3C,QACpB/B,EAAQsmD,cAAgBA,EACxB,IAAID,EAAiC,SAAUzhD,GAE3C,SAASyhD,EAAgB5B,EAAKryC,GAC1B,IAAIrN,EAAQxE,KAQZ,GANqB,iBAAV,GACS,OAAZ6R,GAAoBupC,EAAW4D,WAAWkF,KAC1CryC,EAAUqyC,EACVA,EAAM,MAGVryC,EAEArN,EAAQH,EAAOtD,KAAKf,KAAM6R,IAAY7R,SAErC,CAED,IAAIogD,EAAQ,IAAIz7C,QAAQ,SAAUC,EAAS0/C,GACvC72C,WAAW,WACPjJ,EAAM6iD,KAAK,cAAe,IAAIriD,KAAK,SAAUtB,GACzC,OAAOkB,EAAQw2C,EAAW4D,WAAWlsC,SAASpP,OAC/C8G,MAAM,SAAU1B,GACfw7C,EAAOx7C,SAInBtE,EAAQH,EAAOtD,KAAKf,KAAMogD,IAAUpgD,KAexC,OAbA6D,EAAO6F,SAASlF,EAAOshD,GAElB5B,IACDA,EAAM,yBAGN1/C,EAAMmjD,WADW,iBAAV,EACY,CACfzD,IAAKA,GAIUA,EAEhB1/C,EAgJX,OAxLA5B,EAAUkjD,EAAiBzhD,GA0C3ByhD,EAAgBziD,UAAUsjD,UAAY,SAAUQ,GAC5C,OAAO,IAAIpB,EAAckB,EAAmBjnD,KAAMmnD,IAEtDrB,EAAgBziD,UAAUujD,aAAe,WACrC,OAAO5mD,KAAKqnD,KAAK,eAAgB,IAAIriD,KAAK,SAAUsiD,GAChD,OAAOA,EAAS15C,IAAI,SAAUjN,GAAK,OAAOoD,EAAUW,WAAW/D,QAGvEmlD,EAAgBziD,UAAUgkD,KAAO,SAAUlhD,EAAQG,GAC/C,IAAIshD,EAAU,CACVzhD,OAAQA,EACRG,OAAQA,EACRuhD,GAAI,GACJ/D,QAAS,OAEb,OAAOtI,EAAM2I,UAAUnkD,KAAK2nD,WAAY54C,KAAKyB,UAAUo3C,GAAUhE,IAErEkC,EAAgBziD,UAAUy9C,QAAU,SAAU36C,EAAQG,GAClD,OAAQH,GACJ,IAAK,iBACD,OAAOnG,KAAKqnD,KAAK,kBAAmB,IACxC,IAAK,cACD,OAAOrnD,KAAKqnD,KAAK,eAAgB,IACrC,IAAK,aACD,OAAOrnD,KAAKqnD,KAAK,iBAAkB,CAACL,EAAa1gD,EAAOhC,SAAUgC,EAAO+1C,WAC7E,IAAK,sBACD,OAAOr8C,KAAKqnD,KAAK,0BAA2B,CAACL,EAAa1gD,EAAOhC,SAAUgC,EAAO+1C,WACtF,IAAK,UACD,OAAOr8C,KAAKqnD,KAAK,cAAe,CAACL,EAAa1gD,EAAOhC,SAAUgC,EAAO+1C,WAC1E,IAAK,eACD,OAAOr8C,KAAKqnD,KAAK,mBAAoB,CAACL,EAAa1gD,EAAOhC,SAAUgC,EAAO86C,SAAU96C,EAAO+1C,WAChG,IAAK,kBACD,OAAOr8C,KAAKqnD,KAAK,yBAA0B,CAAC/gD,EAAO+6C,oBAAoB72C,MAAM,SAAU1B,GAanF,MAXuD,EAAnDA,EAAMs7C,aAAat4C,QAAQ,uBAC3BjI,EAAOoB,WAAW,qBAAsBpB,EAAOqM,mBAAoB,IAGrB,EAA9CpH,EAAMs7C,aAAat4C,QAAQ,kBAC3BjI,EAAOoB,WAAW,8BAA+BpB,EAAOsM,cAAe,IAGH,EAApErH,EAAMs7C,aAAat4C,QAAQ,wCAC3BjI,EAAOoB,WAAW,0BAA2BpB,EAAOuM,wBAAyB,IAE3EtH,IAEd,IAAK,WACD,OAAIxC,EAAO+1C,SACAr8C,KAAKqnD,KAAK,uBAAwB,CAAC/gD,EAAO+1C,WAAY/1C,EAAOm3C,sBAE/Dn3C,EAAO0G,UACLhN,KAAKqnD,KAAK,qBAAsB,CAAC/gD,EAAO0G,YAAa1G,EAAOm3C,sBAEhE94C,QAAQ2/C,OAAO,IAAI1jD,MAAM,oCACpC,IAAK,iBACD,OAAOZ,KAAKqnD,KAAK,2BAA4B,CAAC/gD,EAAO4G,kBACzD,IAAK,wBACD,OAAOlN,KAAKqnD,KAAK,4BAA6B,CAAC/gD,EAAO4G,kBAC1D,IAAK,OACD,OAAOlN,KAAKqnD,KAAK,WAAY,CAACvB,EAAgB0B,mBAAmBlhD,EAAOjB,aAAc,WAC1F,IAAK,cACD,OAAOrF,KAAKqnD,KAAK,kBAAmB,CAACvB,EAAgB0B,mBAAmBlhD,EAAOjB,eACnF,IAAK,UAID,OAHIiB,EAAO6C,QAAmC,MAAzB7C,EAAO6C,OAAO7E,UAC/BgC,EAAO6C,OAAO7E,QAAU0iD,EAAa1gD,EAAO6C,OAAO7E,UAEhDtE,KAAKqnD,KAAK,cAAe,CAAC/gD,EAAO6C,SAKhD,OADAtF,EAAOoB,WAAWkB,EAAS,mBAAoBtC,EAAOiM,gBAAiB,CAAE/K,UAAWoB,IAC7E,MAEX2/C,EAAgBziD,UAAUq/C,cAAgB,WACtC,GAA2B,MAAvB1iD,KAAK8nD,eAAT,CAGA,IAAI/nD,EAAOC,KACP+nD,EAAgB/nD,KAAKqnD,KAAK,kCAAmC,KACjErnD,KAAK8nD,eAAiBC,GACR/iD,KAAK,SAAUgjD,GA6BzB,OA5BA,SAASpH,IACL7gD,EAAKsnD,KAAK,uBAAwB,CAACW,IAAWhjD,KAAK,SAAUijD,GACzD,GAAIloD,EAAK+nD,gBAAkBC,EACvB,OAAO,KAEX,IAAIvD,EAAM7/C,QAAQC,UAUlB,OATAqjD,EAAOnhD,QAAQ,SAAUw3B,GACrBv+B,EAAKs/C,SAAS,KAAO/gB,EAAK/xB,eAAiB,UAC3Ci4C,EAAMA,EAAIx/C,KAAK,WACX,OAAOjF,EAAKkN,eAAeqxB,GAAMt5B,KAAK,SAAUyB,GAE5C,OADA1G,EAAKqN,KAAK,UAAW3G,GACd,WAIZ+9C,EAAIx/C,KAAK,WACZ,OA3RT27C,EA2RsB,IA1R1B,IAAIh8C,QAAQ,SAAUC,GACzB6I,WAAW,WACP7I,KACD+7C,KAJX,IAAeA,MA6RI37C,KAAK,WACJ,GAAIjF,EAAK+nD,gBAAkBC,EAK3B,OADAt6C,WAAW,WAAcmzC,KAAW,GAC7B,KAJH7gD,EAAKsnD,KAAK,sBAAuB,CAACW,MAKvCx9C,MAAM,SAAU1B,MAEvB83C,GACOoH,IACRx9C,MAAM,SAAU1B,QAEvBg9C,EAAgBziD,UAAUs/C,aAAe,WACrC3iD,KAAK8nD,eAAiB,MAO1BhC,EAAgB0B,mBAAqB,SAAUniD,GAC3C,IAAI3B,EAAS,GAkBb,MAhBA,CAAC,WAAY,WAAY,QAAS,SAASoD,QAAQ,SAAUH,GACzD,GAAwB,MAApBtB,EAAYsB,GAAhB,CAGA,IAAIvF,EAAQ4C,EAAQs4C,cAAct4C,EAAQmK,QAAQ9I,EAAYsB,KAClD,aAARA,IACAA,EAAM,OAEVjD,EAAOiD,GAAOvF,KAElB,CAAC,OAAQ,KAAM,QAAQ0F,QAAQ,SAAUH,GACb,MAApBtB,EAAYsB,KAGhBjD,EAAOiD,GAAO3C,EAAQmK,QAAQ9I,EAAYsB,OAEvCjD,GAEJoiD,EAzLyB,CA0LlCpC,EAAgB5E,cAClBr/C,EAAQqmD,gBAAkBA,GAExB,CAACoC,qBAAqB,EAAEpF,YAAY,EAAEC,mBAAmB,GAAGE,iBAAiB,GAAGE,oBAAoB,GAAGlI,sBAAsB,GAAGqI,gBAAgB,GAAGC,eAAe,GAAGyB,kBAAkB,KAAKmD,GAAG,CAAC,SAAS1nD,EAAQf,EAAOD,GAC1N,aACA,IACQkD,EADJC,EAAa5C,MAAQA,KAAK4C,YACtBD,EAAgBzB,OAAO2B,gBACtB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAInC,KAAKmC,EAAOA,EAAEC,eAAepC,KAAIkC,EAAElC,GAAKmC,EAAEnC,KAClE,SAAUkC,EAAGC,GAEhB,SAASE,IAAOnD,KAAKoD,YAAcJ,EADnCL,EAAcK,EAAGC,GAEjBD,EAAEK,UAAkB,OAANJ,EAAa/B,OAAOoC,OAAOL,IAAME,EAAGE,UAAYJ,EAAEI,UAAW,IAAIF,KAGnFI,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAIykD,EAAsBplD,EAAQ,uBAC9Bc,EAAed,EAAQ,uBACvBoD,EAASN,EAAa9C,EAAQ,cAQ9BwlD,EAA8B,SAAU5hD,GAExC,SAAS4hD,EAAamC,EAAcv2C,GAChC,IAAIrN,EAEJH,EAAOtD,KAAKf,KAAMooD,EAAa1B,MAAQ0B,EAAaC,MAAQ,GAAIx2C,IAAY7R,KAc5E,OAbA6D,EAAO6F,SAASlF,EAAOyhD,GACnBmC,IACIA,EAAaE,UACb9jD,EAAM+jD,WAAaH,EAAaE,UAAU/H,KAAK6H,GAE1CA,EAAaf,OAClB7iD,EAAM+jD,WAAaH,EAAaf,KAAK9G,KAAK6H,KAG7CA,GAAiB5jD,EAAM+jD,YACxB1kD,EAAOoB,WAAW,uBAAwBpB,EAAOkG,iBAAkB,CAAEC,IAAK,eAAgB5I,MAAOgnD,IAErG7mD,EAAakD,eAAeD,EAAO,gBAAiB4jD,GAC7C5jD,EAkCX,OApDA5B,EAAUqjD,EAAc5hD,GAoBxB4hD,EAAa5iD,UAAUgkD,KAAO,SAAUlhD,EAAQG,GAC5C,IAAI9B,EAAQxE,KAOZ,MALc,YAAVmG,GAAwBnG,KAAKwoD,cAAcC,aAE3CtiD,EAAS,gBACTG,EAAS,CAACA,EAAO,GAAIA,EAAO,KAEzB,IAAI3B,QAAQ,SAAUC,EAAS0/C,GAClC,IAAIsD,EAAU,CACVzhD,OAAQA,EACRG,OAAQA,EACRuhD,GAAI,GACJ/D,QAAS,OAEbt/C,EAAM+jD,WAAWX,EAAS,SAAU9+C,EAAOpF,GACvC,GAAIoF,EACAw7C,EAAOx7C,OADX,CAIA,GAAIpF,EAAOoF,MAMP,OAJIA,EAAQ,IAAIlI,MAAM8C,EAAOoF,MAAMhE,UAC7BjE,KAAO6C,EAAOoF,MAAMjI,KAC1BiI,EAAMrD,KAAO/B,EAAOoF,MAAMrD,UAC1B6+C,EAAOx7C,GAGXlE,EAAQlB,EAAOA,cAIpBuiD,EArDsB,CAsD/BJ,EAAoBC,iBACtBrmD,EAAQwmD,aAAeA,GAErB,CAACnD,YAAY,EAAE7H,sBAAsB,GAAGqL,sBAAsB,KAAKoC,GAAG,CAAC,SAASjoD,EAAQf,EAAOD,GACjG,aACA,IACQkD,EADJC,EAAa5C,MAAQA,KAAK4C,YACtBD,EAAgBzB,OAAO2B,gBACtB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAInC,KAAKmC,EAAOA,EAAEC,eAAepC,KAAIkC,EAAElC,GAAKmC,EAAEnC,KAClE,SAAUkC,EAAGC,GAEhB,SAASE,IAAOnD,KAAKoD,YAAcJ,EADnCL,EAAcK,EAAGC,GAEjBD,EAAEK,UAAkB,OAANJ,EAAa/B,OAAOoC,OAAOL,IAAME,EAAGE,UAAYJ,EAAEI,UAAW,IAAIF,KAGnFI,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IAEtD,IAAIwC,EAAcnD,EAAQ,gBACtBoD,EAASN,EAAa9C,EAAQ,cAC9BsD,EAAYtD,EAAQ,aACpBqB,EAAcrB,EAAQ,eACtBuD,EAAUvD,EAAQ,WAClB86C,EAAS96C,EAAQ,UACjBc,EAAed,EAAQ,gBAEvBkoD,EAAiB,IAAIC,OAAO,mBAC5BC,EAAkB,IAAID,OAAO,qBAC7BE,EAAiB,IAAIF,OAAO,sBAChCnpD,EAAQspD,kBAAoB,SAAUrhD,EAAMtG,GACxC,IAAI0G,EAAQJ,EAAKI,MAAM+gD,GACvB,OAAI/gD,GAASgL,SAAShL,EAAM,KAAO,GACxB1G,EAAM0c,WAEV1c,GAIX,IAAI4nD,EAAa,IAAIJ,OAAO,gCACxBK,EAAkB,IAAIL,OAAO,4BACjC,SAASM,EAAWxhD,GAQhB,OANIA,EAAKI,MAAM,mBACXJ,EAAO,UAAYA,EAAK2G,UAAU,GAE7B3G,EAAKI,MAAM,oBAChBJ,EAAO,SAAWA,EAAK2G,UAAU,IAE9B3G,EAEX,SAASyhD,EAAWC,EAAOC,GACvB,SAASpkD,EAAW1E,GAChB,MAAM,IAAIK,MAAM,yBAA2BwoD,EAAM7oD,GAAK,iBAAmBA,EAAI,QAAU6oD,EAAQ,KAInG,IAFA,IAAIE,EAAS,CAAE5hD,KAAM,GAAIH,KAAM,GAAIwuC,MAAO,CAAEwT,WAAW,IACnDxb,EAAOub,EACF/oD,EAAI,EAAGA,EAAI6oD,EAAMpoD,OAAQT,IAAK,CACnC,IAAIC,EAAI4oD,EAAM7oD,GACd,OAAQC,GACJ,IAAK,IACIutC,EAAKgI,MAAMyT,aACZvkD,EAAW1E,GAEfwtC,EAAKgI,MAAMwT,WAAY,EACvBxb,EAAKrmC,KAAOwhD,EAAWnb,EAAKrmC,MAC5BqmC,EAAKnmC,WAAa,CAAC,CAAEF,KAAM,GAAIH,KAAM,GAAI+hD,OAAQvb,EAAMgI,MAAO,CAAEwT,WAAW,KAC3Exb,EAAOA,EAAKnmC,WAAW,GACvB,MACJ,IAAK,WACMmmC,EAAKgI,MACRsT,GAA8B,YAAdtb,EAAKxmC,OACrBwmC,EAAK0b,SAAU,EACf1b,EAAKxmC,KAAO,IAEhBwmC,EAAKrmC,KAAOwhD,EAAWnb,EAAKrmC,MAC5B,IAAIgiD,EAAQ3b,GACZA,EAAOA,EAAKub,SAERrkD,EAAW1E,UAERmpD,EAAMJ,OACbvb,EAAKgI,MAAMyT,aAAc,EACzBzb,EAAKgI,MAAM4T,WAAY,EACvB5b,EAAKgI,MAAM6T,YAAa,EACxB,MACJ,IAAK,WACM7b,EAAKgI,MACRsT,GAA8B,YAAdtb,EAAKxmC,OACrBwmC,EAAK0b,SAAU,EACf1b,EAAKxmC,KAAO,IAEhBwmC,EAAKrmC,KAAOwhD,EAAWnb,EAAKrmC,MAC5B,IAAImiD,EAAU,CAAEniD,KAAM,GAAIH,KAAM,GAAI+hD,OAAQvb,EAAKub,OAAQvT,MAAO,CAAEwT,WAAW,IAC7Exb,EAAKub,OAAO1hD,WAAWJ,KAAKqiD,UACrB9b,EAAKub,OACZvb,EAAO8b,EACP,MAEJ,IAAK,IAEG9b,EAAKgI,MAAMwT,WACO,KAAdxb,EAAKrmC,OACLqmC,EAAKrmC,KAAOwhD,EAAWnb,EAAKrmC,aACrBqmC,EAAKgI,MAAMwT,UAClBxb,EAAKgI,MAAM4T,WAAY,EACvB5b,EAAKgI,MAAMyT,aAAc,GAI7Bzb,EAAKgI,MAAM4T,WACO,KAAd5b,EAAKxmC,OACD8hD,GAA8B,YAAdtb,EAAKxmC,MACrBwmC,EAAK0b,SAAU,EACf1b,EAAKxmC,KAAO,IAGZwmC,EAAKgI,MAAM4T,WAAY,GAInC,MACJ,IAAK,IACI5b,EAAKgI,MAAM6T,YACZ3kD,EAAW1E,GAEfwtC,EAAKrmC,MAAQlH,EACbutC,EAAKgI,MAAM6T,YAAa,EACxB7b,EAAKgI,MAAM4T,WAAY,EACvB5b,EAAKgI,MAAM+T,WAAY,EACvB,MACJ,IAAK,IACI/b,EAAKgI,MAAM+T,WACZ7kD,EAAW1E,GAEfwtC,EAAKrmC,MAAQlH,EACbutC,EAAKgI,MAAM+T,WAAY,EACvB/b,EAAKgI,MAAM6T,YAAa,EACxB7b,EAAKgI,MAAM4T,WAAY,EACvB,MACJ,QACQ5b,EAAKgI,MAAMwT,WACXxb,EAAKrmC,MAAQlH,EACbutC,EAAKgI,MAAMyT,aAAc,EACzBzb,EAAKgI,MAAM6T,YAAa,GAEnB7b,EAAKgI,MAAM4T,WAChB5b,EAAKxmC,MAAQ/G,SACNutC,EAAKgI,MAAM6T,YAEb7b,EAAKgI,MAAM+T,UAChB/b,EAAKrmC,MAAQlH,EAGbyE,EAAW1E,IAI3B,GAAIwtC,EAAKub,OACL,MAAM,IAAI1oD,MAAM,kBAQpB,cANO0oD,EAAOvT,MACVsT,GAA8B,YAAdtb,EAAKxmC,OACrBwmC,EAAK0b,SAAU,EACf1b,EAAKxmC,KAAO,IAEhB+hD,EAAO5hD,KAAOwhD,EAAWI,EAAO5hD,MACzB4hD,EAwHX,SAASS,EAAgB7iD,GACrB,OAAO8iD,EAAcvqD,EAAQspD,kBAAmB7hD,GAAWQ,KAH/DjI,EAAQwqD,eAHR,SAAwBviD,GACpB,OAAOyhD,EAAWzhD,GAAM,IAO5BjI,EAAQsqD,gBAAkBA,EAK1BtqD,EAAQsM,gBAHR,SAAyBm+C,GACrB,OAAOA,EAAS3iD,KAAO,IAAM2iD,EAASxjD,OAAOkH,IAAI,SAAUrN,GAAK,OAAOwpD,EAAgBxpD,KAAO8I,KAAK,KAAO,KAoB9G5J,EAAQuM,eAjBR,SAAwBk+C,GACpB,GAA0B,iBAAf,EAIP,MAAiC,YADjCA,GADAA,EAAWA,EAASvuC,QAAQ,MAAO,MAAMA,QAAQ,MAAO,MAAMA,QAAQ,OAAQ,MAC1DwuC,QACP97C,UAAU,EAAG,GAnIlC,SAA6B67C,GACzB,IAAIj7C,EAAM,CACNm7C,WAAW,EACX1jD,OAAQ,GACRa,KAAM,GACNG,KAAM,SAENI,EAAQoiD,EAASpiD,MAAMkhD,GAC3B,IAAKlhD,EACD,MAAM,IAAIlH,MAAM,kBAAoBspD,GAmBxC,GAjBAj7C,EAAI1H,KAAOO,EAAM,GAAGqiD,OACpBE,EAAaviD,EAAM,IAAIhB,QAAQ,SAAUsiD,IACrCA,EAAQD,EAAWC,GAAO,IACpBK,UAAYL,EAAMK,QACxBx6C,EAAIvI,OAAOc,KAAK4hD,KAEpBthD,EAAM,GAAG4oB,MAAM,KAAK5pB,QAAQ,SAAUwjD,GAClC,OAAQA,GACJ,IAAK,YACDr7C,EAAIm7C,WAAY,EAChB,MACJ,IAAK,GACD,MACJ,QACI3/C,QAAQC,IAAI,qBAAuB4/C,MAG3Cr7C,EAAI1H,OAAS0H,EAAI1H,KAAKO,MAAMmhD,GAC5B,MAAM,IAAIroD,MAAM,wBAA0BqO,EAAI1H,KAAO,KAEzD,OAAO0H,EAqGQs7C,CAAoBL,EAAS77C,UAAU,GAAG87C,SAGhB,cAA7BD,EAAS77C,UAAU,EAAG,KACtB67C,EAAWA,EAAS77C,UAAU,IAvG9C,SAAgC67C,GAC5B,IAAIj7C,EAAM,CACNu7C,UAAU,EACVxhD,IAAK,KACLtC,OAAQ,GACRa,KAAM,GACNsB,QAAS,GACT4hD,SAAS,EACTC,gBAAiB,KACjBhjD,KAAM,YAEN+3C,EAAQyK,EAASx5B,MAAM,KAC3B,GAAqB,IAAjB+uB,EAAMz+C,OAAc,CACpB,GAAmB,EAAfy+C,EAAMz+C,OACN,MAAM,IAAIJ,MAAM,qBAEpB,IAAK6+C,EAAM,GAAG33C,MAAM,YAChB,MAAM,IAAIlH,MAAM,yBAEpBqO,EAAIjG,IAAMlH,EAAYK,aAAas9C,EAAM,IACzCyK,EAAWzK,EAAM,GAGrB,IAAInkC,GADJmkC,EAAQyK,EAASx5B,MAAM,cACN,GAAG5oB,MAAMkhD,GAC1B,IAAK1tC,EACD,MAAM,IAAI1a,MAAM,qBAGpB,GADAqO,EAAI1H,KAAO+T,EAAK,GAAG6uC,QACdl7C,EAAI1H,KAAKO,MAAMmhD,GAChB,MAAM,IAAIroD,MAAM,wBAA0B0a,EAAK,GAAK,KA+BxD,GA7BA+uC,EAAa/uC,EAAK,IAAIxU,QAAQ,SAAUsiD,GACpCn6C,EAAIvI,OAAOc,KAAK2hD,EAAWC,MAE/B9tC,EAAK,GAAGoV,MAAM,KAAK5pB,QAAQ,SAAUwjD,GACjC,OAAQA,GACJ,IAAK,WACDr7C,EAAIu7C,UAAW,EACf,MACJ,IAAK,UACDv7C,EAAIw7C,SAAU,EACdx7C,EAAIy7C,gBAAkB,UACtB,MACJ,IAAK,OACDz7C,EAAIu7C,UAAW,EACfv7C,EAAIy7C,gBAAkB,OACtB,MACJ,IAAK,OACDz7C,EAAIu7C,UAAW,EACfv7C,EAAIy7C,gBAAkB,OACtB,MACJ,IAAK,WACL,IAAK,SACL,IAAK,GACD,MACJ,QACIjgD,QAAQC,IAAI,qBAAuB4/C,MAI5B,EAAf7K,EAAMz+C,OAAY,CAClB,IAAIua,EAAQkkC,EAAM,GAAG33C,MAAMkhD,GAC3B,GAAuB,IAAnBztC,EAAM,GAAG4uC,QAAmC,IAAnB5uC,EAAM,GAAG4uC,OAClC,MAAM,IAAIvpD,MAAM,qBAEpBypD,EAAa9uC,EAAM,IAAIzU,QAAQ,SAAUsiD,GACrCn6C,EAAIpG,QAAQrB,KAAK2hD,EAAWC,MAGpC,GAAiB,gBAAbn6C,EAAI1H,KAAwB,CAE5B,GADA0H,EAAIvH,KAAO,cACPuH,EAAIpG,QAAQ7H,OACZ,MAAM,IAAIJ,MAAM,2CAEbqO,EAAI1H,YACJ0H,EAAIpG,QAEf,OAAOoG,EA4BQ07C,CAAuBT,EAASC,SAG/C,MAAM,IAAIvpD,MAAM,sBAGpB,IAAIgqD,EACA,SAAeC,EAAYtjD,EAAMG,EAAMojD,EAAWC,GAC9C/qD,KAAK6qD,WAAaA,EAClB7qD,KAAKuH,KAAOA,EACZvH,KAAK0H,KAAOA,EACZ1H,KAAK8qD,UAAYA,EACjB9qD,KAAK+qD,QAAUA,GAKnBC,EAAgC,SAAU3mD,GAE1C,SAAS2mD,EAAeC,GACpB,IAAIzmD,EAAQH,EAAOtD,KAAKf,KAAMirD,EAAMJ,WAAYI,EAAM1jD,KAAM0jD,EAAMvjD,UAAMs3B,EAAWisB,EAAMF,UAAY/qD,KAErG,OADAuB,EAAakD,eAAeD,EAAO,QAASymD,GACrCzmD,EAIX,OARA5B,EAAUooD,EAAgB3mD,GAM1B2mD,EAAe3nD,UAAU4E,OAAS,SAAU7G,GAAS,OAAOpB,KAAKirD,MAAMhjD,OAAO7G,IAC9E4pD,EAAe3nD,UAAUkF,OAAS,SAAU9C,EAAMqqC,GAAU,OAAO9vC,KAAKirD,MAAM1iD,OAAO9C,EAAMqqC,IACpFkb,EATwB,CAUjCJ,GACEM,EAA2B,SAAU7mD,GAErC,SAAS6mD,EAAUL,EAAYC,GAC3B,OAAOzmD,EAAOtD,KAAKf,KAAM6qD,EAAY,OAAQ,GAAIC,GAAW,IAAU9qD,KAc1E,OAhBA4C,EAAUsoD,EAAW7mD,GAIrB6mD,EAAU7nD,UAAU4E,OAAS,SAAU7G,GACnC,OAAO4C,EAAQmnD,SAAS,KAE5BD,EAAU7nD,UAAUkF,OAAS,SAAU9C,EAAMqqC,GACzC,GAAIA,EAASrqC,EAAKzE,OACd,MAAM,IAAIJ,MAAM,gBAEpB,MAAO,CACHwqD,SAAU,EACVhqD,MAAOpB,KAAK6qD,WAAW,YAAQ7rB,KAGhCksB,EAjBmB,CAkB5BN,GACES,EAA6B,SAAUhnD,GAEvC,SAASgnD,EAAYR,EAAYjuC,EAAM0uC,EAAQR,GAC3C,IAAItmD,EAAQxE,KACRuH,GAAS+jD,EAAS,MAAQ,QAAkB,EAAP1uC,EAIzC,OAHApY,EAAQH,EAAOtD,KAAKf,KAAM6qD,EAAYtjD,EAAMA,EAAMujD,GAAW,IAAU9qD,MACjE4c,KAAOA,EACbpY,EAAM8mD,OAASA,EACR9mD,EAsDX,OA7DA5B,EAAUyoD,EAAahnD,GASvBgnD,EAAYhoD,UAAU4E,OAAS,SAAU7G,GACrC,IACI,IAAIkG,EAAIxF,EAAYK,aAAaf,GACjC,GAAIpB,KAAKsrD,OAAQ,CACb,IAAIC,EAAS3nD,EAAYpB,WAAWgoB,MAAkB,EAAZxqB,KAAK4c,KAAW,GAC1D,GAAItV,EAAE8lB,GAAGm+B,GACL,MAAM,IAAI3qD,MAAM,iBAGpB,GADA2qD,EAASA,EAAOtiD,IAAIrF,EAAYvB,KAAK8Y,IAAIvX,EAAY1B,aACjDoF,EAAEkmB,GAAG+9B,GACL,MAAM,IAAI3qD,MAAM,sBAGnB,GAAI0G,EAAEkmB,GAAG5pB,EAAYxB,OAASkF,EAAE8lB,GAAGxpB,EAAYpB,WAAWgoB,MAAkB,EAAZxqB,KAAK4c,OACtE,MAAM,IAAIhc,MAAM,iBAMpB,OAJA0G,EAAIA,EAAE2X,OAAmB,EAAZjf,KAAK4c,MAAU4N,MAAkB,EAAZxqB,KAAK4c,MACnC5c,KAAKsrD,SACLhkD,EAAIA,EAAEgY,SAAqB,EAAZtf,KAAK4c,MAAUqC,OAAO,MAElCjb,EAAQwnD,SAASxnD,EAAQmnD,SAAS7jD,GAAI,IAEjD,MAAOwB,GACHjF,EAAOoB,WAAW,uBAAwBpB,EAAOkG,iBAAkB,CAC/DC,IAAKhK,KAAK8qD,UACVW,UAAWzrD,KAAKuH,KAChBnG,MAAOA,IAGf,OAAO,MAEXiqD,EAAYhoD,UAAUkF,OAAS,SAAU9C,EAAMqqC,GACvCrqC,EAAKzE,OAAS8uC,EAAS,IACvBjsC,EAAOoB,WAAW,yBAA2BjF,KAAKuH,KAAO,QAAS1D,EAAOkG,iBAAkB,CACvFC,IAAKhK,KAAK8qD,UACVW,UAAWzrD,KAAKuH,KAChBnG,MAAO4C,EAAQmK,QAAQ1I,EAAK4G,MAAMyjC,EAAQA,EAAS,OAG3D,IAAI4b,EAAa,GAAK1rD,KAAK4c,KACvBxb,EAAQU,EAAYK,aAAasD,EAAK4G,MAAMyjC,EAAS4b,EAAY5b,EAAS,KAO9E,OALI1uC,EADApB,KAAKsrD,OACGlqD,EAAMke,SAAqB,EAAZtf,KAAK4c,MAGpBxb,EAAMopB,MAAkB,EAAZxqB,KAAK4c,MAEtB,CACHwuC,SAAU,GACVhqD,MAAOpB,KAAK6qD,WAAW7qD,KAAKuH,KAAMnG,KAGnCiqD,EA9DqB,CA+D9BT,GACEe,EAAe,IAAIN,EAAY,SAAU3jD,EAAMtG,GAAS,OAAOA,GAAU,IAAI,EAAO,QACpFwqD,EAA8B,SAAUvnD,GAExC,SAASunD,EAAaf,EAAYC,GAC9B,OAAOzmD,EAAOtD,KAAKf,KAAM6qD,EAAY,OAAQ,OAAQC,GAAW,IAAU9qD,KAwB9E,OA1BA4C,EAAUgpD,EAAcvnD,GAIxBunD,EAAavoD,UAAU4E,OAAS,SAAU7G,GACtC,OAAOuqD,EAAa1jD,OAAS7G,EAAQ,EAAI,IAE7CwqD,EAAavoD,UAAUkF,OAAS,SAAU9C,EAAMqqC,GAC5C,IACI,IAAIpsC,EAASioD,EAAapjD,OAAO9C,EAAMqqC,GAE3C,MAAOhnC,GAQH,KAPqB,uCAAjBA,EAAMT,QACNxE,EAAOoB,WAAW,qCAAsCpB,EAAOkG,iBAAkB,CAC7EC,IAAKhK,KAAK8qD,UACVW,UAAW,UACXrqD,MAAO0H,EAAM1H,QAGf0H,EAEV,MAAO,CACHsiD,SAAU1nD,EAAO0nD,SACjBhqD,MAAOpB,KAAK6qD,WAAW,QAASnnD,EAAOtC,MAAMuc,YAG9CiuC,EA3BsB,CA4B/BhB,GACEiB,EAAiC,SAAUxnD,GAE3C,SAASwnD,EAAgBhB,EAAY7pD,EAAQ8pD,GACzC,IAAItmD,EAAQxE,KACRuH,EAAQ,QAAUvG,EAGtB,OAFAwD,EAAQH,EAAOtD,KAAKf,KAAM6qD,EAAYtjD,EAAMA,EAAMujD,GAAW,IAAU9qD,MACjEgB,OAASA,EACRwD,EAiCX,OAvCA5B,EAAUipD,EAAiBxnD,GAQ3BwnD,EAAgBxoD,UAAU4E,OAAS,SAAU7G,GACzC,IAAIsC,EAAS,IAAI4P,WAAW,IAC5B,IACI,IAAI7N,EAAOzB,EAAQmnD,SAAS/pD,GAC5B,GAAIqE,EAAKzE,SAAWhB,KAAKgB,OACrB,MAAM,IAAIJ,MAAM,yBAEpB8C,EAAOoQ,IAAIrO,GAEf,MAAOqD,GACHjF,EAAOoB,WAAW,WAAajF,KAAKuH,KAAO,SAAU1D,EAAOkG,iBAAkB,CAC1EC,IAAKhK,KAAK8qD,UACVW,UAAWzrD,KAAKuH,KAChBnG,MAAQ0H,EAAM1H,OAASA,IAG/B,OAAOsC,GAEXmoD,EAAgBxoD,UAAUkF,OAAS,SAAU9C,EAAMqqC,GAQ/C,OAPIrqC,EAAKzE,OAAS8uC,EAAS,IACvBjsC,EAAOoB,WAAW,yBAA2BsC,KAAO,QAAS1D,EAAOkG,iBAAkB,CAClFC,IAAKhK,KAAK8qD,UACVW,UAAWzrD,KAAKuH,KAChBnG,MAAO4C,EAAQmK,QAAQ1I,EAAK4G,MAAMyjC,EAAQA,EAAS,OAGpD,CACHsb,SAAU,GACVhqD,MAAOpB,KAAK6qD,WAAW7qD,KAAKuH,KAAMvD,EAAQmK,QAAQ1I,EAAK4G,MAAMyjC,EAAQA,EAAS9vC,KAAKgB,YAGpF6qD,EAxCyB,CAyClCjB,GACEkB,EAA8B,SAAUznD,GAExC,SAASynD,EAAajB,EAAYC,GAC9B,OAAOzmD,EAAOtD,KAAKf,KAAM6qD,EAAY,UAAW,UAAWC,GAAW,IAAU9qD,KA6BpF,OA/BA4C,EAAUkpD,EAAcznD,GAIxBynD,EAAazoD,UAAU4E,OAAS,SAAU7G,GACtC,IAAIsC,EAAS,IAAI4P,WAAW,IAC5B,IACI5P,EAAOoQ,IAAI9P,EAAQmnD,SAASpnD,EAAUW,WAAWtD,IAAS,IAE9D,MAAO0H,GACHjF,EAAOoB,WAAW,kBAAmBpB,EAAOkG,iBAAkB,CAC1DC,IAAKhK,KAAK8qD,UACVW,UAAW,UACXrqD,MAAOA,IAGf,OAAOsC,GAEXooD,EAAazoD,UAAUkF,OAAS,SAAU9C,EAAMqqC,GAQ5C,OAPIrqC,EAAKzE,OAAS8uC,EAAS,IACvBjsC,EAAOoB,WAAW,qCAAsCpB,EAAOkG,iBAAkB,CAC7EC,IAAKhK,KAAK8qD,UACVW,UAAW,UACXrqD,MAAO4C,EAAQmK,QAAQ1I,EAAK4G,MAAMyjC,EAAQA,EAAS,OAGpD,CACHsb,SAAU,GACVhqD,MAAOpB,KAAK6qD,WAAW,UAAW9mD,EAAUW,WAAWV,EAAQmK,QAAQ1I,EAAK4G,MAAMyjC,EAAS,GAAIA,EAAS,SAGzGgc,EAhCsB,CAiC/BlB,GACF,SAASmB,EAAoB3qD,GACzB,IAAI4qD,EAAa,GAAKhxC,KAAKe,KAAK3a,EAAMJ,OAAS,IAC3CgY,EAAU,IAAI1F,WAAW04C,EAAa5qD,EAAMJ,QAChD,OAAOgD,EAAQsJ,OAAO,CAClBq+C,EAAa1jD,OAAO7G,EAAMJ,QAC1BI,EACA4X,IAGR,SAASizC,EAAoBxmD,EAAMqqC,EAAQgb,GACnCrlD,EAAKzE,OAAS8uC,EAAS,IACvBjsC,EAAOoB,WAAW,4CAA6CpB,EAAOkG,iBAAkB,CACpFC,IAAK8gD,EACLW,UAAW,eACXrqD,MAAO4C,EAAQmK,QAAQ1I,EAAK4G,MAAMyjC,EAAQA,EAAS,OAG3D,IAAI9uC,EAAS2qD,EAAapjD,OAAO9C,EAAMqqC,GAAQ1uC,MAC/C,IACIJ,EAASA,EAAO8c,WAEpB,MAAOhV,GACHjF,EAAOoB,WAAW,gCAAiCpB,EAAOkG,iBAAkB,CACxEC,IAAK8gD,EACLW,UAAW,eACXrqD,MAAOJ,EAAOyP,aAUtB,OAPIhL,EAAKzE,OAAS8uC,EAAS,GAAK9uC,GAC5B6C,EAAOoB,WAAW,0CAA2CpB,EAAOkG,iBAAkB,CAClFC,IAAK8gD,EACLW,UAAW,eACXrqD,MAAO4C,EAAQmK,QAAQ1I,EAAK4G,MAAMyjC,EAAQA,EAAS,GAAK9uC,MAGzD,CACHoqD,SAAU,GAAK,GAAKpwC,KAAKe,KAAK/a,EAAS,IACvCI,MAAOqE,EAAK4G,MAAMyjC,EAAS,GAAIA,EAAS,GAAK9uC,IAGrD,IAAIkrD,EAAmC,SAAU7nD,GAE7C,SAAS6nD,EAAkBrB,EAAYC,GACnC,OAAOzmD,EAAOtD,KAAKf,KAAM6qD,EAAY,QAAS,QAASC,GAAW,IAAS9qD,KAoB/E,OAtBA4C,EAAUspD,EAAmB7nD,GAI7B6nD,EAAkB7oD,UAAU4E,OAAS,SAAU7G,GAC3C,IACI,OAAO2qD,EAAoB/nD,EAAQmnD,SAAS/pD,IAEhD,MAAO0H,GACHjF,EAAOoB,WAAW,sBAAuBpB,EAAOkG,iBAAkB,CAC9DC,IAAKhK,KAAK8qD,UACVW,UAAW,QACXrqD,MAAO0H,EAAM1H,QAGrB,OAAO,MAEX8qD,EAAkB7oD,UAAUkF,OAAS,SAAU9C,EAAMqqC,GACjD,IAAIpsC,EAASuoD,EAAoBxmD,EAAMqqC,EAAQ9vC,KAAK8qD,WAEpD,OADApnD,EAAOtC,MAAQpB,KAAK6qD,WAAW,QAAS7mD,EAAQmK,QAAQzK,EAAOtC,QACxDsC,GAEJwoD,EAvB2B,CAwBpCtB,GACEuB,EAA6B,SAAU9nD,GAEvC,SAAS8nD,EAAYtB,EAAYC,GAC7B,OAAOzmD,EAAOtD,KAAKf,KAAM6qD,EAAY,SAAU,SAAUC,GAAW,IAAS9qD,KAiBjF,OAnBA4C,EAAUupD,EAAa9nD,GAIvB8nD,EAAY9oD,UAAU4E,OAAS,SAAU7G,GAQrC,MAPuB,iBAAZ,GACPyC,EAAOoB,WAAW,uBAAwBpB,EAAOkG,iBAAkB,CAC/DC,IAAKhK,KAAK8qD,UACVW,UAAW,SACXrqD,MAAOA,IAGR2qD,EAAoBxQ,EAAOkM,YAAYrmD,KAElD+qD,EAAY9oD,UAAUkF,OAAS,SAAU9C,EAAMqqC,GAC3C,IAAIpsC,EAASuoD,EAAoBxmD,EAAMqqC,EAAQ9vC,KAAK8qD,WAEpD,OADApnD,EAAOtC,MAAQpB,KAAK6qD,WAAW,SAAUtP,EAAOiH,aAAa9+C,EAAOtC,QAC7DsC,GAEJyoD,EApBqB,CAqB9BvB,GACF,SAASwB,EAAUxvC,GACf,OAAO,GAAK5B,KAAKe,KAAKa,EAAO,IAEjC,SAASyvC,EAAKC,EAAQ3gD,GAClB,GAAI5I,MAAMoE,QAAQwE,SAGb,GAAIA,GAA8B,iBAAb,EAAuB,CAC7C,IAAI4gD,EAAc,GAClBD,EAAOxlD,QAAQ,SAAUmkD,GACrBsB,EAAY/kD,KAAKmE,EAAOs/C,EAAMH,cAElCn/C,EAAS4gD,OAGT1oD,EAAOoB,WAAW,sBAAuBpB,EAAOkG,iBAAkB,CAC9D0hD,UAAW,QACXrqD,MAAOuK,IAGX2gD,EAAOtrD,SAAW2K,EAAO3K,QACzB6C,EAAOoB,WAAW,8BAA+BpB,EAAOkG,iBAAkB,CACtE0hD,UAAW,QACXrqD,MAAOuK,IAGf,IAAI6gD,EAAQ,GACZF,EAAOxlD,QAAQ,SAAUmkD,EAAO5jD,GAC5BmlD,EAAMhlD,KAAK,CAAEujD,QAASE,EAAMF,QAAS3pD,MAAO6pD,EAAMhjD,OAAO0D,EAAOtE,QAEpE,IAAIolD,EAAa,EAAGC,EAAc,EAClCF,EAAM1lD,QAAQ,SAAU6lD,GAChBA,EAAK5B,SACL0B,GAAc,GACdC,GAAeN,EAAUO,EAAKvrD,MAAMJ,SAGpCyrD,GAAcL,EAAUO,EAAKvrD,MAAMJ,UAG3C,IAAI8uC,EAAS,EAAG8c,EAAgBH,EAC5BhnD,EAAO,IAAI6N,WAAWm5C,EAAaC,GAgBvC,OAfAF,EAAM1lD,QAAQ,SAAU6lD,GAChBA,EAAK5B,SAELtlD,EAAKqO,IAAI63C,EAAa1jD,OAAO2kD,GAAgB9c,GAC7CA,GAAU,GAEVrqC,EAAKqO,IAAI64C,EAAKvrD,MAAOwrD,GACrBA,GAAiBR,EAAUO,EAAKvrD,MAAMJ,UAItCyE,EAAKqO,IAAI64C,EAAKvrD,MAAO0uC,GACrBA,GAAUsc,EAAUO,EAAKvrD,MAAMJ,WAGhCyE,EAEX,SAASonD,EAAOP,EAAQ7mD,EAAMqqC,GAC1B,IAAIgd,EAAahd,EACbsb,EAAW,EACXhqD,EAAQ,GA8BZ,OA7BAkrD,EAAOxlD,QAAQ,SAAUmkD,GACrB,GAAIA,EAAMF,QAAS,CACf,IAAI6B,EAAgBjB,EAAapjD,OAAO9C,EAAMqqC,IAC1CpsC,EAASunD,EAAM1iD,OAAO9C,EAAMqnD,EAAaF,EAAcxrD,MAAM0c,aAE1DstC,SAAWwB,EAAcxB,cAGhC,IAAI1nD,EAASunD,EAAM1iD,OAAO9C,EAAMqqC,GAEhB9Q,MAAhBt7B,EAAOtC,OACPA,EAAMoG,KAAK9D,EAAOtC,OAEtB0uC,GAAUpsC,EAAO0nD,SACjBA,GAAY1nD,EAAO0nD,WAEvBkB,EAAOxlD,QAAQ,SAAUmkD,EAAO5jD,GAC5B,IAAIE,EAAO0jD,EAAMH,UACZvjD,IAGQ,WAATA,IACAA,EAAO,WAEQ,MAAfnG,EAAMmG,KAGVnG,EAAMmG,GAAQnG,EAAMiG,OAEjB,CACHjG,MAAOA,EACPgqD,SAAUA,GAGlB,IAAI2B,EAA4B,SAAU1oD,GAEtC,SAAS0oD,EAAWlC,EAAYI,EAAOjqD,EAAQ8pD,GAC3C,IAAItmD,EAAQxE,KACR0H,EAAQujD,EAAMvjD,KAAO,KAAiB,GAAV1G,EAAcA,EAAS,IAAM,IACzD+pD,GAAuB,IAAZ/pD,GAAiBiqD,EAAMF,QAItC,OAHAvmD,EAAQH,EAAOtD,KAAKf,KAAM6qD,EAAY,QAASnjD,EAAMojD,EAAWC,IAAY/qD,MACtEirD,MAAQA,EACdzmD,EAAMxD,OAASA,EACRwD,EA6DX,OArEA5B,EAAUmqD,EAAY1oD,GAUtB0oD,EAAW1pD,UAAU4E,OAAS,SAAU7G,GAC/B2B,MAAMoE,QAAQ/F,IACfyC,EAAOoB,WAAW,uBAAwBpB,EAAOkG,iBAAkB,CAC/DC,IAAKhK,KAAK8qD,UACVW,UAAW,QACXrqD,MAAOA,IAGf,IAAIuP,EAAQ3Q,KAAKgB,OACb0C,EAAS,IAAI4P,WAAW,IACb,IAAX3C,IACAA,EAAQvP,EAAMJ,OACd0C,EAASioD,EAAa1jD,OAAO0I,IAEjC9M,EAAO4K,mBAAmBkC,EAAOvP,EAAMJ,OAAQ,kBAAoBhB,KAAK8qD,UAAa,IAAM9qD,KAAK8qD,UAAa,KAE7G,IADA,IAAIwB,EAAS,GACJ/rD,EAAI,EAAGA,EAAIa,EAAMJ,OAAQT,IAC9B+rD,EAAO9kD,KAAKxH,KAAKirD,OAErB,OAAOjnD,EAAQsJ,OAAO,CAAC5J,EAAQ2oD,EAAKC,EAAQlrD,MAEhD2rD,EAAW1pD,UAAUkF,OAAS,SAAU9C,EAAMqqC,GAG1C,IAAIsb,EAAW,EACXz6C,EAAQ3Q,KAAKgB,OACjB,IAAe,IAAX2P,EAAc,CACd,IACI,IAAIq8C,EAAgBrB,EAAapjD,OAAO9C,EAAMqqC,GAElD,MAAOhnC,GACHjF,EAAOoB,WAAW,6CAA8CpB,EAAOkG,iBAAkB,CACrFC,IAAKhK,KAAK8qD,UACVW,UAAW,QACXrqD,MAAO0H,EAAM1H,QAGrB,IACIuP,EAAQq8C,EAAc5rD,MAAM0c,WAEhC,MAAOhV,GACHjF,EAAOoB,WAAW,wBAAyBpB,EAAOkG,iBAAkB,CAChEC,IAAKhK,KAAK8qD,UACVW,UAAW,QACXrqD,MAAO4rD,EAAc5rD,MAAMqP,aAGnC26C,GAAY4B,EAAc5B,SAC1Btb,GAAUkd,EAAc5B,SAG5B,IADA,IAAIkB,EAAS,GACJ/rD,EAAI,EAAGA,EAAIoQ,EAAOpQ,IACvB+rD,EAAO9kD,KAAK,IAAIwjD,EAAehrD,KAAKirD,QAExC,IAAIvnD,EAASmpD,EAAOP,EAAQ7mD,EAAMqqC,GAGlC,OAFApsC,EAAO0nD,UAAYA,EACnB1nD,EAAOtC,MAAQpB,KAAK6qD,WAAW7qD,KAAK0H,KAAMhE,EAAOtC,OAC1CsC,GAEJqpD,EAtEoB,CAuE7BnC,GACEqC,EAA4B,SAAU5oD,GAEtC,SAAS4oD,EAAWpC,EAAYyB,EAAQxB,GACpC,IAAItmD,EAAQxE,KACR+qD,GAAU,EACVmC,EAAQ,GACZZ,EAAOxlD,QAAQ,SAAUmkD,GACjBA,EAAMF,UACNA,GAAU,GAEdmC,EAAM1lD,KAAKyjD,EAAMvjD,QAErB,IAAIA,EAAQ,SAAWwlD,EAAM7jD,KAAK,KAAO,IAGzC,OAFA7E,EAAQH,EAAOtD,KAAKf,KAAM6qD,EAAY,QAASnjD,EAAMojD,EAAWC,IAAY/qD,MACtEssD,OAASA,EACR9nD,EAUX,OAxBA5B,EAAUqqD,EAAY5oD,GAgBtB4oD,EAAW5pD,UAAU4E,OAAS,SAAU7G,GACpC,OAAOirD,EAAKrsD,KAAKssD,OAAQlrD,IAE7B6rD,EAAW5pD,UAAUkF,OAAS,SAAU9C,EAAMqqC,GAC1C,IAAIpsC,EAASmpD,EAAO7sD,KAAKssD,OAAQ7mD,EAAMqqC,GAEvC,OADApsC,EAAOtC,MAAQpB,KAAK6qD,WAAW7qD,KAAK0H,KAAMhE,EAAOtC,OAC1CsC,GAEJupD,EAzBoB,CA0B7BrC,GAOF,SAASP,EAAajpD,GAClBA,EAAQA,EAAM+oD,OAId,IAHA,IAAIzmD,EAAS,GACTypD,EAAQ,GACRC,EAAQ,EACHtd,EAAS,EAAGA,EAAS1uC,EAAMJ,OAAQ8uC,IAAU,CAClD,IAAItvC,EAAIY,EAAM0uC,GACd,GAAU,MAANtvC,GAAuB,IAAV4sD,EACb1pD,EAAO8D,KAAK2lD,GACZA,EAAQ,QAIR,GADAA,GAAS3sD,EACC,MAANA,EACA4sD,SAEC,GAAU,MAAN5sD,IAEU,MADf4sD,EAEI,MAAM,IAAIxsD,MAAM,yBAQhC,OAHIusD,GACAzpD,EAAO8D,KAAK2lD,GAETzpD,EAGX,IAAI2pD,EAAkB,CAClB/oD,QAASwnD,EACTwB,KAAM1B,EACN2B,OAAQpB,EACR53C,MAAO23C,GAYX,SAASlC,EAAca,EAAYzB,GAC/B,IA0BIthD,EA1BAmjD,EAAQoC,EAAgBjE,EAAM1hD,MAClC,GAAIujD,EACA,OAAO,IAAIA,EAAMJ,EAAYzB,EAAM7hD,MAGvC,GADIO,EAAQshD,EAAM1hD,KAAKI,MAAM+gD,GASzB,OANa,KADTjsC,EAAO9J,SAAShL,EAAM,IAAM,SACP,IAAP8U,GAAeA,EAAO,GAAO,IAC3C/Y,EAAOoB,WAAW,WAAa6C,EAAM,GAAK,cAAejE,EAAOkG,iBAAkB,CAC9EC,IAAK,QACL5I,MAAOgoD,IAGR,IAAIiC,EAAYR,EAAYjuC,EAAO,EAAiB,QAAb9U,EAAM,GAAeshD,EAAM7hD,MAG7E,GADIO,EAAQshD,EAAM1hD,KAAKI,MAAM6gD,GASzB,OANa,KADT/rC,EAAO9J,SAAShL,EAAM,MACD,GAAP8U,IACd/Y,EAAOoB,WAAW,uBAAwBpB,EAAOkG,iBAAkB,CAC/DC,IAAK,QACL5I,MAAOgoD,IAGR,IAAIyC,EAAgBhB,EAAYjuC,EAAMwsC,EAAM7hD,MAGvD,GADIO,EAAQshD,EAAM1hD,KAAKI,MAAMghD,GAClB,CACP,IAAIlsC,EAAO9J,SAAShL,EAAM,IAAM,MAIhC,OAHAshD,EAAQ7nD,EAAaqF,YAAYwiD,IAC3B1hD,KAAOI,EAAM,GACnBshD,EAAQ7nD,EAAasL,SAASu8C,GACvB,IAAI2D,EAAWlC,EAAYb,EAAca,EAAYzB,GAAQxsC,EAAMwsC,EAAM7hD,MAEpF,MAAmC,UAA/B6hD,EAAM1hD,KAAK2G,UAAU,EAAG,GA7ChC,SAA4Bw8C,EAAYjjD,EAAYkjD,GAC3CljD,IACDA,EAAa,IAEjB,IAAI0kD,EAAS,GAIb,OAHA1kD,EAAWd,QAAQ,SAAU0mD,GACzBlB,EAAO9kD,KAAKwiD,EAAca,EAAY2C,MAEnC,IAAIP,EAAWpC,EAAYyB,EAAQxB,GAsC/B2C,CAAmB5C,EAAYzB,EAAMxhD,WAAYwhD,EAAM7hD,MAE/C,KAAf6hD,EAAM1hD,KACC,IAAIwjD,EAAUL,EAAYzB,EAAM7hD,OAE3C1D,EAAOoB,WAAW,eAAgBpB,EAAOkG,iBAAkB,CACvDC,IAAK,OACL5I,MAAOgoD,EAAM1hD,OAEV,MAEX,IAAIgmD,EAA0B,WAC1B,SAASA,EAAS7C,GACdhnD,EAAO6F,SAAS1J,KAAM0tD,GACjB7C,IACDA,EAAaprD,EAAQspD,mBAEzBxnD,EAAakD,eAAezE,KAAM,aAAc6qD,GAwCpD,OAtCA6C,EAASrqD,UAAU4E,OAAS,SAAUilD,EAAOvhD,GACrCuhD,EAAMlsD,SAAW2K,EAAO3K,QACxB6C,EAAOoB,WAAW,+BAAgCpB,EAAOkG,iBAAkB,CACvE4G,MAAO,CAAEu8C,MAAOA,EAAMlsD,OAAQ2K,OAAQA,EAAO3K,QAC7CI,MAAO,CAAE8rD,MAAOA,EAAOvhD,OAAQA,KAGvC,IAAI2gD,EAAS,GAcb,OAbAY,EAAMpmD,QAAQ,SAAUY,GAIpB,IAAIimD,EAAa,KAEbA,EADkB,iBAAX,EACMxE,EAAWzhD,GAGXA,EAEjB4kD,EAAO9kD,KAAKwiD,EAAchqD,KAAK6qD,WAAY8C,KAC5C3tD,MACIgE,EAAQmK,QAAQ,IAAI8+C,EAAWjtD,KAAK6qD,WAAYyB,EAAQ,KAAKrkD,OAAO0D,KAE/E+hD,EAASrqD,UAAUkF,OAAS,SAAU2kD,EAAOznD,GACzC,IAAI6mD,EAAS,GAYb,OAXAY,EAAMpmD,QAAQ,SAAUY,GAEpB,IAAIimD,EAAa,KAEbA,EADkB,iBAAX,EACMxE,EAAWzhD,GAGXnG,EAAasL,SAASnF,GAEvC4kD,EAAO9kD,KAAKwiD,EAAchqD,KAAK6qD,WAAY8C,KAC5C3tD,MACI,IAAIitD,EAAWjtD,KAAK6qD,WAAYyB,EAAQ,KAAK/jD,OAAOvE,EAAQmnD,SAAS1lD,GAAO,GAAGrE,OAEnFssD,EA9CkB,GAgD7BjuD,EAAQiuD,SAAWA,EACnBjuD,EAAQ6I,gBAAkB,IAAIolD,GAE5B,CAACE,eAAe,EAAE9K,YAAY,EAAE+K,YAAY,GAAGC,cAAc,GAAGC,UAAU,GAAGC,eAAe,GAAGC,SAAS,KAAKC,GAAG,CAAC,SAASztD,EAAQf,EAAOD,GAC3I,aACA,IAAI0uD,EAAmBnuD,MAAQA,KAAKmuD,iBAAoB,SAAU3qD,GAC9D,OAAQA,GAAOA,EAAIC,WAAcD,EAAM,CAAE4qD,QAAW5qD,IAExDtC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IAEtD,IAAIitD,EAAUF,EAAgB1tD,EAAQ,UAClCuD,EAAUvD,EAAQ,WAClB6tD,EAAc7tD,EAAQ,eACtB46C,EAAQ56C,EAAQ,SAChBoD,EAASpD,EAAQ,aAErB,SAAS8tD,EAAmBjqD,GACC,iBAAd,GAA2BA,EAAQwD,MAAM,wBAChDjE,EAAOoB,WAAW,kBAAmBpB,EAAOkG,iBAAkB,CAAEC,IAAK,UAAW5I,MAAOkD,IAK3F,IAFA,IAAIkqD,GADJlqD,EAAUA,EAAQiI,eACE8B,UAAU,GAAGqiB,MAAM,IACnC+9B,EAAS,IAAIn7C,WAAW,IACnBo7C,EAAM,EAAGA,EAAM,GAAIA,IACxBD,EAAOC,GAAOF,EAAME,GAAKt6C,WAAW,GAExCq6C,EAASzqD,EAAQmnD,SAASmD,EAAYK,UAAUF,IAChD,IAAK,IAAIluD,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACI,GAAxBkuD,EAAOluD,GAAK,IAAM,IACnBiuD,EAAMjuD,GAAKiuD,EAAMjuD,GAAGquD,eAEO,IAAT,GAAjBH,EAAOluD,GAAK,MACbiuD,EAAMjuD,EAAI,GAAKiuD,EAAMjuD,EAAI,GAAGquD,eAGpC,MAAO,KAAOJ,EAAMnlD,KAAK,IAa7B,IADA,IAAIwlD,EAAa,GACRtuD,EAAI,EAAGA,EAAI,GAAIA,IACpBsuD,EAAWr6C,OAAOjU,IAAMiU,OAAOjU,GAEnC,IAASA,EAAI,EAAGA,EAAI,GAAIA,IACpBsuD,EAAWr6C,OAAOC,aAAa,GAAKlU,IAAMiU,OAAO,GAAKjU,GAG1D,IAhBe8lB,EAgBXyoC,EAAa9zC,KAAKge,OAhBP3S,EADQ,iBAEfrL,KAAK+zC,MACE/zC,KAAK+zC,MAAM1oC,GAEfrL,KAAKtQ,IAAI2b,GAAKrL,KAAKg0C,OAa9B,SAASC,EAAa3qD,GAElBA,GADAA,EAAUA,EAAQsqD,eACAvgD,UAAU,GAAK/J,EAAQ+J,UAAU,EAAG,GAAK,KAC3D,IAAI6gD,EAAW,GAKf,IAJA5qD,EAAQosB,MAAM,IAAI5pB,QAAQ,SAAUtG,GAChC0uD,GAAYL,EAAWruD,KAGpB0uD,EAASluD,QAAU8tD,GAAY,CAClC,IAAI93C,EAAQk4C,EAAS7gD,UAAU,EAAGygD,GAClCI,EAAWp8C,SAASkE,EAAO,IAAM,GAAKk4C,EAAS7gD,UAAU2I,EAAMhW,QAGnE,IADA,IAAImuD,EAAW36C,OAAO,GAAM1B,SAASo8C,EAAU,IAAM,IAC9CC,EAASnuD,OAAS,GACrBmuD,EAAW,IAAMA,EAErB,OAAOA,EAGX,SAASzqD,EAAWJ,GAChB,IAAIZ,EAAS,KAIb,GAHyB,iBAAd,GACPG,EAAOoB,WAAW,kBAAmBpB,EAAOkG,iBAAkB,CAAEC,IAAK,UAAW5I,MAAOkD,IAEvFA,EAAQwD,MAAM,0BAEkB,OAA5BxD,EAAQ+J,UAAU,EAAG,KACrB/J,EAAU,KAAOA,GAErBZ,EAAS6qD,EAAmBjqD,GAExBA,EAAQwD,MAAM,kCAAoCpE,IAAWY,GAC7DT,EAAOoB,WAAW,uBAAwBpB,EAAOkG,iBAAkB,CAAEC,IAAK,UAAW5I,MAAOkD,SAI/F,GAAIA,EAAQwD,MAAM,kCAAmC,CAMtD,IAJIxD,EAAQ+J,UAAU,EAAG,KAAO4gD,EAAa3qD,IACzCT,EAAOoB,WAAW,oBAAqBpB,EAAOkG,iBAAkB,CAAEC,IAAK,UAAW5I,MAAOkD,IAE7FZ,EAAS,IAAK2qD,EAAQD,QAAQp0C,GAAG1V,EAAQ+J,UAAU,GAAI,IAAKoC,SAAS,IAC9D/M,EAAO1C,OAAS,IACnB0C,EAAS,IAAMA,EAEnBA,EAAS6qD,EAAmB,KAAO7qD,QAGnCG,EAAOoB,WAAW,kBAAmBpB,EAAOkG,iBAAkB,CAAEC,IAAK,UAAW5I,MAAOkD,IAE3F,OAAOZ,EAEXjE,EAAQiF,WAAaA,EAQrBjF,EAAQ2vD,eAPR,SAAwB9qD,GAEpB,IADA,IAAI+qD,EAAS,IAAKhB,EAAQD,QAAQp0C,GAAGtV,EAAWJ,GAAS+J,UAAU,GAAI,IAAKoC,SAAS,IAAIm+C,cAClFS,EAAOruD,OAAS,IACnBquD,EAAS,IAAMA,EAEnB,MAAO,KAAOJ,EAAa,OAASI,GAAUA,GAclD5vD,EAAQkP,mBAVR,SAA4BtJ,GACxB,IAAKA,EAAYK,KACb,MAAM,IAAI9E,MAAM,wBAEpB,IAAIiF,EAAQR,EAAYQ,MACxB,OAAOnB,EAAW,KAAO4pD,EAAYK,UAAUtT,EAAMpzC,OAAO,CACxDvD,EAAWW,EAAYK,MACvB1B,EAAQ64C,WAAW74C,EAAQmK,QAAQtI,OACnCwI,UAAU,OAIhB,CAACy0C,YAAY,EAAEiL,UAAU,GAAGuB,cAAc,GAAGC,QAAQ,GAAG14B,QAAQ,IAAI24B,GAAG,CAAC,SAAS/uD,EAAQf,EAAOD,GAClG,aACAyB,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAI4C,EAAUvD,EAAQ,kBACtBf,EAAOD,QAAU,CACb8I,OAAQ,SAAUknD,GACdA,EAAWC,KAAKD,GAEhB,IADA,IAAIhqD,EAAO,GACFlF,EAAI,EAAGA,EAAIkvD,EAASzuD,OAAQT,IACjCkF,EAAK+B,KAAKioD,EAASr7C,WAAW7T,IAElC,OAAOyD,EAAQmnD,SAAS1lD,IAE5BwC,OAAQ,SAAUxC,GACdA,EAAOzB,EAAQmnD,SAAS1lD,GAExB,IADA,IAAIgqD,EAAW,GACNlvD,EAAI,EAAGA,EAAIkF,EAAKzE,OAAQT,IAC7BkvD,GAAYj7C,OAAOC,aAAahP,EAAKlF,IAEzC,OAAOovD,KAAKF,MAIlB,CAACxM,iBAAiB,KAAK2M,GAAG,CAAC,SAASnvD,EAAQf,EAAOD,GACrD,aACA,IAAI0uD,EAAmBnuD,MAAQA,KAAKmuD,iBAAoB,SAAU3qD,GAC9D,OAAQA,GAAOA,EAAIC,WAAcD,EAAM,CAAE4qD,QAAW5qD,IAEpDD,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IAQtD,IAAIitD,EAAUF,EAAgB1tD,EAAQ,UAClCuD,EAAUvD,EAAQ,WAClBc,EAAed,EAAQ,gBACvBoD,EAASN,EAAa9C,EAAQ,cAC9BovD,EAAO,IAAIxB,EAAQD,QAAQp0C,IAAI,GACnC,SAAS4qB,EAAMkrB,GACX,IAAI1uD,EAAQ0uD,EAAGr/C,SAAS,IACxB,MAAiB,MAAbrP,EAAM,GACDA,EAAMJ,OAAS,GAAO,EAChB,OAASI,EAAMiN,UAAU,GAE7B,MAAQjN,EAAMiN,UAAU,GAE9BjN,EAAMJ,OAAS,GAAO,EAChB,MAAQI,EAEZ,KAAOA,EAElB,SAAS2uD,EAAK3uD,GACV,OAAO4uD,EAAO7tD,EAAaf,IAE/B,SAAS6uD,EAAYH,GACjB,OAAO,IAAII,EAAUtrB,EAAMkrB,IAE/B,SAASE,EAAO5uD,GACZ,IAAI0X,EAAM1X,EAAM+uD,KAChB,MAAe,MAAXr3C,EAAI,GACG,IAAKu1C,EAAQD,QAAQp0C,GAAGlB,EAAIzK,UAAU,GAAI,IAAK8M,IAAI00C,GAEvD,IAAIxB,EAAQD,QAAQp0C,GAAGlB,EAAIzK,UAAU,GAAI,IAEpD,IAAI6hD,EAA2B,WAC3B,SAASA,EAAU9uD,GAGf,GAFAyC,EAAO6F,SAAS1J,KAAMkwD,GACtB3uD,EAAaE,QAAQzB,KAAM,aACJ,iBAAZ,EACHgE,EAAQsK,YAAYlN,IACP,MAATA,IACAA,EAAQ,OAEZG,EAAakD,eAAezE,KAAM,OAAQoB,IAExB,MAAbA,EAAM,IAAc4C,EAAQsK,YAAYlN,EAAMiN,UAAU,IAC7D9M,EAAakD,eAAezE,KAAM,OAAQoB,GAErCA,EAAM0G,MAAM,eACJ,IAAT1G,IACAA,EAAQ,KAEZG,EAAakD,eAAezE,KAAM,OAAQ4kC,EAAM,IAAIypB,EAAQD,QAAQp0C,GAAG5Y,MAGvEyC,EAAOoB,WAAW,iCAAkCpB,EAAOkG,iBAAkB,CAAEC,IAAK,QAAS5I,MAAOA,SAGvG,GAAuB,iBAAZ,EAAsB,CAC9B0R,SAAS0B,OAAOpT,MAAYA,GAC5ByC,EAAOoB,WAAW,YAAapB,EAAOoM,cAAe,CAAElL,UAAW,WAAYqrD,MAAO,YAAahvD,MAAOA,EAAOivD,YAAav9C,SAAS0B,OAAOpT,MAEjJ,IACIG,EAAakD,eAAezE,KAAM,OAAQ4kC,EAAM,IAAIypB,EAAQD,QAAQp0C,GAAG5Y,KAE3E,MAAO0H,GACHjF,EAAOoB,WAAW,WAAYpB,EAAOoM,cAAe,CAAElL,UAAW,WAAYqrD,MAAO,WAAYE,QAASxnD,EAAMhE,gBAG9G1D,aAAiB8uD,EACtB3uD,EAAakD,eAAezE,KAAM,OAAQoB,EAAM+uD,MAE3C/uD,EAAMmvD,YACXhvD,EAAakD,eAAezE,KAAM,OAAQ4kC,EAAMmrB,EAAK3uD,EAAMmvD,iBAEtDnvD,EAAM+uD,MAAQnsD,EAAQsK,YAAYlN,EAAM+uD,MAC7C5uD,EAAakD,eAAezE,KAAM,OAAQoB,EAAM+uD,MAE3CnsD,EAAQkK,WAAW9M,GACxBG,EAAakD,eAAezE,KAAM,OAAQ4kC,EAAM,IAAIypB,EAAQD,QAAQp0C,GAAGhW,EAAQmK,QAAQ/M,GAAOiN,UAAU,GAAI,MAG5GxK,EAAOoB,WAAW,0BAA2BpB,EAAOkG,iBAAkB,CAAEC,IAAK,QAAS5I,MAAOA,IAsErG,OAnEA8uD,EAAU7sD,UAAUic,SAAW,SAAUle,GACrC,OAAO6uD,EAAYD,EAAOhwD,MAAMsf,SAASle,KAE7C8uD,EAAU7sD,UAAU4b,OAAS,SAAU7d,GACnC,OAAO6uD,EAAYD,EAAOhwD,MAAMif,OAAO7d,KAE3C8uD,EAAU7sD,UAAU4F,IAAM,SAAUunD,GAChC,OAAOP,EAAYD,EAAOhwD,MAAMiJ,IAAI8mD,EAAKS,MAE7CN,EAAU7sD,UAAU0d,IAAM,SAAUyvC,GAChC,OAAOP,EAAYD,EAAOhwD,MAAM+gB,IAAIgvC,EAAKS,MAE7CN,EAAU7sD,UAAU+nB,IAAM,SAAUolC,GAKhC,OAJQruD,EAAaquD,GACf7yC,UACF9Z,EAAOoB,WAAW,mBAAoBpB,EAAOoM,cAAe,CAAElL,UAAW,SAAUqrD,MAAO,qBAEvFH,EAAYD,EAAOhwD,MAAMorB,IAAI2kC,EAAKS,MAE7CN,EAAU7sD,UAAU8X,IAAM,SAAUq1C,GAChC,OAAOP,EAAYD,EAAOhwD,MAAMmb,IAAI40C,EAAKS,MAE7CN,EAAU7sD,UAAUG,IAAM,SAAUgtD,GAChC,OAAOP,EAAYD,EAAOhwD,MAAMwD,IAAIusD,EAAKS,MAE7CN,EAAU7sD,UAAUmZ,IAAM,SAAUg0C,GAChC,OAAOP,EAAYD,EAAOhwD,MAAMwc,IAAIuzC,EAAKS,MAE7CN,EAAU7sD,UAAUmnB,MAAQ,SAAUppB,GAClC,OAAO6uD,EAAYD,EAAOhwD,MAAMwqB,MAAMppB,KAE1C8uD,EAAU7sD,UAAUuqB,GAAK,SAAU4iC,GAC/B,OAAOR,EAAOhwD,MAAM4tB,GAAGmiC,EAAKS,KAEhCN,EAAU7sD,UAAUmqB,GAAK,SAAUgjC,GAC/B,OAAOR,EAAOhwD,MAAMwtB,GAAGuiC,EAAKS,KAEhCN,EAAU7sD,UAAUqqB,IAAM,SAAU8iC,GAChC,OAAOR,EAAOhwD,MAAM0tB,IAAIqiC,EAAKS,KAEjCN,EAAU7sD,UAAU+pB,GAAK,SAAUojC,GAC/B,OAAOR,EAAOhwD,MAAMotB,GAAG2iC,EAAKS,KAEhCN,EAAU7sD,UAAUiqB,IAAM,SAAUkjC,GAChC,OAAOR,EAAOhwD,MAAMstB,IAAIyiC,EAAKS,KAEjCN,EAAU7sD,UAAUsa,OAAS,WACzB,OAAOqyC,EAAOhwD,MAAM2d,UAExBuyC,EAAU7sD,UAAUya,SAAW,WAC3B,IACI,OAAOkyC,EAAOhwD,MAAM8d,WAExB,MAAOhV,GACHjF,EAAOoB,WAAW,WAAYpB,EAAOoM,cAAe,CAAElL,UAAW,WAAYqrD,MAAO,WAAYE,QAASxnD,EAAMhE,UAEnH,OAAO,MAEXorD,EAAU7sD,UAAUoN,SAAW,WAC3B,OAAOu/C,EAAOhwD,MAAMyQ,SAAS,KAEjCy/C,EAAU7sD,UAAUktD,YAAc,WAC9B,OAAOvwD,KAAKmwD,MAEhBD,EAAUO,YAAc,SAAUrvD,GAC9B,OAAOG,EAAaI,OAAOP,EAAO,cAE/B8uD,EAtHmB,GAyH9B,SAAS/tD,EAAaf,GAClB,OAAI8uD,EAAUO,YAAYrvD,GACfA,EAEJ,IAAI8uD,EAAU9uD,GALzB3B,EAAQywD,UAAYA,EAOpBzwD,EAAQ0C,aAAeA,GAErB,CAAC2gD,YAAY,EAAEiL,UAAU,GAAGC,eAAe,GAAGn3B,QAAQ,IAAI65B,GAAG,CAAC,SAASjwD,EAAQf,EAAOD,GACxF,aAKA,IAAI8D,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAIyC,EAASN,EAAa9C,EAAQ,cAElC,SAASkwD,EAAUvvD,GACf,QAAUA,EAAiB,YAG/B,SAASwvD,EAAShhB,GACd,OAAIA,EAAMvjC,QAGVujC,EAAMvjC,MAAQ,WACV,IAAI5D,EAAO1F,MAAMM,UAAUgJ,MAAMtL,KAAKyF,WACtC,OAAO,IAAI8M,WAAWvQ,MAAMM,UAAUgJ,MAAMgB,MAAMuiC,EAAOnnC,MAJlDmnC,EAQf,SAAS1hC,EAAW9M,GAChB,IAAKA,GAAS0R,SAAS0B,OAAOpT,EAAMJ,UAAYI,EAAMJ,QAA6B,iBAAZ,EACnE,OAAO,EAEX,IAAK,IAAIT,EAAI,EAAGA,EAAIa,EAAMJ,OAAQT,IAAK,CACnC,IAAI+G,EAAIlG,EAAMb,GACd,GAAI+G,EAAI,GAAU,KAALA,GAAYwL,SAAS0B,OAAOlN,KAAOA,EAC5C,OAAO,EAGf,OAAO,EAGX,SAAS6jD,EAAS/pD,GAOd,GANa,MAATA,GACAyC,EAAOoB,WAAW,qCAAsCpB,EAAOkG,iBAAkB,CAAEC,IAAK,QAAS5I,MAAOA,IAExGuvD,EAAUvvD,KACVA,EAAQA,EAAMmvD,eAEK,iBAAZ,EAAsB,CAC7B,IAAIzoD,EAAQ1G,EAAM0G,MAAM,uBACnBA,GACDjE,EAAOoB,WAAW,6BAA8BpB,EAAOkG,iBAAkB,CAAEC,IAAK,QAAS5I,MAAOA,IAEnF,OAAb0G,EAAM,IACNjE,EAAOoB,WAAW,iCAAkCpB,EAAOkG,iBAAkB,CAAEC,IAAK,QAAS5I,MAAOA,KAExGA,EAAQA,EAAMiN,UAAU,IACdrN,OAAS,IACfI,EAAQ,IAAMA,GAGlB,IADA,IAAIsC,EAAS,GACJnD,EAAI,EAAGA,EAAIa,EAAMJ,OAAQT,GAAK,EACnCmD,EAAO8D,KAAKsL,SAAS1R,EAAMiT,OAAO9T,EAAG,GAAI,KAE7C,OAAOqwD,EAAS,IAAIt9C,WAAW5P,IAEnC,OAAIwK,EAAW9M,GACJwvD,EAAS,IAAIt9C,WAAWlS,KAEnCyC,EAAOoB,WAAW,yBAA0B,KAAM,CAAE+E,IAAK,QAAS5I,MAAOA,EAAOsG,YAAa,IACtF,MAGX,SAAS4F,EAAOujD,GAGZ,IAFA,IAAIC,EAAS,GACT9vD,EAAS,EACJT,EAAI,EAAGA,EAAIswD,EAAQ7vD,OAAQT,IAAK,CACrC,IAAI6N,EAAS+8C,EAAS0F,EAAQtwD,IAC9BuwD,EAAOtpD,KAAK4G,GACZpN,GAAUoN,EAAOpN,OAErB,IAAI0C,EAAS,IAAI4P,WAAWtS,GACxB8uC,EAAS,EACb,IAASvvC,EAAI,EAAGA,EAAIuwD,EAAO9vD,OAAQT,IAC/BmD,EAAOoQ,IAAIg9C,EAAOvwD,GAAIuvC,GACtBA,GAAUghB,EAAOvwD,GAAGS,OAExB,OAAO4vD,EAASltD,GA8BpB,SAAS4K,EAAYlN,EAAOJ,GACxB,QAAuB,iBAAZ,IAAyBI,EAAM0G,MAAM,wBAG5C9G,GAAUI,EAAMJ,SAAW,EAAI,EAAIA,GAxG3CvB,EAAQkxD,UAAYA,EAuBpBlxD,EAAQyO,WAAaA,EAgCrBzO,EAAQ0rD,SAAWA,EAiBnB1rD,EAAQ6N,OAASA,EAiBjB7N,EAAQo9C,WAhBR,SAAoBz7C,GAChB,IAAIsC,EAASynD,EAAS/pD,GACtB,GAAsB,IAAlBsC,EAAO1C,OACP,OAAO0C,EAIX,IADA,IAAImX,EAAQ,EACa,IAAlBnX,EAAOmX,IACVA,IAMJ,OAHIA,IACAnX,EAASA,EAAO2I,MAAMwO,IAEnBnX,GAYXjE,EAAQ+rD,SATR,SAAkBpqD,EAAOJ,GAErB,GAAIA,GADJI,EAAQ+pD,EAAS/pD,IACEJ,OACf,MAAM,IAAIJ,MAAM,cAEpB,IAAI8C,EAAS,IAAI4P,WAAWtS,GAE5B,OADA0C,EAAOoQ,IAAI1S,EAAOJ,EAASI,EAAMJ,QAC1B4vD,EAASltD,IAYpBjE,EAAQ6O,YAAcA,EACtB,IAAIyiD,EAAgB,mBACpB,SAAS5iD,EAAQ/M,GACb,GAAIuvD,EAAUvvD,GACV,OAAOA,EAAMmvD,cAEjB,GAAuB,iBAAZ,EAAsB,CACzBnvD,EAAQ,GACRyC,EAAOoB,WAAW,gCAAiCpB,EAAOkG,iBAAkB,CAAEC,IAAK,QAAS5I,MAAOA,IAGvG,IADA,IAAI0X,EAAM,GACH1X,GACH0X,EAAMi4C,EAAsB,GAAR3vD,GAAgB0X,EACpC1X,EAAQ4Z,KAAKge,MAAM53B,EAAQ,IAE/B,OAAI0X,EAAI9X,QACA8X,EAAI9X,OAAS,IACb8X,EAAM,IAAMA,GAET,KAAOA,GAEX,OAEX,GAAuB,iBAAZ,EAAsB,CAC7B,IAAIhR,EAAQ1G,EAAM0G,MAAM,uBAUxB,OATKA,GACDjE,EAAOoB,WAAW,6BAA8BpB,EAAOkG,iBAAkB,CAAEC,IAAK,QAAS5I,MAAOA,IAEnF,OAAb0G,EAAM,IACNjE,EAAOoB,WAAW,iCAAkCpB,EAAOkG,iBAAkB,CAAEC,IAAK,QAAS5I,MAAOA,IAEpGA,EAAMJ,OAAS,IACfI,EAAQ,MAAQA,EAAMiN,UAAU,IAE7BjN,EAEX,GAAI8M,EAAW9M,GAAQ,CAEnB,IADA,IAAIsC,EAAS,GACJnD,EAAI,EAAGA,EAAIa,EAAMJ,OAAQT,IAAK,CACnC,IAAI+G,EAAIlG,EAAMb,GACdmD,EAAO8D,KAAKupD,GAAmB,IAAJzpD,IAAa,GAAKypD,EAAkB,GAAJzpD,IAE/D,MAAO,KAAO5D,EAAO2F,KAAK,IAG9B,OADAxF,EAAOoB,WAAW,wBAAyB,KAAM,CAAE+E,IAAK,QAAS5I,MAAOA,IACjE,QAkCX,SAAS4vD,EAAW5vD,EAAOJ,GAIvB,IAHKsN,EAAYlN,IACbyC,EAAOoB,WAAW,qBAAsBpB,EAAOkG,iBAAkB,CAAEC,IAAK,QAAS5I,MAAOA,IAErFA,EAAMJ,OAAS,EAAIA,EAAS,GAC/BI,EAAQ,MAAQA,EAAMiN,UAAU,GAEpC,OAAOjN,EAMX,SAAS6vD,EAAevoD,GACpB,IAJiBtH,EAIbkG,EAAI,EACJpH,EAAI,KAAMonB,EAAI,KAClB,IANiBlmB,EAMDsH,IALY,MAAXtH,EAAMlB,GAAwB,MAAXkB,EAAMkmB,EAKd,CACL,MAAf5e,EAAUpB,GAAwC,MAA3BoB,EAAUu4B,eACjCp9B,EAAOoB,WAAW,sDAAuDpB,EAAOkG,iBAAkB,CAAEY,SAAU,YAAavJ,MAAOsH,IAEtIxI,EAAI8wD,EAAWtoD,EAAUxI,EAAG,IAC5BonB,EAAI0pC,EAAWtoD,EAAU4e,EAAG,IAET,iBADnBhgB,EAAIoB,EAAUpB,KAEVA,EAAIwL,SAASxL,EAAG,KAEpB,IAAI25B,EAAgBv4B,EAAUu4B,cACT,MAAjBA,GAAwC,MAAfv4B,EAAUpB,IACnC25B,EAAgB,EAAK35B,EAAI,GAE7BA,EAAI,GAAK25B,MAER,CACD,IAAI1sB,EAAQ42C,EAASziD,GACrB,GAAqB,KAAjB6L,EAAMvT,OACN,MAAM,IAAIJ,MAAM,qBAEpBV,EAAIiO,EAAQoG,EAAMlI,MAAM,EAAG,KAC3Bib,EAAInZ,EAAQoG,EAAMlI,MAAM,GAAI,KAElB,MADV/E,EAAIiN,EAAM,MACY,KAANjN,IACZA,EAAI,GAAMA,EAAI,GAGtB,MAAO,CACHpH,EAAGA,EACHonB,EAAGA,EACH2Z,cAAgB35B,EAAI,GACpBA,EAAGA,GAhFX7H,EAAQ0O,QAAUA,EAOlB1O,EAAQ0I,cANR,SAAuB1C,GACnB,OAAK6I,EAAY7I,IAAUA,EAAKzE,OAAS,GAAO,GAGxCyE,EAAKzE,OAAS,GAAK,EAFhB,MAkBfvB,EAAQ2I,aAbR,SAAsB3C,EAAMqqC,EAAQohB,GAQhC,OAPK5iD,EAAY7I,IACb5B,EAAOoB,WAAW,mBAAoBpB,EAAOkG,iBAAkB,CAAEC,IAAK,QAAS5I,MAAOqE,IAErFA,EAAKzE,OAAS,GAAO,GACtB6C,EAAOoB,WAAW,+BAAgCpB,EAAOkG,iBAAkB,CAAEC,IAAK,QAAS5I,MAAOqE,IAEtGqqC,EAAS,EAAI,EAAIA,EACA,MAAbohB,EACO,KAAOzrD,EAAK4I,UAAUyhC,EAAQ,EAAI,EAAIohB,GAE1C,KAAOzrD,EAAK4I,UAAUyhC,IAYjCrwC,EAAQ68C,cATR,SAAuBl7C,GAInB,IAHKkN,EAAYlN,IACbyC,EAAOoB,WAAW,qBAAsBpB,EAAOkG,iBAAkB,CAAEC,IAAK,QAAS5I,MAAOA,IAEtE,EAAfA,EAAMJ,QAAwC,QAA1BI,EAAMiN,UAAU,EAAG,IAC1CjN,EAAQ,KAAOA,EAAMiN,UAAU,GAEnC,OAAOjN,GAYX3B,EAAQuxD,WAAaA,EA0CrBvxD,EAAQwxD,eAAiBA,EASzBxxD,EAAQ0xD,cARR,SAAuBzoD,GAEnB,OAAOyF,EAAQb,EAAO,EADtB5E,EAAYuoD,EAAevoD,IAEbxI,EACVwI,EAAU4e,EACT5e,EAAUu4B,cAAgB,OAAS,YAK1C,CAAC6hB,YAAY,IAAIsO,GAAG,CAAC,SAAS3wD,EAAQf,EAAOD,GAC/C,aACAyB,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAI4C,EAAUvD,EAAQ,WAClB86C,EAAS96C,EAAQ,UACjB6tD,EAAc7tD,EAAQ,eAEtB4wD,EAAQ,IAAI/9C,WAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IACrHg+C,EAAY,IAAI1I,OAAO,uBACvB2I,EAAoB,IAAI3I,OAAO,iBAmBnCnpD,EAAQ0iD,SAlBR,SAAkB56C,GAMd,KALAA,EAAOA,EAAKgF,eAKFzE,MAAMypD,GACZ,MAAM,IAAI3wD,MAAM,iDAGpB,IADA,IAAI8C,EAAS2tD,EACN9pD,EAAKvG,QAAQ,CAChB,IAAIwwD,EAAYjqD,EAAKO,MAAMwpD,GACvBG,EAAQlW,EAAOkM,YAAY+J,EAAU,IACzC9tD,EAAS4qD,EAAYK,UAAU3qD,EAAQsJ,OAAO,CAAC5J,EAAQ4qD,EAAYK,UAAU8C,MAC7ElqD,EAAOiqD,EAAU,IAAM,GAE3B,OAAOxtD,EAAQmK,QAAQzK,IAM3BjE,EAAQooD,GAHR,SAAY3zC,GACR,OAAOo6C,EAAYK,UAAUpT,EAAOkM,YAAYvzC,KAWpDzU,EAAQiyD,YARR,SAAqB5sD,GACjB,IAAIiiD,EAAU/iD,EAAQsJ,OAAO,CACzBiuC,EAAOkM,YAAY,+BACnBlM,EAAOkM,YAAYjzC,OAAO1P,EAAQ9D,SACX,iBAAd,EAA0Bu6C,EAAOkM,YAAY3iD,GAAWA,IAErE,OAAOwpD,EAAYK,UAAU5H,KAI/B,CAACgH,UAAU,GAAGuB,cAAc,GAAGrB,SAAS,KAAK0D,GAAG,CAAC,SAASlxD,EAAQf,EAAOD,GAC3E,aACA,IAAI8D,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IAGtD,IAAIyC,EAASN,EAAa9C,EAAQ,cAG9BmxD,EAAYnxD,EAAQ,wBAIpBuD,EAAUvD,EAAQ,WAClBqB,EAAcrB,EAAQ,eACtB86C,EAAS96C,EAAQ,UACjBoxD,EAAWpxD,EAAQ,YACnBqxD,EAASrxD,EAAQ,UACjBc,EAAed,EAAQ,gBACvBsxD,EAActxD,EAAQ,eACtBuxD,EAASvxD,EAAQ,UACjBkmB,EAAI7kB,EAAYK,aAAa,sEAE7B8vD,EAAe1W,EAAOkM,YAAY,gBAClCyK,EAAc,WAElB,SAASC,EAAa1oC,GAClB,OAAS,GAAKA,GAAQ,GAAO,EAAIA,EAMrC,IAAIw9B,EAAoB,GACxBxnD,EAAQ2yD,YAAc,mBACtB,IAAIC,EAAwB,WAQxB,SAASA,EAAOnL,EAAkBoL,EAAYC,EAAWlrD,EAAO+lD,EAAOoF,EAAUnK,GAE7E,GADAxkD,EAAO6F,SAAS1J,KAAMqyD,GAClBnL,IAAqBD,EACrB,MAAM,IAAIrmD,MAAM,gDAEpBW,EAAakD,eAAezE,KAAM,UAAW,IAAI+xD,EAAY1yB,QAAQizB,IACrE/wD,EAAakD,eAAezE,KAAM,aAAcA,KAAKy/B,QAAQ6yB,YAC7D/wD,EAAakD,eAAezE,KAAM,YAAaA,KAAKy/B,QAAQgzB,qBAC5DlxD,EAAakD,eAAezE,KAAM,YAAagE,EAAQmK,QAAQokD,IAC/DhxD,EAAakD,eAAezE,KAAM,QAASqH,GAC3C9F,EAAakD,eAAezE,KAAM,QAASotD,GAC3C7rD,EAAakD,eAAezE,KAAM,WAAYwyD,GAC9CjxD,EAAakD,eAAezE,KAAM,OAAQqoD,GAC1C9mD,EAAaE,QAAQzB,KAAM,UAyE/B,OAvEAqyD,EAAOhvD,UAAUqvD,QAAU,SAAUrrD,GAEjC,IAAKrH,KAAKsyD,WAAY,CAClB,GAAaJ,GAAT7qD,EACA,MAAM,IAAIzG,MAAM,wCAEpB,MAAM,IAAIA,MAAM,mBAEpB,IAAI6E,EAAO,IAAI6N,WAAW,IAEtBk/C,EAAWxyD,KAAKwyD,SAChBnK,EAAOroD,KAAKqoD,KACZA,IACAA,GAAQ,IAAMhhD,GAEdA,EAAQ6qD,GAERzsD,EAAKqO,IAAI9P,EAAQmnD,SAASnrD,KAAKsyD,YAAa,GAExCjK,IACAA,GAAQ,MAKZ5iD,EAAKqO,IAAI9T,KAAKy/B,QAAQkzB,gBAG1B,IAAK,IAAIpyD,EAAI,GAAS,GAALA,EAAQA,GAAK,EAC1BkF,EAAK,IAAMlF,GAAK,IAAQ8G,GAAU,GAAK9G,EAAM,IAEjD,IAAIi0B,EAAIs9B,EAAOc,YAAYd,EAAOe,oBAAoB9zB,OAAQ/+B,KAAKuyD,UAAW9sD,GAC1EqtD,EAAKhxD,EAAYK,aAAaqyB,EAAEnoB,MAAM,EAAG,KACzC0mD,EAAKv+B,EAAEnoB,MAAM,IACb2mD,EAAKF,EAAG7pD,IAAIjJ,KAAKy/B,QAAQ6yB,YAAY9uD,IAAImjB,GAC7C,OAAO,IAAI0rC,EAAOpL,EAAmBjjD,EAAQmnD,SAAS6H,GAAKD,EAAI1rD,EAAOrH,KAAKotD,MAAQ,EAAGoF,EAAUnK,IAEpGgK,EAAOhvD,UAAU4vD,WAAa,SAAU5K,GACpC,IAAIzgD,EAAaygD,EAAK33B,MAAM,KAC5B,GAA0B,IAAtB9oB,EAAW5G,QAAmC,MAAlB4G,EAAW,IAA6B,IAAf5H,KAAKotD,MAC1D,MAAM,IAAIxsD,MAAM,gBAEE,MAAlBgH,EAAW,IACXA,EAAWkjB,QAGf,IADA,IAAIpnB,EAAS1D,KACJO,EAAI,EAAGA,EAAIqH,EAAW5G,OAAQT,IAAK,CACxC,IAAIitD,EAAY5lD,EAAWrH,GAC3B,GAAIitD,EAAU1lD,MAAM,aAAc,CAC9B,IAAIT,EAAQyL,SAAS06C,EAAUn/C,UAAU,EAAGm/C,EAAUxsD,OAAS,IAC/D,GAAakxD,GAAT7qD,EACA,MAAM,IAAIzG,MAAM,wBAA0B4sD,GAE9C9pD,EAASA,EAAOgvD,QAAQR,EAAc7qD,OAErC,CAAA,IAAImmD,EAAU1lD,MAAM,YAQrB,MAAM,IAAIlH,MAAM,4BAA8B4sD,GAP1CnmD,EAAQyL,SAAS06C,GACrB,GAAa0E,GAAT7qD,EACA,MAAM,IAAIzG,MAAM,wBAA0B4sD,GAE9C9pD,EAASA,EAAOgvD,QAAQrrD,IAMhC,OAAO3D,GAEX2uD,EAAOa,SAAW,SAAU9xD,GACxB,OAAOG,EAAaI,OAAOP,EAAO,WAE/BixD,EA9FgB,GAiG3B,SAASc,EAAUlvB,EAAMuuB,GACrB,IAAIY,EAAYpvD,EAAQmnD,SAASlnB,GACjC,GAAImvB,EAAUpyD,OAAS,IAAyB,GAAnBoyD,EAAUpyD,OACnC,MAAM,IAAIJ,MAAM,gBAEpB,IAAI4zB,EAAIxwB,EAAQmnD,SAAS2G,EAAOc,YAAYd,EAAOe,oBAAoB9zB,OAAQkzB,EAAcmB,IAC7F,OAAO,IAAIf,EAAOpL,EAAmBzyB,EAAEnoB,MAAM,EAAG,IAAKmoB,EAAEnoB,MAAM,IAAK,EAAG,EAAGmmD,EAAU,KAYtF,SAASa,EAAeb,EAAUve,GACzBA,IACDA,EAAW,IAEf,IAAIC,EAAOqH,EAAOkM,YAAY,WAAaxT,EAAUsH,EAAO+X,yBAAyBC,MACrF,OAAOvvD,EAAQmK,QAAQ0jD,EAAS2B,OAAOjY,EAAOkM,YAAY+K,EAAUjX,EAAO+X,yBAAyBC,MAAOrf,EAAM,KAAM,GAAI,WAG/H,SAASuf,EAAkBjB,EAAUkB,GAC5BA,IACDA,EAAW9B,EAAU+B,QAEzB,IAAIr5C,EAAQo5C,EAAShjC,MAAM8hC,GAC3B,GAAKl4C,EAAMtZ,OAAS,GAAO,EACvB,MAAM,IAAIJ,MAAM,oBAIpB,IAFA,IAAIu/B,EAAUn8B,EAAQmnD,SAAS,IAAI73C,WAAW0H,KAAKe,KAAK,GAAKzB,EAAMtZ,OAAS,KACxE8uC,EAAS,EACJvvC,EAAI,EAAGA,EAAI+Z,EAAMtZ,OAAQT,IAAK,CACnC,IAAI8G,EAAQqsD,EAASE,aAAat5C,EAAM/Z,GAAGszD,UAAU,SACrD,IAAe,IAAXxsD,EACA,MAAM,IAAIzG,MAAM,oBAEpB,IAAK,IAAI+f,EAAM,EAAGA,EAAM,GAAIA,IACpBtZ,EAAS,GAAM,GAAKsZ,IACpBwf,EAAQ2P,GAAU,IAAO,GAAM,EAAKA,EAAS,GAEjDA,IAGR,IAAIgkB,EAAc,GAAKx5C,EAAMtZ,OAAS,EAElC+yD,EAAe5B,EADA73C,EAAMtZ,OAAS,GAE9BmuD,EAAWnrD,EAAQmnD,SAAS6G,EAAOnzB,OAAOsB,EAAQ9zB,MAAM,EAAGynD,EAAc,KAAK,GAElF,IADA3E,GAAY4E,MACM5zB,EAAQA,EAAQn/B,OAAS,GAAK+yD,GAC5C,MAAM,IAAInzD,MAAM,oBAEpB,OAAOoD,EAAQmK,QAAQgyB,EAAQ9zB,MAAM,EAAGynD,EAAc,IAzD1Dr0D,EAAQ4yD,OAASA,EAcjB5yD,EAAQu0D,aALR,SAAsBxB,EAAUkB,GAG5B,OADAD,EAAkBjB,EAAUkB,GACrBP,EAAUE,EAAeb,GAAWA,IAM/C/yD,EAAQw0D,SAHR,SAAkBhwB,GACd,OAAOkvB,EAAUlvB,EAAM,OAU3BxkC,EAAQ4zD,eAAiBA,EAiCzB5zD,EAAQg0D,kBAAoBA,EAoC5Bh0D,EAAQy0D,kBAnCR,SAA2B/zB,EAASuzB,GAEhC,IADAvzB,EAAUn8B,EAAQmnD,SAAShrB,IACdn/B,OAAS,GAAO,GAAKm/B,EAAQn/B,OAAS,IAAuB,GAAjBm/B,EAAQn/B,OAC7D,MAAM,IAAIJ,MAAM,mBAIpB,IAFA,IAAIuzD,EAAU,CAAC,GACXC,EAAgB,GACX7zD,EAAI,EAAGA,EAAI4/B,EAAQn/B,OAAQT,IAEZ,EAAhB6zD,GACAD,EAAQA,EAAQnzD,OAAS,KAAO,EAChCmzD,EAAQA,EAAQnzD,OAAS,IAAMm/B,EAAQ5/B,GACvC6zD,GAAiB,IAIjBD,EAAQA,EAAQnzD,OAAS,KAAOozD,EAChCD,EAAQA,EAAQnzD,OAAS,IAAMm/B,EAAQ5/B,IAAO,EAAI6zD,EAElDD,EAAQ3sD,KAAK24B,EAAQ5/B,IAnLrB,GAmLuC,EAAI6zD,GAnL9B,GAoLbA,GAAiB,GAIzB,IAAIjF,EAAWnrD,EAAQmnD,SAAS6G,EAAOnzB,OAAOsB,IAAU,GACpDk0B,EAAel0B,EAAQn/B,OAAS,EAQpC,OAPAmuD,GAAYgD,EAAakC,GAEzBF,EAAQA,EAAQnzD,OAAS,KAAOqzD,EAChCF,EAAQA,EAAQnzD,OAAS,IAAOmuD,GAAa,EAAIkF,EAC5CX,IACDA,EAAW9B,EAAU+B,QAElBD,EAASrqD,KAAK8qD,EAAQvmD,IAAI,SAAUvG,GAAS,OAAOqsD,EAASY,QAAQjtD,OAWhF5H,EAAQ80D,gBARR,SAAyB/B,EAAUkB,GAC/B,IAEI,OADAD,EAAkBjB,EAAUkB,IACrB,EAEX,MAAO5qD,IACP,OAAO,IAIT,CAACg6C,YAAY,EAAE0R,uBAAuB,GAAG1G,cAAc,GAAGC,UAAU,GAAG0G,SAAS,GAAGC,WAAW,GAAG1G,eAAe,GAAG2G,cAAc,GAAGC,SAAS,GAAG3G,SAAS,KAAK4G,GAAG,CAAC,SAASp0D,EAAQf,EAAOD,GAC5L,aACA,IAAI8D,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAIIyxD,EACOA,EALPv0B,EAAO/6B,EAAa9C,EAAQ,YAC5BuD,EAAUvD,EAAQ,kBAClBoD,EAASN,EAAa9C,EAAQ,eAGvBoyD,EAGRA,EAAsBpzD,EAAQozD,sBAAwBpzD,EAAQozD,oBAAsB,KAFvD,OAAI,SAChCA,EAA4B,OAAI,SASpCpzD,EAAQmzD,YANR,SAAqB5jB,EAAWroC,EAAKlB,GAIjC,OAHKotD,EAAoB7jB,IACrBnrC,EAAOoB,WAAW,yBAA2B+pC,EAAWnrC,EAAOqB,sBAAuB,CAAEH,UAAW,OAAQiqC,UAAWA,IAEnHhrC,EAAQmnD,SAAS7sB,EAAK8F,KAAK9F,EAAK0Q,GAAYhrC,EAAQmnD,SAASxkD,IAAM29B,OAAOtgC,EAAQmnD,SAAS1lD,IAAO8+B,YAI3G,CAACue,YAAY,EAAEG,iBAAiB,GAAG9jB,UAAU,KAAK21B,GAAG,CAAC,SAASr0D,EAAQf,EAAOD,GAChF,aACA,IAAI8D,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAI0C,EAAcrD,EAAQ,eAC1BhB,EAAQiuD,SAAW5pD,EAAY4pD,SAC/BjuD,EAAQ6I,gBAAkBxE,EAAYwE,gBACtC7I,EAAQsM,gBAAkBjI,EAAYiI,gBACtCtM,EAAQsqD,gBAAkBjmD,EAAYimD,gBACtCtqD,EAAQuM,eAAiBlI,EAAYkI,eACrCvM,EAAQwqD,eAAiBnmD,EAAYmmD,eACrC,IAAIlmD,EAAYtD,EAAQ,aACxBhB,EAAQiF,WAAaX,EAAUW,WAC/BjF,EAAQkP,mBAAqB5K,EAAU4K,mBACvClP,EAAQ2vD,eAAiBrrD,EAAUqrD,eACnC,IAAI2F,EAASxxD,EAAa9C,EAAQ,aAClChB,EAAQs1D,OAASA,EACjB,IAAIjzD,EAAcrB,EAAQ,eAC1BhB,EAAQywD,UAAYpuD,EAAYouD,UAChCzwD,EAAQ0C,aAAeL,EAAYK,aACnC,IAAI6B,EAAUvD,EAAQ,WACtBhB,EAAQ0rD,SAAWnnD,EAAQmnD,SAC3B1rD,EAAQ6N,OAAStJ,EAAQsJ,OACzB7N,EAAQ2I,aAAepE,EAAQoE,aAC/B3I,EAAQ0I,cAAgBnE,EAAQmE,cAChC1I,EAAQ0O,QAAUnK,EAAQmK,QAC1B1O,EAAQ68C,cAAgBt4C,EAAQs4C,cAChC78C,EAAQuxD,WAAahtD,EAAQgtD,WAC7BvxD,EAAQ0xD,cAAgBntD,EAAQmtD,cAChC1xD,EAAQ+rD,SAAWxnD,EAAQwnD,SAC3B/rD,EAAQwxD,eAAiBjtD,EAAQitD,eACjCxxD,EAAQo9C,WAAa74C,EAAQ64C,WAC7B,IAAI1B,EAAS16C,EAAQ,UACrBhB,EAAQiyD,YAAcvW,EAAOuW,YAC7BjyD,EAAQooD,GAAK1M,EAAO0M,GACpBpoD,EAAQ0iD,SAAWhH,EAAOgH,SAC1B,IAAIkQ,EAAS9uD,EAAa9C,EAAQ,aAClChB,EAAQ4yD,OAASA,EACjB,IAAIpuD,EAAcxD,EAAQ,eAC1BhB,EAAQkK,UAAY1F,EAAY0F,UAChC,IAAIqrD,EAAgBv0D,EAAQ,iBAC5BhB,EAAQw1D,qBAAuBD,EAAcC,qBAC7C,IAAI3G,EAAc7tD,EAAQ,eAC1BhB,EAAQkvD,UAAYL,EAAYK,UAChC,IAAIqD,EAASvxD,EAAQ,UACrBhB,EAAQo/B,OAASmzB,EAAOnzB,OACxB,IAAIq2B,EAAaz0D,EAAQ,cACzBhB,EAAQ01D,kBAAoBD,EAAWvG,UACvClvD,EAAQ21D,aAAeF,EAAW7I,KAClC5sD,EAAQ41D,eAAiBH,EAAWr2B,OACpC,IAAIy2B,EAAiB70D,EAAQ,kBAC7BhB,EAAQ81D,YAAcD,EAAeC,YACrC,IAAIna,EAAa36C,EAAQ,cACzBhB,EAAQu/C,WAAa5D,EAAW4D,WAChC,IAAIz9C,EAAed,EAAQ,gBAC3BhB,EAAQoN,SAAWtL,EAAasL,SAChCpN,EAAQgF,eAAiBlD,EAAakD,eACtChF,EAAQuhD,kBAAoBz/C,EAAay/C,kBACzCvhD,EAAQmH,YAAcrF,EAAaqF,YACnC,IAAI4uD,EAAMjyD,EAAa9C,EAAQ,UAC/BhB,EAAQ+1D,IAAMA,EACd,IAAIzD,EAActxD,EAAQ,eAC1BhB,EAAQg2D,eAAiB1D,EAAY0D,eACrCh2D,EAAQi2D,iBAAmB3D,EAAY2D,iBACvCj2D,EAAQk2D,eAAiB5D,EAAY4D,eACrCl2D,EAAQm2D,iBAAmB7D,EAAY6D,iBACvCn2D,EAAQo2D,cAAgB9D,EAAY8D,cACpC,IAAIC,EAAgBr1D,EAAQ,iBAC5BhB,EAAQs2D,WAAaD,EAAcC,WACnC,IAAIza,EAAgB76C,EAAQ,iBAC5BhB,EAAQu2D,iBAAmB1a,EAActsC,MACzCvP,EAAQw2D,qBAAuB3a,EAAc4a,UAC7C,IAAI3a,EAAS96C,EAAQ,UACrBhB,EAAQ02D,oBAAsB5a,EAAO4a,oBACrC12D,EAAQ22D,mBAAqB7a,EAAO6a,mBACpC32D,EAAQgoD,YAAclM,EAAOkM,YAC7BhoD,EAAQ+iD,aAAejH,EAAOiH,aAC9B,IAAI6T,EAAU51D,EAAQ,WACtBhB,EAAQ62D,QAAUD,EAAQC,QAC1B72D,EAAQ82D,YAAcF,EAAQE,YAC9B92D,EAAQ+2D,WAAaH,EAAQG,WAC7B/2D,EAAQg3D,YAAcJ,EAAQI,YAC9Bh3D,EAAQi3D,WAAaL,EAAQK,WAC7B,IAAIlb,EAAQ/6C,EAAQ,SACpBhB,EAAQ0kD,UAAY3I,EAAM2I,UAG1B,IAAI2N,EAASrxD,EAAQ,UACrBhB,EAAQozD,oBAAsBf,EAAOe,oBACrC,IAAI8D,EAASl2D,EAAQ,UACrBhB,EAAQ6zD,yBAA2BqD,EAAOrD,yBAC1C,IAAIsD,EAAan2D,EAAQ,cACzBhB,EAAQo3D,SAAWD,EAAWC,UAE5B,CAACC,cAAc,GAAGjJ,YAAY,GAAGkJ,WAAW,GAAGjJ,cAAc,GAAGC,UAAU,GAAGiJ,SAAS,GAAGC,WAAW,GAAGxC,SAAS,GAAGyC,cAAc,GAAGC,gBAAgB,GAAG7H,cAAc,GAAG8H,aAAa,GAAGpJ,eAAe,GAAGqJ,iBAAiB,GAAG9H,QAAQ,GAAGoF,cAAc,GAAGC,SAAS,GAAG0C,gBAAgB,GAAGC,aAAa,GAAGC,gBAAgB,GAAGC,UAAU,GAAGxJ,SAAS,GAAGyJ,QAAQ,GAAGC,aAAa,KAAKC,GAAG,CAAC,SAASn3D,EAAQf,EAAOD,GAChZ,aACA,IACQkD,EADJC,EAAa5C,MAAQA,KAAK4C,YACtBD,EAAgBzB,OAAO2B,gBACtB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAInC,KAAKmC,EAAOA,EAAEC,eAAepC,KAAIkC,EAAElC,GAAKmC,EAAEnC,KAClE,SAAUkC,EAAGC,GAEhB,SAASE,IAAOnD,KAAKoD,YAAcJ,EADnCL,EAAcK,EAAGC,GAEjBD,EAAEK,UAAkB,OAANJ,EAAa/B,OAAOoC,OAAOL,IAAME,EAAGE,UAAYJ,EAAEI,UAAW,IAAIF,KAGnFI,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IAEtD,IAAI2C,EAAYtD,EAAQ,aACpBqD,EAAcrD,EAAQ,eACtBqB,EAAcrB,EAAQ,eACtBuD,EAAUvD,EAAQ,WAClB06C,EAAS16C,EAAQ,UACjB6tD,EAAc7tD,EAAQ,eACtBc,EAAed,EAAQ,gBACvBoD,EAASN,EAAa9C,EAAQ,cAE9Bo3D,EACA,SAAkBv5B,GACd/8B,EAAaE,QAAQzB,KAAM,WAC3BuB,EAAakD,eAAezE,KAAM,OAAQs+B,IAI9Cw5B,EACA,SAAqBC,GAEjB,IAAK,IAAIpxD,KADTpF,EAAaE,QAAQzB,KAAM,eACX+3D,EACZx2D,EAAakD,eAAezE,KAAM2G,EAAKpF,EAAasL,SAASkrD,EAAKpxD,IAAM,IAE5EzF,OAAO82D,OAAOh4D,OAIlBi4D,EAAoC,SAAU5zD,GAE9C,SAAS4zD,IACL,OAAkB,OAAX5zD,GAAmBA,EAAOgJ,MAAMrN,KAAMwG,YAAcxG,KAsB/D,OAxBA4C,EAAUq1D,EAAoB5zD,GAI9B4zD,EAAmB50D,UAAU4E,OAAS,SAAU+F,EAAU1H,GACjDtC,EAAQsK,YAAYN,IACrBnK,EAAOoB,WAAW,4BAA6BpB,EAAOkG,iBAAkB,CACpEC,IAAK,WACL5I,MAAO4M,IAGfnK,EAAO4K,mBAAmBnI,EAAOtF,OAAQhB,KAAK0G,OAAO1F,OAAQ,4BAC7D,IACI,OAAQgN,EAAWlK,EAAYwE,gBAAgBL,OAAOjI,KAAK0G,OAAQJ,GAAQ+H,UAAU,GAEzF,MAAOvF,GACHjF,EAAOoB,WAAW,+BAAgCpB,EAAOkG,iBAAkB,CACvEC,IAAKlB,EAAMkB,IACX3B,OAAQS,EAAMT,OACdjH,MAAO0H,EAAM1H,QAGrB,OAAO,MAEJ62D,EAzB4B,CA0BrCH,GACEI,EAAsC,SAAU7zD,GAEhD,SAAS6zD,IACL,OAAkB,OAAX7zD,GAAmBA,EAAOgJ,MAAMrN,KAAMwG,YAAcxG,KA8B/D,OAhCA4C,EAAUs1D,EAAsB7zD,GAIhC6zD,EAAqB70D,UAAU4E,OAAS,SAAU3B,GAC9CzC,EAAO4K,mBAAmBnI,EAAOtF,OAAQhB,KAAK0G,OAAO1F,OAAQ,yBAA2BhB,KAAKuH,MAC7F,IACI,OAAOvH,KAAKm4D,QAAUr0D,EAAYwE,gBAAgBL,OAAOjI,KAAK0G,OAAQJ,GAAQ+H,UAAU,GAE5F,MAAOvF,GACHjF,EAAOoB,WAAW,yBAA0BpB,EAAOkG,iBAAkB,CACjEC,IAAKlB,EAAMkB,IACX3B,OAAQS,EAAMT,OACdjH,MAAO0H,EAAM1H,QAGrB,OAAO,MAEX82D,EAAqB70D,UAAUkF,OAAS,SAAU9C,GAC9C,IACI,OAAO3B,EAAYwE,gBAAgBC,OAAOvI,KAAK6I,QAAS7E,EAAQmnD,SAAS1lD,IAE7E,MAAOqD,GACHjF,EAAOoB,WAAW,mCAAoCpB,EAAOkG,iBAAkB,CAC3EC,IAAK,OACLouD,SAAUtvD,EAAMkB,IAChBquD,WAAYvvD,EAAM1H,MAClBA,MAAOqE,EACP4C,OAAQS,EAAMT,WAInB6vD,EAjC8B,CAkCvCJ,GACEQ,EAAwB,SAAUj0D,GAElC,SAASi0D,IACL,OAAkB,OAAXj0D,GAAmBA,EAAOgJ,MAAMrN,KAAMwG,YAAcxG,KAE/D,OAJA4C,EAAU01D,EAAQj0D,GAIXi0D,EALgB,CAMzBR,GACES,EAAmC,SAAUl0D,GAE7C,SAASk0D,IACL,OAAkB,OAAXl0D,GAAmBA,EAAOgJ,MAAMrN,KAAMwG,YAAcxG,KA8F/D,OAhGA4C,EAAU21D,EAAmBl0D,GAI7Bk0D,EAAkBl1D,UAAUiH,aAAe,SAAUhE,GACjD,IAAI9B,EAAQxE,KACRsG,EAAOtF,OAAShB,KAAK0G,OAAO1F,QAC5B6C,EAAOoB,WAAW,0BAA4BjF,KAAKuH,KAAM1D,EAAOmM,oBAAqB,CAAEwoD,SAAUlyD,EAAOtF,OAAQ4P,cAAe5Q,KAAK0G,OAAO1F,SAE/I,IAAIoI,EAAS,GA8Bb,IA7BKpJ,KAAKoqD,WACNhhD,EAAO5B,KAAKxH,KAAKoM,OAErB9F,EAAOQ,QAAQ,SAAUkD,EAAK3C,GAC1B,GAAY,OAAR2C,EAAJ,CAIA,IAAIo/C,EAAQ5kD,EAAMkC,OAAOW,GACpB+hD,EAAMK,SACP5lD,EAAOoB,WAAW,qDAAsDpB,EAAOkG,iBAAkB,CAAEY,SAAWy+C,EAAM7hD,MAAQF,EAAQjG,MAAO4I,IAE5H,WAAfo/C,EAAM1hD,KACN0B,EAAO5B,KAAK2zC,EAAO0M,GAAG79C,IAEF,UAAfo/C,EAAM1hD,KACX0B,EAAO5B,KAAK8mD,EAAYK,UAAU3kD,KAEA,IAA7Bo/C,EAAM1hD,KAAKoE,QAAQ,MAA8C,UAA/Bs9C,EAAM1hD,KAAK2G,UAAU,EAAG,GAC/DxK,EAAOoB,WAAW,wEAAyEpB,EAAOiM,gBAAiB,CAAE/K,UAAW,yBAG7G,YAAfqkD,EAAM1hD,MACN3D,EAAUW,WAAWsF,GAEzBZ,EAAO5B,KAAKxD,EAAQgtD,WAAWhtD,EAAQmK,QAAQnE,GAAM,IAAIuC,qBApBzDnD,EAAO5B,KAAK,QAwBb4B,EAAOpI,QAAwC,OAA9BoI,EAAOA,EAAOpI,OAAS,IAC3CoI,EAAOvC,MAEX,OAAOuC,GAEXmvD,EAAkBl1D,UAAUkF,OAAS,SAAU9C,EAAM2D,GAEnC,MAAVA,GAAmBpJ,KAAKoqD,YACxBhhD,EAASA,EAAOiD,MAAM,IAE1B,IAAIosD,EAAe,GACfC,EAAkB,GAClBC,EAAe,GAiBnB,GAhBA34D,KAAK0G,OAAOI,QAAQ,SAAUsiD,EAAO/hD,GAC7B+hD,EAAMK,QACa,WAAfL,EAAM1hD,MAAoC,UAAf0hD,EAAM1hD,MAA+C,GAA3B0hD,EAAM1hD,KAAKoE,QAAQ,MAA4C,UAA/Bs9C,EAAM1hD,KAAK2G,UAAU,EAAG,IAC7GoqD,EAAajxD,KAAK,CAAEE,KAAM,UAAWH,KAAO6hD,EAAM7hD,MAAQ,KAC1DoxD,EAAanxD,MAAK,KAGlBixD,EAAajxD,KAAK4hD,GAClBuP,EAAanxD,MAAK,KAItBkxD,EAAgBlxD,KAAK4hD,GACrBuP,EAAanxD,MAAK,MAGZ,MAAV4B,EACA,IAAIwvD,EAAgB90D,EAAYwE,gBAAgBC,OAAOkwD,EAAcz0D,EAAQsJ,OAAOlE,IAExF,IAAIyvD,EAAmB/0D,EAAYwE,gBAAgBC,OAAOmwD,EAAiB10D,EAAQmnD,SAAS1lD,IACxF/B,EAAS,GACTo1D,EAAkB,EAAGC,EAAe,EAqBxC,OApBA/4D,KAAK0G,OAAOI,QAAQ,SAAU8pB,EAAOvpB,GAC7BupB,EAAM64B,QACQ,MAAVrgD,EACA1F,EAAO2D,GAAS,IAAIwwD,EAAS,MAExBc,EAAatxD,GAClB3D,EAAO2D,GAAS,IAAIwwD,EAASe,EAAcG,MAG3Cr1D,EAAO2D,GAASuxD,EAAcG,KAIlCr1D,EAAO2D,GAASwxD,EAAiBC,KAEjCloC,EAAMrpB,OACN7D,EAAOktB,EAAMrpB,MAAQ7D,EAAO2D,MAGpC3D,EAAO1C,OAAShB,KAAK0G,OAAO1F,OACrB,IAAIs3D,EAAO50D,IAEf60D,EAjG2B,CAkGpCT,GACEkB,EAAyC,SAAU30D,GAEnD,SAAS20D,IACL,OAAkB,OAAX30D,GAAmBA,EAAOgJ,MAAMrN,KAAMwG,YAAcxG,KAE/D,OAJA4C,EAAUo2D,EAAyB30D,GAI5B20D,EALiC,CAM1ClB,GACEmB,EAAiC,SAAU50D,GAE3C,SAAS40D,IACL,OAAkB,OAAX50D,GAAmBA,EAAOgJ,MAAMrN,KAAMwG,YAAcxG,KAE/D,OAJA4C,EAAUq2D,EAAiB50D,GAIpB40D,EALyB,CAMlCnB,GACF,SAASoB,EAAU/yD,GACf,OAAQA,EAAOuB,MACX,IAAK,cACD,IAAIoP,EAAc,IAAImhD,EAAmB,CACrCvxD,OAAQP,EAAOO,OACf+jD,QAA4B,MAAlBtkD,EAAOskD,WAAqBtkD,EAAOskD,UAE5CzqD,KAAKwO,iBACNxO,KAAKwO,eAAiBsI,GAE1B,MAEJ,IAAK,WACD,IAAIpO,EAAY5E,EAAYiI,gBAAgB5F,GAAQwV,QAAQ,SAAU,IAClEw8C,EAAUhd,EAAO0M,GAAGn/C,GAAW2F,UAAU,EAAG,IAC5CyI,EAAc,IAAIohD,EAAqB,CACvCxxD,OAAQP,EAAOO,OACfmC,QAAS1C,EAAO0C,QAChBG,IAAK7C,EAAO6C,IACZyhD,QAA4B,MAAlBtkD,EAAOskD,WAAqBtkD,EAAOskD,QAC7C/iD,KAAQvB,EAAe,SAAI,OAAS,cACpCuC,UAAWA,EACXyvD,QAASA,IAGThyD,EAAOoB,MAAuC,MAA/BvH,KAAKqG,UAAUF,EAAOoB,OACrChG,EAAakD,eAAezE,KAAKqG,UAAWF,EAAOoB,KAAMuP,GAGhB,MAAzC9W,KAAKqG,UAAUyQ,EAAYpO,YAC3BnH,EAAakD,eAAezE,KAAKqG,UAAWyQ,EAAYpO,UAAWoO,GAEvE,MAEJ,IAAK,QACGpO,EAAY5E,EAAYiI,gBAAgB5F,GAAQwV,QAAQ,SAAU,IAClE7E,EAAc,IAAIyhD,EAAkB,CACpChxD,KAAMpB,EAAOoB,KACbmB,UAAWA,EACXhC,OAAQP,EAAOO,OACf0F,MAAO+uC,EAAO0M,GAAGn/C,GACjB0hD,YAAcjkD,EAAOikD,YAGrBjkD,EAAOoB,MAAoC,MAA5BvH,KAAKkK,OAAO/D,EAAOoB,OAClChG,EAAakD,eAAezE,KAAKkK,OAAQ/D,EAAOoB,KAAMuP,GAGhB,MAAtC9W,KAAKkK,OAAO4M,EAAYpO,YACxBnH,EAAakD,eAAezE,KAAKkK,OAAQ4M,EAAYpO,UAAWoO,GAEpE,MAEJ,IAAK,WAED,MACJ,QACIrM,QAAQC,IAAI,mCAAqCvE,EAAOuB,OAIpE,IAAIiC,EAA2B,WAC3B,SAASA,EAAUsF,GAEf,GADApL,EAAO6F,SAAS1J,KAAM2J,GACD,iBAAV,EAAoB,CAC3B,IACIsF,EAAMF,KAAKC,MAAMC,GAErB,MAAOnG,GACHjF,EAAOoB,WAAW,2BAA4BpB,EAAOkG,iBAAkB,CACnEC,IAAK,MACLmvD,aAAcrwD,EAAMhE,QACpB1D,MAAO6N,IAGf,IAAKlM,MAAMoE,QAAQ8H,GAEf,OADApL,EAAOoB,WAAW,cAAepB,EAAOkG,iBAAkB,CAAEC,IAAK,MAAO5I,MAAO6N,IACxE,KAGf1N,EAAakD,eAAezE,KAAM,YAAa,IAC/CuB,EAAakD,eAAezE,KAAM,SAAU,IAE5C,IAAIo5D,EAAO,GACXnqD,EAAInI,QAAQ,SAAUojD,GACQ,iBAAf,IACPA,EAAWpmD,EAAYkI,eAAek+C,IAG1CkP,EAAK5xD,KAAK0iD,KAEd3oD,EAAakD,eAAezE,KAAM,MAAOuB,EAAasL,SAASusD,GAAM,IACrEA,EAAKtyD,QAAQoyD,EAAWl5D,MAEnBA,KAAKwO,gBACN0qD,EAAUn4D,KAAKf,KAAM,CAAE0H,KAAM,cAAehB,OAAQ,KAExDnF,EAAaE,QAAQzB,KAAM,aAoD/B,OAlDA2J,EAAUtG,UAAU2yD,iBAAmB,SAAUvvD,GAC7C,IAAI0xD,EAAU1xD,EAAGhB,KAAK4I,UAAU,EAAG,IAAI9B,cACvC,IAAK,IAAIhF,KAAQvH,KAAKqG,UAClB,IAA2B,IAAvBkB,EAAKuE,QAAQ,KAAjB,CAGA,IAAIutD,EAAOr5D,KAAKqG,UAAUkB,GAC1B,GAAI8xD,EAAKlB,UAAYA,EAAS,CAC1B,IAAIz0D,EAASI,EAAYwE,gBAAgBC,OAAO8wD,EAAK3yD,OAAQ,KAAOD,EAAGhB,KAAK4I,UAAU,KACtF,OAAO,IAAI2qD,EAAwB,CAC/BvwD,KAAM/E,EACN6E,OAAQ8wD,EAAK9wD,OACbhB,KAAMA,EACNmB,UAAW2wD,EAAK3wD,UAChByvD,QAASkB,EAAKlB,QACd/2D,MAAOU,EAAYK,aAAasE,EAAGrF,OAAS,SAIxD,OAAO,MAEXuI,EAAUtG,UAAUqI,SAAW,SAAUhB,GACrC,IAAK,IAAInD,KAAQvH,KAAKkK,OAClB,IAA2B,IAAvB3C,EAAKuE,QAAQ,KAAjB,CAGA,IAAI1B,EAAQpK,KAAKkK,OAAO3C,GACxB,IAAI6C,EAAMggD,WAGNhgD,EAAMgC,QAAU1B,EAAItB,OAAO,GAI/B,OAAO,IAAI6vD,EAAgB,CACvB1wD,OAAQ6B,EAAM7B,OACdhB,KAAM6C,EAAM7C,KACZmB,UAAW0B,EAAM1B,UACjB0D,MAAOhC,EAAMgC,MACbT,OAAQvB,EAAM7B,OAAOmC,EAAIjF,KAAMiF,EAAItB,UAG3C,OAAO,MAEXO,EAAUC,YAAc,SAAUxI,GAC9B,OAAOG,EAAaI,OAAOP,EAAO,cAEtCuI,EAAU2B,UAAY,SAAUlK,GAC5B,OAAOG,EAAaI,OAAOP,EAAO,YAE/BuI,EAxFmB,GA0F9BlK,EAAQkK,UAAYA,GAElB,CAACm5C,YAAY,EAAEgU,cAAc,GAAGjJ,YAAY,GAAGC,cAAc,GAAGC,UAAU,GAAGiJ,SAAS,GAAG1H,cAAc,GAAGtB,eAAe,KAAKsL,GAAG,CAAC,SAAS74D,EAAQf,EAAOD,GAC5J,aACAyB,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAI2C,EAAYtD,EAAQ,aACxB,SAAS84D,EAAkBC,GACvB,IACI,IAAI/zD,EAAOsJ,KAAKC,MAAMwqD,GAE1B,MAAO1wD,GACH,OAAO,EAEX,OAAQrD,EAAKg0D,SAAWh0D,EAAKi0D,QAGjC,SAASC,EAAsBH,GAC3B,IACI,IAAI/zD,EAAOsJ,KAAKC,MAAMwqD,GAE1B,MAAO1wD,GACH,OAAO,EAEX,SAAKrD,EAAKpE,SAAWyR,SAASrN,EAAKpE,WAAaoE,EAAKpE,SAAsC,IAA3ByR,SAASrN,EAAKpE,UARlF5B,EAAQ85D,kBAAoBA,EAc5B95D,EAAQk6D,sBAAwBA,EAuBhCl6D,EAAQw1D,qBAnBR,SAA8BuE,GAC1B,GAAID,EAAkBC,GAClB,IACI,OAAOz1D,EAAUW,WAAWqK,KAAKC,MAAMwqD,GAAME,SAEjD,MAAO5wD,GACH,OAAO,KAGf,GAAI6wD,EAAsBH,GACtB,IACI,OAAOz1D,EAAUW,WAAWqK,KAAKC,MAAMwqD,GAAMl1D,SAEjD,MAAOwE,GACH,OAAO,KAGf,OAAO,OAIT,CAAC+kD,YAAY,KAAK+L,GAAG,CAAC,SAASn5D,EAAQf,EAAOD,GAChD,aACAyB,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAIy4D,EAAOp5D,EAAQ,WACfuD,EAAUvD,EAAQ,WAItBhB,EAAQkvD,UAHR,SAAmBlpD,GACf,MAAO,KAAOo0D,EAAKC,WAAW91D,EAAQmnD,SAAS1lD,MAIjD,CAACsoD,UAAU,GAAGgM,UAAU,KAAKC,GAAG,CAAC,SAASv5D,EAAQf,EAAOD,GAC3D,aACA,IAAI8D,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAIyC,EAASN,EAAa9C,EAAQ,cAC9Bw5D,EAAY,CACZz0D,QAAS,EACT08C,WAAY,6CACZ36C,KAAM,aAEN2yD,EAAU,CACV10D,QAAS,EACT08C,WAAY,6CACZ36C,KAAM,WAEN49C,EAAW,CACXgV,YAAa,CACT30D,QAAS,GAEby0D,UAAWA,EACXG,QAASH,EACTI,OAAQ,CACJ70D,QAAS,GAEb00D,QAASA,EACTI,QAASJ,EACTK,QAAS,CACL/0D,QAAS,EACT08C,WAAY,8CAEhBsY,MAAO,CACHh1D,QAAS,IAEbi1D,QAAS,CACLj1D,QAAS,IAEbk1D,eAAgB,CACZl1D,QAAS,KA4DjB/F,EAAQu/C,WAnDR,SAAoBntC,GAEhB,IAAKA,EACD,OAAO,KAEX,GAAyB,iBAAd,EAAwB,CAC/B,IAAK,IAAItK,KAAQ49C,EAAU,CACvB,IAAIwV,EAAMxV,EAAS59C,GACnB,GAAIozD,EAAIn1D,UAAYqM,EAChB,MAAO,CACHtK,KAAMA,EACN/B,QAASm1D,EAAIn1D,QACb08C,WAAYyY,EAAIzY,YAI5B,MAAO,CACH18C,QAASqM,EACTtK,KAAM,WAGd,GAAyB,iBAAd,EAAwB,CAC/B,IAAIqzD,EAAMzV,EAAStzC,GACnB,OAAW,MAAP+oD,EACO,KAEJ,CACHrzD,KAAMsK,EACNrM,QAASo1D,EAAIp1D,QACb08C,WAAY0Y,EAAI1Y,YAGxB,IAAI9hD,EAAI+kD,EAAStzC,EAAQtK,MAEzB,OAAKnH,GAOmB,IAApByR,EAAQrM,SAAiBqM,EAAQrM,UAAYpF,EAAEoF,SAC/C3B,EAAOoB,WAAW,2BAA4BpB,EAAOkG,iBAAkB,CAAEC,IAAK,UAAW5I,MAAOyQ,IAG7F,CACHtK,KAAMsK,EAAQtK,KACd/B,QAASpF,EAAEoF,QACX08C,WAAY9hD,EAAE8hD,cAbmB,iBAArBrwC,EAAe,SACvBhO,EAAOoB,WAAW,0BAA2BpB,EAAOkG,iBAAkB,CAAEC,IAAK,UAAW5I,MAAOyQ,IAE5FA,KAeb,CAACixC,YAAY,IAAI+X,GAAG,CAAC,SAASp6D,EAAQf,EAAOD,GAC/C,aACAyB,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAI4C,EAAUvD,EAAQ,kBAClBqxD,EAASrxD,EAAQ,UAyCrBhB,EAAQ+zD,OAxCR,SAAgBvf,EAAUC,EAAM4mB,EAAYC,EAAQC,GAGhD,IAAIC,EAFJhnB,EAAWjwC,EAAQmnD,SAASlX,GAC5BC,EAAOlwC,EAAQmnD,SAASjX,GAExB,IAKIh0C,EACAg7D,EANAt0C,EAAI,EACJu0C,EAAK,IAAI7nD,WAAWynD,GACpBK,EAAS,IAAI9nD,WAAW4gC,EAAKlzC,OAAS,GAC1Co6D,EAAOtnD,IAAIogC,GAIX,IAAK,IAAI3zC,EAAI,EAAGA,GAAKqmB,EAAGrmB,IAAK,CAEzB66D,EAAOlnB,EAAKlzC,QAAWT,GAAK,GAAM,IAClC66D,EAAOlnB,EAAKlzC,OAAS,GAAMT,GAAK,GAAM,IACtC66D,EAAOlnB,EAAKlzC,OAAS,GAAMT,GAAK,EAAK,IACrC66D,EAAOlnB,EAAKlzC,OAAS,GAAS,IAAJT,EAE1B,IAAI86D,EAAIvJ,EAAOc,YAAYoI,EAAe/mB,EAAUmnB,GAC/CH,IACDA,EAAOI,EAAEr6D,OACTk6D,EAAI,IAAI5nD,WAAW2nD,GAEnB/6D,EAAI66D,IADJn0C,EAAI5L,KAAKe,KAAKg/C,EAASE,IACL,GAAKA,GAG3BC,EAAEpnD,IAAIunD,GACN,IAAK,IAAIjkD,EAAI,EAAGA,EAAI0jD,EAAY1jD,IAAK,CAEjCikD,EAAIvJ,EAAOc,YAAYoI,EAAe/mB,EAAUonB,GAChD,IAAK,IAAI13D,EAAI,EAAGA,EAAIs3D,EAAMt3D,IACtBu3D,EAAEv3D,IAAM03D,EAAE13D,GAElB,IAAIuxC,GAAW30C,EAAI,GAAK06D,EACpBlgD,EAAOxa,IAAMqmB,EAAI1mB,EAAI+6D,EAEzBE,EAAGrnD,IAAI9P,EAAQmnD,SAAS+P,GAAG7uD,MAAM,EAAG0O,GAAMm6B,GAE9C,OAAOlxC,EAAQmnD,SAASgQ,KAI1B,CAAClY,iBAAiB,GAAGwR,SAAS,KAAK6G,GAAG,CAAC,SAAS76D,EAAQf,EAAOD,GACjE,aAEA,SAASgF,EAAe2J,EAAQ7G,EAAMnG,GAClCF,OAAOC,eAAeiN,EAAQ7G,EAAM,CAChCo3B,YAAY,EACZv9B,MAAOA,EACPssC,UAAU,IAUlB,SAAS/rC,EAAOyM,EAAQ1G,GACpB,OAAQ0G,GAAUA,EAAOmtD,cAAgB7zD,EAhB7CxG,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IAQtD3B,EAAQgF,eAAiBA,EAMzBhF,EAAQgC,QAHR,SAAiB2M,EAAQ1G,GACrBxG,OAAOC,eAAeiN,EAAQ,cAAe,CAAEswB,cAAc,EAAOt9B,MAAOsG,EAAMgmC,UAAU,KAM/FjuC,EAAQkC,OAASA,EAoBjBlC,EAAQuhD,kBAnBR,SAA2B5yC,GACvB,IAAI1K,EAAS,GACTqE,EAAW,GAaf,OAZA7G,OAAO+I,KAAKmE,GAAQtH,QAAQ,SAAUH,GAClC,IAAIvF,EAAQgN,EAAOzH,GACfvF,aAAiBuD,QACjBoD,EAASP,KAAKpG,EAAM4D,KAAK,SAAU5D,GAE/B,OADAsC,EAAOiD,GAAOvF,EACP,QAIXsC,EAAOiD,GAAOvF,IAGfuD,QAAQ8C,IAAIM,GAAU/C,KAAK,WAC9B,OAAOtB,KAWfjE,EAAQmH,YAPR,SAAqBwH,GACjB,IAAI1K,EAAS,GACb,IAAK,IAAIiD,KAAOyH,EACZ1K,EAAOiD,GAAOyH,EAAOzH,GAEzB,OAAOjD,GAGX,IAAI83D,EAAS,CAAEC,SAAS,EAAMxhD,QAAQ,EAAMszC,QAAQ,GA4CpD9tD,EAAQoN,SA3CR,SAASA,EAASuB,EAAQstD,GAEtB,GAAIttD,MAAAA,GAA2CotD,SAAc,GACzD,OAAOptD,EAGX,GAAIrL,MAAMoE,QAAQiH,GAAS,CACvB,IAAI1K,EAAS0K,EAAOR,IAAI,SAAUk3C,GAAQ,OAAOj4C,EAASi4C,EAAM4W,KAIhE,OAHIA,GACAx6D,OAAO82D,OAAOt0D,GAEXA,EAEX,GAAwB,iBAAb,EAAuB,CAE9B,GAAI/B,EAAOyM,EAAQ,aACf,OAAOA,EAEX,GAAIzM,EAAOyM,EAAQ,eACf,OAAOA,EAEX,GAAIzM,EAAOyM,EAAQ,WACf,OAAOA,EAGX,IAAK,IAAIzH,KADLjD,EAAS,GACG0K,EAAQ,CACpB,IAAIhN,EAAQgN,EAAOzH,QACLq4B,IAAV59B,GAGJqD,EAAef,EAAQiD,EAAKkG,EAASzL,EAAOs6D,IAKhD,OAHIA,GACAx6D,OAAO82D,OAAOt0D,GAEXA,EAGX,GAAwB,mBAAb,EACP,OAAO0K,EAEX,MAAM,IAAIxN,MAAM,0BAA4B,IAqBhDnB,EAAQojD,YANR,SAASA,EAAYyG,GACjB,OAAO,SAAUI,GAZrB,IAAkB9vC,EAAMC,EAAAA,EAaAyvC,GAbN1vC,EAaD8vC,GAZR5vC,OAASD,EACdD,EAAKvW,UAAYnC,OAAOoC,OAAOuW,EAAUxW,UAAW,CAChDD,YAAa,CACThC,MAAOwY,EACP+kB,YAAY,EACZ+O,UAAU,EACVhP,cAAc,KAOlBj6B,EAAeilD,EAAO,WAAY7G,EAAY6G,OAKpD,IAAIiS,GAAG,CAAC,SAASl7D,EAAQf,EAAOD,IAClC,SAAWK,GACX,aACAoB,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAI4C,EAAUvD,EAAQ,kBAClBc,EAAed,EAAQ,uBACvBmxB,EAAS9xB,EAAO8xB,QAAU9xB,EAAO+xB,SAoBrC,SAAS0jC,EAAYv0D,GACjB,GAAIA,GAAU,GAAc,KAATA,GAAiB8R,SAAS0B,OAAOxT,KAAYA,EAC5D,MAAM,IAAIJ,MAAM,kBAEpB,IAAI8C,EAAS,IAAI4P,WAAWtS,GAE5B,OADA4wB,EAAOE,gBAAgBpuB,GAChBM,EAAQmnD,SAASznD,GAzBvBkuB,GAAWA,EAAOE,kBACnBrnB,QAAQC,IAAI,wEACZknB,EAAS,CACLE,gBAAiB,SAAU3e,GACvB,IAAK,IAAIqV,EAAQ,EAAGA,EAAQ,GAAIA,IAC5B,IAAK,IAAIjoB,EAAI,EAAGA,EAAI4S,EAAOnS,OAAQT,IAC3BioB,EACArV,EAAO5S,IAAMya,KAAK4gD,MAAM,IAAM5gD,KAAKw9B,UAGnCrlC,EAAO5S,GAAKya,KAAK4gD,MAAM,IAAM5gD,KAAKw9B,UAI9C,OAAOrlC,GAEX0oD,aAAa,IAWrBp8D,EAAQ81D,YAAcA,GAEK,IAAvB3jC,EAAOiqC,aACPt6D,EAAakD,eAAe8wD,EAAa,eAAe,KAGzDx0D,KAAKf,KAAuB,oBAAXF,OAAyBA,OAAyB,oBAATC,KAAuBA,KAAyB,oBAAXF,OAAyBA,OAAS,KAClI,CAACojD,iBAAiB,GAAGhI,sBAAsB,KAAK6gB,GAAG,CAAC,SAASr7D,EAAQf,EAAOD,GAC9E,aAEAyB,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAI4C,EAAUvD,EAAQ,WACtB,SAASs7D,EAAgB36D,GAErB,IADA,IAAIsC,EAAS,GACNtC,GACHsC,EAAOs4D,QAAgB,IAAR56D,GACfA,IAAU,EAEd,OAAOsC,EAEX,SAASu4D,EAAkBx2D,EAAMqqC,EAAQ9uC,GAErC,IADA,IAAI0C,EAAS,EACJnD,EAAI,EAAGA,EAAIS,EAAQT,IACxBmD,EAAmB,IAATA,EAAgB+B,EAAKqqC,EAASvvC,GAE5C,OAAOmD,EAgCX,SAASw4D,EAAgBz2D,EAAMqqC,EAAQqsB,EAAan7D,GAEhD,IADA,IAAI0C,EAAS,GACNy4D,EAAcrsB,EAAS,EAAI9uC,GAAQ,CACtC,IAAIo7D,EAAUC,EAAQ52D,EAAM02D,GAG5B,GAFAz4D,EAAO8D,KAAK40D,EAAQ14D,QAEFosC,EAAS,EAAI9uC,GAD/Bm7D,GAAeC,EAAQhR,UAEnB,MAAM,IAAIxqD,MAAM,eAGxB,MAAO,CAAEwqD,SAAW,EAAIpqD,EAAS0C,OAAQA,GAG7C,SAAS24D,EAAQ52D,EAAMqqC,GACnB,GAAoB,IAAhBrqC,EAAKzE,OACL,MAAM,IAAIJ,MAAM,oBAGpB,GAAoB,KAAhB6E,EAAKqqC,GAAiB,CAEtB,GAAIA,EAAS,GADTwsB,EAAe72D,EAAKqqC,GAAU,KACFrqC,EAAKzE,OACjC,MAAM,IAAIJ,MAAM,aAGpB,GAAIkvC,EAAS,EAAIwsB,GADbt7D,EAASi7D,EAAkBx2D,EAAMqqC,EAAS,EAAGwsB,IACR72D,EAAKzE,OAC1C,MAAM,IAAIJ,MAAM,YAEpB,OAAOs7D,EAAgBz2D,EAAMqqC,EAAQA,EAAS,EAAIwsB,EAAcA,EAAet7D,GAE9E,GAAoB,KAAhByE,EAAKqqC,GAAiB,CAE3B,GAAIA,EAAS,GADT9uC,EAASyE,EAAKqqC,GAAU,KACFrqC,EAAKzE,OAC3B,MAAM,IAAIJ,MAAM,oBAEpB,OAAOs7D,EAAgBz2D,EAAMqqC,EAAQA,EAAS,EAAG9uC,GAEhD,GAAoB,KAAhByE,EAAKqqC,GAAiB,CAC3B,IAAIwsB,EACJ,GAAIxsB,EAAS,GADTwsB,EAAe72D,EAAKqqC,GAAU,KACFrqC,EAAKzE,OACjC,MAAM,IAAIJ,MAAM,oBAGpB,GAAIkvC,EAAS,EAAIwsB,GADbt7D,EAASi7D,EAAkBx2D,EAAMqqC,EAAS,EAAGwsB,IACR72D,EAAKzE,OAC1C,MAAM,IAAIJ,MAAM,oBAGpB,MAAO,CAAEwqD,SAAW,EAAIkR,EAAet7D,EAAS0C,OADnCM,EAAQmK,QAAQ1I,EAAK4G,MAAMyjC,EAAS,EAAIwsB,EAAcxsB,EAAS,EAAIwsB,EAAet7D,KAG9F,GAAoB,KAAhByE,EAAKqqC,GAAiB,CAC3B,IAAI9uC,EACJ,GAAI8uC,EAAS,GADT9uC,EAASyE,EAAKqqC,GAAU,KACFrqC,EAAKzE,OAC3B,MAAM,IAAIJ,MAAM,oBAGpB,MAAO,CAAEwqD,SAAW,EAAIpqD,EAAS0C,OADpBM,EAAQmK,QAAQ1I,EAAK4G,MAAMyjC,EAAS,EAAGA,EAAS,EAAI9uC,KAGrE,MAAO,CAAEoqD,SAAU,EAAG1nD,OAAQM,EAAQmK,QAAQ1I,EAAKqqC,KAzDvDrwC,EAAQwI,OAHR,SAAgBmG,GACZ,OAAOpK,EAAQmK,QA3BnB,SAAS+nB,EAAQ9nB,GACb,GAAIrL,MAAMoE,QAAQiH,GAAS,CACvB,IAAI24C,EAAU,GAId,OAHA34C,EAAOtH,QAAQ,SAAU4iD,GACrB3C,EAAUA,EAAQz5C,OAAO4oB,EAAQwzB,MAEjC3C,EAAQ/lD,QAAU,IAClB+lD,EAAQiV,QAAQ,IAAOjV,EAAQ/lD,QACxB+lD,KAEP/lD,EAAS+6D,EAAgBhV,EAAQ/lD,SAC9Bg7D,QAAQ,IAAOh7D,EAAOA,QACtBA,EAAOsM,OAAOy5C,IAEzB,IAQI/lD,EARAyE,EAAO1C,MAAMM,UAAUgJ,MAAMtL,KAAKiD,EAAQmnD,SAAS/8C,IACvD,OAAoB,IAAhB3I,EAAKzE,QAAgByE,EAAK,IAAM,IACzBA,EAEFA,EAAKzE,QAAU,IACpByE,EAAKu2D,QAAQ,IAAOv2D,EAAKzE,QAClByE,KAEPzE,EAAS+6D,EAAgBt2D,EAAKzE,SAC3Bg7D,QAAQ,IAAOh7D,EAAOA,QACtBA,EAAOsM,OAAO7H,IAGEywB,CAAQ9nB,KAqEnC3O,EAAQ8I,OARR,SAAgB9C,GACZ,IAAI8O,EAAQvQ,EAAQmnD,SAAS1lD,GACzB22D,EAAUC,EAAQ9nD,EAAO,GAC7B,GAAI6nD,EAAQhR,WAAa72C,EAAMvT,OAC3B,MAAM,IAAIJ,MAAM,oBAEpB,OAAOw7D,EAAQ14D,SAIjB,CAACqqD,UAAU,KAAKwO,GAAG,CAAC,SAAS97D,EAAQf,EAAOD,GAC9C,aACA,IAAI8D,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAIo7D,EAAa/7D,EAAQ,YACrBsD,EAAYtD,EAAQ,aACpBuD,EAAUvD,EAAQ,WAClB06C,EAAS16C,EAAQ,UACjB6tD,EAAc7tD,EAAQ,eACtBc,EAAed,EAAQ,gBACvBoD,EAASN,EAAa9C,EAAQ,cAE9Bg8D,EAAS,KACb,SAASC,IAIL,OAHKD,IACDA,EAAS,IAAID,EAAWlqC,GAAG,cAExBmqC,EAEX,IAAIp9B,EAAyB,WACzB,SAASA,EAAQizB,GACb,IAAI7yB,EAAUi9B,IAAWh9B,eAAe17B,EAAQmnD,SAASmH,IACzD/wD,EAAakD,eAAezE,KAAM,aAAcgE,EAAQmK,QAAQsxB,EAAQE,KAAK7jB,QAAQ,KAAM,MAC3Fva,EAAakD,eAAezE,KAAM,YAAa,KAAOy/B,EAAQ4B,WAAU,EAAO,QAC/E9/B,EAAakD,eAAezE,KAAM,sBAAuB,KAAOy/B,EAAQ4B,WAAU,EAAM,QACxF9/B,EAAakD,eAAezE,KAAM,iBAAkBy/B,EAAQ4B,YAAYp5B,OAAO,MAAM,IAiBzF,OAfAo3B,EAAQh8B,UAAUo9B,KAAO,SAAU8D,GAC/B,IACI77B,EADUg0D,IAAWh9B,eAAe17B,EAAQmnD,SAASnrD,KAAKsyD,aACtC7xB,KAAKz8B,EAAQmnD,SAAS5mB,GAAS,CAAErD,WAAW,IACpE,MAAO,CACHD,cAAev4B,EAAUu4B,cACzB/gC,EAAG8D,EAAQgtD,WAAW,KAAOtoD,EAAUxI,EAAEuQ,SAAS,IAAK,IACvD6W,EAAGtjB,EAAQgtD,WAAW,KAAOtoD,EAAU4e,EAAE7W,SAAS,IAAK,IACvDnJ,EAAG,GAAKoB,EAAUu4B,gBAG1B5B,EAAQh8B,UAAUs5D,oBAAsB,SAAUC,GAC9C,IAAIn9B,EAAUi9B,IAAWh9B,eAAe17B,EAAQmnD,SAASnrD,KAAKsyD,aAC1DuK,EAAeH,IAAW78B,cAAc77B,EAAQmnD,SAASuK,EAAiBkH,KAC9E,OAAO54D,EAAQgtD,WAAW,KAAOvxB,EAAQ2C,OAAOy6B,EAAax7B,aAAa5wB,SAAS,IAAK,KAErF4uB,EAvBiB,GA0B5B,SAASq2B,EAAiB/uD,EAAKm2D,GAC3B,IAAIvoD,EAAQvQ,EAAQmnD,SAASxkD,GAC7B,GAAqB,KAAjB4N,EAAMvT,OAAe,CACrB,IAAIy+B,EAAU,IAAIJ,EAAQ9qB,GAC1B,OAAIuoD,EACOr9B,EAAQgzB,oBAEZhzB,EAAQs9B,UAEd,OAAqB,KAAjBxoD,EAAMvT,OACP87D,EACO94D,EAAQmK,QAAQoG,GAEpB,KAAOmoD,IAAW78B,cAActrB,GAAO8sB,WAAU,EAAO,OAEzC,KAAjB9sB,EAAMvT,OACN87D,EAGE,KAAOJ,IAAW78B,cAActrB,GAAO8sB,WAAU,EAAM,OAFnDr9B,EAAQmK,QAAQoG,IAI/B1Q,EAAOoB,WAAW,gCAAiCpB,EAAOkG,iBAAkB,CAAEC,IAAK,MAAO5I,MAAO,eAC1F,MAGX,SAASq0D,EAAe9uD,GAEpB,IAAIo2D,EAAY,KAAOrH,EAAiB/uD,GAAK0F,MAAM,GACnD,OAAOtI,EAAUW,WAAW,KAAO4pD,EAAYK,UAAUoO,GAAW1uD,UAAU,KAGlF,SAASunD,EAAiBrxB,EAAQ77B,GAC9B,IAAIs0D,EAAMh5D,EAAQitD,eAAevoD,GAC7Bu0D,EAAK,CAAE/8D,EAAG8D,EAAQmnD,SAAS6R,EAAI98D,GAAIonB,EAAGtjB,EAAQmnD,SAAS6R,EAAI11C,IAC/D,MAAO,KAAOo1C,IAAWp7B,cAAct9B,EAAQmnD,SAAS5mB,GAAS04B,EAAID,EAAI/7B,eAAeh5B,OAAO,OAAO,GAG1G,SAAS0tD,EAAepxB,EAAQ77B,GAC5B,OAAO+sD,EAAeG,EAAiB5xD,EAAQmnD,SAAS5mB,GAAS77B,IAvCrEjJ,EAAQ4/B,QAAUA,EAyBlB5/B,EAAQi2D,iBAAmBA,EAM3Bj2D,EAAQg2D,eAAiBA,EAMzBh2D,EAAQm2D,iBAAmBA,EAI3Bn2D,EAAQk2D,eAAiBA,EAIzBl2D,EAAQo2D,cAHR,SAAuB/wD,EAAS4D,GAC5B,OAAOitD,EAAexa,EAAOuW,YAAY5sD,GAAU4D,KAIrD,CAACo6C,YAAY,EAAE+K,YAAY,GAAGE,UAAU,GAAGiJ,SAAS,GAAG1H,cAAc,GAAGtB,eAAe,GAAG/7B,SAAW,KAAKirC,GAAG,CAAC,SAASz8D,EAAQf,EAAOD,GACxI,aACA,IAAI0uD,EAAmBnuD,MAAQA,KAAKmuD,iBAAoB,SAAU3qD,GAC9D,OAAQA,GAAOA,EAAIC,WAAcD,EAAM,CAAE4qD,QAAW5qD,IAEpDD,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAI+7D,EAAWhP,EAAgB1tD,EAAQ,WACnC28D,EAAcjP,EAAgB1tD,EAAQ,cACtC48D,EAASlP,EAAgB1tD,EAAQ,SACjCq1D,EAAgBr1D,EAAQ,iBACxB4xD,EAAS9uD,EAAa9C,EAAQ,aAC9BsD,EAAYtD,EAAQ,aACpBuD,EAAUvD,EAAQ,WAClBoxD,EAAWpxD,EAAQ,YACnB6tD,EAAc7tD,EAAQ,eACtB86C,EAAS96C,EAAQ,UACjB60D,EAAiB70D,EAAQ,kBAC7B,SAAS68D,EAAcC,GAInB,MAH2B,iBAAhB,GAA0D,OAA9BA,EAAUlvD,UAAU,EAAG,KAC1DkvD,EAAY,KAAOA,GAEhBv5D,EAAQmnD,SAASoS,GAE5B,SAASC,EAAKp8D,EAAOJ,GAEjB,IADAI,EAAQoT,OAAOpT,GACRA,EAAMJ,OAASA,GAClBI,EAAQ,IAAMA,EAElB,OAAOA,EAEX,SAASq8D,EAAYxpB,GACjB,MAA0B,iBAAf,EACAsH,EAAOkM,YAAYxT,EAAUsH,EAAO+X,yBAAyBoK,MAEjE15D,EAAQmnD,SAASlX,GAG5B,SAAS0pB,EAAWvvD,EAAQi6C,GAGxB,IAFA,IAAIuV,EAAexvD,EACfqxC,EAAQ4I,EAAK97C,cAAcmkB,MAAM,KAC5BnwB,EAAI,EAAGA,EAAIk/C,EAAMz+C,OAAQT,IAAK,CAEnC,IAAIs9D,EAAgB,KACpB,IAAK,IAAIl3D,KAAOi3D,EACZ,GAAIj3D,EAAI4F,gBAAkBkzC,EAAMl/C,GAAI,CAChCs9D,EAAgBD,EAAaj3D,GAC7B,MAIR,GAAsB,OAAlBk3D,EACA,OAAO,KAGXD,EAAeC,EAEnB,OAAOD,EAiCXn+D,EAAQq+D,iBA7BR,SAA0BtE,EAAMvlB,GAC5B,IAAIxuC,EAAOsJ,KAAKC,MAAMwqD,GACtBvlB,EAAWwpB,EAAYxpB,GAEvB,IAAIylB,EAAU31D,EAAUW,WAAWi5D,EAAWl4D,EAAM,YAEhDg0D,EAAU6D,EAAcK,EAAWl4D,EAAM,YAC7C,IAAKg0D,GAAYA,EAAQz4D,OAAS,IAAQ,EACtC,MAAM,IAAIJ,MAAM,mBAEpB,IAAI+F,EAAMkrD,EAAS2B,OAAOvf,EAAUA,EAAU,IAAM,GAAI,UAAU5nC,MAAM,EAAG,IACvE6K,EAAKuiD,EAAQptD,MAAM,EAAG,IACtB0xD,EAAgBtE,EAAQptD,MAAM,IAE9B2xD,EAAS,IAAIb,EAAS/O,QAAQ51C,gBAAgBE,IAAI/R,EAAKuQ,GACvD+sB,EAAOjgC,EAAQmnD,SAAS6S,EAAOrnD,QAAQonD,IAC3C95B,EAAOk5B,EAAS/O,QAAQp1C,QAAQC,MAAMG,MAAM6qB,GAG5C,IADA,IAAIg6B,EAAU,GACL19D,EAAI,EAAGA,EAAI0jC,EAAKjjC,OAAQT,IAC7B09D,GAAWzpD,OAAOC,aAAawvB,EAAK1jC,IAExC,IAAI29D,EAAe3iB,EAAOkM,YAAYwW,GAClCE,EAAa,IAAIrI,EAAcC,WAAWzH,EAAYK,UAAUuP,IACpE,GAAIC,EAAW75D,UAAYo1D,EACvB,MAAM,IAAI94D,MAAM,4BAEpB,OAAOu9D,GA0IX1+D,EAAQkX,QAtIR,SAAiB6iD,EAAMvlB,EAAUmqB,GAC7B,IAAI34D,EAAOsJ,KAAKC,MAAMwqD,GAClB6E,EAAgBZ,EAAYxpB,GAc5BqqB,EAAgB,SAAU33D,EAAK29C,GAC/B,IAJuBia,EAAa3nD,EAIhCA,EAAa0mD,EAAcK,EAAWl4D,EAAM,sBAEhD,GADkBzB,EAAQmK,SALHowD,EAKsB53D,EAAI0F,MAAM,GAAI,IALvBuK,EAK4BA,EAJzD03C,EAAYK,UAAU3qD,EAAQsJ,OAAO,CAACixD,EAAa3nD,OAImBvI,UAAU,KACnEsvD,EAAWl4D,EAAM,cAAc8G,cAE/C,OADA+3C,EAAO,IAAI1jD,MAAM,qBACV,KAEX,IAAI0xD,EApBM,SAAU3rD,EAAKiQ,GAEzB,GAAe,gBADF+mD,EAAWl4D,EAAM,iBACA,CAC1B,IAAIyR,EAAKomD,EAAcK,EAAWl4D,EAAM,2BACpC2S,EAAU,IAAI+kD,EAAS/O,QAAQv2C,QAAQX,GACvCsnD,EAAS,IAAIrB,EAAS/O,QAAQ51C,gBAAgBK,IAAIlS,EAAKyR,GAC3D,OAAOpU,EAAQmnD,SAASqT,EAAO7nD,QAAQC,IAE3C,OAAO,KAYUD,CAAQhQ,EAAI0F,MAAM,EAAG,IAAKuK,GACvC6nD,EAAc93D,EAAI0F,MAAM,GAAI,IAChC,IAAKimD,EAED,OADAhO,EAAO,IAAI1jD,MAAM,uBACV,KAEX,IAAIu9D,EAAa,IAAIrI,EAAcC,WAAWzD,GAC9C,GAAI6L,EAAW75D,UAAYP,EAAUW,WAAWe,EAAKnB,SAEjD,OADAggD,EAAO,IAAI1jD,MAAM,qBACV,KAGX,GAA6C,QAAzC+8D,EAAWl4D,EAAM,oBAA+B,CAChD,IAAIi5D,EAAqBpB,EAAcK,EAAWl4D,EAAM,gCACpDk5D,EAAarB,EAAcK,EAAWl4D,EAAM,6BAC5Cm5D,EAAkB,IAAIzB,EAAS/O,QAAQv2C,QAAQ8mD,GAC/CE,EAAiB,IAAI1B,EAAS/O,QAAQ51C,gBAAgBK,IAAI4lD,EAAaG,GACvEvW,EAAOsV,EAAWl4D,EAAM,kBAAoB4sD,EAAOD,YACnDjyB,EAAUn8B,EAAQmnD,SAAS0T,EAAeloD,QAAQ+nD,IAClDlM,EAAWH,EAAO6B,kBAAkB/zB,GACpC4N,EAAOskB,EAAO2B,aAAaxB,GAAUS,WAAW5K,GACpD,GAAIta,EAAKukB,YAActuD,EAAQmK,QAAQmkD,GAEnC,OADAhO,EAAO,IAAI1jD,MAAM,sBACV,KAEXu9D,EAAa,IAAIrI,EAAcC,WAAWhoB,GAE9C,OAAOowB,GAEX,OAAO,IAAIx5D,QAAQ,SAAUC,EAAS0/C,GAClC,IAAIwa,EAAMnB,EAAWl4D,EAAM,cAC3B,GAAIq5D,GAAwB,iBAAV,EACd,GAA0B,WAAtBA,EAAIvyD,cAA4B,CAChC,IAAI2nC,EAAOopB,EAAcK,EAAWl4D,EAAM,0BACtCkhB,EAAI7T,SAAS6qD,EAAWl4D,EAAM,uBAC9BvF,EAAI4S,SAAS6qD,EAAWl4D,EAAM,uBAC9B3E,EAAIgS,SAAS6qD,EAAWl4D,EAAM,uBAClC,IAAKkhB,IAAMzmB,IAAMY,EAEb,YADAwjD,EAAO,IAAI1jD,MAAM,mDAIrB,GAAsB,IAAjB+lB,EAAKA,EAAI,GAEV,YADA29B,EAAO,IAAI1jD,MAAM,8DAIrB,GAAc,MADVuzC,EAAQrhC,SAAS6qD,EAAWl4D,EAAM,4BAGlC,YADA6+C,EAAO,IAAI1jD,MAAM,kDAGjBw9D,GACAA,EAAiB,GAErBhB,EAAYhP,QAAQiQ,EAAenqB,EAAMvtB,EAAGzmB,EAAGY,EAAG,GAAI,SAAUgI,EAAOi2D,EAAUp4D,GAC7E,GAAImC,EACAA,EAAMi2D,SAAWA,EACjBza,EAAOx7C,QAEN,GAAInC,EAAK,CACVA,EAAM3C,EAAQmnD,SAASxkD,GACvB,IAAIw3D,EAAaG,EAAc33D,EAAK29C,GACpC,IAAK6Z,EACD,OAEAC,GACAA,EAAiB,GAErBx5D,EAAQu5D,QAEP,GAAIC,EACL,OAAOA,EAAiBW,UAI/B,GAA0B,WAAtBD,EAAIvyD,cAA4B,CACjC2nC,EAAOopB,EAAcK,EAAWl4D,EAAM,0BAA1C,IACIu5D,EAAU,KACVC,EAAMtB,EAAWl4D,EAAM,wBAC3B,GAAY,gBAARw5D,EACAD,EAAU,aAET,CAAA,GAAY,gBAARC,EAKL,YADA3a,EAAO,IAAI1jD,MAAM,oBAHjBo+D,EAAU,SAMd,IACI7qB,EADA3zC,EAAIsS,SAAS6qD,EAAWl4D,EAAM,uBAElC,GAAc,MADV0uC,EAAQrhC,SAAS6qD,EAAWl4D,EAAM,4BAGlC,YADA6+C,EAAO,IAAI1jD,MAAM,kDAGrB,IAAI+F,EAAMkrD,EAAS2B,OAAO6K,EAAenqB,EAAM1zC,EAAG2zC,EAAO6qB,GACrDb,EAAaG,EAAc33D,EAAK29C,GACpC,IAAK6Z,EACD,OAEJv5D,EAAQu5D,QAGR7Z,EAAO,IAAI1jD,MAAM,6CAIrB0jD,EAAO,IAAI1jD,MAAM,2CA6K7BnB,EAAQgX,QAxKR,SAAiB67C,EAAYre,EAAUzV,EAAS4/B,GAEnB,mBAAd,GAA6BA,IACpCA,EAAmB5/B,EACnBA,EAAU,IAETA,IACDA,EAAU,IAGd,IAAI0gC,EAAkB,KAOtB,GAA+B,MAL3BA,EADApJ,EAAcC,WAAWoJ,aAAa7M,GACpBtuD,EAAQmnD,SAASmH,EAAWA,YAG5BtuD,EAAQmnD,SAASmH,IAEnBtxD,OAChB,MAAM,IAAIJ,MAAM,uBAEpB,IAAIy9D,EAAgBZ,EAAYxpB,GAC5B9T,EAAU,KAId,GAHI3B,EAAQ2B,UACRA,EAAUn8B,EAAQmnD,SAAS3sB,EAAQ2B,UAEnC3B,EAAQg0B,SACR,GAAIryB,GACA,GAAIkyB,EAAO6B,kBAAkB/zB,KAAa3B,EAAQg0B,SAC9C,MAAM,IAAI5xD,MAAM,sCAIpBu/B,EAAUn8B,EAAQmnD,SAASkH,EAAOoB,kBAAkBj1B,EAAQg0B,WAGpE,IAAInK,EAAO7pB,EAAQ6pB,KACfloB,IAAYkoB,IACZA,EAAOgK,EAAOD,aAElB,IAAIgN,EAAS5gC,EAAQ4gC,OAChBA,IACDA,EAAS,aAGb,IAAIlrB,EAAO,KAEPA,EADA1V,EAAQ0V,KACDlwC,EAAQmnD,SAAS3sB,EAAQ0V,MAGzBohB,EAAeC,YAAY,IAItC,IAAIr+C,EAAK,KACT,GAAIsnB,EAAQtnB,IAER,GAAkB,MADlBA,EAAKlT,EAAQmnD,SAAS3sB,EAAQtnB,KACvBlW,OACH,MAAM,IAAIJ,MAAM,mBAIpBsW,EAAKo+C,EAAeC,YAAY,IAGpC,IAAI8J,EAAa,KACjB,GAAI7gC,EAAQ2b,MAER,GAA0B,MAD1BklB,EAAar7D,EAAQmnD,SAAS3sB,EAAQ2b,OACvBn5C,OACX,MAAM,IAAIJ,MAAM,qBAIpBy+D,EAAa/J,EAAeC,YAAY,IAG5C,IAAI5uC,EAAK,GAAK,GAAKzmB,EAAI,EAAGY,EAAI,EAY9B,OAXI09B,EAAQ8W,SACJ9W,EAAQ8W,OAAO3uB,IACfA,EAAI6X,EAAQ8W,OAAO3uB,GAEnB6X,EAAQ8W,OAAOp1C,IACfA,EAAIs+B,EAAQ8W,OAAOp1C,GAEnBs+B,EAAQ8W,OAAOx0C,IACfA,EAAI09B,EAAQ8W,OAAOx0C,IAGpB,IAAI6D,QAAQ,SAAUC,EAAS0/C,GAC9B8Z,GACAA,EAAiB,GAKrBhB,EAAYhP,QAAQiQ,EAAenqB,EAAMvtB,EAAGzmB,EAAGY,EAAG,GAAI,SAAUgI,EAAOi2D,EAAUp4D,GAC7E,GAAImC,EACAA,EAAMi2D,SAAWA,EACjBza,EAAOx7C,QAEN,GAAInC,EAAK,CAGV,IAAI2vC,GAFJ3vC,EAAM3C,EAAQmnD,SAASxkD,IAEF0F,MAAM,EAAG,IAC1BizD,EAAY34D,EAAI0F,MAAM,GAAI,IAE1BoyD,EAAc93D,EAAI0F,MAAM,GAAI,IAE5B/H,EAAU,IAAKwxD,EAAcC,WAAWmJ,GAAkB56D,QAE1D8T,EAAU,IAAI+kD,EAAS/O,QAAQv2C,QAAQX,GACvCsnD,EAAS,IAAIrB,EAAS/O,QAAQ51C,gBAAgBK,IAAIy9B,EAAYl+B,GAC9DxB,EAAa5S,EAAQmnD,SAASqT,EAAO/nD,QAAQyoD,IAE7CK,EAAMjR,EAAYK,UAAU3qD,EAAQsJ,OAAO,CAACgyD,EAAW1oD,KAEvDnR,EAAO,CACPnB,QAASA,EAAQ+J,UAAU,GAAG9B,cAC9Bs7C,GAAIwV,EAAOjP,QAAQpU,GAAG,CAAExB,OAAQ6mB,IAChCh+D,QAAS,EACTm+D,OAAQ,CACJC,OAAQ,cACRC,aAAc,CACVxoD,GAAIlT,EAAQmK,QAAQ+I,GAAI7I,UAAU,IAEtCuI,WAAY5S,EAAQmK,QAAQyI,GAAYvI,UAAU,GAClDywD,IAAK,SACLa,UAAW,CACPzrB,KAAMlwC,EAAQmK,QAAQ+lC,GAAM7lC,UAAU,GACtCjO,EAAGumB,EACHi5C,MAAO,GACP9+D,EAAGA,EACHZ,EAAGA,GAEPq/D,IAAKA,EAAIlxD,UAAU,KAI3B,GAAI8xB,EAAS,CACT,IAAIw+B,EAAarJ,EAAeC,YAAY,IACxCqJ,EAAkB,IAAIzB,EAAS/O,QAAQv2C,QAAQ8mD,GAC/CE,EAAiB,IAAI1B,EAAS/O,QAAQ51C,gBAAgBK,IAAI4lD,EAAaG,GACvEF,EAAqB16D,EAAQmnD,SAAS0T,EAAepoD,QAAQ0pB,IAC7D0/B,EAAM,IAAIvlB,KACV2C,EAAa4iB,EAAIC,iBAAmB,IACpCtC,EAAKqC,EAAIE,cAAgB,EAAG,GAAK,IACjCvC,EAAKqC,EAAIG,aAAc,GAAK,IAC5BxC,EAAKqC,EAAII,cAAe,GAAK,IAC7BzC,EAAKqC,EAAIK,gBAAiB,GAAK,IAC/B1C,EAAKqC,EAAIM,gBAAiB,GAAK,MACnC16D,EAAK,YAAc,CACf25D,OAAQA,EACRgB,aAAe,QAAUnjB,EAAY,KAAOx3C,EAAKnB,QACjDs6D,gBAAiB56D,EAAQmK,QAAQwwD,GAAYtwD,UAAU,GACvDqwD,mBAAoB16D,EAAQmK,QAAQuwD,GAAoBrwD,UAAU,GAClEhN,QAAS,OAGb+8D,GACAA,EAAiB,GAErBx5D,EAAQmK,KAAKyB,UAAU/K,SAEtB,GAAI24D,EACL,OAAOA,EAAiBW,SAOtC,CAAClR,YAAY,GAAGE,UAAU,GAAGkJ,WAAW,GAAG3H,cAAc,GAAGoF,WAAW,GAAG2C,iBAAiB,GAAGC,gBAAgB,GAAGrJ,SAAS,GAAGoS,SAAS,EAAEC,YAAY,GAAGnmB,KAAO,KAAKomB,GAAG,CAAC,SAAS9/D,EAAQf,EAAOD,GACjM,aACA,IAAI0uD,EAAmBnuD,MAAQA,KAAKmuD,iBAAoB,SAAU3qD,GAC9D,OAAQA,GAAOA,EAAIC,WAAcD,EAAM,CAAE4qD,QAAW5qD,IAExDtC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAIo/D,EAAYrS,EAAgB1tD,EAAQ,YACpCuD,EAAUvD,EAAQ,WAItBhB,EAAQo/B,OAHR,SAAgBp5B,GACZ,MAAO,KAAQ+6D,EAAUpS,QAAQvvB,SAASyF,OAAOtgC,EAAQmnD,SAAS1lD,IAAO8+B,OAAO,QAMpF9kC,EAAQs/B,OAHR,SAAgBt5B,GACZ,MAAO,KAAQ+6D,EAAUpS,QAAQrvB,SAASuF,OAAOtgC,EAAQmnD,SAAS1lD,IAAO8+B,OAAO,SAIlF,CAACwpB,UAAU,GAAG5uB,UAAU,KAAKshC,GAAG,CAAC,SAAShgE,EAAQf,EAAOD,GAC3D,aACAyB,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtDX,EAAQ,gBACRhB,EAAQkS,SAAW,WAEjB,CAAC+uD,aAAe,KAAKC,GAAG,CAAC,SAASlgE,EAAQf,EAAOD,GACnD,aACA,IAAI8D,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IAMtD,IAAIw/D,EAAWngE,EAAQ,YACnBuD,EAAUvD,EAAQ,WAClBc,EAAed,EAAQ,gBACvBsxD,EAActxD,EAAQ,eACtBoD,EAASN,EAAa9C,EAAQ,cAE9Bs1D,EAA4B,WAC5B,SAASA,EAAWzD,GAChBzuD,EAAO6F,SAAS1J,KAAM+1D,GACtB,IAAImJ,EAAkB,KAClB0B,EAASvO,OAAOa,SAASZ,IACzB/wD,EAAakD,eAAezE,KAAM,WAAYsyD,EAAWE,UACzDjxD,EAAakD,eAAezE,KAAM,OAAQsyD,EAAWjK,MACrD6W,EAAkBl7D,EAAQmnD,SAASmH,EAAWA,cAIlB,iBAAjB,GAA6BA,EAAWxqD,MAAM,iBAAyC,KAAtBwqD,EAAWtxD,SACnFsxD,EAAa,KAAOA,GAExB4M,EAAkBl7D,EAAQmnD,SAASmH,IAEvC,IACmC,KAA3B4M,EAAgBl+D,QAChB6C,EAAOoB,WAAW,4BAA6BpB,EAAOkG,iBAAkB,CAAEC,IAAK,aAAc5I,MAAO,eAG5G,MAAO0H,GACH,IAAIxC,EAAS,CAAE0D,IAAK,aAAc3B,OAAQS,EAAMT,OAAQjH,MAAO,cAC3D0H,EAAM1H,QAC8B,iBAAxB0H,EAAM1H,MAAY,SAC1BkF,EAAOtF,OAAS8H,EAAM1H,MAAMJ,QAEhCsF,EAAOoB,YAAeoB,EAAW,OAErCjF,EAAOoB,WAAW,sBAAuB6D,EAAMjI,KAAMyF,GAEzD/E,EAAakD,eAAezE,KAAM,aAAcgE,EAAQmK,QAAQ+wD,IAChE39D,EAAakD,eAAezE,KAAM,UAAW,IAAI+xD,EAAY1yB,QAAQ6/B,IACrE39D,EAAakD,eAAezE,KAAM,YAAaA,KAAKy/B,QAAQs9B,WAC5Dx7D,EAAakD,eAAezE,KAAM,UAAW+xD,EAAY0D,eAAez1D,KAAKy/B,QAAQs9B,YACrFx7D,EAAaE,QAAQzB,KAAM,cAW/B,OATA+1D,EAAW1yD,UAAUw9D,WAAa,SAAUt8B,GACxC,OAAOvkC,KAAKy/B,QAAQgB,KAAK8D,IAE7BwxB,EAAW1yD,UAAUs5D,oBAAsB,SAAUh2D,GACjD,OAAO3G,KAAKy/B,QAAQk9B,oBAAoB34D,EAAQmnD,SAASxkD,KAE7DovD,EAAWoJ,aAAe,SAAU/9D,GAChC,OAAOG,EAAaI,OAAOP,EAAO,eAE/B20D,EA9CoB,GAgD/Bt2D,EAAQs2D,WAAaA,GAEnB,CAACjT,YAAY,EAAEiL,UAAU,GAAGkJ,WAAW,GAAGjJ,eAAe,GAAG2G,cAAc,KAAKmM,GAAG,CAAC,SAASrgE,EAAQf,EAAOD,GAC7G,aACAyB,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAIU,EAAcrB,EAAQ,eACtBuD,EAAUvD,EAAQ,WAClB86C,EAAS96C,EAAQ,UACjB6tD,EAAc7tD,EAAQ,eACtBuxD,EAASvxD,EAAQ,UACjBsgE,EAAa,IAAInY,OAAO,mBACxBoY,EAAc,IAAIpY,OAAO,qBACzBqY,EAAa,IAAIrY,OAAO,wBACxByI,EAAQ,mEA8DZ,SAAShF,EAAKa,EAAOvhD,GACjB,GAAIuhD,EAAMlsD,QAAU2K,EAAO3K,OACvB,MAAM,IAAIJ,MAAM,6BAEpB,IAAIsgE,EAAQ,GAIZ,OAHAhU,EAAMpmD,QAAQ,SAAUY,EAAML,GAC1B65D,EAAM15D,KAnEd,SAAS25D,EAAMz5D,EAAMtG,EAAO+F,GACxB,OAAQO,GACJ,IAAK,UACD,OAAIP,EACOnD,EAAQwnD,SAASpqD,EAAO,IAE5B4C,EAAQmnD,SAAS/pD,GAC5B,IAAK,SACD,OAAOm6C,EAAOkM,YAAYrmD,GAC9B,IAAK,QACD,OAAO4C,EAAQmnD,SAAS/pD,GAC5B,IAAK,OAED,OADAA,EAASA,EAAQ,OAAS,OACtB+F,EACOnD,EAAQwnD,SAASpqD,EAAO,IAE5B4C,EAAQmnD,SAAS/pD,GAEhC,IAAI0G,EAAQJ,EAAKI,MAAMk5D,GACvB,GAAIl5D,EAAO,CAGP,IADI8U,EAAO9J,SAAShL,EAAM,IAAM,QACpB,GAAK,GAAe,IAAT8U,GAAqB,IAAPA,EACjC,MAAM,IAAIhc,MAAM,yBAA2B8G,GAM/C,OAJIP,IACAyV,EAAO,KAEXxb,EAAQU,EAAYK,aAAaf,GAAO6d,OAAOrC,GACxC5Y,EAAQwnD,SAASpqD,EAAOwb,EAAO,GAG1C,GADA9U,EAAQJ,EAAKI,MAAMi5D,GACR,CACP,IAAInkD,EAAO9J,SAAShL,EAAM,IAC1B,GAAI0M,OAAOoI,IAAS9U,EAAM,IAAe,IAAT8U,GAAqB,GAAPA,EAC1C,MAAM,IAAIhc,MAAM,yBAA2B8G,GAE/C,GAAI1D,EAAQmnD,SAAS/pD,GAAOgd,aAAexB,EACvC,MAAM,IAAIhc,MAAM,qBAAuB8G,GAE3C,OAAIP,EACOnD,EAAQmnD,UAAU/pD,EAAQiwD,GAAOhjD,UAAU,EAAG,KAElDjN,EAGX,IADA0G,EAAQJ,EAAKI,MAAMm5D,KACNl+D,MAAMoE,QAAQ/F,GAAQ,CAC/B,IAAIggE,EAAWt5D,EAAM,GAErB,GADYgL,SAAShL,EAAM,IAAM0M,OAAOpT,EAAMJ,UACjCI,EAAMJ,OACf,MAAM,IAAIJ,MAAM,qBAAuB8G,GAE3C,IAAIhE,EAAS,GAIb,OAHAtC,EAAM0F,QAAQ,SAAU1F,GACpBsC,EAAO8D,KAAK25D,EAAMC,EAAUhgE,GAAO,MAEhC4C,EAAQsJ,OAAO5J,GAE1B,MAAM,IAAI9C,MAAM,kBAAoB8G,GASrBy5D,CAAMz5D,EAAMiE,EAAOtE,OAE3BrD,EAAQmK,QAAQnK,EAAQsJ,OAAO4zD,IAE1CzhE,EAAQ4sD,KAAOA,EAIf5sD,EAAQkvD,UAHR,SAAmBzB,EAAOvhD,GACtB,OAAO2iD,EAAYK,UAAUtC,EAAKa,EAAOvhD,KAM7ClM,EAAQo/B,OAHR,SAAgBquB,EAAOvhD,GACnB,OAAOqmD,EAAOnzB,OAAOwtB,EAAKa,EAAOvhD,MAInC,CAACmiD,cAAc,GAAGC,UAAU,GAAGuB,cAAc,GAAGsF,SAAS,GAAG3G,SAAS,KAAKoT,GAAG,CAAC,SAAS5gE,EAAQf,EAAOD,GACxG,aACA,IAAI8D,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAIwC,EAAcnD,EAAQ,gBACtBoD,EAASN,EAAa9C,EAAQ,cAC9BsxD,EAActxD,EAAQ,eACtBsD,EAAYtD,EAAQ,aACpBqB,EAAcrB,EAAQ,eACtBuD,EAAUvD,EAAQ,WAClB6tD,EAAc7tD,EAAQ,eACtB+0D,EAAMjyD,EAAa9C,EAAQ,UAQ/B,SAAS6gE,EAAalgE,GAClB,MAAc,OAAVA,EACOwC,EAAYxB,KAEhBN,EAAYK,aAAaf,GAEpC,IAAImgE,EAAoB,CACpB,CAAEh6D,KAAM,QAASi6D,UAAW,IAC5B,CAAEj6D,KAAM,WAAYi6D,UAAW,IAC/B,CAAEj6D,KAAM,WAAYi6D,UAAW,IAC/B,CAAEj6D,KAAM,KAAMvG,OAAQ,IACtB,CAAEuG,KAAM,QAASi6D,UAAW,IAC5B,CAAEj6D,KAAM,SA8CZ9H,EAAQy2D,UA5CR,SAAmB7wD,EAAaqD,GAC5B,IAAIi0C,EAAM,GACV4kB,EAAkBz6D,QAAQ,SAAU26D,GAChC,IAAIrgE,EAAQiE,EAAYo8D,EAAUl6D,OAAS,GAC3CnG,EAAQ4C,EAAQmnD,SAASnnD,EAAQmK,QAAQ/M,IAErCqgE,EAAUzgE,QAAUI,EAAMJ,SAAWygE,EAAUzgE,QAAyB,EAAfI,EAAMJ,QAC/D6C,EAAOoB,WAAW,sBAAwBw8D,EAAUl6D,KAAM1D,EAAOkG,iBAAkB,CAAEC,IAAM,cAAgBy3D,EAAUl6D,KAAOnG,MAAOA,IAGnIqgE,EAAUD,YACVpgE,EAAQ4C,EAAQ64C,WAAWz7C,IACjBJ,OAASygE,EAAUD,WACzB39D,EAAOoB,WAAW,sBAAwBw8D,EAAUl6D,KAAM1D,EAAOkG,iBAAkB,CAAEC,IAAM,cAAgBy3D,EAAUl6D,KAAOnG,MAAOA,IAG3Iu7C,EAAIn1C,KAAKxD,EAAQmK,QAAQ/M,MAEF,MAAvBiE,EAAYG,SAA2C,IAAxBH,EAAYG,UAC3Cm3C,EAAIn1C,KAAKxD,EAAQmK,QAAQ9I,EAAYG,UACrCm3C,EAAIn1C,KAAK,MACTm1C,EAAIn1C,KAAK,OAEb,IAAIk6D,EAAsBlM,EAAIvtD,OAAO00C,GAErC,IAAKj0C,EACD,OAAOg5D,EAIX,IAAI1E,EAAMh5D,EAAQitD,eAAevoD,GAE7BpB,EAAI,GAAK01D,EAAI/7B,cAUjB,OATmB,IAAf0b,EAAI37C,SACJ27C,EAAI91C,MACJ81C,EAAI91C,MACJ81C,EAAI91C,MACJS,GAA2B,EAAtBjC,EAAYG,QAAc,GAEnCm3C,EAAIn1C,KAAKxD,EAAQmK,QAAQ7G,IACzBq1C,EAAIn1C,KAAKxD,EAAQ64C,WAAW74C,EAAQmnD,SAAS6R,EAAI98D,KACjDy8C,EAAIn1C,KAAKxD,EAAQ64C,WAAW74C,EAAQmnD,SAAS6R,EAAI11C,KAC1CkuC,EAAIvtD,OAAO00C,IA4DtBl9C,EAAQuP,MAzDR,SAAe2yD,GACX,IAAIt8D,EAAcmwD,EAAIjtD,OAAOo5D,GACF,IAAvBt8D,EAAYrE,QAAuC,IAAvBqE,EAAYrE,QACxC6C,EAAOoB,WAAW,0BAA2BpB,EAAOkG,iBAAkB,CAAEC,IAAK,gBAAiB5I,MAAOugE,IAEzG,IAtEmBvgE,EAsEfqF,EAAK,CACLZ,MAAOy7D,EAAaj8D,EAAY,IAAIyY,WACpClY,SAAU07D,EAAaj8D,EAAY,IACnCM,SAAU27D,EAAaj8D,EAAY,IACnCS,IA1Ee1E,EA0EGiE,EAAY,GAzEpB,OAAVjE,EACO,KAEJ2C,EAAUW,WAAWtD,IAuExBA,MAAOkgE,EAAaj8D,EAAY,IAChCI,KAAMJ,EAAY,GAClBG,QAAS,GAGb,GAA2B,IAAvBH,EAAYrE,OACZ,OAAOyF,EAEX,IACIA,EAAGa,EAAIxF,EAAYK,aAAakD,EAAY,IAAIyY,WAEpD,MAAOhV,GAEH,OADA2B,QAAQC,IAAI5B,GACLrC,EAIX,GAFAA,EAAGvG,EAAI8D,EAAQgtD,WAAW3rD,EAAY,GAAI,IAC1CoB,EAAG6gB,EAAItjB,EAAQgtD,WAAW3rD,EAAY,GAAI,IACtCvD,EAAYK,aAAasE,EAAGvG,GAAGyd,UAAY7b,EAAYK,aAAasE,EAAG6gB,GAAG3J,SAE1ElX,EAAGjB,QAAUiB,EAAGa,EAChBb,EAAGa,EAAI,MAEN,CAEDb,EAAGjB,QAAUwV,KAAKge,OAAOvyB,EAAGa,EAAI,IAAM,GAClCb,EAAGjB,QAAU,IACbiB,EAAGjB,QAAU,GAEjB,IAAIy7B,EAAgBx6B,EAAGa,EAAI,GACvBq1C,EAAMt3C,EAAYgH,MAAM,EAAG,GACZ,IAAf5F,EAAGjB,UACHm3C,EAAIn1C,KAAKxD,EAAQmK,QAAQ1H,EAAGjB,UAC5Bm3C,EAAIn1C,KAAK,MACTm1C,EAAIn1C,KAAK,MACTy5B,GAA8B,EAAbx6B,EAAGjB,QAAc,GAEtC,IAAI++B,EAAS+pB,EAAYK,UAAU6G,EAAIvtD,OAAO00C,IAC9C,IACIl2C,EAAGf,KAAOqsD,EAAY4D,eAAepxB,EAAQ,CAAErkC,EAAG8D,EAAQmK,QAAQ1H,EAAGvG,GAAIonB,EAAGtjB,EAAQmK,QAAQ1H,EAAG6gB,GAAI2Z,cAAeA,IAEtH,MAAOn4B,GACH2B,QAAQC,IAAI5B,GAEhBrC,EAAG63B,KAAOgwB,EAAYK,UAAUgT,GAEpC,OAAOl7D,IAIT,CAACmnD,eAAe,EAAE9K,YAAY,EAAE+K,YAAY,GAAGC,cAAc,GAAGC,UAAU,GAAGuB,cAAc,GAAGC,QAAQ,GAAGoF,cAAc,KAAKiN,GAAG,CAAC,SAASnhE,EAAQf,EAAOD,GAC1J,aACA,IAAI8D,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAsBQA,EAtBJwC,EAAcnD,EAAQ,gBACtBoD,EAASN,EAAa9C,EAAQ,cAC9BqB,EAAcrB,EAAQ,eAUtBohE,EAAY,GAChB,SAASC,EAAa1gE,GAClB,MAAO,CACH2gE,SAAU3gE,EAAMJ,OAAS,EACzBghE,SAAUlgE,EAAYK,aAAaf,IAc3C,SAAS6gE,EAAY16D,GAEjB,IAAIwwD,EAAO8J,EAAUrtD,OAAOjN,GAAMgF,eAClC,IAAKwrD,GAA0B,iBAAX,GAAuBjlD,SAAS0B,OAAOjN,KAAUA,GAAgB,GAARA,GAAaA,GAAQ,IAAK,CAEnG,IADA,IAAInG,EAAQ,IACHb,EAAI,EAAGA,EAAIgH,EAAMhH,IACtBa,GAAS,IAEb22D,EAAO+J,EAAa1gE,GAMxB,OAHK22D,GACDl0D,EAAOoB,WAAW,mBAAoBpB,EAAOkG,iBAAkB,CAAEY,SAAU,OAAQvJ,MAAOmG,IAEvFwwD,EA0CX,SAAStB,EAAYr1D,EAAO8gE,GACxB,IAAIC,EAAWF,EAAYC,GAGvB7nD,GADJjZ,EAAQU,EAAYK,aAAaf,IACZosB,GAAG5pB,EAAYxB,MAChCiY,IACAjZ,EAAQA,EAAM+Z,IAAIvX,EAAY1B,cAGlC,IADA,IAAIkgE,EAAWhhE,EAAMoC,IAAI2+D,EAASH,UAAUvxD,WACrC2xD,EAASphE,OAASmhE,EAASJ,UAC9BK,EAAW,IAAMA,EASrB,OANAA,EAAWA,EAASt6D,MAAM,wBAAwB,GAElD1G,EADYA,EAAMgqB,IAAI+2C,EAASH,UAAUvxD,WACzB,IAAM2xD,EAClB/nD,IACAjZ,EAAQ,IAAMA,GAEXA,EAGX,SAASs1D,EAAWt1D,EAAO8gE,GACP,MAAZA,IACAA,EAAW,IAEf,IAAIC,EAAWF,EAAYC,GAI3B,GAHuB,iBAAZ,GAAyB9gE,EAAM0G,MAAM,iBAC5CjE,EAAOoB,WAAW,wBAAyBpB,EAAOkG,iBAAkB,CAAEC,IAAK,QAAS5I,MAAOA,IAErE,IAAtB+gE,EAASJ,SACT,OAAOjgE,EAAYK,aAAaf,GAGpC,IAAIiZ,EAAsC,MAA1BjZ,EAAMiN,UAAU,EAAG,GAC/BgM,IACAjZ,EAAQA,EAAMiN,UAAU,IAEd,MAAVjN,GACAyC,EAAOoB,WAAW,gBAAiBpB,EAAOkG,iBAAkB,CAAEC,IAAK,QAAS5I,MAAOA,IAGvF,IAAIq+C,EAAQr+C,EAAMsvB,MAAM,KACL,EAAf+uB,EAAMz+C,QACN6C,EAAOoB,WAAW,0BAA2BpB,EAAOkG,iBAAkB,CAAEC,IAAK,QAAS5I,MAAOA,IAEjG,IAAIihE,EAAQ5iB,EAAM,GAAI2iB,EAAW3iB,EAAM,GAYvC,IAXK4iB,IACDA,EAAQ,KAEPD,IACDA,EAAW,KAGXA,EAASphE,OAASmhE,EAASJ,UAC3Bl+D,EAAOoB,WAAW,qBAAsBpB,EAAOoM,cAAe,CAAElL,UAAW,WAAYqrD,MAAO,cAG3FgS,EAASphE,OAASmhE,EAASJ,UAC9BK,GAAY,IAEhB,IAAIE,EAAaxgE,EAAYK,aAAakgE,GACtCE,EAAgBzgE,EAAYK,aAAaigE,GACzCI,EAAOF,EAAWnnD,IAAIgnD,EAASH,UAAW/4D,IAAIs5D,GAIlD,OAHIloD,IACAmoD,EAAMA,EAAIrnD,IAAIvX,EAAY1B,cAEvBsgE,EAnIHphE,EAAQ,IAnBJ,CACR,MACA,OACA,OACA,OACA,QACA,SACA,SAaM0F,QAAQ,SAAUS,GACpB,IAAIwwD,EAAO+J,EAAa1gE,GACxBygE,EAAUt6D,EAAKgF,eAAiBwrD,EAChC8J,EAAUrtD,OAAOujD,EAAKgK,WAAahK,EACnC32D,GAAS,QA0DjB3B,EAAQ62D,QArCR,SAAiBl1D,GACb,IAAIq+C,EAAQjrC,OAAOpT,GAAOsvB,MAAM,MACb,EAAf+uB,EAAMz+C,SAAey+C,EAAM,GAAG33C,MAAM,eAAkB23C,EAAM,KAAOA,EAAM,GAAG33C,MAAM,aAA0B,MAAV1G,GAA2B,OAAVA,IACnHyC,EAAOoB,WAAW,gBAAiBpB,EAAOkG,iBAAkB,CAAEY,SAAU,QAASvJ,MAAOA,IAG5F,IAAIihE,EAAQ5iB,EAAM,GACdplC,EAAW,GAMf,IAL8B,MAA1BgoD,EAAMh0D,UAAU,EAAG,KACnBgM,EAAW,IACXgoD,EAAQA,EAAMh0D,UAAU,IAGK,MAA1Bg0D,EAAMh0D,UAAU,EAAG,IACtBg0D,EAAQA,EAAMh0D,UAAU,GAEd,KAAVg0D,IACAA,EAAQ,KAEZ,IAAIxxD,EAAS,GACQ,IAAjB4uC,EAAMz+C,SACN6P,EAAS,KAAO4uC,EAAM,IAAM,MAGhC,IADA,IAAIgjB,EAAY,GACTJ,EAAMrhE,QAAQ,CACjB,GAAIqhE,EAAMrhE,QAAU,EAAG,CACnByhE,EAAUzG,QAAQqG,GAClB,MAGA,IAAIh7D,EAAQg7D,EAAMrhE,OAAS,EAC3ByhE,EAAUzG,QAAQqG,EAAMh0D,UAAUhH,IAClCg7D,EAAQA,EAAMh0D,UAAU,EAAGhH,GAGnC,OAAOgT,EAAWooD,EAAUp5D,KAAK,KAAOwH,GAwB5CpR,EAAQg3D,YAAcA,EAgDtBh3D,EAAQi3D,WAAaA,EAIrBj3D,EAAQ82D,YAHR,SAAqBiM,GACjB,OAAO/L,EAAY+L,EAAK,KAM5B/iE,EAAQ+2D,WAHR,SAAoBkM,GAChB,OAAOhM,EAAWgM,EAAO,MAI3B,CAAC9U,eAAe,EAAE9K,YAAY,EAAEgL,cAAc,KAAK6U,GAAG,CAAC,SAASliE,EAAQf,EAAOD,GACjF,aACAyB,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAGIkyD,EACOA,EAJP1vD,EAAcnD,EAAQ,gBACtBuD,EAAUvD,EAAQ,WAYtB,SAASgnD,EAAY7sC,EAAKgoD,QACT,IAATA,IAAmBA,EAAOtP,EAAyB9hC,SACnDoxC,GAAQtP,EAAyB9hC,UACjC5W,EAAMA,EAAIi5C,UAAU+O,IAGxB,IADA,IAAIl/D,EAAS,GACJnD,EAAI,EAAGA,EAAIqa,EAAI5Z,OAAQT,IAAK,CACjC,IAAIC,EAAIoa,EAAIxG,WAAW7T,GACvB,GAAIC,EAAI,IACJkD,EAAO8D,KAAKhH,QAEX,GAAIA,EAAI,KACTkD,EAAO8D,KAAMhH,GAAK,EAAK,KACvBkD,EAAO8D,KAAU,GAAJhH,EAAY,UAExB,GAAoB,QAAX,MAAJA,GAAuB,CAC7BD,IACA,IAAIi5B,EAAK5e,EAAIxG,WAAW7T,GACxB,GAAIA,GAAKqa,EAAI5Z,QAA4B,QAAZ,MAALw4B,GACpB,MAAM,IAAI54B,MAAM,wBAGpBJ,EAAI,QAAgB,KAAJA,IAAe,KAAY,KAALg5B,GACtC91B,EAAO8D,KAAMhH,GAAK,GAAM,KACxBkD,EAAO8D,KAAOhH,GAAK,GAAM,GAAQ,KACjCkD,EAAO8D,KAAOhH,GAAK,EAAK,GAAQ,KAChCkD,EAAO8D,KAAU,GAAJhH,EAAY,UAGzBkD,EAAO8D,KAAMhH,GAAK,GAAM,KACxBkD,EAAO8D,KAAOhH,GAAK,EAAK,GAAQ,KAChCkD,EAAO8D,KAAU,GAAJhH,EAAY,KAGjC,OAAOwD,EAAQmnD,SAASznD,GAK5B,SAAS8+C,EAAajuC,EAAOsuD,GACzBtuD,EAAQvQ,EAAQmnD,SAAS52C,GAIzB,IAHA,IAAI7Q,EAAS,GACTnD,EAAI,EAEDA,EAAIgU,EAAMvT,QAAQ,CACrB,IAAIR,EAAI+T,EAAMhU,KAEd,GAAIC,GAAK,GAAM,EAAf,CAKA,IAAIsiE,EAAc,KACdC,EAAe,KAEnB,GAAmB,MAAV,IAAJviE,GACDsiE,EAAc,EACdC,EAAe,SAGd,GAAmB,MAAV,IAAJviE,GACNsiE,EAAc,EACdC,EAAe,SAGd,CAAA,GAAmB,MAAV,IAAJviE,GAIL,CACD,IAAKqiE,EAAc,CACf,GAAmB,MAAV,IAAJriE,GACD,MAAM,IAAII,MAAM,4DAEpB,MAAM,IAAIA,MAAM,8CAEpB,SAVAkiE,EAAc,EACdC,EAAe,MAYnB,GAAIxiE,EAAIuiE,EAAcvuD,EAAMvT,OAA5B,CACI,IAAK6hE,EACD,MAAM,IAAIjiE,MAAM,yCAGpB,KAAOL,EAAIgU,EAAMvT,QACTuT,EAAMhU,IAAM,GAAM,EADDA,UAL7B,CAcA,IADA,IAAIge,EAAM/d,GAAM,GAAM,EAAIsiE,EAAc,GAAM,EACrC1rD,EAAI,EAAGA,EAAI0rD,EAAa1rD,IAAK,CAClC,IAAI4rD,EAAWzuD,EAAMhU,GAErB,GAAyB,MAAT,IAAXyiE,GAA0B,CAC3BzkD,EAAM,KACN,MAGJA,EAAOA,GAAO,EAAiB,GAAXykD,EACpBziE,IAEJ,GAAY,OAARge,EAOJ,GAAIA,GAAOwkD,GACP,IAAKF,EACD,MAAM,IAAIjiE,MAAM,6CAKxB,GAAU,QAAN2d,GACA,IAAKskD,EACD,MAAM,IAAIjiE,MAAM,iDAKxB,GAAW,OAAP2d,GAAiBA,GAAO,OACxB,IAAKskD,EACD,MAAM,IAAIjiE,MAAM,qDAIpB2d,GAAO,MACP7a,GAAU8Q,OAAOC,aAAa8J,IAGlCA,GAAO,MACP7a,GAAU8Q,OAAOC,aAAqC,OAAtB8J,GAAO,GAAM,MAAiC,OAAT,KAANA,UA/B3D,IAAKskD,EACD,MAAM,IAAIjiE,MAAM,+DA1DpB8C,GAAU8Q,OAAOC,aAAajU,GA0FtC,OAAOkD,GAnJA4vD,EAMRA,EAA2B7zD,EAAQ6zD,2BAA6B7zD,EAAQ6zD,yBAA2B,KALhE,QAAI,GACtCA,EAA8B,IAAI,MAClCA,EAA8B,IAAI,MAClCA,EAA+B,KAAI,OACnCA,EAA+B,KAAI,OAwCvC7zD,EAAQgoD,YAAcA,EAwGtBhoD,EAAQ+iD,aAAeA,EAWvB/iD,EAAQ02D,oBAVR,SAA6BjiD,GAEzB,IAAIK,EAAQkzC,EAAYvzC,GAExB,GAAmB,GAAfK,EAAMvT,OACN,MAAM,IAAIJ,MAAM,6CAGpB,OAAOoD,EAAQmK,QAAQnK,EAAQsJ,OAAO,CAACiH,EAAO3Q,EAAY5B,WAAWqK,MAAM,EAAG,MAoBlF5M,EAAQ22D,mBAjBR,SAA4B7hD,GACxB,IAAI9O,EAAOzB,EAAQmnD,SAAS52C,GAE5B,GAAoB,KAAhB9O,EAAKzE,OACL,MAAM,IAAIJ,MAAM,uCAEpB,GAAiB,IAAb6E,EAAK,IACL,MAAM,IAAI7E,MAAM,gDAIpB,IADA,IAAII,EAAS,GACe,IAArByE,EAAKzE,EAAS,IACjBA,IAGJ,OAAOwhD,EAAa/8C,EAAK4G,MAAM,EAAGrL,MAIpC,CAAC4sD,eAAe,EAAEG,UAAU,KAAKkV,GAAG,CAAC,SAASxiE,EAAQf,EAAOD,GAC/D,aACA,IAAI8D,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAI8hE,EAAmBziE,EAAQ,kBAC3B0iE,EAAW1iE,EAAQ,YACnB86C,EAAS96C,EAAQ,UACjBoD,EAASN,EAAa9C,EAAQ,cA8HlChB,EAAQ0kD,UA7HR,SAAmBwD,EAAY6R,EAAM4J,GACjC,IAAIC,EAAU,GACVnf,EAAM,KACNvD,EAAU,KACd,GAA4B,iBAAjB,EACPuD,EAAMyD,OAEL,GAA4B,iBAAjB,EAA2B,CAQvC,GAPsB,MAAlBA,EAAWzD,KACXrgD,EAAOoB,WAAW,cAAepB,EAAOiL,iBAAkB,CAAE9E,IAAK,QAErEk6C,EAAMyD,EAAWzD,IACmB,iBAAxByD,EAAkB,SAAuC,EAArBA,EAAWhH,UACvDA,EAAUgH,EAAWhH,SAErBgH,EAAW0b,QACX,IAAK,IAAI18D,KAAOghD,EAAW0b,QACvBA,EAAQ18D,EAAI4F,eAAiB,CAAE5F,IAAKA,EAAKvF,MAAOoT,OAAOmzC,EAAW0b,QAAQ18D,KAGlF,GAAuB,MAAnBghD,EAAW2b,MAAuC,MAAvB3b,EAAW1T,SAAkB,CAC5B,WAAxBiQ,EAAI71C,UAAU,EAAG,KAAgD,IAA7Bs5C,EAAW4b,eAC/C1/D,EAAOoB,WAAW,mDAAoDpB,EAAOkG,iBAAkB,CAAEC,IAAK,MAAOk6C,IAAKA,EAAKof,KAAM3b,EAAW2b,KAAMrvB,SAAU,eAE5J,IAAIuvB,EAAgB7b,EAAW2b,KAAO,IAAM3b,EAAW1T,SACvDovB,EAAuB,cAAI,CACvB18D,IAAK,gBACLvF,MAAO,SAAW+hE,EAASl7D,OAAOszC,EAAOkM,YAAY+b,MAIjE,OAAO,IAAI7+D,QAAQ,SAAUC,EAAS0/C,GAClC,IAAIsD,EAAU,IAAIsb,EAAiBnoB,eAC/B0oB,EAAQ,KACZA,EAAQh2D,WAAW,WACF,MAATg2D,IAGJA,EAAQ,KACRnf,EAAO,IAAI1jD,MAAM,YACjB6M,WAAW,WACPm6C,EAAQ8b,SACT,KACJ/iB,GACH,IAAIgjB,EAAgB,WACH,MAATF,IAGJG,aAAaH,GACbA,EAAQ,OAERjK,GACA5R,EAAQic,KAAK,OAAQ3f,GAAK,GAC1Bmf,EAAQ,gBAAkB,CAAE18D,IAAK,eAAgBvF,MAAO,qBAGxDwmD,EAAQic,KAAK,MAAO3f,GAAK,GAE7BhjD,OAAO+I,KAAKo5D,GAASv8D,QAAQ,SAAUH,GACnC,IAAIm9D,EAAST,EAAQ18D,GACrBihD,EAAQmc,iBAAiBD,EAAOn9D,IAAKm9D,EAAO1iE,SAEhDwmD,EAAQvP,mBAAqB,WACzB,GAA2B,IAAvBuP,EAAQoc,WAAZ,CAGA,GAAsB,KAAlBpc,EAAQxJ,OAAe,CACvBulB,IAEA,IAAI76D,EAAQ,IAAIlI,MAAM,sBAAwBgnD,EAAQxJ,QAGtD,OAFAt1C,EAAMm7D,WAAarc,EAAQxJ,YAC3BkG,EAAOx7C,GAGX,IAAIpF,EAAS,KACb,IACIA,EAASqL,KAAKC,MAAM44C,EAAQxD,cAEhC,MAAOt7C,GACH66D,IAEA,IAAIO,EAAY,IAAItjE,MAAM,yBAK1B,OAJAsjE,EAAUC,cAAgBr7D,EAC1Bo7D,EAAU9f,aAAewD,EAAQxD,aACjC8f,EAAUhgB,IAAMA,OAChBI,EAAO4f,GAGX,GAAId,EACA,IACI1/D,EAAS0/D,EAAY1/D,GAEzB,MAAOoF,GAMH,OALA66D,IACA76D,EAAMo7C,IAAMA,EACZp7C,EAAMs7D,KAAO5K,EACb1wD,EAAMs7C,aAAewD,EAAQxD,kBAC7BE,EAAOx7C,GAIf66D,IACA/+D,EAAQlB,KAEZkkD,EAAQyc,QAAU,SAAUv7D,GACxB66D,IACArf,EAAOx7C,IAEX,IACQ0wD,EACA5R,EAAQP,KAAKmS,GAGb5R,EAAQP,OAGhB,MAAOv+C,GACH66D,IAEA,IAAIW,EAAkB,IAAI1jE,MAAM,oBAChC0jE,EAAgBx7D,MAAQA,EACxBw7C,EAAOggB,OAyEnB7kE,EAAQmhD,KApER,SAAcyY,EAAM76B,GAahB,OAZKA,IACDA,EAAU,IAEO,MAAjBA,EAAQxF,QACRwF,EAAQxF,MAAQ,GAEG,MAAnBwF,EAAQ+lC,UACR/lC,EAAQ+lC,QAAU,KAEE,MAApB/lC,EAAQgmC,WACRhmC,EAAQgmC,SAAW,KAEhB,IAAI7/D,QAAQ,SAAUC,EAAS0/C,GAClC,IAAImf,EAAQ,KACRgB,GAAO,EAEPC,EAAS,WACT,OAAID,IAGJA,GAAO,EACHhB,GACAG,aAAaH,IAEV,IAEPjlC,EAAQmiB,UACR8iB,EAAQh2D,WAAW,WACXi3D,KACApgB,EAAO,IAAI1jD,MAAM,aAEtB49B,EAAQmiB,UAEf,IAAIgkB,EAAU,GACd,SAASlpB,IACL,OAAO4d,IAAOr0D,KAAK,SAAUtB,GAEzB,QAAes7B,IAAXt7B,EACIghE,KACA9/D,EAAQlB,QAGX,GAAI86B,EAAQqiB,UACbriB,EAAQqiB,UAAUl0C,KAAK,QAAS8uC,QAG/B,IAAKgpB,EAAM,CACZE,IACA,IAAIhkB,EAAUniB,EAAQgmC,SAAW1xD,SAAS0B,OAAOwG,KAAKw9B,SAAWx9B,KAAKwB,IAAI,EAAGmoD,KACzEhkB,EAAUniB,EAAQxF,QAClB2nB,EAAUniB,EAAQxF,OAElB2nB,EAAUniB,EAAQ+lC,UAClB5jB,EAAUniB,EAAQ+lC,SAEtB92D,WAAWguC,EAAOkF,GAEtB,OAAO,MACR,SAAU73C,GACL47D,KACApgB,EAAOx7C,KAInB2yC,OAKN,CAACqH,YAAY,EAAEiU,WAAW,GAAG9I,SAAS,GAAG2W,eAAiB,KAAKC,GAAG,CAAC,SAASpkE,EAAQf,EAAOD,IAC7F,SAAWK,GACX,aACAoB,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IAEtD,IACI+5C,EAAS16C,EAAQ,iBACjBc,EAAed,EAAQ,uBAY3BhB,EAAQg8C,MAXR,SAAeiY,GAEX,IADA,IAAIp5C,EAAQ,GACH/Z,EAAI,EAAGA,EAAI,KAAMA,IAAK,CAC3B,IAAI8b,EAAOq3C,EAASY,QAAQ/zD,GAC5B,GAAIA,IAAMmzD,EAASE,aAAav3C,GAC5B,MAAO,KAEX/B,EAAM9S,KAAK6U,GAEf,OAAO8+B,EAAO0M,GAAGvtC,EAAMjR,KAAK,MAAQ,OAGxC,IAAIwtD,EAA0B,WAC1B,SAASA,EAASiO,GACdvjE,EAAakD,eAAezE,KAAM,SAAU8kE,GAUhD,OAPAjO,EAASxzD,UAAUqtB,MAAQ,SAAU8hC,GACjC,OAAOA,EAASjmD,cAAcmkB,MAAM,QAGxCmmC,EAASxzD,UAAUgG,KAAO,SAAUiR,GAChC,OAAOA,EAAMjR,KAAK,MAEfwtD,EAZkB,GAc7Bp3D,EAAQo3D,SAAWA,EAoBnBp3D,EAAQslE,SAnBR,SAAkBC,EAAMz9D,GACfA,IACDA,EAAOy9D,EAAKF,WAmBjB/jE,KAAKf,KAAuB,oBAAXF,OAAyBA,OAAyB,oBAATC,KAAuBA,KAAyB,oBAAXF,OAAyBA,OAAS,KAClI,CAACqjD,gBAAgB,GAAGjI,sBAAsB,KAAKgqB,GAAG,CAAC,SAASxkE,EAAQf,EAAOD,GAC7E,aACA,IACQkD,EADJC,EAAa5C,MAAQA,KAAK4C,YACtBD,EAAgBzB,OAAO2B,gBACtB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAInC,KAAKmC,EAAOA,EAAEC,eAAepC,KAAIkC,EAAElC,GAAKmC,EAAEnC,KAClE,SAAUkC,EAAGC,GAEhB,SAASE,IAAOnD,KAAKoD,YAAcJ,EADnCL,EAAcK,EAAGC,GAEjBD,EAAEK,UAAkB,OAANJ,EAAa/B,OAAOoC,OAAOL,IAAME,EAAGE,UAAYJ,EAAEI,UAAW,IAAIF,KAGnFI,EAAgBvD,MAAQA,KAAKuD,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAStC,OAAOgC,eAAenC,KAAKyC,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAgB,QAAIF,EACbE,GAEXxC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAI4C,EAAUvD,EAAQ,iBAClB06C,EAAS16C,EAAQ,gBACjBmgE,EAAWngE,EAAQ,kBACnBu0D,EAAgBv0D,EAAQ,uBACxB6tD,EAAc7tD,EAAQ,qBACtBc,EAAed,EAAQ,sBACvB60D,EAAiB70D,EAAQ,wBACzBykE,EAAgB3hE,EAAa9C,EAAQ,2BACrCq1D,EAAgBr1D,EAAQ,uBACxB66C,EAAgB76C,EAAQ,uBAExB0D,EAAoB1D,EAAQ,qBAC5ByD,EAAsBzD,EAAQ,iCAC9BoD,EAASN,EAAa9C,EAAQ,aAC9B4Q,EAAwB,SAAUhN,GAElC,SAASgN,EAAOihD,EAAY/tD,GACxB,IAAIC,EAAQH,EAAOtD,KAAKf,OAASA,KAUjC,OATA6D,EAAO6F,SAASlF,EAAO6M,GAEnBykD,EAAcC,WAAWoJ,aAAa7M,GACtC/wD,EAAakD,eAAeD,EAAO,aAAc8tD,GAGjD/wD,EAAakD,eAAeD,EAAO,aAAc,IAAIsxD,EAAcC,WAAWzD,IAElF/wD,EAAakD,eAAeD,EAAO,WAAYD,GACxCC,EAkJX,OA9JA5B,EAAUyO,EAAQhN,GAclBnD,OAAOC,eAAekQ,EAAOhO,UAAW,UAAW,CAC/Cu7B,IAAK,WAAc,OAAO5+B,KAAKm+D,WAAW75D,SAC1Cq6B,YAAY,EACZD,cAAc,IAElBx9B,OAAOC,eAAekQ,EAAOhO,UAAW,WAAY,CAChDu7B,IAAK,WAAc,OAAO5+B,KAAKm+D,WAAW3L,UAC1C7zB,YAAY,EACZD,cAAc,IAElBx9B,OAAOC,eAAekQ,EAAOhO,UAAW,OAAQ,CAC5Cu7B,IAAK,WAAc,OAAO5+B,KAAKm+D,WAAW3L,UAC1C7zB,YAAY,EACZD,cAAc,IAElBx9B,OAAOC,eAAekQ,EAAOhO,UAAW,aAAc,CAClDu7B,IAAK,WAAc,OAAO5+B,KAAKm+D,WAAW7L,YAC1C3zB,YAAY,EACZD,cAAc,IAKlBrtB,EAAOhO,UAAUiC,QAAU,SAAUf,GAIjC,OAHML,EAAoB2F,SAASC,WAAWvF,IAC1CV,EAAOoB,WAAW,mBAAoBpB,EAAOkG,iBAAkB,CAAEY,SAAU,WAAYvJ,MAAOmD,IAE3F,IAAI8M,EAAOrR,KAAKm+D,WAAY55D,IAEvC8M,EAAOhO,UAAUqB,WAAa,WAC1B,OAAOC,QAAQC,QAAQ5E,KAAKsE,UAEhC+M,EAAOhO,UAAUo9B,KAAO,SAAUp7B,GAC9B,IAAIb,EAAQxE,KACZ,OAAOuB,EAAay/C,kBAAkB37C,GAAaL,KAAK,SAAUyB,GAC9D,IAAI0+D,EAAQ7pB,EAAc4a,UAAUzvD,GAChCiC,EAAYlE,EAAM25D,WAAW0C,WAAWvS,EAAYK,UAAUwW,IAClE,OAAOxgE,QAAQC,QAAQ02C,EAAc4a,UAAUzvD,EAAIiC,OAG3D2I,EAAOhO,UAAU8B,YAAc,SAAUL,GACrC,OAAOH,QAAQC,QAAQZ,EAAQmtD,cAAcnxD,KAAKm+D,WAAW0C,WAAW1lB,EAAOuW,YAAY5sD,OAE/FuM,EAAOhO,UAAUy8C,WAAa,SAAUzD,GACpC,IAAKr8C,KAAKuE,SACN,MAAM,IAAI3D,MAAM,oBAEpB,OAAOZ,KAAKuE,SAASu7C,WAAW9/C,KAAKsE,QAAS+3C,IAElDhrC,EAAOhO,UAAU69C,oBAAsB,SAAU7E,GAC7C,IAAKr8C,KAAKuE,SACN,MAAM,IAAI3D,MAAM,oBAEpB,OAAOZ,KAAKuE,SAAS28C,oBAAoBlhD,KAAKsE,QAAS+3C,IAE3DhrC,EAAOhO,UAAU+B,gBAAkB,SAAUC,GACzC,IAAKrF,KAAKuE,SACN,MAAM,IAAI3D,MAAM,oBAEpB,IAAKyE,GAAwC,iBAAlB,EACvB,MAAM,IAAIzE,MAAM,8BAEpB,IAAI6F,EAAKlF,EAAaqF,YAAYvB,GAiBlC,OAhBa,MAAToB,EAAGX,KACHW,EAAGX,GAAK9F,KAAKuE,SAASoD,YAAYlB,EAAGX,KAEtB,MAAfW,EAAGd,WACHc,EAAGf,KAAO1F,KAAK0E,aACf+B,EAAGd,SAAW3F,KAAKuE,SAASwE,YAAYtC,IAEzB,MAAfA,EAAGb,WACHa,EAAGb,SAAW5F,KAAKuE,SAASw8C,eAEhB,MAAZt6C,EAAGZ,QACHY,EAAGZ,MAAQ7F,KAAKkhD,uBAEF,MAAdz6C,EAAGjB,UACHiB,EAAGjB,QAAUxF,KAAKuE,SAASy6C,aAAah6C,KAAK,SAAU6M,GAAW,OAAOA,EAAQrM,WAE9ExF,KAAKuE,SAASa,gBAAgBpF,KAAKygC,KAAKh6B,KAEnD4K,EAAOhO,UAAUoT,QAAU,SAAUw9B,EAAUzV,EAAS4/B,GAKpD,GAJyB,mBAAd,GAA6BA,IACpCA,EAAmB5/B,EACnBA,EAAU,IAEV4/B,GAAkD,mBAAvB,EAC3B,MAAM,IAAIx9D,MAAM,oBAYpB,OAVK49B,IACDA,EAAU,IAEVx+B,KAAKwyD,YAELh0B,EAAUj9B,EAAaqF,YAAY43B,IAE3Bg0B,SAAWxyD,KAAKwyD,SACxBh0B,EAAQ6pB,KAAOroD,KAAKqoD,MAEjB6c,EAAczuD,QAAQzW,KAAKsyD,WAAYre,EAAUzV,EAAS4/B,IAKrE/sD,EAAO+zD,aAAe,SAAU5mC,GAC5B,IAAI2B,EAAUm1B,EAAeC,YAAY,IACpC/2B,IACDA,EAAU,IAEVA,EAAQ6mC,eACRllC,EAAUn8B,EAAQmnD,SAASmD,EAAYK,UAAU3qD,EAAQsJ,OAAO,CAAC6yB,EAAS3B,EAAQ6mC,gBAAgBh3D,UAAU,EAAG,MAEnH,IAAImkD,EAAWoO,EAAS1M,kBAAkB/zB,EAAS3B,EAAQsmC,QAC3D,OAAOzzD,EAAO2iD,aAAaxB,EAAUh0B,EAAQ6pB,KAAM7pB,EAAQsmC,SAE/DzzD,EAAOi0D,kBAAoB,SAAU9L,EAAMvlB,EAAUmqB,GACjD,GAAIpJ,EAAcuE,kBAAkBC,GAChC,IACQ4E,GACAA,EAAiB,GAErB,IAAI9L,EAAa4S,EAAcpH,iBAAiBtE,EAAMvlB,GAItD,OAHImqB,GACAA,EAAiB,GAEdz5D,QAAQC,QAAQ,IAAIyM,EAAOihD,IAEtC,MAAOxpD,GACH,OAAOnE,QAAQ2/C,OAAOx7C,QAGzB,GAAIksD,EAAc2E,sBAAsBH,GACzC,OAAO0L,EAAcvuD,QAAQ6iD,EAAMvlB,EAAUmqB,GAAkBp5D,KAAK,SAAUm5D,GAC1E,OAAO,IAAI9sD,EAAO8sD,KAG1B,OAAOx5D,QAAQ2/C,OAAO,wBAE1BjzC,EAAO2iD,aAAe,SAAUxB,EAAUnK,EAAMqL,GAI5C,OAHKrL,IACDA,EAAOuY,EAASxO,aAEb,IAAI/gD,EAAOuvD,EAAS5M,aAAaxB,EAAUkB,GAAUT,WAAW5K,KAEpEh3C,EA/JgB,CAgKzBlN,EAAkB3C,QACpB/B,EAAQ4R,OAASA,GAEf,CAAClC,oBAAoB,EAAEE,WAAW,EAAEC,gCAAgC,GAAGG,gBAAgB,GAAG81D,eAAe,GAAGC,iBAAiB,GAAGC,sBAAsB,GAAGC,oBAAoB,GAAG9jE,qBAAqB,GAAG+jE,uBAAuB,GAAGC,yBAAyB,GAAGC,sBAAsB,GAAGC,sBAAsB,KAAKC,GAAG,CAAC,SAAStlE,EAAQf,EAAOD,GAChV,aACAyB,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IACI4kE,EADYvlE,EAAQ,wBACLkzD,OACnBl0D,EAAQumE,GAAKA,GAEX,CAACxR,uBAAuB,KAAKyR,GAAG,CAAC,SAASxlE,EAAQf,EAAOD,GAC3D,aACA,IACQkD,EADJC,EAAa5C,MAAQA,KAAK4C,YACtBD,EAAgBzB,OAAO2B,gBACtB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAInC,KAAKmC,EAAOA,EAAEC,eAAepC,KAAIkC,EAAElC,GAAKmC,EAAEnC,KAClE,SAAUkC,EAAGC,GAEhB,SAASE,IAAOnD,KAAKoD,YAAcJ,EADnCL,EAAcK,EAAGC,GAEjBD,EAAEK,UAAkB,OAANJ,EAAa/B,OAAOoC,OAAOL,IAAME,EAAGE,UAAYJ,EAAEI,UAAW,IAAIF,KAGvFjC,OAAOC,eAAe1B,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAIw1D,EAAan2D,EAAQ,qBACrB6Z,EAAQ,+zVACRo5C,EAAW,KACf,SAASwS,EAAUlB,GACf,GAAgB,MAAZtR,IAGJA,EAAWp5C,EAAMqB,QAAQ,WAAY,OAAOpP,cAAc8B,UAAU,GAAGqiB,MAAM,KAC9C,uEAA3BkmC,EAAWnb,MAAMupB,IAEjB,MADAtR,EAAW,KACL,IAAI9yD,MAAM,0CAGxB,IAeI+yD,EAAS,IAfe,SAAUtvD,GAElC,SAAS8hE,IACL,OAAO9hE,EAAOtD,KAAKf,KAAM,OAASA,KAUtC,OAZA4C,EAAUujE,EAAQ9hE,GAIlB8hE,EAAO9iE,UAAUixD,QAAU,SAAUjtD,GAEjC,OADA6+D,EAAUlmE,MACH0zD,EAASrsD,IAEpB8+D,EAAO9iE,UAAUuwD,aAAe,SAAUv3C,GAEtC,OADA6pD,EAAUlmE,MACH0zD,EAAS5nD,QAAQuQ,IAErB8pD,EAbgB,CAczBvP,EAAWC,WAEbp3D,EAAQk0D,OAASA,EACjBiD,EAAWmO,SAASpR,IAElB,CAACyS,oBAAoB,MAAM,GAAG,CAAC,GA7ggB6U,CA6ggBzU","file":"ethers.min.js","sourcesContent":["(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.ethers = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 0) {\n errors.throwError('call exception', errors.CALL_EXCEPTION, {\n address: contract.address,\n method: method.signature,\n args: params\n });\n }\n throw error;\n }\n });\n }\n else if (method.type === 'transaction') {\n // Only computing the transaction estimate\n if (estimateOnly) {\n if (!contract.provider) {\n errors.throwError('estimate gas require a provider or a signer with a provider', errors.UNSUPPORTED_OPERATION, { operation: 'estimateGas' });\n }\n if (tx.from == null && contract.signer) {\n tx.from = contract.signer.getAddress();\n }\n return contract.provider.estimateGas(tx);\n }\n if (tx.gasLimit == null && method.gas != null) {\n tx.gasLimit = bignumber_1.bigNumberify(method.gas).add(21000);\n }\n if (!contract.signer) {\n errors.throwError('sending a transaction require a signer', errors.UNSUPPORTED_OPERATION, { operation: 'sendTransaction' });\n }\n // Make sure they aren't overriding something they shouldn't\n if (tx.from != null) {\n errors.throwError('cannot override from in a transaction', errors.UNSUPPORTED_OPERATION, { operation: 'sendTransaction' });\n }\n return contract.signer.sendTransaction(tx);\n }\n throw new Error('invalid type - ' + method.type);\n return null;\n });\n };\n}\nfunction getEventTag(filter) {\n if (filter.address && (filter.topics == null || filter.topics.length === 0)) {\n return '*';\n }\n return (filter.address || '*') + '@' + (filter.topics ? filter.topics.join(':') : '');\n}\nvar Contract = /** @class */ (function () {\n // https://github.com/Microsoft/TypeScript/issues/5453\n // Once this issue is resolved (there are open PR) we can do this nicer\n // by making addressOrName default to null for 2 operand calls. :)\n function Contract(addressOrName, contractInterface, signerOrProvider) {\n var _this = this;\n errors.checkNew(this, Contract);\n // @TODO: Maybe still check the addressOrName looks like a valid address or name?\n //address = getAddress(address);\n if (interface_1.Interface.isInterface(contractInterface)) {\n properties_1.defineReadOnly(this, 'interface', contractInterface);\n }\n else {\n properties_1.defineReadOnly(this, 'interface', new interface_1.Interface(contractInterface));\n }\n if (abstract_signer_1.Signer.isSigner(signerOrProvider)) {\n properties_1.defineReadOnly(this, 'provider', signerOrProvider.provider);\n properties_1.defineReadOnly(this, 'signer', signerOrProvider);\n }\n else if (abstract_provider_1.Provider.isProvider(signerOrProvider)) {\n properties_1.defineReadOnly(this, 'provider', signerOrProvider);\n properties_1.defineReadOnly(this, 'signer', null);\n }\n else {\n errors.throwError('invalid signer or provider', errors.INVALID_ARGUMENT, { arg: 'signerOrProvider', value: signerOrProvider });\n }\n properties_1.defineReadOnly(this, 'estimate', {});\n properties_1.defineReadOnly(this, 'functions', {});\n properties_1.defineReadOnly(this, 'filters', {});\n Object.keys(this.interface.events).forEach(function (eventName) {\n var event = _this.interface.events[eventName];\n properties_1.defineReadOnly(_this.filters, eventName, function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return {\n address: _this.address,\n topics: event.encodeTopics(args)\n };\n });\n });\n this._events = [];\n properties_1.defineReadOnly(this, 'address', addressOrName);\n if (this.provider) {\n properties_1.defineReadOnly(this, 'addressPromise', this.provider.resolveName(addressOrName).then(function (address) {\n if (address == null) {\n throw new Error('name not found');\n }\n return address;\n }).catch(function (error) {\n console.log('ERROR: Cannot find Contract - ' + addressOrName);\n throw error;\n }));\n }\n else {\n try {\n properties_1.defineReadOnly(this, 'addressPromise', Promise.resolve(address_1.getAddress(addressOrName)));\n }\n catch (error) {\n // Without a provider, we cannot use ENS names\n errors.throwError('provider is required to use non-address contract address', errors.INVALID_ARGUMENT, { argument: 'addressOrName', value: addressOrName });\n }\n }\n Object.keys(this.interface.functions).forEach(function (name) {\n var run = runMethod(_this, name, false);\n if (_this[name] == null) {\n properties_1.defineReadOnly(_this, name, run);\n }\n else {\n console.log('WARNING: Multiple definitions for ' + name);\n }\n if (_this.functions[name] == null) {\n properties_1.defineReadOnly(_this.functions, name, run);\n properties_1.defineReadOnly(_this.estimate, name, runMethod(_this, name, true));\n }\n });\n }\n // @TODO: Allow timeout?\n Contract.prototype.deployed = function () {\n var _this = this;\n if (!this._deployed) {\n // If we were just deployed, we know the transaction we should occur in\n if (this.deployTransaction) {\n this._deployed = this.deployTransaction.wait().then(function () {\n return _this;\n });\n }\n else {\n // @TODO: Once we allow a timeout to be passed in, we will wait\n // up to that many blocks for getCode\n // Otherwise, poll for our code to be deployed\n this._deployed = this.provider.getCode(this.address).then(function (code) {\n if (code === '0x') {\n errors.throwError('contract not deployed', errors.UNSUPPORTED_OPERATION, {\n contractAddress: _this.address,\n operation: 'getDeployed'\n });\n }\n return _this;\n });\n }\n }\n return this._deployed;\n };\n // @TODO:\n // estimateFallback(overrides?: TransactionRequest): Promise\n // @TODO:\n // estimateDeploy(bytecode: string, ...args): Promise\n Contract.prototype.fallback = function (overrides) {\n var _this = this;\n if (!this.signer) {\n errors.throwError('sending a transaction require a signer', errors.UNSUPPORTED_OPERATION, { operation: 'sendTransaction(fallback)' });\n }\n var tx = properties_1.shallowCopy(overrides || {});\n ['from', 'to'].forEach(function (key) {\n if (tx[key] == null) {\n return;\n }\n errors.throwError('cannot override ' + key, errors.UNSUPPORTED_OPERATION, { operation: key });\n });\n tx.to = this.addressPromise;\n return this.deployed().then(function () {\n return _this.signer.sendTransaction(tx);\n });\n };\n // Reconnect to a different signer or provider\n Contract.prototype.connect = function (signerOrProvider) {\n if (typeof (signerOrProvider) === 'string') {\n signerOrProvider = new VoidSigner(signerOrProvider, this.provider);\n }\n var contract = new Contract(this.address, this.interface, signerOrProvider);\n if (this.deployTransaction) {\n properties_1.defineReadOnly(contract, 'deployTransaction', this.deployTransaction);\n }\n return contract;\n };\n // Re-attach to a different on=chain instance of this contract\n Contract.prototype.attach = function (addressOrName) {\n return new Contract(addressOrName, this.interface, this.signer || this.provider);\n };\n Contract.isIndexed = function (value) {\n return interface_1.Interface.isIndexed(value);\n };\n Contract.prototype._getEventFilter = function (eventName) {\n var _this = this;\n if (typeof (eventName) === 'string') {\n // Listen for any event\n if (eventName === '*') {\n return {\n prepareEvent: function (e) {\n var parsed = _this.interface.parseLog(e);\n if (parsed) {\n e.args = parsed.values;\n e.decode = parsed.decode;\n e.event = parsed.name;\n e.eventSignature = parsed.signature;\n }\n return [e];\n },\n eventTag: '*',\n filter: { address: this.address },\n };\n }\n // Normalize the eventName\n if (eventName.indexOf('(') !== -1) {\n eventName = abi_coder_1.formatSignature(abi_coder_1.parseSignature('event ' + eventName));\n }\n var event_1 = this.interface.events[eventName];\n if (!event_1) {\n errors.throwError('unknown event - ' + eventName, errors.INVALID_ARGUMENT, { argumnet: 'eventName', value: eventName });\n }\n var filter_1 = {\n address: this.address,\n topics: [event_1.topic]\n };\n return {\n prepareEvent: function (e) {\n var args = event_1.decode(e.data, e.topics);\n e.args = args;\n var result = Array.prototype.slice.call(args);\n result.push(e);\n return result;\n },\n event: event_1,\n eventTag: getEventTag(filter_1),\n filter: filter_1\n };\n }\n var filter = {\n address: this.address\n };\n // Find the matching event in the ABI; if none, we still allow filtering\n // since it may be a filter for an otherwise unknown event\n var event = null;\n if (eventName.topics && eventName.topics[0]) {\n filter.topics = eventName.topics;\n for (var name_1 in this.interface.events) {\n if (name_1.indexOf('(') === -1) {\n continue;\n }\n var e = this.interface.events[name_1];\n if (e.topic === eventName.topics[0].toLowerCase()) {\n event = e;\n break;\n }\n }\n }\n return {\n prepareEvent: function (e) {\n if (!event) {\n return [e];\n }\n var args = event.decode(e.data, e.topics);\n e.args = args;\n var result = Array.prototype.slice.call(args);\n result.push(e);\n return result;\n },\n event: event,\n eventTag: getEventTag(filter),\n filter: filter\n };\n };\n Contract.prototype._addEventListener = function (eventFilter, listener, once) {\n var _this = this;\n if (!this.provider) {\n errors.throwError('events require a provider or a signer with a provider', errors.UNSUPPORTED_OPERATION, { operation: 'once' });\n }\n var wrappedListener = function (log) {\n var event = properties_1.deepCopy(log);\n var args = eventFilter.prepareEvent(event);\n if (eventFilter.event) {\n event.decode = eventFilter.event.decode;\n event.event = eventFilter.event.name;\n event.eventSignature = eventFilter.event.signature;\n }\n event.removeListener = function () { _this.removeListener(eventFilter.filter, listener); };\n event.getBlock = function () { return _this.provider.getBlock(log.blockHash); };\n event.getTransaction = function () { return _this.provider.getTransaction(log.transactionHash); };\n event.getTransactionReceipt = function () { return _this.provider.getTransactionReceipt(log.transactionHash); };\n _this.emit.apply(_this, [eventFilter.filter].concat(args));\n };\n this.provider.on(eventFilter.filter, wrappedListener);\n this._events.push({ eventFilter: eventFilter, listener: listener, wrappedListener: wrappedListener, once: once });\n };\n Contract.prototype.on = function (event, listener) {\n this._addEventListener(this._getEventFilter(event), listener, false);\n return this;\n };\n Contract.prototype.once = function (event, listener) {\n this._addEventListener(this._getEventFilter(event), listener, true);\n return this;\n };\n Contract.prototype.addListener = function (eventName, listener) {\n return this.on(eventName, listener);\n };\n Contract.prototype.emit = function (eventName) {\n var _this = this;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!this.provider) {\n return false;\n }\n var result = false;\n var eventFilter = this._getEventFilter(eventName);\n this._events = this._events.filter(function (event) {\n // Not this event (keep it for later)\n if (event.eventFilter.eventTag !== eventFilter.eventTag) {\n return true;\n }\n // Call the callback in the next event loop\n setTimeout(function () {\n event.listener.apply(_this, args);\n }, 0);\n result = true;\n // Reschedule it if it not \"once\"\n return !(event.once);\n });\n return result;\n };\n Contract.prototype.listenerCount = function (eventName) {\n if (!this.provider) {\n return 0;\n }\n var eventFilter = this._getEventFilter(eventName);\n return this._events.filter(function (event) {\n return event.eventFilter.eventTag === eventFilter.eventTag;\n }).length;\n };\n Contract.prototype.listeners = function (eventName) {\n if (!this.provider) {\n return [];\n }\n var eventFilter = this._getEventFilter(eventName);\n return this._events.filter(function (event) {\n return event.eventFilter.eventTag === eventFilter.eventTag;\n }).map(function (event) { return event.listener; });\n };\n Contract.prototype.removeAllListeners = function (eventName) {\n if (!this.provider) {\n return this;\n }\n var eventFilter = this._getEventFilter(eventName);\n this._events = this._events.filter(function (event) {\n return event.eventFilter.eventTag !== eventFilter.eventTag;\n });\n return this;\n };\n Contract.prototype.removeListener = function (eventName, listener) {\n var _this = this;\n if (!this.provider) {\n return this;\n }\n var found = false;\n var eventFilter = this._getEventFilter(eventName);\n this._events = this._events.filter(function (event) {\n // Make sure this event and listener match\n if (event.eventFilter.eventTag !== eventFilter.eventTag) {\n return true;\n }\n if (event.listener !== listener) {\n return true;\n }\n _this.provider.removeListener(event.eventFilter.filter, event.wrappedListener);\n // Already found a matching event in a previous loop\n if (found) {\n return true;\n }\n // REmove this event (returning false filters us out)\n found = true;\n return false;\n });\n return this;\n };\n return Contract;\n}());\nexports.Contract = Contract;\nvar ContractFactory = /** @class */ (function () {\n function ContractFactory(contractInterface, bytecode, signer) {\n var bytecodeHex = null;\n // Allow the bytecode object from the Solidity compiler\n if (typeof (bytecode) === 'string') {\n bytecodeHex = bytecode;\n }\n else if (bytes_1.isArrayish(bytecode)) {\n bytecodeHex = bytes_1.hexlify(bytecode);\n }\n else if (typeof (bytecode.object) === 'string') {\n bytecodeHex = bytecode.object;\n }\n else {\n errors.throwError('bytecode must be a valid hex string', errors.INVALID_ARGUMENT, { arg: 'bytecode', value: bytecode });\n }\n // Make sure it is 0x prefixed\n if (bytecodeHex.substring(0, 2) !== '0x') {\n bytecodeHex = '0x' + bytecodeHex;\n }\n if (!bytes_1.isHexString(bytecodeHex)) {\n errors.throwError('bytecode must be a valid hex string', errors.INVALID_ARGUMENT, { arg: 'bytecode', value: bytecode });\n }\n if ((bytecodeHex.length % 2) !== 0) {\n errors.throwError('bytecode must be valid data (even length)', errors.INVALID_ARGUMENT, { arg: 'bytecode', value: bytecode });\n }\n properties_1.defineReadOnly(this, 'bytecode', bytecodeHex);\n if (interface_1.Interface.isInterface(contractInterface)) {\n properties_1.defineReadOnly(this, 'interface', contractInterface);\n }\n else {\n properties_1.defineReadOnly(this, 'interface', new interface_1.Interface(contractInterface));\n }\n if (signer && !abstract_signer_1.Signer.isSigner(signer)) {\n errors.throwError('invalid signer', errors.INVALID_ARGUMENT, { arg: 'signer', value: null });\n }\n properties_1.defineReadOnly(this, 'signer', signer || null);\n }\n ContractFactory.prototype.getDeployTransaction = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var tx = {};\n // If we have 1 additional argument, we allow transaction overrides\n if (args.length === this.interface.deployFunction.inputs.length + 1) {\n tx = properties_1.shallowCopy(args.pop());\n for (var key in tx) {\n if (!allowedTransactionKeys[key]) {\n throw new Error('unknown transaction override ' + key);\n }\n }\n }\n // Do not allow these to be overridden in a deployment transaction\n ['data', 'from', 'to'].forEach(function (key) {\n if (tx[key] == null) {\n return;\n }\n errors.throwError('cannot override ' + key, errors.UNSUPPORTED_OPERATION, { operation: key });\n });\n // Make sure the call matches the constructor signature\n errors.checkArgumentCount(args.length, this.interface.deployFunction.inputs.length, 'in Contract constructor');\n // Set the data to the bytecode + the encoded constructor arguments\n tx.data = this.interface.deployFunction.encode(this.bytecode, args);\n return tx;\n };\n ContractFactory.prototype.deploy = function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // Get the deployment transaction (with optional overrides)\n var tx = this.getDeployTransaction.apply(this, args);\n // Send the deployment transaction\n return this.signer.sendTransaction(tx).then(function (tx) {\n var contract = new Contract(address_1.getContractAddress(tx), _this.interface, _this.signer);\n properties_1.defineReadOnly(contract, 'deployTransaction', tx);\n return contract;\n });\n };\n ContractFactory.prototype.attach = function (address) {\n return new Contract(address, this.interface, this.signer);\n };\n ContractFactory.prototype.connect = function (signer) {\n return new ContractFactory(this.interface, this.bytecode, signer);\n };\n ContractFactory.fromSolidity = function (compilerOutput, signer) {\n if (compilerOutput == null) {\n errors.throwError('missing compiler output', errors.MISSING_ARGUMENT, { argument: 'compilerOutput' });\n }\n if (typeof (compilerOutput) === 'string') {\n compilerOutput = JSON.parse(compilerOutput);\n }\n var abi = compilerOutput.abi;\n var bytecode = null;\n if (compilerOutput.bytecode) {\n bytecode = compilerOutput.bytecode;\n }\n else if (compilerOutput.evm && compilerOutput.evm.bytecode) {\n bytecode = compilerOutput.evm.bytecode;\n }\n return new ContractFactory(abi, bytecode, signer);\n };\n return ContractFactory;\n}());\nexports.ContractFactory = ContractFactory;\n\n},{\"./abstract-signer\":2,\"./constants\":3,\"./errors\":5,\"./providers/abstract-provider\":49,\"./utils/abi-coder\":58,\"./utils/address\":59,\"./utils/bignumber\":61,\"./utils/bytes\":62,\"./utils/interface\":67,\"./utils/properties\":72}],5:[function(require,module,exports){\n'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _version_1 = require(\"./_version\");\n// Unknown Error\nexports.UNKNOWN_ERROR = 'UNKNOWN_ERROR';\n// Not implemented\nexports.NOT_IMPLEMENTED = 'NOT_IMPLEMENTED';\n// Missing new operator to an object\n// - name: The name of the class\nexports.MISSING_NEW = 'MISSING_NEW';\n// Call exception\n// - transaction: the transaction\n// - address?: the contract address\n// - args?: The arguments passed into the function\n// - method?: The Solidity method signature\n// - errorSignature?: The EIP848 error signature\n// - errorArgs?: The EIP848 error parameters\n// - reason: The reason (only for EIP848 \"Error(string)\")\nexports.CALL_EXCEPTION = 'CALL_EXCEPTION';\n// Invalid argument (e.g. value is incompatible with type) to a function:\n// - arg: The argument name that was invalid\n// - value: The value of the argument\nexports.INVALID_ARGUMENT = 'INVALID_ARGUMENT';\n// Missing argument to a function:\n// - count: The number of arguments received\n// - expectedCount: The number of arguments expected\nexports.MISSING_ARGUMENT = 'MISSING_ARGUMENT';\n// Too many arguments\n// - count: The number of arguments received\n// - expectedCount: The number of arguments expected\nexports.UNEXPECTED_ARGUMENT = 'UNEXPECTED_ARGUMENT';\n// Numeric Fault\n// - operation: the operation being executed\n// - fault: the reason this faulted\nexports.NUMERIC_FAULT = 'NUMERIC_FAULT';\n// Insufficien funds (< value + gasLimit * gasPrice)\n// - transaction: the transaction attempted\nexports.INSUFFICIENT_FUNDS = 'INSUFFICIENT_FUNDS';\n// Nonce has already been used\n// - transaction: the transaction attempted\nexports.NONCE_EXPIRED = 'NONCE_EXPIRED';\n// The replacement fee for the transaction is too low\n// - transaction: the transaction attempted\nexports.REPLACEMENT_UNDERPRICED = 'REPLACEMENT_UNDERPRICED';\n// Unsupported operation\n// - operation\nexports.UNSUPPORTED_OPERATION = 'UNSUPPORTED_OPERATION';\nvar _permanentCensorErrors = false;\nvar _censorErrors = false;\n// @TODO: Enum\nfunction throwError(message, code, params) {\n if (_censorErrors) {\n throw new Error('unknown error');\n }\n if (!code) {\n code = exports.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n var messageDetails = [];\n Object.keys(params).forEach(function (key) {\n try {\n messageDetails.push(key + '=' + JSON.stringify(params[key]));\n }\n catch (error) {\n messageDetails.push(key + '=' + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(\"version=\" + _version_1.version);\n var reason = message;\n if (messageDetails.length) {\n message += ' (' + messageDetails.join(', ') + ')';\n }\n // @TODO: Any??\n var error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n throw error;\n}\nexports.throwError = throwError;\nfunction checkNew(self, kind) {\n if (!(self instanceof kind)) {\n throwError('missing new', exports.MISSING_NEW, { name: kind.name });\n }\n}\nexports.checkNew = checkNew;\nfunction checkArgumentCount(count, expectedCount, suffix) {\n if (!suffix) {\n suffix = '';\n }\n if (count < expectedCount) {\n throwError('missing argument' + suffix, exports.MISSING_ARGUMENT, { count: count, expectedCount: expectedCount });\n }\n if (count > expectedCount) {\n throwError('too many arguments' + suffix, exports.UNEXPECTED_ARGUMENT, { count: count, expectedCount: expectedCount });\n }\n}\nexports.checkArgumentCount = checkArgumentCount;\nfunction setCensorship(censorship, permanent) {\n if (_permanentCensorErrors) {\n throwError('error censorship permanent', exports.UNSUPPORTED_OPERATION, { operation: 'setCersorship' });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n}\nexports.setCensorship = setCensorship;\n\n},{\"./_version\":1}],6:[function(require,module,exports){\n'use strict';\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar contract_1 = require(\"./contract\");\nexports.Contract = contract_1.Contract;\nexports.ContractFactory = contract_1.ContractFactory;\nexports.VoidSigner = contract_1.VoidSigner;\nvar abstract_signer_1 = require(\"./abstract-signer\");\nexports.Signer = abstract_signer_1.Signer;\nvar wallet_1 = require(\"./wallet\");\nexports.Wallet = wallet_1.Wallet;\nvar constants = __importStar(require(\"./constants\"));\nexports.constants = constants;\nvar errors = __importStar(require(\"./errors\"));\nexports.errors = errors;\nvar providers = __importStar(require(\"./providers\"));\nexports.providers = providers;\nvar utils = __importStar(require(\"./utils\"));\nexports.utils = utils;\nvar wordlists = __importStar(require(\"./wordlists\"));\nexports.wordlists = wordlists;\n////////////////////////\n// Compile-Time Constants\n// This is empty in node, and used by browserify to inject extra goodies\nvar shims_1 = require(\"./utils/shims\");\nexports.platform = shims_1.platform;\n// This is generated by \"npm run dist\"\nvar _version_1 = require(\"./_version\");\nexports.version = _version_1.version;\n////////////////////////\n// Helper Functions\nfunction getDefaultProvider(network) {\n return new providers.FallbackProvider([\n new providers.InfuraProvider(network),\n new providers.EtherscanProvider(network),\n ]);\n}\nexports.getDefaultProvider = getDefaultProvider;\n\n},{\"./_version\":1,\"./abstract-signer\":2,\"./constants\":3,\"./contract\":4,\"./errors\":5,\"./providers\":53,\"./utils\":66,\"./utils/shims\":78,\"./wallet\":86,\"./wordlists\":87}],7:[function(require,module,exports){\n\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ethers = __importStar(require(\"./ethers\"));\nexports.ethers = ethers;\n__export(require(\"./ethers\"));\n\n},{\"./ethers\":6}],8:[function(require,module,exports){\n\"use strict\";\n\n(function(root) {\n\n function checkInt(value) {\n return (parseInt(value) === value);\n }\n\n function checkInts(arrayish) {\n if (!checkInt(arrayish.length)) { return false; }\n\n for (var i = 0; i < arrayish.length; i++) {\n if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {\n return false;\n }\n }\n\n return true;\n }\n\n function coerceArray(arg, copy) {\n\n // ArrayBuffer view\n if (arg.buffer && ArrayBuffer.isView(arg) && arg.name === 'Uint8Array') {\n\n if (copy) {\n if (arg.slice) {\n arg = arg.slice();\n } else {\n arg = Array.prototype.slice.call(arg);\n }\n }\n\n return arg;\n }\n\n // It's an array; check it is a valid representation of a byte\n if (Array.isArray(arg)) {\n if (!checkInts(arg)) {\n throw new Error('Array contains invalid value: ' + arg);\n }\n\n return new Uint8Array(arg);\n }\n\n // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n if (checkInt(arg.length) && checkInts(arg)) {\n return new Uint8Array(arg);\n }\n\n throw new Error('unsupported array-like object');\n }\n\n function createArray(length) {\n return new Uint8Array(length);\n }\n\n function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n if (sourceStart != null || sourceEnd != null) {\n if (sourceArray.slice) {\n sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n } else {\n sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n }\n }\n targetArray.set(sourceArray, targetStart);\n }\n\n\n\n var convertUtf8 = (function() {\n function toBytes(text) {\n var result = [], i = 0;\n text = encodeURI(text);\n while (i < text.length) {\n var c = text.charCodeAt(i++);\n\n // if it is a % sign, encode the following 2 bytes as a hex value\n if (c === 37) {\n result.push(parseInt(text.substr(i, 2), 16))\n i += 2;\n\n // otherwise, just the actual byte\n } else {\n result.push(c)\n }\n }\n\n return coerceArray(result);\n }\n\n function fromBytes(bytes) {\n var result = [], i = 0;\n\n while (i < bytes.length) {\n var c = bytes[i];\n\n if (c < 128) {\n result.push(String.fromCharCode(c));\n i++;\n } else if (c > 191 && c < 224) {\n result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n i += 2;\n } else {\n result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n i += 3;\n }\n }\n\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n var convertHex = (function() {\n function toBytes(text) {\n var result = [];\n for (var i = 0; i < text.length; i += 2) {\n result.push(parseInt(text.substr(i, 2), 16));\n }\n\n return result;\n }\n\n // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n var Hex = '0123456789abcdef';\n\n function fromBytes(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i++) {\n var v = bytes[i];\n result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n }\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n\n // Number of rounds by keysize\n var numberOfRounds = {16: 10, 24: 12, 32: 14}\n\n // Round constant words\n var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n // S-box and Inverse S-box (S is for Substitution)\n var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n var Si =[0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n // Transformations for encryption\n var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n // Transformations for decryption\n var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n // Transformations for decryption key expansion\n var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n function convertToInt32(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i += 4) {\n result.push(\n (bytes[i ] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n );\n }\n return result;\n }\n\n var AES = function(key) {\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n Object.defineProperty(this, 'key', {\n value: coerceArray(key, true)\n });\n\n this._prepare();\n }\n\n\n AES.prototype._prepare = function() {\n\n var rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n }\n\n // encryption round keys\n this._Ke = [];\n\n // decryption round keys\n this._Kd = [];\n\n for (var i = 0; i <= rounds; i++) {\n this._Ke.push([0, 0, 0, 0]);\n this._Kd.push([0, 0, 0, 0]);\n }\n\n var roundKeyCount = (rounds + 1) * 4;\n var KC = this.key.length / 4;\n\n // convert the key into ints\n var tk = convertToInt32(this.key);\n\n // copy values into round key arrays\n var index;\n for (var i = 0; i < KC; i++) {\n index = i >> 2;\n this._Ke[index][i % 4] = tk[i];\n this._Kd[rounds - index][i % 4] = tk[i];\n }\n\n // key expansion (fips-197 section 5.2)\n var rconpointer = 0;\n var t = KC, tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[ tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (var i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n } else {\n for (var i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n\n tk[KC / 2] ^= (S[ tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n\n for (var i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n\n // copy values into round key arrays\n var i = 0, r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n this._Ke[r][c] = tk[i];\n this._Kd[rounds - r][c] = tk[i++];\n t++;\n }\n }\n\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (var r = 1; r < rounds; r++) {\n for (var c = 0; c < 4; c++) {\n tt = this._Kd[r][c];\n this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[ tt & 0xFF]);\n }\n }\n }\n\n AES.prototype.encrypt = function(plaintext) {\n if (plaintext.length != 16) {\n throw new Error('invalid plaintext size (must be 16 bytes)');\n }\n\n var rounds = this._Ke.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(plaintext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Ke[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T1[(t[ i ] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[ t[(i + 3) % 4] & 0xff] ^\n this._Ke[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Ke[rounds][i];\n result[4 * i ] = (S[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[ t[(i + 3) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n AES.prototype.decrypt = function(ciphertext) {\n if (ciphertext.length != 16) {\n throw new Error('invalid ciphertext size (must be 16 bytes)');\n }\n\n var rounds = this._Kd.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(ciphertext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Kd[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T5[(t[ i ] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[ t[(i + 1) % 4] & 0xff] ^\n this._Kd[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16), tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Kd[rounds][i];\n result[4 * i ] = (Si[(t[ i ] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[ t[(i + 1) % 4] & 0xff] ^ tt ) & 0xff;\n }\n\n return result;\n }\n\n\n /**\n * Mode Of Operation - Electonic Codebook (ECB)\n */\n var ModeOfOperationECB = function(key) {\n if (!(this instanceof ModeOfOperationECB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Electronic Code Block\";\n this.name = \"ecb\";\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationECB.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n block = this._aes.encrypt(block);\n copyArray(block, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationECB.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n copyArray(block, plaintext, i);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Block Chaining (CBC)\n */\n var ModeOfOperationCBC = function(key, iv) {\n if (!(this instanceof ModeOfOperationCBC)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Block Chaining\";\n this.name = \"cbc\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastCipherblock = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCBC.prototype.encrypt = function(plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n\n for (var j = 0; j < 16; j++) {\n block[j] ^= this._lastCipherblock[j];\n }\n\n this._lastCipherblock = this._aes.encrypt(block);\n copyArray(this._lastCipherblock, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationCBC.prototype.decrypt = function(ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n\n for (var j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n }\n\n copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Feedback (CFB)\n */\n var ModeOfOperationCFB = function(key, iv, segmentSize) {\n if (!(this instanceof ModeOfOperationCFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Feedback\";\n this.name = \"cfb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 size)');\n }\n\n if (!segmentSize) { segmentSize = 1; }\n\n this.segmentSize = segmentSize;\n\n this._shiftRegister = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCFB.prototype.encrypt = function(plaintext) {\n if ((plaintext.length % this.segmentSize) != 0) {\n throw new Error('invalid plaintext size (must be segmentSize bytes)');\n }\n\n var encrypted = coerceArray(plaintext, true);\n\n var xorSegment;\n for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n for (var j = 0; j < this.segmentSize; j++) {\n encrypted[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return encrypted;\n }\n\n ModeOfOperationCFB.prototype.decrypt = function(ciphertext) {\n if ((ciphertext.length % this.segmentSize) != 0) {\n throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n }\n\n var plaintext = coerceArray(ciphertext, true);\n\n var xorSegment;\n for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n\n for (var j = 0; j < this.segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return plaintext;\n }\n\n /**\n * Mode Of Operation - Output Feedback (OFB)\n */\n var ModeOfOperationOFB = function(key, iv) {\n if (!(this instanceof ModeOfOperationOFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Output Feedback\";\n this.name = \"ofb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastPrecipher = coerceArray(iv, true);\n this._lastPrecipherIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationOFB.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._lastPrecipherIndex === 16) {\n this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n this._lastPrecipherIndex = 0;\n }\n encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n /**\n * Counter object for CTR common mode of operation\n */\n var Counter = function(initialValue) {\n if (!(this instanceof Counter)) {\n throw Error('Counter must be instanitated with `new`');\n }\n\n // We allow 0, but anything false-ish uses the default 1\n if (initialValue !== 0 && !initialValue) { initialValue = 1; }\n\n if (typeof(initialValue) === 'number') {\n this._counter = createArray(16);\n this.setValue(initialValue);\n\n } else {\n this.setBytes(initialValue);\n }\n }\n\n Counter.prototype.setValue = function(value) {\n if (typeof(value) !== 'number' || parseInt(value) != value) {\n throw new Error('invalid counter value (must be an integer)');\n }\n\n for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = value >> 8;\n }\n }\n\n Counter.prototype.setBytes = function(bytes) {\n bytes = coerceArray(bytes, true);\n\n if (bytes.length != 16) {\n throw new Error('invalid counter bytes size (must be 16 bytes)');\n }\n\n this._counter = bytes;\n };\n\n Counter.prototype.increment = function() {\n for (var i = 15; i >= 0; i--) {\n if (this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n\n\n /**\n * Mode Of Operation - Counter (CTR)\n */\n var ModeOfOperationCTR = function(key, counter) {\n if (!(this instanceof ModeOfOperationCTR)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Counter\";\n this.name = \"ctr\";\n\n if (!(counter instanceof Counter)) {\n counter = new Counter(counter)\n }\n\n this._counter = counter;\n\n this._remainingCounter = null;\n this._remainingCounterIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCTR.prototype.encrypt = function(plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._remainingCounterIndex === 16) {\n this._remainingCounter = this._aes.encrypt(this._counter._counter);\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n ///////////////////////\n // Padding\n\n // See:https://tools.ietf.org/html/rfc2315\n function pkcs7pad(data) {\n data = coerceArray(data, true);\n var padder = 16 - (data.length % 16);\n var result = createArray(data.length + padder);\n copyArray(data, result);\n for (var i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n }\n\n function pkcs7strip(data) {\n data = coerceArray(data, true);\n if (data.length < 16) { throw new Error('PKCS#7 invalid length'); }\n\n var padder = data[data.length - 1];\n if (padder > 16) { throw new Error('PKCS#7 padding byte out of range'); }\n\n var length = data.length - padder;\n for (var i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new Error('PKCS#7 invalid padding byte');\n }\n }\n\n var result = createArray(length);\n copyArray(data, result, 0, 0, length);\n return result;\n }\n\n ///////////////////////\n // Exporting\n\n\n // The block cipher\n var aesjs = {\n AES: AES,\n Counter: Counter,\n\n ModeOfOperation: {\n ecb: ModeOfOperationECB,\n cbc: ModeOfOperationCBC,\n cfb: ModeOfOperationCFB,\n ofb: ModeOfOperationOFB,\n ctr: ModeOfOperationCTR\n },\n\n utils: {\n hex: convertHex,\n utf8: convertUtf8\n },\n\n padding: {\n pkcs7: {\n pad: pkcs7pad,\n strip: pkcs7strip\n }\n },\n\n _arrayTest: {\n coerceArray: coerceArray,\n createArray: createArray,\n copyArray: copyArray,\n }\n };\n\n\n // node.js\n if (typeof exports !== 'undefined') {\n module.exports = aesjs\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(aesjs);\n\n // Web Browsers\n } else {\n\n // If there was an existing library at \"aesjs\" make sure it's still available\n if (root.aesjs) {\n aesjs._aesjs = root.aesjs;\n }\n\n root.aesjs = aesjs;\n }\n\n\n})(this);\n\n},{}],9:[function(require,module,exports){\n(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n r.strip();\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n\n},{\"buffer\":11}],10:[function(require,module,exports){\n(function (global){\nmodule.exports = function(length) { var result = new Uint8Array(length); (global.crypto || global.msCrypto).getRandomValues(result); return result; }\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],11:[function(require,module,exports){\n\n},{}],12:[function(require,module,exports){\n'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.hmacDRBG = require('./elliptic/hmac-drbg');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n\n},{\"../package.json\":26,\"./elliptic/curve\":15,\"./elliptic/curves\":18,\"./elliptic/ec\":19,\"./elliptic/eddsa\":22,\"./elliptic/hmac-drbg\":23,\"./elliptic/utils\":25,\"brorand\":10}],13:[function(require,module,exports){\n'use strict';\n\nvar BN = require('bn.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n for (var j = 0; j < naf.length; j += doubles.step) {\n var nafW = 0;\n for (var k = j + doubles.step - 1; k >= j; k--)\n nafW = (nafW << 1) + naf[k];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (var j = 0; j < repr.length; j++) {\n var nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var k = 0; i >= 0 && naf[i] === 0; i--)\n k++;\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n for (var i = 0; i < len; i++) {\n var p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (var i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a]);\n naf[b] = getNAF(coeffs[b], wndWidth[b]);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b] /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3 /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (var j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (var i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (var j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (var j = 0; j < len; j++) {\n var z = tmp[j];\n var p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (var i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len)) ;\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n\n},{\"../../elliptic\":12,\"bn.js\":9}],14:[function(require,module,exports){\nmodule.exports = {};\n},{}],15:[function(require,module,exports){\n'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n\n},{\"./base\":13,\"./edwards\":14,\"./mont\":16,\"./short\":17}],16:[function(require,module,exports){\narguments[4][14][0].apply(exports,arguments)\n},{\"dup\":14}],17:[function(require,module,exports){\n'use strict';\n\nvar curve = require('../curve');\nvar elliptic = require('../../elliptic');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = curve.base;\n\nvar assert = elliptic.utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16)\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 }\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n};\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul)\n }\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1)\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1)\n }\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point))\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point))\n }\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate)\n }\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (var i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (var i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n return false;\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\n},{\"../../elliptic\":12,\"../curve\":15,\"bn.js\":9,\"inherits\":39}],18:[function(require,module,exports){\n'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar elliptic = require('../elliptic');\n\nvar assert = elliptic.utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new elliptic.curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new elliptic.curve.edwards(options);\n else\n this.curve = new elliptic.curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve\n });\n return curve;\n }\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'\n ]\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'\n ]\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'\n ]\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'\n ]\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650'\n ]\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9'\n ]\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658'\n ]\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3'\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15'\n }\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre\n ]\n});\n\n},{\"../elliptic\":12,\"./precomputed/secp256k1\":24,\"hash.js\":27}],19:[function(require,module,exports){\n'use strict';\n\nvar BN = require('bn.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(elliptic.curves.hasOwnProperty(options), 'Unknown curve ' + options);\n\n options = elliptic.curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof elliptic.curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new elliptic.hmacDRBG({\n hash: this.hash,\n pers: options.pers,\n entropy: options.entropy || elliptic.rand(this.hash.hmacStrength),\n nonce: this.n.toArray()\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n do {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n } while (true);\n};\n\nEC.prototype._truncateToN = function truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new elliptic.hmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; true; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n\n if (!this.curve._maxwellTrick) {\n var p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n var p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n\n},{\"../../elliptic\":12,\"./key\":20,\"./signature\":21,\"bn.js\":9}],20:[function(require,module,exports){\n'use strict';\n\nvar BN = require('bn.js');\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n\n},{\"../../elliptic\":12,\"bn.js\":9}],21:[function(require,module,exports){\n'use strict';\n\nvar BN = require('bn.js');\n\nvar elliptic = require('../../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n }\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0 && (r[1] & 0x80)) {\n r = r.slice(1);\n }\n if (s[0] === 0 && (s[1] & 0x80)) {\n s = s.slice(1);\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n\n},{\"../../elliptic\":12,\"bn.js\":9}],22:[function(require,module,exports){\narguments[4][14][0].apply(exports,arguments)\n},{\"dup\":14}],23:[function(require,module,exports){\n'use strict';\n\nvar hash = require('hash.js');\nvar elliptic = require('../elliptic');\nvar utils = elliptic.utils;\nvar assert = utils.assert;\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this.reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc);\n var nonce = utils.toArray(options.nonce, options.nonceEnc);\n var pers = utils.toArray(options.pers, options.persEnc);\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this.reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toBuffer(entropy, entropyEnc);\n add = utils.toBuffer(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this.reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this.reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc);\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this.reseed++;\n return utils.encode(res, enc);\n};\n\n},{\"../elliptic\":12,\"hash.js\":27}],24:[function(require,module,exports){\nmodule.exports = undefined;\n},{}],25:[function(require,module,exports){\n'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\n\nutils.assert = function assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n};\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (!enc) {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w) {\n var naf = [];\n var ws = 1 << (w + 1);\n var k = num.clone();\n while (k.cmpn(1) >= 0) {\n var z;\n if (k.isOdd()) {\n var mod = k.andln(ws - 1);\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n naf.push(z);\n\n // Optimization, shift by word if possible\n var shift = (k.cmpn(0) !== 0 && k.andln(ws - 1) === 0) ? (w + 1) : 1;\n for (var i = 1; i < shift; i++)\n naf.push(0);\n k.iushrn(shift);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n []\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n var m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n var m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n\n},{\"bn.js\":9}],26:[function(require,module,exports){\nmodule.exports={\"version\":\"6.3.3\"}\n},{}],27:[function(require,module,exports){\nvar hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n\n},{\"./hash/common\":28,\"./hash/hmac\":29,\"./hash/ripemd\":30,\"./hash/sha\":31,\"./hash/utils\":38}],28:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n\n},{\"./utils\":38,\"minimalistic-assert\":41}],29:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n\n},{\"./utils\":38,\"minimalistic-assert\":41}],30:[function(require,module,exports){\nmodule.exports = {ripemd160: null}\n},{}],31:[function(require,module,exports){\n'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n\n},{\"./sha/1\":32,\"./sha/224\":33,\"./sha/256\":34,\"./sha/384\":35,\"./sha/512\":36}],32:[function(require,module,exports){\narguments[4][14][0].apply(exports,arguments)\n},{\"dup\":14}],33:[function(require,module,exports){\narguments[4][14][0].apply(exports,arguments)\n},{\"dup\":14}],34:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\n},{\"../common\":28,\"../utils\":38,\"./common\":37,\"minimalistic-assert\":41}],35:[function(require,module,exports){\narguments[4][14][0].apply(exports,arguments)\n},{\"dup\":14}],36:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\n},{\"../common\":28,\"../utils\":38,\"minimalistic-assert\":41}],37:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n\n},{\"../utils\":38}],38:[function(require,module,exports){\n'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n\n},{\"inherits\":39,\"minimalistic-assert\":41}],39:[function(require,module,exports){\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n},{}],40:[function(require,module,exports){\n(function (process,global){\n/**\r\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\r\n *\r\n * @version 0.5.7\r\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\r\n * @copyright Chen, Yi-Cyuan 2015-2016\r\n * @license MIT\r\n */\r\n/*jslint bitwise: true */\r\n(function () {\r\n 'use strict';\r\n\r\n var root = typeof window === 'object' ? window : {};\r\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\r\n if (NODE_JS) {\r\n root = global;\r\n }\r\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\r\n var HEX_CHARS = '0123456789abcdef'.split('');\r\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\r\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\r\n var PADDING = [6, 1536, 393216, 100663296];\r\n var SHIFT = [0, 8, 16, 24];\r\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\r\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\r\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\r\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\r\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\r\n var BITS = [224, 256, 384, 512];\r\n var SHAKE_BITS = [128, 256];\r\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array'];\r\n\r\n var createOutputMethod = function (bits, padding, outputType) {\r\n return function (message) {\r\n return new Keccak(bits, padding, bits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createShakeOutputMethod = function (bits, padding, outputType) {\r\n return function (message, outputBits) {\r\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createMethod = function (bits, padding) {\r\n var method = createOutputMethod(bits, padding, 'hex');\r\n method.create = function () {\r\n return new Keccak(bits, padding, bits);\r\n };\r\n method.update = function (message) {\r\n return method.create().update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var createShakeMethod = function (bits, padding) {\r\n var method = createShakeOutputMethod(bits, padding, 'hex');\r\n method.create = function (outputBits) {\r\n return new Keccak(bits, padding, outputBits);\r\n };\r\n method.update = function (message, outputBits) {\r\n return method.create(outputBits).update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createShakeOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var algorithms = [\r\n {name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod}\r\n ];\r\n\r\n var methods = {}, methodNames = [];\r\n\r\n for (var i = 0; i < algorithms.length; ++i) {\r\n var algorithm = algorithms[i];\r\n var bits = algorithm.bits;\r\n for (var j = 0; j < bits.length; ++j) {\r\n var methodName = algorithm.name +'_' + bits[j];\r\n methodNames.push(methodName);\r\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\r\n }\r\n }\r\n\r\n function Keccak(bits, padding, outputBits) {\r\n this.blocks = [];\r\n this.s = [];\r\n this.padding = padding;\r\n this.outputBits = outputBits;\r\n this.reset = true;\r\n this.block = 0;\r\n this.start = 0;\r\n this.blockCount = (1600 - (bits << 1)) >> 5;\r\n this.byteCount = this.blockCount << 2;\r\n this.outputBlocks = outputBits >> 5;\r\n this.extraBytes = (outputBits & 31) >> 3;\r\n\r\n for (var i = 0; i < 50; ++i) {\r\n this.s[i] = 0;\r\n }\r\n }\r\n\r\n Keccak.prototype.update = function (message) {\r\n var notString = typeof message !== 'string';\r\n if (notString && message.constructor === ArrayBuffer) {\r\n message = new Uint8Array(message);\r\n }\r\n var length = message.length, blocks = this.blocks, byteCount = this.byteCount,\r\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\r\n\r\n while (index < length) {\r\n if (this.reset) {\r\n this.reset = false;\r\n blocks[0] = this.block;\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n if (notString) {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\r\n }\r\n } else {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n code = message.charCodeAt(index);\r\n if (code < 0x80) {\r\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\r\n } else if (code < 0x800) {\r\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else if (code < 0xd800 || code >= 0xe000) {\r\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else {\r\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\r\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n }\r\n }\r\n }\r\n this.lastByteIndex = i;\r\n if (i >= byteCount) {\r\n this.start = i - byteCount;\r\n this.block = blocks[blockCount];\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n this.reset = true;\r\n } else {\r\n this.start = i;\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n Keccak.prototype.finalize = function () {\r\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\r\n blocks[i >> 2] |= this.padding[i & 3];\r\n if (this.lastByteIndex === this.byteCount) {\r\n blocks[0] = blocks[blockCount];\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n blocks[blockCount - 1] |= 0x80000000;\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n };\r\n\r\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var hex = '', block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n block = s[i];\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\r\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\r\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\r\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n i = 0;\r\n }\r\n }\r\n if (extraBytes) {\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\r\n }\r\n if (extraBytes > 1) {\r\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\r\n }\r\n if (extraBytes > 2) {\r\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\r\n }\r\n }\r\n return hex;\r\n };\r\n\r\n Keccak.prototype.arrayBuffer = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var bytes = this.outputBits >> 3;\r\n var buffer;\r\n if (extraBytes) {\r\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\r\n } else {\r\n buffer = new ArrayBuffer(bytes);\r\n }\r\n var array = new Uint32Array(buffer);\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n array[j] = s[i];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n array[i] = s[i];\r\n buffer = buffer.slice(0, bytes);\r\n }\r\n return buffer;\r\n };\r\n\r\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\r\n\r\n Keccak.prototype.digest = Keccak.prototype.array = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var array = [], offset, block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n offset = j << 2;\r\n block = s[i];\r\n array[offset] = block & 0xFF;\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n array[offset + 3] = (block >> 24) & 0xFF;\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n offset = j << 2;\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n array[offset] = block & 0xFF;\r\n }\r\n if (extraBytes > 1) {\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n }\r\n if (extraBytes > 2) {\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n }\r\n }\r\n return array;\r\n };\r\n\r\n var f = function (s) {\r\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\r\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\r\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\r\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\r\n for (n = 0; n < 48; n += 2) {\r\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\r\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\r\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\r\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\r\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\r\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\r\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\r\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\r\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\r\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\r\n\r\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\r\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\r\n s[0] ^= h;\r\n s[1] ^= l;\r\n s[10] ^= h;\r\n s[11] ^= l;\r\n s[20] ^= h;\r\n s[21] ^= l;\r\n s[30] ^= h;\r\n s[31] ^= l;\r\n s[40] ^= h;\r\n s[41] ^= l;\r\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\r\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\r\n s[2] ^= h;\r\n s[3] ^= l;\r\n s[12] ^= h;\r\n s[13] ^= l;\r\n s[22] ^= h;\r\n s[23] ^= l;\r\n s[32] ^= h;\r\n s[33] ^= l;\r\n s[42] ^= h;\r\n s[43] ^= l;\r\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\r\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\r\n s[4] ^= h;\r\n s[5] ^= l;\r\n s[14] ^= h;\r\n s[15] ^= l;\r\n s[24] ^= h;\r\n s[25] ^= l;\r\n s[34] ^= h;\r\n s[35] ^= l;\r\n s[44] ^= h;\r\n s[45] ^= l;\r\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\r\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\r\n s[6] ^= h;\r\n s[7] ^= l;\r\n s[16] ^= h;\r\n s[17] ^= l;\r\n s[26] ^= h;\r\n s[27] ^= l;\r\n s[36] ^= h;\r\n s[37] ^= l;\r\n s[46] ^= h;\r\n s[47] ^= l;\r\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\r\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\r\n s[8] ^= h;\r\n s[9] ^= l;\r\n s[18] ^= h;\r\n s[19] ^= l;\r\n s[28] ^= h;\r\n s[29] ^= l;\r\n s[38] ^= h;\r\n s[39] ^= l;\r\n s[48] ^= h;\r\n s[49] ^= l;\r\n\r\n b0 = s[0];\r\n b1 = s[1];\r\n b32 = (s[11] << 4) | (s[10] >>> 28);\r\n b33 = (s[10] << 4) | (s[11] >>> 28);\r\n b14 = (s[20] << 3) | (s[21] >>> 29);\r\n b15 = (s[21] << 3) | (s[20] >>> 29);\r\n b46 = (s[31] << 9) | (s[30] >>> 23);\r\n b47 = (s[30] << 9) | (s[31] >>> 23);\r\n b28 = (s[40] << 18) | (s[41] >>> 14);\r\n b29 = (s[41] << 18) | (s[40] >>> 14);\r\n b20 = (s[2] << 1) | (s[3] >>> 31);\r\n b21 = (s[3] << 1) | (s[2] >>> 31);\r\n b2 = (s[13] << 12) | (s[12] >>> 20);\r\n b3 = (s[12] << 12) | (s[13] >>> 20);\r\n b34 = (s[22] << 10) | (s[23] >>> 22);\r\n b35 = (s[23] << 10) | (s[22] >>> 22);\r\n b16 = (s[33] << 13) | (s[32] >>> 19);\r\n b17 = (s[32] << 13) | (s[33] >>> 19);\r\n b48 = (s[42] << 2) | (s[43] >>> 30);\r\n b49 = (s[43] << 2) | (s[42] >>> 30);\r\n b40 = (s[5] << 30) | (s[4] >>> 2);\r\n b41 = (s[4] << 30) | (s[5] >>> 2);\r\n b22 = (s[14] << 6) | (s[15] >>> 26);\r\n b23 = (s[15] << 6) | (s[14] >>> 26);\r\n b4 = (s[25] << 11) | (s[24] >>> 21);\r\n b5 = (s[24] << 11) | (s[25] >>> 21);\r\n b36 = (s[34] << 15) | (s[35] >>> 17);\r\n b37 = (s[35] << 15) | (s[34] >>> 17);\r\n b18 = (s[45] << 29) | (s[44] >>> 3);\r\n b19 = (s[44] << 29) | (s[45] >>> 3);\r\n b10 = (s[6] << 28) | (s[7] >>> 4);\r\n b11 = (s[7] << 28) | (s[6] >>> 4);\r\n b42 = (s[17] << 23) | (s[16] >>> 9);\r\n b43 = (s[16] << 23) | (s[17] >>> 9);\r\n b24 = (s[26] << 25) | (s[27] >>> 7);\r\n b25 = (s[27] << 25) | (s[26] >>> 7);\r\n b6 = (s[36] << 21) | (s[37] >>> 11);\r\n b7 = (s[37] << 21) | (s[36] >>> 11);\r\n b38 = (s[47] << 24) | (s[46] >>> 8);\r\n b39 = (s[46] << 24) | (s[47] >>> 8);\r\n b30 = (s[8] << 27) | (s[9] >>> 5);\r\n b31 = (s[9] << 27) | (s[8] >>> 5);\r\n b12 = (s[18] << 20) | (s[19] >>> 12);\r\n b13 = (s[19] << 20) | (s[18] >>> 12);\r\n b44 = (s[29] << 7) | (s[28] >>> 25);\r\n b45 = (s[28] << 7) | (s[29] >>> 25);\r\n b26 = (s[38] << 8) | (s[39] >>> 24);\r\n b27 = (s[39] << 8) | (s[38] >>> 24);\r\n b8 = (s[48] << 14) | (s[49] >>> 18);\r\n b9 = (s[49] << 14) | (s[48] >>> 18);\r\n\r\n s[0] = b0 ^ (~b2 & b4);\r\n s[1] = b1 ^ (~b3 & b5);\r\n s[10] = b10 ^ (~b12 & b14);\r\n s[11] = b11 ^ (~b13 & b15);\r\n s[20] = b20 ^ (~b22 & b24);\r\n s[21] = b21 ^ (~b23 & b25);\r\n s[30] = b30 ^ (~b32 & b34);\r\n s[31] = b31 ^ (~b33 & b35);\r\n s[40] = b40 ^ (~b42 & b44);\r\n s[41] = b41 ^ (~b43 & b45);\r\n s[2] = b2 ^ (~b4 & b6);\r\n s[3] = b3 ^ (~b5 & b7);\r\n s[12] = b12 ^ (~b14 & b16);\r\n s[13] = b13 ^ (~b15 & b17);\r\n s[22] = b22 ^ (~b24 & b26);\r\n s[23] = b23 ^ (~b25 & b27);\r\n s[32] = b32 ^ (~b34 & b36);\r\n s[33] = b33 ^ (~b35 & b37);\r\n s[42] = b42 ^ (~b44 & b46);\r\n s[43] = b43 ^ (~b45 & b47);\r\n s[4] = b4 ^ (~b6 & b8);\r\n s[5] = b5 ^ (~b7 & b9);\r\n s[14] = b14 ^ (~b16 & b18);\r\n s[15] = b15 ^ (~b17 & b19);\r\n s[24] = b24 ^ (~b26 & b28);\r\n s[25] = b25 ^ (~b27 & b29);\r\n s[34] = b34 ^ (~b36 & b38);\r\n s[35] = b35 ^ (~b37 & b39);\r\n s[44] = b44 ^ (~b46 & b48);\r\n s[45] = b45 ^ (~b47 & b49);\r\n s[6] = b6 ^ (~b8 & b0);\r\n s[7] = b7 ^ (~b9 & b1);\r\n s[16] = b16 ^ (~b18 & b10);\r\n s[17] = b17 ^ (~b19 & b11);\r\n s[26] = b26 ^ (~b28 & b20);\r\n s[27] = b27 ^ (~b29 & b21);\r\n s[36] = b36 ^ (~b38 & b30);\r\n s[37] = b37 ^ (~b39 & b31);\r\n s[46] = b46 ^ (~b48 & b40);\r\n s[47] = b47 ^ (~b49 & b41);\r\n s[8] = b8 ^ (~b0 & b2);\r\n s[9] = b9 ^ (~b1 & b3);\r\n s[18] = b18 ^ (~b10 & b12);\r\n s[19] = b19 ^ (~b11 & b13);\r\n s[28] = b28 ^ (~b20 & b22);\r\n s[29] = b29 ^ (~b21 & b23);\r\n s[38] = b38 ^ (~b30 & b32);\r\n s[39] = b39 ^ (~b31 & b33);\r\n s[48] = b48 ^ (~b40 & b42);\r\n s[49] = b49 ^ (~b41 & b43);\r\n\r\n s[0] ^= RC[n];\r\n s[1] ^= RC[n + 1];\r\n }\r\n };\r\n\r\n if (COMMON_JS) {\r\n module.exports = methods;\r\n } else {\r\n for (var i = 0; i < methodNames.length; ++i) {\r\n root[methodNames[i]] = methods[methodNames[i]];\r\n }\r\n }\r\n})();\r\n\n}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"_process\":42}],41:[function(require,module,exports){\nmodule.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n\n},{}],42:[function(require,module,exports){\nmodule.exports = { browser: true };\n},{}],43:[function(require,module,exports){\n(function (setImmediate){\n\"use strict\";\n\n(function(root) {\n var MAX_VALUE = 0x7fffffff;\n\n // The SHA256 and PBKDF2 implementation are from scrypt-async-js:\n // See: https://github.com/dchest/scrypt-async-js\n function SHA256(m) {\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n\n var h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\n var h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n var w = new Array(64);\n\n function blocks(p) {\n var off = 0, len = p.length;\n while (len >= 64) {\n var a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7, u, i, j, t1, t2;\n\n for (i = 0; i < 16; i++) {\n j = off + i*4;\n w[i] = ((p[j] & 0xff)<<24) | ((p[j+1] & 0xff)<<16) |\n ((p[j+2] & 0xff)<<8) | (p[j+3] & 0xff);\n }\n\n for (i = 16; i < 64; i++) {\n u = w[i-2];\n t1 = ((u>>>17) | (u<<(32-17))) ^ ((u>>>19) | (u<<(32-19))) ^ (u>>>10);\n\n u = w[i-15];\n t2 = ((u>>>7) | (u<<(32-7))) ^ ((u>>>18) | (u<<(32-18))) ^ (u>>>3);\n\n w[i] = (((t1 + w[i-7]) | 0) + ((t2 + w[i-16]) | 0)) | 0;\n }\n\n for (i = 0; i < 64; i++) {\n t1 = ((((((e>>>6) | (e<<(32-6))) ^ ((e>>>11) | (e<<(32-11))) ^\n ((e>>>25) | (e<<(32-25)))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n\n t2 = ((((a>>>2) | (a<<(32-2))) ^ ((a>>>13) | (a<<(32-13))) ^\n ((a>>>22) | (a<<(32-22)))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n\n off += 64;\n len -= 64;\n }\n }\n\n blocks(m);\n\n var i, bytesLeft = m.length % 64,\n bitLenHi = (m.length / 0x20000000) | 0,\n bitLenLo = m.length << 3,\n numZeros = (bytesLeft < 56) ? 56 : 120,\n p = m.slice(m.length - bytesLeft, m.length);\n\n p.push(0x80);\n for (i = bytesLeft + 1; i < numZeros; i++) { p.push(0); }\n p.push((bitLenHi>>>24) & 0xff);\n p.push((bitLenHi>>>16) & 0xff);\n p.push((bitLenHi>>>8) & 0xff);\n p.push((bitLenHi>>>0) & 0xff);\n p.push((bitLenLo>>>24) & 0xff);\n p.push((bitLenLo>>>16) & 0xff);\n p.push((bitLenLo>>>8) & 0xff);\n p.push((bitLenLo>>>0) & 0xff);\n\n blocks(p);\n\n return [\n (h0>>>24) & 0xff, (h0>>>16) & 0xff, (h0>>>8) & 0xff, (h0>>>0) & 0xff,\n (h1>>>24) & 0xff, (h1>>>16) & 0xff, (h1>>>8) & 0xff, (h1>>>0) & 0xff,\n (h2>>>24) & 0xff, (h2>>>16) & 0xff, (h2>>>8) & 0xff, (h2>>>0) & 0xff,\n (h3>>>24) & 0xff, (h3>>>16) & 0xff, (h3>>>8) & 0xff, (h3>>>0) & 0xff,\n (h4>>>24) & 0xff, (h4>>>16) & 0xff, (h4>>>8) & 0xff, (h4>>>0) & 0xff,\n (h5>>>24) & 0xff, (h5>>>16) & 0xff, (h5>>>8) & 0xff, (h5>>>0) & 0xff,\n (h6>>>24) & 0xff, (h6>>>16) & 0xff, (h6>>>8) & 0xff, (h6>>>0) & 0xff,\n (h7>>>24) & 0xff, (h7>>>16) & 0xff, (h7>>>8) & 0xff, (h7>>>0) & 0xff\n ];\n }\n\n function PBKDF2_HMAC_SHA256_OneIter(password, salt, dkLen) {\n // compress password if it's longer than hash block length\n password = password.length <= 64 ? password : SHA256(password);\n\n var i;\n var innerLen = 64 + salt.length + 4;\n var inner = new Array(innerLen);\n var outerKey = new Array(64);\n var dk = [];\n\n // inner = (password ^ ipad) || salt || counter\n for (i = 0; i < 64; i++) inner[i] = 0x36;\n for (i = 0; i < password.length; i++) inner[i] ^= password[i];\n for (i = 0; i < salt.length; i++) inner[64+i] = salt[i];\n for (i = innerLen - 4; i < innerLen; i++) inner[i] = 0;\n\n // outerKey = password ^ opad\n for (i = 0; i < 64; i++) outerKey[i] = 0x5c;\n for (i = 0; i < password.length; i++) outerKey[i] ^= password[i];\n\n // increments counter inside inner\n function incrementCounter() {\n for (var i = innerLen-1; i >= innerLen-4; i--) {\n inner[i]++;\n if (inner[i] <= 0xff) return;\n inner[i] = 0;\n }\n }\n\n // output blocks = SHA256(outerKey || SHA256(inner)) ...\n while (dkLen >= 32) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))));\n dkLen -= 32;\n }\n if (dkLen > 0) {\n incrementCounter();\n dk = dk.concat(SHA256(outerKey.concat(SHA256(inner))).slice(0, dkLen));\n }\n\n return dk;\n }\n\n // The following is an adaptation of scryptsy\n // See: https://www.npmjs.com/package/scryptsy\n function blockmix_salsa8(BY, Yi, r, x, _X) {\n var i;\n\n arraycopy(BY, (2 * r - 1) * 16, _X, 0, 16);\n for (i = 0; i < 2 * r; i++) {\n blockxor(BY, i * 16, _X, 16);\n salsa20_8(_X, x);\n arraycopy(_X, 0, BY, Yi + (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2) * 16, BY, (i * 16), 16);\n }\n\n for (i = 0; i < r; i++) {\n arraycopy(BY, Yi + (i * 2 + 1) * 16, BY, (i + r) * 16, 16);\n }\n }\n\n function R(a, b) {\n return (a << b) | (a >>> (32 - b));\n }\n\n function salsa20_8(B, x) {\n arraycopy(B, 0, x, 0, 16);\n\n for (var i = 8; i > 0; i -= 2) {\n x[ 4] ^= R(x[ 0] + x[12], 7);\n x[ 8] ^= R(x[ 4] + x[ 0], 9);\n x[12] ^= R(x[ 8] + x[ 4], 13);\n x[ 0] ^= R(x[12] + x[ 8], 18);\n x[ 9] ^= R(x[ 5] + x[ 1], 7);\n x[13] ^= R(x[ 9] + x[ 5], 9);\n x[ 1] ^= R(x[13] + x[ 9], 13);\n x[ 5] ^= R(x[ 1] + x[13], 18);\n x[14] ^= R(x[10] + x[ 6], 7);\n x[ 2] ^= R(x[14] + x[10], 9);\n x[ 6] ^= R(x[ 2] + x[14], 13);\n x[10] ^= R(x[ 6] + x[ 2], 18);\n x[ 3] ^= R(x[15] + x[11], 7);\n x[ 7] ^= R(x[ 3] + x[15], 9);\n x[11] ^= R(x[ 7] + x[ 3], 13);\n x[15] ^= R(x[11] + x[ 7], 18);\n x[ 1] ^= R(x[ 0] + x[ 3], 7);\n x[ 2] ^= R(x[ 1] + x[ 0], 9);\n x[ 3] ^= R(x[ 2] + x[ 1], 13);\n x[ 0] ^= R(x[ 3] + x[ 2], 18);\n x[ 6] ^= R(x[ 5] + x[ 4], 7);\n x[ 7] ^= R(x[ 6] + x[ 5], 9);\n x[ 4] ^= R(x[ 7] + x[ 6], 13);\n x[ 5] ^= R(x[ 4] + x[ 7], 18);\n x[11] ^= R(x[10] + x[ 9], 7);\n x[ 8] ^= R(x[11] + x[10], 9);\n x[ 9] ^= R(x[ 8] + x[11], 13);\n x[10] ^= R(x[ 9] + x[ 8], 18);\n x[12] ^= R(x[15] + x[14], 7);\n x[13] ^= R(x[12] + x[15], 9);\n x[14] ^= R(x[13] + x[12], 13);\n x[15] ^= R(x[14] + x[13], 18);\n }\n\n for (i = 0; i < 16; ++i) {\n B[i] += x[i];\n }\n }\n\n // naive approach... going back to loop unrolling may yield additional performance\n function blockxor(S, Si, D, len) {\n for (var i = 0; i < len; i++) {\n D[i] ^= S[Si + i]\n }\n }\n\n function arraycopy(src, srcPos, dest, destPos, length) {\n while (length--) {\n dest[destPos++] = src[srcPos++];\n }\n }\n\n function checkBufferish(o) {\n if (!o || typeof(o.length) !== 'number') {\n return false;\n }\n for (var i = 0; i < o.length; i++) {\n if (typeof(o[i]) !== 'number') { return false; }\n\n var v = parseInt(o[i]);\n if (v != o[i] || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n }\n\n function ensureInteger(value, name) {\n var intValue = parseInt(value);\n if (value != intValue) { throw new Error('invalid ' + name); }\n return intValue;\n }\n\n // N = Cpu cost, r = Memory cost, p = parallelization cost\n // callback(error, progress, key)\n function scrypt(password, salt, N, r, p, dkLen, callback) {\n\n if (!callback) { throw new Error('missing callback'); }\n\n N = ensureInteger(N, 'N');\n r = ensureInteger(r, 'r');\n p = ensureInteger(p, 'p');\n\n dkLen = ensureInteger(dkLen, 'dkLen');\n\n if (N === 0 || (N & (N - 1)) !== 0) { throw new Error('N must be power of 2'); }\n\n if (N > MAX_VALUE / 128 / r) { throw new Error('N too large'); }\n if (r > MAX_VALUE / 128 / p) { throw new Error('r too large'); }\n\n if (!checkBufferish(password)) {\n throw new Error('password must be an array or buffer');\n }\n password = Array.prototype.slice.call(password);\n\n if (!checkBufferish(salt)) {\n throw new Error('salt must be an array or buffer');\n }\n salt = Array.prototype.slice.call(salt);\n\n var b = PBKDF2_HMAC_SHA256_OneIter(password, salt, p * 128 * r);\n var B = new Uint32Array(p * 32 * r)\n for (var i = 0; i < B.length; i++) {\n var j = i * 4;\n B[i] = ((b[j + 3] & 0xff) << 24) |\n ((b[j + 2] & 0xff) << 16) |\n ((b[j + 1] & 0xff) << 8) |\n ((b[j + 0] & 0xff) << 0);\n }\n\n var XY = new Uint32Array(64 * r);\n var V = new Uint32Array(32 * r * N);\n\n var Yi = 32 * r;\n\n // scratch space\n var x = new Uint32Array(16); // salsa20_8\n var _X = new Uint32Array(16); // blockmix_salsa8\n\n var totalOps = p * N * 2;\n var currentOp = 0;\n var lastPercent10 = null;\n\n // Set this to true to abandon the scrypt on the next step\n var stop = false;\n\n // State information\n var state = 0;\n var i0 = 0, i1;\n var Bi;\n\n // How many blockmix_salsa8 can we do per step?\n var limit = parseInt(1000 / r);\n\n // Trick from scrypt-async; if there is a setImmediate shim in place, use it\n var nextTick = (typeof(setImmediate) !== 'undefined') ? setImmediate : setTimeout;\n\n // This is really all I changed; making scryptsy a state machine so we occasionally\n // stop and give other evnts on the evnt loop a chance to run. ~RicMoo\n var incrementalSMix = function() {\n if (stop) {\n return callback(new Error('cancelled'), currentOp / totalOps);\n }\n\n switch (state) {\n case 0:\n // for (var i = 0; i < p; i++)...\n Bi = i0 * 32 * r;\n\n arraycopy(B, Bi, XY, 0, Yi); // ROMix - 1\n\n state = 1; // Move to ROMix 2\n i1 = 0;\n\n // Fall through\n\n case 1:\n\n // Run up to 1000 steps of the first inner smix loop\n var steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (var i = 0; i < steps; i++) { // ROMix - 2\n arraycopy(XY, 0, V, (i1 + i) * Yi, Yi) // ROMix - 3\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 4\n }\n\n // for (var i = 0; i < N; i++)\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n var percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n\n if (i1 < N) {\n break;\n }\n\n i1 = 0; // Move to ROMix 6\n state = 2;\n\n // Fall through\n\n case 2:\n\n // Run up to 1000 steps of the second inner smix loop\n var steps = N - i1;\n if (steps > limit) { steps = limit; }\n for (var i = 0; i < steps; i++) { // ROMix - 6\n var offset = (2 * r - 1) * 16; // ROMix - 7\n var j = XY[offset] & (N - 1);\n blockxor(V, j * Yi, XY, Yi); // ROMix - 8 (inner)\n blockmix_salsa8(XY, Yi, r, x, _X); // ROMix - 9 (outer)\n }\n\n // for (var i = 0; i < N; i++)...\n i1 += steps;\n currentOp += steps;\n\n // Call the callback with the progress (optionally stopping us)\n var percent10 = parseInt(1000 * currentOp / totalOps);\n if (percent10 !== lastPercent10) {\n stop = callback(null, currentOp / totalOps);\n if (stop) { break; }\n lastPercent10 = percent10;\n }\n\n if (i1 < N) {\n break;\n }\n\n arraycopy(XY, 0, B, Bi, Yi); // ROMix - 10\n\n // for (var i = 0; i < p; i++)...\n i0++;\n if (i0 < p) {\n state = 0;\n break;\n }\n\n b = [];\n for (var i = 0; i < B.length; i++) {\n b.push((B[i] >> 0) & 0xff);\n b.push((B[i] >> 8) & 0xff);\n b.push((B[i] >> 16) & 0xff);\n b.push((B[i] >> 24) & 0xff);\n }\n\n var derivedKey = PBKDF2_HMAC_SHA256_OneIter(password, b, dkLen);\n\n // Done; don't break (which would reschedule)\n return callback(null, 1.0, derivedKey);\n }\n\n // Schedule the next steps\n nextTick(incrementalSMix);\n }\n\n // Bootstrap the incremental smix\n incrementalSMix();\n }\n\n // node.js\n if (typeof(exports) !== 'undefined') {\n module.exports = scrypt;\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof(define) === 'function' && define.amd) {\n define(scrypt);\n\n // Web Browsers\n } else if (root) {\n\n // If there was an existing library \"scrypt\", make sure it is still available\n if (root.scrypt) {\n root._scrypt = root.scrypt;\n }\n\n root.scrypt = scrypt;\n }\n\n})(this);\n\n}).call(this,require(\"timers\").setImmediate)\n},{\"timers\":45}],44:[function(require,module,exports){\n(function (process,global){\n(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var setImmediate;\n\n function addFromSetImmediateArguments(args) {\n tasksByHandle[nextHandle] = partiallyApplied.apply(undefined, args);\n return nextHandle++;\n }\n\n // This function accepts the same arguments as setImmediate, but\n // returns a function that requires no arguments.\n function partiallyApplied(handler) {\n var args = [].slice.call(arguments, 1);\n return function() {\n if (typeof handler === \"function\") {\n handler.apply(undefined, args);\n } else {\n (new Function(\"\" + handler))();\n }\n };\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(partiallyApplied(runIfPresent, handle), 0);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n task();\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function installNextTickImplementation() {\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n process.nextTick(partiallyApplied(runIfPresent, handle));\n return handle;\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n global.postMessage(messagePrefix + handle, \"*\");\n return handle;\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n channel.port2.postMessage(handle);\n return handle;\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n // Create a