{ "address": "0x2B251211f5Ff0A753A8d5B9411d736875174f375", "abi": [ { "inputs": [ { "components": [ { "internalType": "address", "name": "liquidity", "type": "address" }, { "internalType": "address", "name": "factory", "type": "address" }, { "internalType": "address", "name": "adminImplementation", "type": "address" }, { "internalType": "address", "name": "secondaryImplementation", "type": "address" }, { "internalType": "address", "name": "supplyToken", "type": "address" }, { "internalType": "address", "name": "borrowToken", "type": "address" }, { "internalType": "uint8", "name": "supplyDecimals", "type": "uint8" }, { "internalType": "uint8", "name": "borrowDecimals", "type": "uint8" }, { "internalType": "uint256", "name": "vaultId", "type": "uint256" }, { "internalType": "bytes32", "name": "liquiditySupplyExchangePriceSlot", "type": "bytes32" }, { "internalType": "bytes32", "name": "liquidityBorrowExchangePriceSlot", "type": "bytes32" }, { "internalType": "bytes32", "name": "liquidityUserSupplySlot", "type": "bytes32" }, { "internalType": "bytes32", "name": "liquidityUserBorrowSlot", "type": "bytes32" } ], "internalType": "struct Structs.ConstantViews", "name": "constants_", "type": "tuple" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "uint256", "name": "colLiquidated", "type": "uint256" }, { "internalType": "uint256", "name": "debtLiquidated", "type": "uint256" } ], "name": "FluidLiquidateResult", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "errorId_", "type": "uint256" } ], "name": "FluidLiquidityCalcsError", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "errorId_", "type": "uint256" } ], "name": "FluidSafeTransferError", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "errorId_", "type": "uint256" } ], "name": "FluidVaultError", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "colAbsorbedRaw_", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "debtAbsorbedRaw_", "type": "uint256" } ], "name": "LogAbsorb", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "liquidator_", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "colAmt_", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "debtAmt_", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "to_", "type": "address" } ], "name": "LogLiquidate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "user_", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "nftId_", "type": "uint256" }, { "indexed": false, "internalType": "int256", "name": "colAmt_", "type": "int256" }, { "indexed": false, "internalType": "int256", "name": "debtAmt_", "type": "int256" }, { "indexed": false, "internalType": "address", "name": "to_", "type": "address" } ], "name": "LogOperate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "int256", "name": "colAmt_", "type": "int256" }, { "indexed": false, "internalType": "int256", "name": "debtAmt_", "type": "int256" } ], "name": "LogRebalance", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "supplyExPrice_", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "borrowExPrice_", "type": "uint256" } ], "name": "LogUpdateExchangePrice", "type": "event" }, { "stateMutability": "nonpayable", "type": "fallback" }, { "inputs": [], "name": "LIQUIDITY", "outputs": [ { "internalType": "contract IFluidLiquidity", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "VAULT_FACTORY", "outputs": [ { "internalType": "contract IFluidVaultFactory", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "VAULT_ID", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "absorb", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "constantsView", "outputs": [ { "components": [ { "internalType": "address", "name": "liquidity", "type": "address" }, { "internalType": "address", "name": "factory", "type": "address" }, { "internalType": "address", "name": "adminImplementation", "type": "address" }, { "internalType": "address", "name": "secondaryImplementation", "type": "address" }, { "internalType": "address", "name": "supplyToken", "type": "address" }, { "internalType": "address", "name": "borrowToken", "type": "address" }, { "internalType": "uint8", "name": "supplyDecimals", "type": "uint8" }, { "internalType": "uint8", "name": "borrowDecimals", "type": "uint8" }, { "internalType": "uint256", "name": "vaultId", "type": "uint256" }, { "internalType": "bytes32", "name": "liquiditySupplyExchangePriceSlot", "type": "bytes32" }, { "internalType": "bytes32", "name": "liquidityBorrowExchangePriceSlot", "type": "bytes32" }, { "internalType": "bytes32", "name": "liquidityUserSupplySlot", "type": "bytes32" }, { "internalType": "bytes32", "name": "liquidityUserBorrowSlot", "type": "bytes32" } ], "internalType": "struct Structs.ConstantViews", "name": "constantsView_", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "int256", "name": "positionTick_", "type": "int256" }, { "internalType": "uint256", "name": "positionTickId_", "type": "uint256" }, { "internalType": "uint256", "name": "positionRawDebt_", "type": "uint256" }, { "internalType": "uint256", "name": "tickData_", "type": "uint256" } ], "name": "fetchLatestPosition", "outputs": [ { "internalType": "int256", "name": "", "type": "int256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "positionRawCol_", "type": "uint256" }, { "internalType": "uint256", "name": "branchId_", "type": "uint256" }, { "internalType": "uint256", "name": "branchData_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "debtAmt_", "type": "uint256" }, { "internalType": "uint256", "name": "colPerUnitDebt_", "type": "uint256" }, { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "bool", "name": "absorb_", "type": "bool" } ], "name": "liquidate", "outputs": [ { "internalType": "uint256", "name": "actualDebtAmt_", "type": "uint256" }, { "internalType": "uint256", "name": "actualColAmt_", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token_", "type": "address" }, { "internalType": "uint256", "name": "amount_", "type": "uint256" }, { "internalType": "bytes", "name": "data_", "type": "bytes" } ], "name": "liquidityCallback", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nftId_", "type": "uint256" }, { "internalType": "int256", "name": "newCol_", "type": "int256" }, { "internalType": "int256", "name": "newDebt_", "type": "int256" }, { "internalType": "address", "name": "to_", "type": "address" } ], "name": "operate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "int256", "name": "", "type": "int256" }, { "internalType": "int256", "name": "", "type": "int256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "slot_", "type": "bytes32" } ], "name": "readFromStorage", "outputs": [ { "internalType": "uint256", "name": "result_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rebalance", "outputs": [ { "internalType": "int256", "name": "supplyAmt_", "type": "int256" }, { "internalType": "int256", "name": "borrowAmt_", "type": "int256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "vaultVariables2_", "type": "uint256" } ], "name": "updateExchangePrices", "outputs": [ { "internalType": "uint256", "name": "liqSupplyExPrice_", "type": "uint256" }, { "internalType": "uint256", "name": "liqBorrowExPrice_", "type": "uint256" }, { "internalType": "uint256", "name": "vaultSupplyExPrice_", "type": "uint256" }, { "internalType": "uint256", "name": "vaultBorrowExPrice_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "updateExchangePricesOnStorage", "outputs": [ { "internalType": "uint256", "name": "liqSupplyExPrice_", "type": "uint256" }, { "internalType": "uint256", "name": "liqBorrowExPrice_", "type": "uint256" }, { "internalType": "uint256", "name": "vaultSupplyExPrice_", "type": "uint256" }, { "internalType": "uint256", "name": "vaultBorrowExPrice_", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" } ], "transactionHash": "0xc8d9c5d54e30e064b5222aa547f5b5c3fcb1a268877b16d28d4ae71db35418fd", "args": [ { "liquidity": "0x52Aa899454998Be5b000Ad077a46Bbe360F4e497", "factory": "0x3B38099b79a143038a3935C619B2A3eA70438C60", "adminImplementation": "0x8730d7a5aF435678b2686289eEB6A74A042081e6", "secondaryImplementation": "0x7726A2Da967c695531CEe326d081B72ec0F115DD", "supplyToken": "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", "borrowToken": "0xdac17f958d2ee523a2206206994597c13d831ec7", "supplyDecimals": 18, "borrowDecimals": 6, "vaultId": 5, "liquidityTotalSupplySlot": "0x94416004645a626907820dc10a83f0e7e82fe5572b44e84e877643ce205ff0ed", "liquidityTotalBorrowSlot": "0x76591fc11dbbd749b6df72a71faf88b812c3702b5747249a615a8b3dc6bb6a6a", "liquiditySupplyExchangePriceSlot": "0xc24eaceff5753c99066a839532d708a8661af7a9b01d44d0cd915c53969eb725", "liquidityBorrowExchangePriceSlot": "0x0a7e0e74b40a947daf7b6df34c66be699f819f509940d1bd48c4d99bc5e3353c", "liquidityUserSupplySlot": "0xd99361d40f410781fe597225415b93d3de715f54183034e15c59630ac1e0a167", "liquidityUserBorrowSlot": "0x47a67b89bd075ca690d4ad21e62069b867ee8c703583e421be27057f1710b31d" } ], "numDeployments": 1, "bytecode": "0x6102206040523480156200001257600080fd5b5060405162005f8738038062005f878339810160408190526200003591620002a6565b80516001600160a01b0390811661014081815260208401518316610160908152610100808601516101809081526080808801518716905260a0808801518716905260c08088015160ff90811690915260e0808901519091169052610120808801516101a0819052948801516101c052928701516101e052860151610200526040808701518616909152606086015190941690526000805466100000004000001781559251632d71cdb960e21b815260048101919091526001600160401b0391605b9163b5c736e490602401602060405180830381865afa1580156200011e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000144919062000396565b901c16905060006001600160401b03609b610140516001600160a01b031663b5c736e46101c0516040518263ffffffff1660e01b81526004016200018a91815260200190565b602060405180830381865afa158015620001a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ce919062000396565b901c16905064e8d4a51000821080620001eb575064e8d4a5100081105b1562000212576040516330090e6560e11b8152617924600482015260240160405180910390fd5b60401b177ce8d4a51000000000e8d4a51000000000000000000000000000000000001760085550620003b0565b6040516101a081016001600160401b03811182821017156200027157634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200028f57600080fd5b919050565b805160ff811681146200028f57600080fd5b60006101a08284031215620002ba57600080fd5b620002c46200023f565b620002cf8362000277565b8152620002df6020840162000277565b6020820152620002f26040840162000277565b6040820152620003056060840162000277565b6060820152620003186080840162000277565b60808201526200032b60a0840162000277565b60a08201526200033e60c0840162000294565b60c08201526200035160e0840162000294565b60e08201526101008381015190820152610120808401519082015261014080840151908201526101608084015190820152610180928301519281019290925250919050565b600060208284031215620003a957600080fd5b5051919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051615a376200055060003960006106fe0152600081816106d70152611c010152600081816106b001526124b301526000818161068901526123d1015260008181610458015281816106620152610c1f01526000818161010d015281816101c7015281816103830152818161054b01528181610c4b0152610d3b0152600081816104240152818161052601528181611c2701528181611d5101528181611f8e015281816120ad0152818161219201528181612419015281816124e001528181613c3b01528181613d5801528181613f64015261401401526000818161059a01528181612906015261404401526000818161028b01526105730152600061063b015260006106130152600081816105ea01528181610a4701528181611ef001528181611fcb015281816121d001528181612a4601528181613bde0152613c780152600081816105c2015281816109a101528181611db801528181611dfd015281816120eb0152613d7f0152615a376000f3fe6080604052600436106100d25760003560e01c8063540acabc1161007f578063ad20750111610059578063ad207501146104b8578063b5c736e4146104d8578063b7791bf2146104f7578063ebd93ac61461072f576100d2565b8063540acabc146104465780637d7c2a1c146104885780638433ea22146104a5576100d2565b8063103f2907116100b0578063103f29071461037157806322348cc7146103ca5780632861c7d114610412576100d2565b806302161887146102e9578063032d22761461032357806309f0d8cb14610351575b3480156100de57600080fd5b506040517f4502d0630000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690634502d06390602401602060405180830381865afa158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d9190615409565b8061024757506040517fe04c8e5d0000000000000000000000000000000000000000000000000000000081523360048201523060248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e04c8e5d90604401602060405180830381865afa158015610223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102479190615409565b610286576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792560048201526024015b60405180910390fd5b6102e77f00000000000000000000000000000000000000000000000000000000000000006000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061074492505050565b005b3480156102f557600080fd5b506102fe610790565b6040805194855260208501939093529183015260608201526080015b60405180910390f35b610336610331366004615448565b610884565b6040805193845260208401929092529082015260600161031a565b34801561035d57600080fd5b506102fe61036c366004615489565b6123a6565b34801561037d57600080fd5b506103a57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161031a565b3480156103d657600080fd5b506103ea6103e53660046154a2565b61263e565b604080519586526020860194909452928401919091526060830152608082015260a00161031a565b34801561041e57600080fd5b506103a57f000000000000000000000000000000000000000000000000000000000000000081565b34801561045257600080fd5b5061047a7f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161031a565b6104906128fe565b6040805192835260208301919091520161031a565b6104906104b33660046154d4565b61297e565b3480156104c457600080fd5b506102e76104d3366004615513565b613f4c565b3480156104e457600080fd5b5061047a6104f3366004615489565b5490565b34801561050357600080fd5b50604080516101a08101825273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000811660208301527f00000000000000000000000000000000000000000000000000000000000000008116828401527f0000000000000000000000000000000000000000000000000000000000000000811660608301527f0000000000000000000000000000000000000000000000000000000000000000811660808301527f00000000000000000000000000000000000000000000000000000000000000001660a082015260ff7f0000000000000000000000000000000000000000000000000000000000000000811660c08301527f00000000000000000000000000000000000000000000000000000000000000001660e08201527f00000000000000000000000000000000000000000000000000000000000000006101008201527f00000000000000000000000000000000000000000000000000000000000000006101208201527f00000000000000000000000000000000000000000000000000000000000000006101408201527f00000000000000000000000000000000000000000000000000000000000000006101608201527f0000000000000000000000000000000000000000000000000000000000000000610180820152905161031a919061559c565b34801561073b57600080fd5b506102e761403f565b6060600080835160208501865af43d6040519250601f19601f6020830101168301604052808352806000602085013e81156001810361078757816000803e816000fd5b50505092915050565b6000806000806107a16001546123a6565b9296509094509250905067ffffffffffffffff8411806107c8575067ffffffffffffffff83115b806107da575067ffffffffffffffff82115b806107ec575067ffffffffffffffff81115b15610827576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792d600482015260240161027d565b604083811b8517608084901b1760c083901b17600855517fcde545703e0372175cadfff811d67c32910c3dcb33199679b3271c4106afdf9a906108769084908490918252602082015260400190565b60405180910390a190919293565b60008054819081906001811682036108a257600181176000556108d8565b6040517f60121cca000000000000000000000000000000000000000000000000000000008152617919600482015260240161027d565b861580156108e4575085155b806109245750861580159061092457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8f087138015610924575061271087125b806109645750851580159061096457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8f086138015610964575061271086125b1561099f576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791a600482015260240161027d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480156109f85750600087135b15610a3f57348714610a3a576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791b600482015260240161027d565b610ad8565b3415610ad8577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148015610a9e5750600086125b610ad8576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791b600482015260240161027d565b610b58604051806102000160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600154610100820152600282901c620fffff166000808215610ba05782600116600114610b91576207ffff600184901c16600003610bc2565b6207ffff600184901c16610bc2565b7f80000000000000000000000000000000000000000000000000000000000000005b61014085015260008c9003610cf4577f800000000000000000000000000000000000000000000000000000000000000060c08501526040517f94bf804d0000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201523360248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906394bf804d906044016020604051808303816000875af1158015610ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccd91906156eb565b9b50847a040000000000000000000000000000000000000000000000000000019450610f13565b60008b1280610d03575060008a135b8015610dd457506040517f6352211e000000000000000000000000000000000000000000000000000000008152600481018d905233907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa158015610d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbb9190615704565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610e0f576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791c600482015260240161027d565b60008c8152600360205260408120549350839003610e5d576040517f60121cca000000000000000000000000000000000000000000000000000000008152617923600482015260240161027d565b66ffffffffffffff603584901c811660ff602d86901c81169190911b6060870152607585901c909116606d85901c9182161b60a086015267ffffffffffffffff16915060018084169003610ed6577f800000000000000000000000000000000000000000000000000000000000000060c0850152610f13565b82600216600214610ef3576207ffff600284901c16600003610efe565b6207ffff600284901c165b60c0850152601583901c62ffffff1660e08501525b7f80000000000000000000000000000000000000000000000000000000000000008460c00151131561120157602d9290921c60ff16918215610f5e5760608401516001841b01610f67565b83606001516001015b9250606083610f7c8660c0015160020b6140a3565b610f869190615750565b610f92911c6001615767565b608085015260c0840151600090815260056020526040902054925060018084161480610fca57508360e0015162ffffff600185901c16115b156110f257610fe78460c001518560e0015186608001518661263e565b6101c089015260608801919091526080870182905260c087019290925260a086015191935011156110bb5767ffffffffffffffff6034856101c00151901c16925060ff8316600884901c901b9250836080015183611045919061577a565b9250606483101561105557606492505b603461106684603860086001614305565b6101c086015160008581526007602052604090207ffffffffffffffffffffffffffffffffffff0000000000000000fffffffffffff9091169190921b17905560a08401516080850180519190910390526111f9565b83608001518460a00151600a546110d29190615767565b6110dc919061577a565b600a5560006080850181905260608501526111f9565b67ffffffffffffffff601984901c16915081600003611141576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791d600482015260240161027d565b60ff8216600883901c901b915081846080015110611160576000611168565b836080015182035b91506127108210156111af57600091508361014001518460c00151036111a0576111978461014001518661442e565b61014086015294505b6111af8460c001516000614610565b60196111c083603860086000614305565b60c08601516000908152600560205260409020911b6301ffffff851617905560a08401516080850180516111f590839061577a565b9052505b600060a08501525b60c08401516040850152606084015184526080840151602085015261010084015161122b906123a6565b6101a08801526101808701525061016085015260008b13156112d15761018084015161125c64e8d4a510008d615750565b61126691906157bc565b846060018181516112779190615767565b90525060608401516fffffffffffffffffffffffffffffffff10156112cc576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792f600482015260240161027d565b611428565b60008b1215611428577fffffffffffffffffffffffffffffffff800000000000000000000000000000008b13156113845761018084015160019061131a64e8d4a510008e6157d0565b611324919061581c565b61132e9190615884565b90508360600151816000031115611375576040517f60121cca000000000000000000000000000000000000000000000000000000008152617926600482015260240161027d565b60608401805182019052611428565b7f80000000000000000000000000000000000000000000000000000000000000008b036113f25764e8d4a5100084610180015185606001516113c69190615750565b6113d091906157bc565b6113d9906158ab565b6113e49060016158e3565b600060608601529a50611428565b6040517f60121cca00000000000000000000000000000000000000000000000000000000815261792f600482015260240161027d565b60008a13156114f8576101a084015161144664e8d4a510008c615750565b61145091906157bc565b61145b906001615767565b92506127106103ff6052866101000151901c16846114799190615750565b61148391906157bc565b61148d9084615767565b8460800181815161149e9190615767565b90525060808401516fffffffffffffffffffffffffffffffff10156114f3576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792f600482015260240161027d565b611618565b60008a1215611618577fffffffffffffffffffffffffffffffff800000000000000000000000000000008a13156115ad576101a084015161153e64e8d4a510008c6157d0565b611548919061581c565b6115539060016158e3565b9050806000039050836080015181111561159d576040517f60121cca000000000000000000000000000000000000000000000000000000008152617927600482015260240161027d565b6080840180518290039052611618565b7f80000000000000000000000000000000000000000000000000000000000000008a036113f257600164e8d4a51000856101a0015186608001516115f19190615750565b6115fb91906157bc565b611604906158ab565b61160e9190615884565b6000608086015299505b8a158015611624575089155b1561165f576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791a600482015260240161027d565b6080840151156118d4576116978460600151633b9aca008660800151633b9aca01028161168e5761168e61578d565b04600101614683565b60a0880152608087015260e086015260c085015260008a12156117095783602001518460a0015185608001516116cd919061577a565b1115611709576040517f60121cca000000000000000000000000000000000000000000000000000000008152617934600482015260240161027d565b60008b138015611717575089155b156117bc578351602085015161173b906c0100000000000000000000000090615750565b61174591906157bc565b84606001516c010000000000000000000000008660a00151876080015161176c919061577a565b6117769190615750565b61178091906157bc565b11156117bc576040517f60121cca000000000000000000000000000000000000000000000000000000008152617934600482015260240161027d565b8361014001518460c00151126118cf5760008460c00151126117e95760018460c00151901b6001176117f5565b60c084015160000360011b5b92508460021660000361183257600283901b857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000161794506118fb565b6001603486811c633fffffff16919091016000818152600760205260409020780fffffffc00000000000000000000000000000000000000000609089901b167afffff000000000000000000000000000000000000000000000000060c28a901b161790557ffffffffffffffffffffffffffffffffffffffffffffc00000000000000000000909616600285901b17601687901b179086901b179491505b6118fb565b7f800000000000000000000000000000000000000000000000000000000000000060c08501525b60008b128061190a575060008a135b15611aeb5773ffffffffffffffffffffffffffffffffffffffff891661192e573398505b608084015115611aeb576060846101000151901c73ffffffffffffffffffffffffffffffffffffffff1663e6aa216c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b091906156eb565b9250836101a00151846101800151846119c99190615750565b6119d391906157bc565b92506103e86103ff6020866101000151901c168402816119f5576119f561578d565b049150722cd76fe086b93ce2f768a00b22a000000000008210611a35576c010000000000000000000000006b033b2e3c9fd0803ce8000000830402611a54565b6b033b2e3c9fd0803ce80000006c010000000000000000000000008302045b9150611a5f82614860565b5080915050808460c001511315611aeb578360c001518460400151131580611ab05750633b9aca008460200151633b9aca010281611a9f57611a9f61578d565b046001018460a00151856080015103115b15611aeb576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791e600482015260240161027d565b7f80000000000000000000000000000000000000000000000000000000000000008460c001511315611b475760008460c0015112611b345760018460c00151901b600117611b40565b60c084015160000360011b5b9250611b4c565b600092505b60a0840151606d90611b6390603860086000614305565b6060860151911b90602d90611b7d90603860086000614305565b60e0870151911b9060151b600186901b8615611b9a576000611b9d565b60015b60ff1617171717600360008e81526020019081526020016000208190555060008b1215611d4657610100840151603e1c6103ff1692508215611d46576040517fb5c736e40000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b5c736e490602401602060405180830381865afa158015611c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca791906156eb565b6101e0850181905266ffffffffffffff600982901c1660ff600183901c161b9250611cd29083614c68565b9050600081138015611d0b575083610160015164e8d4a510008c6000030281611cfd57611cfd61578d565b05816103e885810385020503125b15611d46576040517f60121cca000000000000000000000000000000000000000000000000000000008152617928600482015260240161027d565b60008b1315611ec4577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad967e1573eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614611df9576000611dfb565b345b7f00000000000000000000000000000000000000000000000000000000000000008e600080600033604051602001611e4f919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401611e7f96959493929190615967565b604080518083038185885af1158015611e9c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ec191906159c0565b50505b60008a1215612092577fffffffffffffffffffffffff11111111111111111111111111111111111111127f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1601611f875789600003925082341115611f4957611f4433843403614cfa565b611f8c565b82341015611f44576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791b600482015260240161027d565b600092505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad967e15847f000000000000000000000000000000000000000000000000000000000000000060008e6000803360405160200161201d919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b815260040161204d96959493929190615967565b604080518083038185885af115801561206a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061208f91906159c0565b50505b60008b121561217757604080516000808252602082019092527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169163ad967e15917f0000000000000000000000000000000000000000000000000000000000000000918f918e9082906040518763ffffffff1660e01b815260040161213296959493929190615967565b60408051808303816000875af1158015612150573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217491906159c0565b50505b60008a131561225d57604080516000808252602082019092527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169163ad967e15917f000000000000000000000000000000000000000000000000000000000000000091908e9082908f906040518763ffffffff1660e01b815260040161221896959493929190615967565b60408051808303816000875af1158015612236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225a91906159c0565b50505b67ffffffffffffffff605286901c1692508360000151846060015160ff8516600886901c901b61228d9190615767565b612297919061577a565b925067ffffffffffffffff609286901c16915083602001518460a0015185608001516122c3919061577a565b6122d690600885901c60ff86161b615767565b6122e0919061577a565b915060926122f383603860086001614305565b901b605261230685603860086000614305565b901b7ffffffffffffc00000000000000000000000000000003ffffffffffffffffffff8716171760005560408051338152602081018e90529081018c9052606081018b905273ffffffffffffffffffffffffffffffffffffffff8a1660808201527ffef64760e30a41b9d5ba7dd65ff7236a61d89ed8b44c67a29e84db1a67513a1c9060a00160405180910390a150999a98995096979650505050505050565b6008546040517fb5c736e40000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015260009182918291829161248a9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b5c736e4906024015b602060405180830381865afa158015612461573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248591906156eb565b614d49565b506040517fb5c736e40000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006004820152909550612524907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b5c736e490602401612444565b94505067ffffffffffffffff81811690604083901c168187108061254757508086105b15612582576040517f60121cca000000000000000000000000000000000000000000000000000000008152617932600482015260240161027d565b61271061ffff8916670de0b6b3a7640000848a670de0b6b3a764000002816125ac576125ac61578d565b040302816125bc576125bc61578d565b04945061271061ffff60108a901c16670de0b6b3a76400008389670de0b6b3a764000002816125ed576125ed61578d565b040302816125fd576125fd61578d565b049350670de0b6b3a7640000608084901c67ffffffffffffffff1686820102049450670de0b6b3a764000060c084901c858201020493505050509193509193565b600080808080868180600189901c62ffffff168b9003612684575050601a87901c633fffffff169250603887901c6603ffffffffffff166001601989901c8116146126db565b60008c8152600660205260408120600360028e0181810660550292918491048152602081019190915260400160002054901c600181811c633fffffff169750601f82901c6603ffffffffffff169450908116149150505b6000858152600760205260409020549350801561271e577f80000000000000000000000000000000000000000000000000000000000000009b50600099506128ea565b836003166002036127885761274082607486901c6603ffffffffffff16614f57565b91506001612750600f6023615767565b6001901b61275e919061577a565b82146127885760a69390931c633fffffff166000818152600760205260409020549094509261271e565b83600316600314806127b4575060016127a3600f6023615767565b6001901b6127b1919061577a565b82145b156127e5577f80000000000000000000000000000000000000000000000000000000000000009b50600099506128ea565b6127fd8a607486901c6603ffffffffffff1684614fef565b9950606483048a111561281a5761271061270f8b0204995061281f565b600099505b89156128c65783600416600414612842576207ffff600385901c1660000361284d565b6207ffff600385901c165b9b50600061285d8d60020b6140a3565b905061271f612710820204633fffffff601687901c811661287e838561577a565b6128889190615750565b61289291906157bc565b61289c9082615767565b6128b36c010000000000000000000000008e615750565b6128bd91906157bc565b975050506128ea565b7f80000000000000000000000000000000000000000000000000000000000000009b505b8b8a97509750505050945094509450945094565b6000806129627f00000000000000000000000000000000000000000000000000000000000000006000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061074492505050565b80602001905181019061297591906159c0565b90939092509050565b6000806129b36040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b60008054906001821690036108a257600181176000556127108810806129e857506fffffffffffffffffffffffffffffffff88115b15612a23576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792e600482015260240161027d565b7fffffffffffffffffffffffff11111111111111111111111111111111111111127f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1601612ae857873414158015612aa8575061dead73ffffffffffffffffffffffffffffffffffffffff871614155b15612ae3576040517f60121cca000000000000000000000000000000000000000000000000000000008152617920600482015260240161027d565b612b24565b3415612b24576040517f60121cca000000000000000000000000000000000000000000000000000000008152617920600482015260240161027d565b6001548252600281901c620fffff16600003612b70576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791f600482015260240161027d565b8151612b7b906123a6565b90919250909150836060018460800182815250828152505050612bf86040518061018001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b612c316040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b601683901c633fffffff16808252600090815260076020908152604082205490830181905260741c6603ffffffffffff166060830181905281908103612c7f576603ffffffffc00060608401525b602083015160c41c620fffff1691508115612cc65781600116600114612cb1576207ffff600183901c16600003612cbc565b6207ffff600183901c165b6080840152612ced565b7f800000000000000000000000000000000000000000000000000000000000000060808401525b84600416600414612d0a576207ffff600386901c16600003612d15565b6207ffff600386901c165b60c08501526002851615612d2a576002612d2d565b60015b60ff1684610100018181525050612d7a6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60c085015181528651604080517fe6aa216c000000000000000000000000000000000000000000000000000000008152905160609290921c9163e6aa216c916004808201926020929091908290030181865afa158015612dde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0291906156eb565b92508660800151876060015184612e199190615750565b612e2391906157bc565b9250612e4683760a70c3c40a64e6c51999090b65f67d92400000000000006157bc565b87519092506127109060481c6103ff1681018302046060860152722cd76fe086b93ce2f768a00b22a000000000008310612e9d576c010000000000000000000000006b033b2e3c9fd0803ce8000000840402612ebc565b6b033b2e3c9fd0803ce80000006c010000000000000000000000008402045b87519093506103e890602a1c6103ff168402049150612eda82614860565b50602088015286516103e89060341c6103ff168402049150612efb82614860565b506040880152608087015164e8d4a510008e0281612f1b57612f1b61578d565b0485528915612fb15760025485516fffffffffffffffffffffffffffffffff8216945060809190911c9250831115612f965784518390612f5b9084615750565b612f6591906157bc565b60a08601819052612f76908361577a565b855160808088018290526000885282901b94039384176002559150612fb1565b6000600255845183900385526080850183905260a085018290525b86602001518560c00151138015612fd0575086604001518560c0015113155b15613a9857845115613a98576040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081018290528190680100000000000000009060008960c0015112613041576101008960c001518161303b5761303b61578d565b0561305e565b60016101008a60c001516001018161305b5761305b61578d565b05035b6040820152845161306e906140a3565b604086015261010089015160010361309957604085015160e08a015260c089015160208201526131a8565b61271f856040015161271002816130b2576130b261578d565b046060860181905260408601510360808601819052602089015160161c633fffffff90811660c0880181905290910260608701519190040160e08a0152845160208c01516131019060016158e3565b14801561311257508460c001516001145b156131a85773ffffffffffffffffffffffffffffffffffffffff8f1661dead03613172576040517fcc36aa44000000000000000000000000000000000000000000000000000000008152600060048201819052602482015260440161027d565b6040517f60121cca000000000000000000000000000000000000000000000000000000008152617935600482015260240161027d565b8861010001516001036132185760c0890180516000908152600560205260408082205460608c01518c5194518452919092206301fffffe8316601a9490941b9390931760389190911b1760011790915566ffffffffffffff602182901c1660ff601983901c161b9750955061323b565b67ffffffffffffffff60348960200151901c16965060ff8716600888901c901b96505b868960200181815161324d9190615767565b90525060e089015161326c6c0100000000000000000000000089615750565b61327691906157bc565b896040018181516132879190615767565b90525060c089015160208201511480156132a657508861010001516001145b806132b357506080810151155b156133e35780608001516000036132dc5760408082015160009081526004602052205460808201525b88610100015160010361333357604081015160c08a015160009081036101009283020190910160608301819052608083018051821b90911c9081905290036133335760408082015160009081526004602052908120555b60808101511561336157600161334c8260800151615034565b604083015161010002010360208201526133e3565b8a6020015181604001516101000212156133a0577f800000000000000000000000000000000000000000000000000000000000000060208201526133e3565b604080820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01908190526000908152600460205220546080820152613333565b8060200151886080015113801561340157508a602001518860800151135b1561341e5760808801516101208a015260026101608a015261345a565b8a60200151816020015113156134465760208101516101208a015260016101608a015261345a565b60208b01516101208a015260036101608a01525b61346b89610120015160020b6140a3565b60408601526101608901516002036134ff5761271f856040015161271002816134965761349661578d565b046060860181905260408087015191909103608087019081526020808b015160a61c633fffffff908116600090815260079092529290205460a08b0181905260161c821660c0880181905290510260608701519190040160a086018190526101408a015261351c565b604085015160a086018190526101408a0152633fffffff60c08601525b6c010000000000000000000000008961014001518a6060015161353f9190615750565b61354991906157bc565b61355f906b033b2e3c9fd0803ce800000061577a565b8960e001518a602001518b61014001516135799190615750565b61358391906157bc565b8a60200151613592919061577a565b6135a8906b033b2e3c9fd0803ce8000000615750565b6135b291906157bc565b93506b033b2e3c9fd0803ce80000008960600151856135d19190615750565b6135db91906157bc565b9250838960200151036135f6576135f360018561577a565b93505b88518410158061360b57508861016001516003145b156138b25760808101516040808301516000908152600460205220558851841061372757885160608a01519094506b033b2e3c9fd0803ce8000000906136519086615750565b61365b91906157bc565b925082896040015161366d919061577a565b6c01000000000000000000000000858b6020015161368b919061577a565b6136959190615750565b61369f91906157bc565b96506136aa87614860565b60608701819052600191909101865261271061271f8202046040870181905281900360808701819052908803633fffffff02816136e9576136e961578d565b0460c086018190521561371a57633fffffff8560c001511015613710578460c0015161371d565b633ffffffe61371d565b60015b60c086015261373a565b6101208901516001908101865260c08601525b6020890151613749858261577a565b6137539084615750565b61375d91906157bc565b915083896080018181516137719190615767565b90525060208901805185919061378890839061577a565b90525060a08901805184919061379f908390615767565b9052506040890180518491906137b690839061577a565b90525060608801516137c890836150ea565b6060890152602089015160641115613810576040517f60121cca000000000000000000000000000000000000000000000000000000008152617930600482015260240161027d565b8451600013613826578451600190811b1761382f565b845160000360011b5b606089015160208b015191975060741b9060349061385290603860086001614305565b901b60168760c00151901b600289901b60a6808d60200151901c901b60011717171717600760008a6000015181526020019081526020016000208190555060168860000151901b600287901b6034808d901c901b60021717179950613a93565b8851849003895260208901516138c8858261577a565b6138d29084615750565b6138dc91906157bc565b915083896080018181516138f09190615767565b90525060208901805185919061390790839061577a565b90525060a08901805184919061391e908390615767565b90525060408901805184919061393590839061577a565b905250606088015161394790836150ea565b6060890152610160890151680100000000000000009250600203613a6c57633fffffff60a68960200151901c1696508760a00151955060006603ffffffffffff607488901c16905060006139a88a606001518361518e90919063ffffffff16565b6020808c0180518d516000908152600790935260409092207fffffffffffffffffffffffc00000000000000000000000000000000000000000909216607484901b17600217909155998b5298889052506060890181905260c487901c620fffff16978815613a425788600116600114613a2d576207ffff60018a901c16600003613a38565b6207ffff60018a901c165b60808b0152613a69565b7f800000000000000000000000000000000000000000000000000000000000000060808b01525b50505b61012089015160c08a01526101608901516101008a015261014089015160e08a01526131a8565b505050505b64e8d4a5100087608001518660800151613ab29190615750565b613abc91906157bc565b985064e8d4a5100087606001518660a00151613ad89190615750565b613ae291906157bc565b97508c891115613b0657613af6898e6157bc565b613b009089615750565b97508c98505b8b89613b1a8a670de0b6b3a7640000615750565b613b2491906157bc565b1015613b60576040517f60121cca000000000000000000000000000000000000000000000000000000008152617921600482015260240161027d565b73ffffffffffffffffffffffffffffffffffffffff8b1661dead03613bbb576040517fcc36aa4400000000000000000000000000000000000000000000000000000000815260048101899052602481018a905260440161027d565b7fffffffffffffffffffffffff11111111111111111111111111111111111111127f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1601613c345788925034891015613c2f57613c2f338a3403614cfa565b613c39565b600092505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad967e15847f000000000000000000000000000000000000000000000000000000000000000060008d60000360008033604051602001613ccd919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401613cfd96959493929190615967565b604080518083038185885af1158015613d1a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613d3f91906159c0565b505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663ad967e157f000000000000000000000000000000000000000000000000000000000000000060008b8103908f81806040519080825280601f01601f191660200182016040528015613dd1576020820181803683370190505b506040518763ffffffff1660e01b8152600401613df396959493929190615967565b60408051808303816000875af1158015613e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3591906159c0565b505067ffffffffffffffff605287901c1692508460a0015160ff8416600885901c901b613e62919061577a565b925067ffffffffffffffff609287901c169150846080015160ff8316600884901c901b613e8f919061577a565b91506092613ea283603860086001614305565b901b6052613eb585603860086000614305565b7ffffffffffffc00000000000000000000000000000003ffffffffffffffffffff8916911b171760005560408051338152602081018a90529081018a905273ffffffffffffffffffffffffffffffffffffffff8c1660608201527f80fd9cc6b1821f4a510e45ffce6852ea3404807b5d3d833ffa85664408afcb669060800160405180910390a15050505050505094509492505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614613fbf576040517f60121cca000000000000000000000000000000000000000000000000000000008152617929600482015260240161027d565b600054600116600003614002576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792a600482015260240161027d565b61403984614012838501856159e4565b7f000000000000000000000000000000000000000000000000000000000000000086615239565b50505050565b6140a07f00000000000000000000000000000000000000000000000000000000000000006000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061074492505050565b50565b600060ff82901d80831803617fff8111156140bd57600080fd5b70010000000000000000000000000000000060018216156140eb57506fff9dd7de423466c20352b1246ce4856f5b600282161561410a576fff3bd55f4488ad277531fa1c725a66d00260801c5b6004821615614129576ffe78410fd6498b73cb96a6917f8532590260801c5b6008821615614148576ffcf2d9987c9be178ad5bfeffaa1232730260801c5b6010821615614167576ff9ef02c4529258b057769680fc6601b30260801c5b6020821615614186576ff402d288133a85a17784a411f7aba0820260801c5b60408216156141a5576fe895615b5beb6386553757b0352bda900260801c5b60808216156141c4576fd34f17a00ffa00a8309940a15930391a0260801c5b6101008216156141e4576fae6b7961714e20548d88ea5123f9a0ff0260801c5b610200821615614204576f76d6461f27082d74e0feed3b388c0ca10260801c5b610400821615614224576f372a3bfe0745d8b6b19d985d9a8b85bb0260801c5b610800821615614244576f0be32cbee48979763cf7247dd7bb539d0260801c5b611000821615614263576e8d4f70c9ff4924dac37612d1e2921e0260801c5b612000821615614281576d4e009ae5519380809a02ca7aec770260801c5b61400082161561429d576b17c45e641b6e95dee056ff100260801c5b600091507f800000000000000000000000000000000000000000000000000000000000000084166142fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0463ffffffff8116156142fb57600191505b60201c0192915050565b600080856fffffffffffffffffffffffffffffffff8111156143285760809150811c5b67ffffffffffffffff811115614340576040918201911c5b63ffffffff811115614354576020918201911c5b61ffff811115614366576010918201911c5b60ff811115614377576008918201911c5b600f811115614388576004918201911c5b6003811115614399576002918201911c5b60018111156143a9576001820191505b80156143b6576001820191505b50848110156143c25750835b848103905085811c6000821184161561441157600181019050806001871b0361441157506001908101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86011b5b6001851b821061442057600080fd5b90931b909201949350505050565b601681901c633fffffff166000818152600760205260408120549091829182600160c483901c8116900361446c575060c581901c6207ffff166144a4565b5060c581901c6207ffff166000819003906144a457507f80000000000000000000000000000000000000000000000000000000000000005b60006144af88615300565b90508082136144be57806144c0565b815b94507f8000000000000000000000000000000000000000000000000000000000000000850361451357867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00001169650614602565b80850361458957600085121561455657600385600003901b877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000116179650614602565b600385901b877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000116600417179650614602565b6000848152600760205260408120557ffffffffffffffffffffffffffffffffffffffffffffc00000000000000000001909616623ffffc60c284901c1617660fffffffc00000609084901c16177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff840160341b17600217955b869550505050509250929050565b600080831261462357610100830561462e565b600161010084820105035b90506101008102830382614656576000828152600460205260409020546001821b191661466b565b6000828152600460205260409020546001821b175b60009283526004602052604090922091909155505050565b6000806000806127108510156146c9576040517f60121cca000000000000000000000000000000000000000000000000000000008152617933600482015260240161027d565b6000866146e36c0100000000000000000000000088615750565b6146ed91906157bc565b90506146f881614860565b60019091019550905061271061271f820204905060606147188883615750565b901c9250614726868461577a565b600086815260056020526040812054600181901c62ffffff1696509193508515801590614754575060018216155b156147955766ffffffffffffff602183901c1660ff601984901c161b61477a8682615767565b91508060000361478f5761478f886001614610565b506147e9565b85156147d5576000878152600660209081526040808320600360028b0181810486529190935292208054601986901c929093066055029190911b90911790555b8560010195508490506147e9876001614610565b612710811015614829576040517f60121cca000000000000000000000000000000000000000000000000000000008152617931600482015260240161027d565b601961483a82603860086000614305565b6000898152600560205260409020911b600188901b179055509497939650919450925050565b600080630235b88083107473d85bca016a2338b31715f8e13054c005f8b995d38411171561488d57600080fd5b6c0100000000000000000000000083106000816148c357506c010000000000000000000000006a52b7d2dcc80cd2e40000008502045b81156148e657507652b7d2dcc80cd2e40000000000000000000000000000008490045b6f037af932b2affa9738cc6c38ca527831811061492757614000841793506f037af932b2affa9738cc6c38ca5278316a52b7d2dcc80cd2e400000082020490505b6d010f7a088a76f267264caa114f0a811061496457612000841793506d010f7a088a76f267264caa114f0a6a52b7d2dcc80cd2e400000082020490505b6b95da74f87f839fc2e0dc5bd9811061499d57611000841793506b95da74f87f839fc2e0dc5bd96a52b7d2dcc80cd2e400000082020490505b6b06f55dedafd8491caed5a1b881106149d657610800841793506b06f55dedafd8491caed5a1b86a52b7d2dcc80cd2e400000082020490505b6b017fdd10ee11e624491b4cc18110614a0f57610400841793506b017fdd10ee11e624491b4cc16a52b7d2dcc80cd2e400000082020490505b6ab23131bf0c30217b0a2c698110614a4657610200841793506ab23131bf0c30217b0a2c696a52b7d2dcc80cd2e400000082020490505b6a79683edcb9280d797aded78110614a7d57610100841793506a79683edcb9280d797aded76a52b7d2dcc80cd2e400000082020490505b6a64366e2f9919f0d9b0dc908110614ab3576080841793506a64366e2f9919f0d9b0dc906a52b7d2dcc80cd2e400000082020490505b6a5b0bcda5a78850646b0a818110614ae9576040841793506a5b0bcda5a78850646b0a816a52b7d2dcc80cd2e400000082020490505b6a56c840f992c70f959ae8108110614b1f576020841793506a56c840f992c70f959ae8106a52b7d2dcc80cd2e400000082020490505b6a54b9cd178695194f9be0a08110614b55576010841793506a54b9cd178695194f9be0a06a52b7d2dcc80cd2e400000082020490505b6a53b7458aff204b5e65d6818110614b8b576008841793506a53b7458aff204b5e65d6816a52b7d2dcc80cd2e400000082020490505b6a53372a2f38c240d689e4008110614bc1576004841793506a53372a2f38c240d689e4006a52b7d2dcc80cd2e400000082020490505b6a52f76617a04499e66400008110614bf7576002841793506a52f76617a04499e66400006a52b7d2dcc80cd2e400000082020490505b6a52d79660f3dec355c000008110614c2d576001841793506a52d79660f3dec355c000006a52b7d2dcc80cd2e400000082020490505b81614c4557806a52b7d2dcc80cd2e400000086020492505b8115614c61579219926a52d79660f3dec355c000008582020492505b5050915091565b600066ffffffffffffff604984901c1660ff604185901c161b808203614c92576000915050614cf4565b612710613fff60a286901c168402046401ffffffff608186901c16420362ffffff60b087901c16614cc38284615750565b614ccd91906157bc565b9050808311614cdd576000614ce1565b8083035b9350508084038381111561078757925050505b92915050565b600080600080600085875af1905080614d44576040517fdee51a8a0000000000000000000000000000000000000000000000000000000081526201155a600482015260240161027d565b505050565b67ffffffffffffffff605b82901c811690609b83901c16811580614d6b575080155b15614da7576040517fd50d751200000000000000000000000000000000000000000000000000000000815262011171600482015260240161027d565b61ffff8316603a84901c6401ffffffff16428181039160ea87901c617fff16911480614dd1575082155b80614ddc5750806001145b15614de957505050915091565b64496cebb80084840283020484019350617fff60db87901c16925082600103614e1457505050915091565b82600116600103614e695760019290921c91826c7e37be2022c0914b268000000081614e4257614e4261578d565b049250612710601e87901c613fff166b033b2e3c9fd0803ce8000000850102049250614e96565b60019290921c916305f5e100601e87901c613fff166127108501026b033b2e3c9fd0803ce8000000020492505b80600116600103614ecd5760011c61271081016b033b2e3c9fd0803ce8000000820281614ec557614ec561578d565b049050614f03565b60011c61271081016b033b2e3c9fd0803ce8000000820281614ef157614ef161578d565b046b033b2e3c9fd0803ce80000000390505b760a70c3c40a64e6c51999090b65f67d92400000000000008382026127100261ffff881691900402601087901c613fff16612710030292506801b5a660ea44b8000085840283020485019450505050915091565b6000600f83811c9083901c0281681fffffffffffffffff8211614f7b576022614f7e565b60235b91821c919050617fff858116908516018101614000811015614f9f57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00001617fff811115614fde57506603ffffffffffff9250614cf4915050565b600f9290921b909117949350505050565b6000617fff83811690831603608181101561502757600f83811c821b9085901c86028161501e5761501e61578d565b0491505061502d565b60009150505b9392505050565b6000816fffffffffffffffffffffffffffffffff8311156150565760809150811c5b67ffffffffffffffff81111561506e576040918201911c5b63ffffffff811115615082576020918201911c5b61ffff811115615094576010918201911c5b60ff8111156150a5576008918201911c5b600f8111156150b6576004918201911c5b60038111156150c7576002918201911c5b60018111156150d7576001820191505b80156150e4576001820191505b50919050565b6000600f83901c8202816c03ffffffffffffffffffffffff8211615131576c01ffffffffffffffffffffffff821161512a5761512582615034565b615134565b6062615134565b60635b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd617fff87168201810194500191821c919050604083111561518157604083600f84901b01039250615186565b600080fd5b505092915050565b600080600f83901c7fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000603186901b16816151ca576151ca61578d565b0490506000604082901c6001146151e25760406151e5565b60415b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd81019290921c91617fff8581166040019250613fdd90871690910101818111156151815703600f9190911b179050614cf4565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d11600160005114161716915050806152f9576040517fdee51a8a00000000000000000000000000000000000000000000000000000000815262011559600482015260240161027d565b5050505050565b6000806000808412615316576101008405615321565b600161010085820105035b600081815260046020526040812054919350859003610100808502919091010190811b811c91505b811561536857600161535a83615034565b8461010002010393506153f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f036001016153dd577f800000000000000000000000000000000000000000000000000000000000000093506153f3565b6000838152600460205260409020549150615349565b505050919050565b80151581146140a057600080fd5b60006020828403121561541b57600080fd5b815161502d816153fb565b73ffffffffffffffffffffffffffffffffffffffff811681146140a057600080fd5b6000806000806080858703121561545e57600080fd5b843593506020850135925060408501359150606085013561547e81615426565b939692955090935050565b60006020828403121561549b57600080fd5b5035919050565b600080600080608085870312156154b857600080fd5b5050823594602084013594506040840135936060013592509050565b600080600080608085870312156154ea57600080fd5b8435935060208501359250604085013561550381615426565b9150606085013561547e816153fb565b6000806000806060858703121561552957600080fd5b843561553481615426565b935060208501359250604085013567ffffffffffffffff8082111561555857600080fd5b818701915087601f83011261556c57600080fd5b81358181111561557b57600080fd5b88602082850101111561558d57600080fd5b95989497505060200194505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101a0810160208301516155e2602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015161560a604084018273ffffffffffffffffffffffffffffffffffffffff169052565b506060830151615632606084018273ffffffffffffffffffffffffffffffffffffffff169052565b50608083015161565a608084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060a083015161568260a084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060c083015161569760c084018260ff169052565b5060e08301516156ac60e084018260ff169052565b50610100838101519083015261012080840151908301526101408084015190830152610160808401519083015261018092830151929091019190915290565b6000602082840312156156fd57600080fd5b5051919050565b60006020828403121561571657600080fd5b815161502d81615426565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417614cf457614cf4615721565b80820180821115614cf457614cf4615721565b81810381811115614cf457614cf4615721565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826157cb576157cb61578d565b500490565b808202600082127f80000000000000000000000000000000000000000000000000000000000000008414161561580857615808615721565b8181058314821517614cf457614cf4615721565b60008261582b5761582b61578d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561587f5761587f615721565b500590565b81810360008312801583831316838312821617156158a4576158a4615721565b5092915050565b60007f800000000000000000000000000000000000000000000000000000000000000082036158dc576158dc615721565b5060000390565b808201828112600083128015821682158216171561518657615186615721565b6000815180845260005b818110156159295760208185018101518683018201520161590d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b600073ffffffffffffffffffffffffffffffffffffffff8089168352876020840152866040840152808616606084015280851660808401525060c060a08301526159b460c0830184615903565b98975050505050505050565b600080604083850312156159d357600080fd5b505080516020909101519092909150565b6000602082840312156159f657600080fd5b813561502d8161542656fea2646970667358221220166a4f8f33f19a1420d9603da384773087799477801bf6db91b84688b89bbad164736f6c63430008150033", "deployedBytecode": "0x6080604052600436106100d25760003560e01c8063540acabc1161007f578063ad20750111610059578063ad207501146104b8578063b5c736e4146104d8578063b7791bf2146104f7578063ebd93ac61461072f576100d2565b8063540acabc146104465780637d7c2a1c146104885780638433ea22146104a5576100d2565b8063103f2907116100b0578063103f29071461037157806322348cc7146103ca5780632861c7d114610412576100d2565b806302161887146102e9578063032d22761461032357806309f0d8cb14610351575b3480156100de57600080fd5b506040517f4502d0630000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690634502d06390602401602060405180830381865afa158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d9190615409565b8061024757506040517fe04c8e5d0000000000000000000000000000000000000000000000000000000081523360048201523060248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e04c8e5d90604401602060405180830381865afa158015610223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102479190615409565b610286576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792560048201526024015b60405180910390fd5b6102e77f00000000000000000000000000000000000000000000000000000000000000006000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061074492505050565b005b3480156102f557600080fd5b506102fe610790565b6040805194855260208501939093529183015260608201526080015b60405180910390f35b610336610331366004615448565b610884565b6040805193845260208401929092529082015260600161031a565b34801561035d57600080fd5b506102fe61036c366004615489565b6123a6565b34801561037d57600080fd5b506103a57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161031a565b3480156103d657600080fd5b506103ea6103e53660046154a2565b61263e565b604080519586526020860194909452928401919091526060830152608082015260a00161031a565b34801561041e57600080fd5b506103a57f000000000000000000000000000000000000000000000000000000000000000081565b34801561045257600080fd5b5061047a7f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161031a565b6104906128fe565b6040805192835260208301919091520161031a565b6104906104b33660046154d4565b61297e565b3480156104c457600080fd5b506102e76104d3366004615513565b613f4c565b3480156104e457600080fd5b5061047a6104f3366004615489565b5490565b34801561050357600080fd5b50604080516101a08101825273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000811660208301527f00000000000000000000000000000000000000000000000000000000000000008116828401527f0000000000000000000000000000000000000000000000000000000000000000811660608301527f0000000000000000000000000000000000000000000000000000000000000000811660808301527f00000000000000000000000000000000000000000000000000000000000000001660a082015260ff7f0000000000000000000000000000000000000000000000000000000000000000811660c08301527f00000000000000000000000000000000000000000000000000000000000000001660e08201527f00000000000000000000000000000000000000000000000000000000000000006101008201527f00000000000000000000000000000000000000000000000000000000000000006101208201527f00000000000000000000000000000000000000000000000000000000000000006101408201527f00000000000000000000000000000000000000000000000000000000000000006101608201527f0000000000000000000000000000000000000000000000000000000000000000610180820152905161031a919061559c565b34801561073b57600080fd5b506102e761403f565b6060600080835160208501865af43d6040519250601f19601f6020830101168301604052808352806000602085013e81156001810361078757816000803e816000fd5b50505092915050565b6000806000806107a16001546123a6565b9296509094509250905067ffffffffffffffff8411806107c8575067ffffffffffffffff83115b806107da575067ffffffffffffffff82115b806107ec575067ffffffffffffffff81115b15610827576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792d600482015260240161027d565b604083811b8517608084901b1760c083901b17600855517fcde545703e0372175cadfff811d67c32910c3dcb33199679b3271c4106afdf9a906108769084908490918252602082015260400190565b60405180910390a190919293565b60008054819081906001811682036108a257600181176000556108d8565b6040517f60121cca000000000000000000000000000000000000000000000000000000008152617919600482015260240161027d565b861580156108e4575085155b806109245750861580159061092457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8f087138015610924575061271087125b806109645750851580159061096457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8f086138015610964575061271086125b1561099f576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791a600482015260240161027d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480156109f85750600087135b15610a3f57348714610a3a576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791b600482015260240161027d565b610ad8565b3415610ad8577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148015610a9e5750600086125b610ad8576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791b600482015260240161027d565b610b58604051806102000160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600154610100820152600282901c620fffff166000808215610ba05782600116600114610b91576207ffff600184901c16600003610bc2565b6207ffff600184901c16610bc2565b7f80000000000000000000000000000000000000000000000000000000000000005b61014085015260008c9003610cf4577f800000000000000000000000000000000000000000000000000000000000000060c08501526040517f94bf804d0000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201523360248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906394bf804d906044016020604051808303816000875af1158015610ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccd91906156eb565b9b50847a040000000000000000000000000000000000000000000000000000019450610f13565b60008b1280610d03575060008a135b8015610dd457506040517f6352211e000000000000000000000000000000000000000000000000000000008152600481018d905233907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa158015610d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbb9190615704565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610e0f576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791c600482015260240161027d565b60008c8152600360205260408120549350839003610e5d576040517f60121cca000000000000000000000000000000000000000000000000000000008152617923600482015260240161027d565b66ffffffffffffff603584901c811660ff602d86901c81169190911b6060870152607585901c909116606d85901c9182161b60a086015267ffffffffffffffff16915060018084169003610ed6577f800000000000000000000000000000000000000000000000000000000000000060c0850152610f13565b82600216600214610ef3576207ffff600284901c16600003610efe565b6207ffff600284901c165b60c0850152601583901c62ffffff1660e08501525b7f80000000000000000000000000000000000000000000000000000000000000008460c00151131561120157602d9290921c60ff16918215610f5e5760608401516001841b01610f67565b83606001516001015b9250606083610f7c8660c0015160020b6140a3565b610f869190615750565b610f92911c6001615767565b608085015260c0840151600090815260056020526040902054925060018084161480610fca57508360e0015162ffffff600185901c16115b156110f257610fe78460c001518560e0015186608001518661263e565b6101c089015260608801919091526080870182905260c087019290925260a086015191935011156110bb5767ffffffffffffffff6034856101c00151901c16925060ff8316600884901c901b9250836080015183611045919061577a565b9250606483101561105557606492505b603461106684603860086001614305565b6101c086015160008581526007602052604090207ffffffffffffffffffffffffffffffffffff0000000000000000fffffffffffff9091169190921b17905560a08401516080850180519190910390526111f9565b83608001518460a00151600a546110d29190615767565b6110dc919061577a565b600a5560006080850181905260608501526111f9565b67ffffffffffffffff601984901c16915081600003611141576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791d600482015260240161027d565b60ff8216600883901c901b915081846080015110611160576000611168565b836080015182035b91506127108210156111af57600091508361014001518460c00151036111a0576111978461014001518661442e565b61014086015294505b6111af8460c001516000614610565b60196111c083603860086000614305565b60c08601516000908152600560205260409020911b6301ffffff851617905560a08401516080850180516111f590839061577a565b9052505b600060a08501525b60c08401516040850152606084015184526080840151602085015261010084015161122b906123a6565b6101a08801526101808701525061016085015260008b13156112d15761018084015161125c64e8d4a510008d615750565b61126691906157bc565b846060018181516112779190615767565b90525060608401516fffffffffffffffffffffffffffffffff10156112cc576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792f600482015260240161027d565b611428565b60008b1215611428577fffffffffffffffffffffffffffffffff800000000000000000000000000000008b13156113845761018084015160019061131a64e8d4a510008e6157d0565b611324919061581c565b61132e9190615884565b90508360600151816000031115611375576040517f60121cca000000000000000000000000000000000000000000000000000000008152617926600482015260240161027d565b60608401805182019052611428565b7f80000000000000000000000000000000000000000000000000000000000000008b036113f25764e8d4a5100084610180015185606001516113c69190615750565b6113d091906157bc565b6113d9906158ab565b6113e49060016158e3565b600060608601529a50611428565b6040517f60121cca00000000000000000000000000000000000000000000000000000000815261792f600482015260240161027d565b60008a13156114f8576101a084015161144664e8d4a510008c615750565b61145091906157bc565b61145b906001615767565b92506127106103ff6052866101000151901c16846114799190615750565b61148391906157bc565b61148d9084615767565b8460800181815161149e9190615767565b90525060808401516fffffffffffffffffffffffffffffffff10156114f3576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792f600482015260240161027d565b611618565b60008a1215611618577fffffffffffffffffffffffffffffffff800000000000000000000000000000008a13156115ad576101a084015161153e64e8d4a510008c6157d0565b611548919061581c565b6115539060016158e3565b9050806000039050836080015181111561159d576040517f60121cca000000000000000000000000000000000000000000000000000000008152617927600482015260240161027d565b6080840180518290039052611618565b7f80000000000000000000000000000000000000000000000000000000000000008a036113f257600164e8d4a51000856101a0015186608001516115f19190615750565b6115fb91906157bc565b611604906158ab565b61160e9190615884565b6000608086015299505b8a158015611624575089155b1561165f576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791a600482015260240161027d565b6080840151156118d4576116978460600151633b9aca008660800151633b9aca01028161168e5761168e61578d565b04600101614683565b60a0880152608087015260e086015260c085015260008a12156117095783602001518460a0015185608001516116cd919061577a565b1115611709576040517f60121cca000000000000000000000000000000000000000000000000000000008152617934600482015260240161027d565b60008b138015611717575089155b156117bc578351602085015161173b906c0100000000000000000000000090615750565b61174591906157bc565b84606001516c010000000000000000000000008660a00151876080015161176c919061577a565b6117769190615750565b61178091906157bc565b11156117bc576040517f60121cca000000000000000000000000000000000000000000000000000000008152617934600482015260240161027d565b8361014001518460c00151126118cf5760008460c00151126117e95760018460c00151901b6001176117f5565b60c084015160000360011b5b92508460021660000361183257600283901b857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000161794506118fb565b6001603486811c633fffffff16919091016000818152600760205260409020780fffffffc00000000000000000000000000000000000000000609089901b167afffff000000000000000000000000000000000000000000000000060c28a901b161790557ffffffffffffffffffffffffffffffffffffffffffffc00000000000000000000909616600285901b17601687901b179086901b179491505b6118fb565b7f800000000000000000000000000000000000000000000000000000000000000060c08501525b60008b128061190a575060008a135b15611aeb5773ffffffffffffffffffffffffffffffffffffffff891661192e573398505b608084015115611aeb576060846101000151901c73ffffffffffffffffffffffffffffffffffffffff1663e6aa216c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b091906156eb565b9250836101a00151846101800151846119c99190615750565b6119d391906157bc565b92506103e86103ff6020866101000151901c168402816119f5576119f561578d565b049150722cd76fe086b93ce2f768a00b22a000000000008210611a35576c010000000000000000000000006b033b2e3c9fd0803ce8000000830402611a54565b6b033b2e3c9fd0803ce80000006c010000000000000000000000008302045b9150611a5f82614860565b5080915050808460c001511315611aeb578360c001518460400151131580611ab05750633b9aca008460200151633b9aca010281611a9f57611a9f61578d565b046001018460a00151856080015103115b15611aeb576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791e600482015260240161027d565b7f80000000000000000000000000000000000000000000000000000000000000008460c001511315611b475760008460c0015112611b345760018460c00151901b600117611b40565b60c084015160000360011b5b9250611b4c565b600092505b60a0840151606d90611b6390603860086000614305565b6060860151911b90602d90611b7d90603860086000614305565b60e0870151911b9060151b600186901b8615611b9a576000611b9d565b60015b60ff1617171717600360008e81526020019081526020016000208190555060008b1215611d4657610100840151603e1c6103ff1692508215611d46576040517fb5c736e40000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b5c736e490602401602060405180830381865afa158015611c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca791906156eb565b6101e0850181905266ffffffffffffff600982901c1660ff600183901c161b9250611cd29083614c68565b9050600081138015611d0b575083610160015164e8d4a510008c6000030281611cfd57611cfd61578d565b05816103e885810385020503125b15611d46576040517f60121cca000000000000000000000000000000000000000000000000000000008152617928600482015260240161027d565b60008b1315611ec4577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad967e1573eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614611df9576000611dfb565b345b7f00000000000000000000000000000000000000000000000000000000000000008e600080600033604051602001611e4f919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401611e7f96959493929190615967565b604080518083038185885af1158015611e9c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ec191906159c0565b50505b60008a1215612092577fffffffffffffffffffffffff11111111111111111111111111111111111111127f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1601611f875789600003925082341115611f4957611f4433843403614cfa565b611f8c565b82341015611f44576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791b600482015260240161027d565b600092505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad967e15847f000000000000000000000000000000000000000000000000000000000000000060008e6000803360405160200161201d919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b815260040161204d96959493929190615967565b604080518083038185885af115801561206a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061208f91906159c0565b50505b60008b121561217757604080516000808252602082019092527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169163ad967e15917f0000000000000000000000000000000000000000000000000000000000000000918f918e9082906040518763ffffffff1660e01b815260040161213296959493929190615967565b60408051808303816000875af1158015612150573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217491906159c0565b50505b60008a131561225d57604080516000808252602082019092527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169163ad967e15917f000000000000000000000000000000000000000000000000000000000000000091908e9082908f906040518763ffffffff1660e01b815260040161221896959493929190615967565b60408051808303816000875af1158015612236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225a91906159c0565b50505b67ffffffffffffffff605286901c1692508360000151846060015160ff8516600886901c901b61228d9190615767565b612297919061577a565b925067ffffffffffffffff609286901c16915083602001518460a0015185608001516122c3919061577a565b6122d690600885901c60ff86161b615767565b6122e0919061577a565b915060926122f383603860086001614305565b901b605261230685603860086000614305565b901b7ffffffffffffc00000000000000000000000000000003ffffffffffffffffffff8716171760005560408051338152602081018e90529081018c9052606081018b905273ffffffffffffffffffffffffffffffffffffffff8a1660808201527ffef64760e30a41b9d5ba7dd65ff7236a61d89ed8b44c67a29e84db1a67513a1c9060a00160405180910390a150999a98995096979650505050505050565b6008546040517fb5c736e40000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015260009182918291829161248a9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b5c736e4906024015b602060405180830381865afa158015612461573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248591906156eb565b614d49565b506040517fb5c736e40000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006004820152909550612524907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b5c736e490602401612444565b94505067ffffffffffffffff81811690604083901c168187108061254757508086105b15612582576040517f60121cca000000000000000000000000000000000000000000000000000000008152617932600482015260240161027d565b61271061ffff8916670de0b6b3a7640000848a670de0b6b3a764000002816125ac576125ac61578d565b040302816125bc576125bc61578d565b04945061271061ffff60108a901c16670de0b6b3a76400008389670de0b6b3a764000002816125ed576125ed61578d565b040302816125fd576125fd61578d565b049350670de0b6b3a7640000608084901c67ffffffffffffffff1686820102049450670de0b6b3a764000060c084901c858201020493505050509193509193565b600080808080868180600189901c62ffffff168b9003612684575050601a87901c633fffffff169250603887901c6603ffffffffffff166001601989901c8116146126db565b60008c8152600660205260408120600360028e0181810660550292918491048152602081019190915260400160002054901c600181811c633fffffff169750601f82901c6603ffffffffffff169450908116149150505b6000858152600760205260409020549350801561271e577f80000000000000000000000000000000000000000000000000000000000000009b50600099506128ea565b836003166002036127885761274082607486901c6603ffffffffffff16614f57565b91506001612750600f6023615767565b6001901b61275e919061577a565b82146127885760a69390931c633fffffff166000818152600760205260409020549094509261271e565b83600316600314806127b4575060016127a3600f6023615767565b6001901b6127b1919061577a565b82145b156127e5577f80000000000000000000000000000000000000000000000000000000000000009b50600099506128ea565b6127fd8a607486901c6603ffffffffffff1684614fef565b9950606483048a111561281a5761271061270f8b0204995061281f565b600099505b89156128c65783600416600414612842576207ffff600385901c1660000361284d565b6207ffff600385901c165b9b50600061285d8d60020b6140a3565b905061271f612710820204633fffffff601687901c811661287e838561577a565b6128889190615750565b61289291906157bc565b61289c9082615767565b6128b36c010000000000000000000000008e615750565b6128bd91906157bc565b975050506128ea565b7f80000000000000000000000000000000000000000000000000000000000000009b505b8b8a97509750505050945094509450945094565b6000806129627f00000000000000000000000000000000000000000000000000000000000000006000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061074492505050565b80602001905181019061297591906159c0565b90939092509050565b6000806129b36040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b60008054906001821690036108a257600181176000556127108810806129e857506fffffffffffffffffffffffffffffffff88115b15612a23576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792e600482015260240161027d565b7fffffffffffffffffffffffff11111111111111111111111111111111111111127f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1601612ae857873414158015612aa8575061dead73ffffffffffffffffffffffffffffffffffffffff871614155b15612ae3576040517f60121cca000000000000000000000000000000000000000000000000000000008152617920600482015260240161027d565b612b24565b3415612b24576040517f60121cca000000000000000000000000000000000000000000000000000000008152617920600482015260240161027d565b6001548252600281901c620fffff16600003612b70576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791f600482015260240161027d565b8151612b7b906123a6565b90919250909150836060018460800182815250828152505050612bf86040518061018001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b612c316040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b601683901c633fffffff16808252600090815260076020908152604082205490830181905260741c6603ffffffffffff166060830181905281908103612c7f576603ffffffffc00060608401525b602083015160c41c620fffff1691508115612cc65781600116600114612cb1576207ffff600183901c16600003612cbc565b6207ffff600183901c165b6080840152612ced565b7f800000000000000000000000000000000000000000000000000000000000000060808401525b84600416600414612d0a576207ffff600386901c16600003612d15565b6207ffff600386901c165b60c08501526002851615612d2a576002612d2d565b60015b60ff1684610100018181525050612d7a6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60c085015181528651604080517fe6aa216c000000000000000000000000000000000000000000000000000000008152905160609290921c9163e6aa216c916004808201926020929091908290030181865afa158015612dde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0291906156eb565b92508660800151876060015184612e199190615750565b612e2391906157bc565b9250612e4683760a70c3c40a64e6c51999090b65f67d92400000000000006157bc565b87519092506127109060481c6103ff1681018302046060860152722cd76fe086b93ce2f768a00b22a000000000008310612e9d576c010000000000000000000000006b033b2e3c9fd0803ce8000000840402612ebc565b6b033b2e3c9fd0803ce80000006c010000000000000000000000008402045b87519093506103e890602a1c6103ff168402049150612eda82614860565b50602088015286516103e89060341c6103ff168402049150612efb82614860565b506040880152608087015164e8d4a510008e0281612f1b57612f1b61578d565b0485528915612fb15760025485516fffffffffffffffffffffffffffffffff8216945060809190911c9250831115612f965784518390612f5b9084615750565b612f6591906157bc565b60a08601819052612f76908361577a565b855160808088018290526000885282901b94039384176002559150612fb1565b6000600255845183900385526080850183905260a085018290525b86602001518560c00151138015612fd0575086604001518560c0015113155b15613a9857845115613a98576040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081018290528190680100000000000000009060008960c0015112613041576101008960c001518161303b5761303b61578d565b0561305e565b60016101008a60c001516001018161305b5761305b61578d565b05035b6040820152845161306e906140a3565b604086015261010089015160010361309957604085015160e08a015260c089015160208201526131a8565b61271f856040015161271002816130b2576130b261578d565b046060860181905260408601510360808601819052602089015160161c633fffffff90811660c0880181905290910260608701519190040160e08a0152845160208c01516131019060016158e3565b14801561311257508460c001516001145b156131a85773ffffffffffffffffffffffffffffffffffffffff8f1661dead03613172576040517fcc36aa44000000000000000000000000000000000000000000000000000000008152600060048201819052602482015260440161027d565b6040517f60121cca000000000000000000000000000000000000000000000000000000008152617935600482015260240161027d565b8861010001516001036132185760c0890180516000908152600560205260408082205460608c01518c5194518452919092206301fffffe8316601a9490941b9390931760389190911b1760011790915566ffffffffffffff602182901c1660ff601983901c161b9750955061323b565b67ffffffffffffffff60348960200151901c16965060ff8716600888901c901b96505b868960200181815161324d9190615767565b90525060e089015161326c6c0100000000000000000000000089615750565b61327691906157bc565b896040018181516132879190615767565b90525060c089015160208201511480156132a657508861010001516001145b806132b357506080810151155b156133e35780608001516000036132dc5760408082015160009081526004602052205460808201525b88610100015160010361333357604081015160c08a015160009081036101009283020190910160608301819052608083018051821b90911c9081905290036133335760408082015160009081526004602052908120555b60808101511561336157600161334c8260800151615034565b604083015161010002010360208201526133e3565b8a6020015181604001516101000212156133a0577f800000000000000000000000000000000000000000000000000000000000000060208201526133e3565b604080820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01908190526000908152600460205220546080820152613333565b8060200151886080015113801561340157508a602001518860800151135b1561341e5760808801516101208a015260026101608a015261345a565b8a60200151816020015113156134465760208101516101208a015260016101608a015261345a565b60208b01516101208a015260036101608a01525b61346b89610120015160020b6140a3565b60408601526101608901516002036134ff5761271f856040015161271002816134965761349661578d565b046060860181905260408087015191909103608087019081526020808b015160a61c633fffffff908116600090815260079092529290205460a08b0181905260161c821660c0880181905290510260608701519190040160a086018190526101408a015261351c565b604085015160a086018190526101408a0152633fffffff60c08601525b6c010000000000000000000000008961014001518a6060015161353f9190615750565b61354991906157bc565b61355f906b033b2e3c9fd0803ce800000061577a565b8960e001518a602001518b61014001516135799190615750565b61358391906157bc565b8a60200151613592919061577a565b6135a8906b033b2e3c9fd0803ce8000000615750565b6135b291906157bc565b93506b033b2e3c9fd0803ce80000008960600151856135d19190615750565b6135db91906157bc565b9250838960200151036135f6576135f360018561577a565b93505b88518410158061360b57508861016001516003145b156138b25760808101516040808301516000908152600460205220558851841061372757885160608a01519094506b033b2e3c9fd0803ce8000000906136519086615750565b61365b91906157bc565b925082896040015161366d919061577a565b6c01000000000000000000000000858b6020015161368b919061577a565b6136959190615750565b61369f91906157bc565b96506136aa87614860565b60608701819052600191909101865261271061271f8202046040870181905281900360808701819052908803633fffffff02816136e9576136e961578d565b0460c086018190521561371a57633fffffff8560c001511015613710578460c0015161371d565b633ffffffe61371d565b60015b60c086015261373a565b6101208901516001908101865260c08601525b6020890151613749858261577a565b6137539084615750565b61375d91906157bc565b915083896080018181516137719190615767565b90525060208901805185919061378890839061577a565b90525060a08901805184919061379f908390615767565b9052506040890180518491906137b690839061577a565b90525060608801516137c890836150ea565b6060890152602089015160641115613810576040517f60121cca000000000000000000000000000000000000000000000000000000008152617930600482015260240161027d565b8451600013613826578451600190811b1761382f565b845160000360011b5b606089015160208b015191975060741b9060349061385290603860086001614305565b901b60168760c00151901b600289901b60a6808d60200151901c901b60011717171717600760008a6000015181526020019081526020016000208190555060168860000151901b600287901b6034808d901c901b60021717179950613a93565b8851849003895260208901516138c8858261577a565b6138d29084615750565b6138dc91906157bc565b915083896080018181516138f09190615767565b90525060208901805185919061390790839061577a565b90525060a08901805184919061391e908390615767565b90525060408901805184919061393590839061577a565b905250606088015161394790836150ea565b6060890152610160890151680100000000000000009250600203613a6c57633fffffff60a68960200151901c1696508760a00151955060006603ffffffffffff607488901c16905060006139a88a606001518361518e90919063ffffffff16565b6020808c0180518d516000908152600790935260409092207fffffffffffffffffffffffc00000000000000000000000000000000000000000909216607484901b17600217909155998b5298889052506060890181905260c487901c620fffff16978815613a425788600116600114613a2d576207ffff60018a901c16600003613a38565b6207ffff60018a901c165b60808b0152613a69565b7f800000000000000000000000000000000000000000000000000000000000000060808b01525b50505b61012089015160c08a01526101608901516101008a015261014089015160e08a01526131a8565b505050505b64e8d4a5100087608001518660800151613ab29190615750565b613abc91906157bc565b985064e8d4a5100087606001518660a00151613ad89190615750565b613ae291906157bc565b97508c891115613b0657613af6898e6157bc565b613b009089615750565b97508c98505b8b89613b1a8a670de0b6b3a7640000615750565b613b2491906157bc565b1015613b60576040517f60121cca000000000000000000000000000000000000000000000000000000008152617921600482015260240161027d565b73ffffffffffffffffffffffffffffffffffffffff8b1661dead03613bbb576040517fcc36aa4400000000000000000000000000000000000000000000000000000000815260048101899052602481018a905260440161027d565b7fffffffffffffffffffffffff11111111111111111111111111111111111111127f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1601613c345788925034891015613c2f57613c2f338a3403614cfa565b613c39565b600092505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad967e15847f000000000000000000000000000000000000000000000000000000000000000060008d60000360008033604051602001613ccd919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401613cfd96959493929190615967565b604080518083038185885af1158015613d1a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613d3f91906159c0565b505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663ad967e157f000000000000000000000000000000000000000000000000000000000000000060008b8103908f81806040519080825280601f01601f191660200182016040528015613dd1576020820181803683370190505b506040518763ffffffff1660e01b8152600401613df396959493929190615967565b60408051808303816000875af1158015613e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e3591906159c0565b505067ffffffffffffffff605287901c1692508460a0015160ff8416600885901c901b613e62919061577a565b925067ffffffffffffffff609287901c169150846080015160ff8316600884901c901b613e8f919061577a565b91506092613ea283603860086001614305565b901b6052613eb585603860086000614305565b7ffffffffffffc00000000000000000000000000000003ffffffffffffffffffff8916911b171760005560408051338152602081018a90529081018a905273ffffffffffffffffffffffffffffffffffffffff8c1660608201527f80fd9cc6b1821f4a510e45ffce6852ea3404807b5d3d833ffa85664408afcb669060800160405180910390a15050505050505094509492505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614613fbf576040517f60121cca000000000000000000000000000000000000000000000000000000008152617929600482015260240161027d565b600054600116600003614002576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792a600482015260240161027d565b61403984614012838501856159e4565b7f000000000000000000000000000000000000000000000000000000000000000086615239565b50505050565b6140a07f00000000000000000000000000000000000000000000000000000000000000006000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061074492505050565b50565b600060ff82901d80831803617fff8111156140bd57600080fd5b70010000000000000000000000000000000060018216156140eb57506fff9dd7de423466c20352b1246ce4856f5b600282161561410a576fff3bd55f4488ad277531fa1c725a66d00260801c5b6004821615614129576ffe78410fd6498b73cb96a6917f8532590260801c5b6008821615614148576ffcf2d9987c9be178ad5bfeffaa1232730260801c5b6010821615614167576ff9ef02c4529258b057769680fc6601b30260801c5b6020821615614186576ff402d288133a85a17784a411f7aba0820260801c5b60408216156141a5576fe895615b5beb6386553757b0352bda900260801c5b60808216156141c4576fd34f17a00ffa00a8309940a15930391a0260801c5b6101008216156141e4576fae6b7961714e20548d88ea5123f9a0ff0260801c5b610200821615614204576f76d6461f27082d74e0feed3b388c0ca10260801c5b610400821615614224576f372a3bfe0745d8b6b19d985d9a8b85bb0260801c5b610800821615614244576f0be32cbee48979763cf7247dd7bb539d0260801c5b611000821615614263576e8d4f70c9ff4924dac37612d1e2921e0260801c5b612000821615614281576d4e009ae5519380809a02ca7aec770260801c5b61400082161561429d576b17c45e641b6e95dee056ff100260801c5b600091507f800000000000000000000000000000000000000000000000000000000000000084166142fb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0463ffffffff8116156142fb57600191505b60201c0192915050565b600080856fffffffffffffffffffffffffffffffff8111156143285760809150811c5b67ffffffffffffffff811115614340576040918201911c5b63ffffffff811115614354576020918201911c5b61ffff811115614366576010918201911c5b60ff811115614377576008918201911c5b600f811115614388576004918201911c5b6003811115614399576002918201911c5b60018111156143a9576001820191505b80156143b6576001820191505b50848110156143c25750835b848103905085811c6000821184161561441157600181019050806001871b0361441157506001908101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86011b5b6001851b821061442057600080fd5b90931b909201949350505050565b601681901c633fffffff166000818152600760205260408120549091829182600160c483901c8116900361446c575060c581901c6207ffff166144a4565b5060c581901c6207ffff166000819003906144a457507f80000000000000000000000000000000000000000000000000000000000000005b60006144af88615300565b90508082136144be57806144c0565b815b94507f8000000000000000000000000000000000000000000000000000000000000000850361451357867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00001169650614602565b80850361458957600085121561455657600385600003901b877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000116179650614602565b600385901b877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000116600417179650614602565b6000848152600760205260408120557ffffffffffffffffffffffffffffffffffffffffffffc00000000000000000001909616623ffffc60c284901c1617660fffffffc00000609084901c16177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff840160341b17600217955b869550505050509250929050565b600080831261462357610100830561462e565b600161010084820105035b90506101008102830382614656576000828152600460205260409020546001821b191661466b565b6000828152600460205260409020546001821b175b60009283526004602052604090922091909155505050565b6000806000806127108510156146c9576040517f60121cca000000000000000000000000000000000000000000000000000000008152617933600482015260240161027d565b6000866146e36c0100000000000000000000000088615750565b6146ed91906157bc565b90506146f881614860565b60019091019550905061271061271f820204905060606147188883615750565b901c9250614726868461577a565b600086815260056020526040812054600181901c62ffffff1696509193508515801590614754575060018216155b156147955766ffffffffffffff602183901c1660ff601984901c161b61477a8682615767565b91508060000361478f5761478f886001614610565b506147e9565b85156147d5576000878152600660209081526040808320600360028b0181810486529190935292208054601986901c929093066055029190911b90911790555b8560010195508490506147e9876001614610565b612710811015614829576040517f60121cca000000000000000000000000000000000000000000000000000000008152617931600482015260240161027d565b601961483a82603860086000614305565b6000898152600560205260409020911b600188901b179055509497939650919450925050565b600080630235b88083107473d85bca016a2338b31715f8e13054c005f8b995d38411171561488d57600080fd5b6c0100000000000000000000000083106000816148c357506c010000000000000000000000006a52b7d2dcc80cd2e40000008502045b81156148e657507652b7d2dcc80cd2e40000000000000000000000000000008490045b6f037af932b2affa9738cc6c38ca527831811061492757614000841793506f037af932b2affa9738cc6c38ca5278316a52b7d2dcc80cd2e400000082020490505b6d010f7a088a76f267264caa114f0a811061496457612000841793506d010f7a088a76f267264caa114f0a6a52b7d2dcc80cd2e400000082020490505b6b95da74f87f839fc2e0dc5bd9811061499d57611000841793506b95da74f87f839fc2e0dc5bd96a52b7d2dcc80cd2e400000082020490505b6b06f55dedafd8491caed5a1b881106149d657610800841793506b06f55dedafd8491caed5a1b86a52b7d2dcc80cd2e400000082020490505b6b017fdd10ee11e624491b4cc18110614a0f57610400841793506b017fdd10ee11e624491b4cc16a52b7d2dcc80cd2e400000082020490505b6ab23131bf0c30217b0a2c698110614a4657610200841793506ab23131bf0c30217b0a2c696a52b7d2dcc80cd2e400000082020490505b6a79683edcb9280d797aded78110614a7d57610100841793506a79683edcb9280d797aded76a52b7d2dcc80cd2e400000082020490505b6a64366e2f9919f0d9b0dc908110614ab3576080841793506a64366e2f9919f0d9b0dc906a52b7d2dcc80cd2e400000082020490505b6a5b0bcda5a78850646b0a818110614ae9576040841793506a5b0bcda5a78850646b0a816a52b7d2dcc80cd2e400000082020490505b6a56c840f992c70f959ae8108110614b1f576020841793506a56c840f992c70f959ae8106a52b7d2dcc80cd2e400000082020490505b6a54b9cd178695194f9be0a08110614b55576010841793506a54b9cd178695194f9be0a06a52b7d2dcc80cd2e400000082020490505b6a53b7458aff204b5e65d6818110614b8b576008841793506a53b7458aff204b5e65d6816a52b7d2dcc80cd2e400000082020490505b6a53372a2f38c240d689e4008110614bc1576004841793506a53372a2f38c240d689e4006a52b7d2dcc80cd2e400000082020490505b6a52f76617a04499e66400008110614bf7576002841793506a52f76617a04499e66400006a52b7d2dcc80cd2e400000082020490505b6a52d79660f3dec355c000008110614c2d576001841793506a52d79660f3dec355c000006a52b7d2dcc80cd2e400000082020490505b81614c4557806a52b7d2dcc80cd2e400000086020492505b8115614c61579219926a52d79660f3dec355c000008582020492505b5050915091565b600066ffffffffffffff604984901c1660ff604185901c161b808203614c92576000915050614cf4565b612710613fff60a286901c168402046401ffffffff608186901c16420362ffffff60b087901c16614cc38284615750565b614ccd91906157bc565b9050808311614cdd576000614ce1565b8083035b9350508084038381111561078757925050505b92915050565b600080600080600085875af1905080614d44576040517fdee51a8a0000000000000000000000000000000000000000000000000000000081526201155a600482015260240161027d565b505050565b67ffffffffffffffff605b82901c811690609b83901c16811580614d6b575080155b15614da7576040517fd50d751200000000000000000000000000000000000000000000000000000000815262011171600482015260240161027d565b61ffff8316603a84901c6401ffffffff16428181039160ea87901c617fff16911480614dd1575082155b80614ddc5750806001145b15614de957505050915091565b64496cebb80084840283020484019350617fff60db87901c16925082600103614e1457505050915091565b82600116600103614e695760019290921c91826c7e37be2022c0914b268000000081614e4257614e4261578d565b049250612710601e87901c613fff166b033b2e3c9fd0803ce8000000850102049250614e96565b60019290921c916305f5e100601e87901c613fff166127108501026b033b2e3c9fd0803ce8000000020492505b80600116600103614ecd5760011c61271081016b033b2e3c9fd0803ce8000000820281614ec557614ec561578d565b049050614f03565b60011c61271081016b033b2e3c9fd0803ce8000000820281614ef157614ef161578d565b046b033b2e3c9fd0803ce80000000390505b760a70c3c40a64e6c51999090b65f67d92400000000000008382026127100261ffff881691900402601087901c613fff16612710030292506801b5a660ea44b8000085840283020485019450505050915091565b6000600f83811c9083901c0281681fffffffffffffffff8211614f7b576022614f7e565b60235b91821c919050617fff858116908516018101614000811015614f9f57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00001617fff811115614fde57506603ffffffffffff9250614cf4915050565b600f9290921b909117949350505050565b6000617fff83811690831603608181101561502757600f83811c821b9085901c86028161501e5761501e61578d565b0491505061502d565b60009150505b9392505050565b6000816fffffffffffffffffffffffffffffffff8311156150565760809150811c5b67ffffffffffffffff81111561506e576040918201911c5b63ffffffff811115615082576020918201911c5b61ffff811115615094576010918201911c5b60ff8111156150a5576008918201911c5b600f8111156150b6576004918201911c5b60038111156150c7576002918201911c5b60018111156150d7576001820191505b80156150e4576001820191505b50919050565b6000600f83901c8202816c03ffffffffffffffffffffffff8211615131576c01ffffffffffffffffffffffff821161512a5761512582615034565b615134565b6062615134565b60635b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd617fff87168201810194500191821c919050604083111561518157604083600f84901b01039250615186565b600080fd5b505092915050565b600080600f83901c7fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000603186901b16816151ca576151ca61578d565b0490506000604082901c6001146151e25760406151e5565b60415b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd81019290921c91617fff8581166040019250613fdd90871690910101818111156151815703600f9190911b179050614cf4565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d11600160005114161716915050806152f9576040517fdee51a8a00000000000000000000000000000000000000000000000000000000815262011559600482015260240161027d565b5050505050565b6000806000808412615316576101008405615321565b600161010085820105035b600081815260046020526040812054919350859003610100808502919091010190811b811c91505b811561536857600161535a83615034565b8461010002010393506153f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f036001016153dd577f800000000000000000000000000000000000000000000000000000000000000093506153f3565b6000838152600460205260409020549150615349565b505050919050565b80151581146140a057600080fd5b60006020828403121561541b57600080fd5b815161502d816153fb565b73ffffffffffffffffffffffffffffffffffffffff811681146140a057600080fd5b6000806000806080858703121561545e57600080fd5b843593506020850135925060408501359150606085013561547e81615426565b939692955090935050565b60006020828403121561549b57600080fd5b5035919050565b600080600080608085870312156154b857600080fd5b5050823594602084013594506040840135936060013592509050565b600080600080608085870312156154ea57600080fd5b8435935060208501359250604085013561550381615426565b9150606085013561547e816153fb565b6000806000806060858703121561552957600080fd5b843561553481615426565b935060208501359250604085013567ffffffffffffffff8082111561555857600080fd5b818701915087601f83011261556c57600080fd5b81358181111561557b57600080fd5b88602082850101111561558d57600080fd5b95989497505060200194505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101a0810160208301516155e2602084018273ffffffffffffffffffffffffffffffffffffffff169052565b50604083015161560a604084018273ffffffffffffffffffffffffffffffffffffffff169052565b506060830151615632606084018273ffffffffffffffffffffffffffffffffffffffff169052565b50608083015161565a608084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060a083015161568260a084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060c083015161569760c084018260ff169052565b5060e08301516156ac60e084018260ff169052565b50610100838101519083015261012080840151908301526101408084015190830152610160808401519083015261018092830151929091019190915290565b6000602082840312156156fd57600080fd5b5051919050565b60006020828403121561571657600080fd5b815161502d81615426565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417614cf457614cf4615721565b80820180821115614cf457614cf4615721565b81810381811115614cf457614cf4615721565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826157cb576157cb61578d565b500490565b808202600082127f80000000000000000000000000000000000000000000000000000000000000008414161561580857615808615721565b8181058314821517614cf457614cf4615721565b60008261582b5761582b61578d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561587f5761587f615721565b500590565b81810360008312801583831316838312821617156158a4576158a4615721565b5092915050565b60007f800000000000000000000000000000000000000000000000000000000000000082036158dc576158dc615721565b5060000390565b808201828112600083128015821682158216171561518657615186615721565b6000815180845260005b818110156159295760208185018101518683018201520161590d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b600073ffffffffffffffffffffffffffffffffffffffff8089168352876020840152866040840152808616606084015280851660808401525060c060a08301526159b460c0830184615903565b98975050505050505050565b600080604083850312156159d357600080fd5b505080516020909101519092909150565b6000602082840312156159f657600080fd5b813561502d8161542656fea2646970667358221220166a4f8f33f19a1420d9603da384773087799477801bf6db91b84688b89bbad164736f6c63430008150033" }