//
0x608060405234801561001057600080fd5b50614f8b806100206000396000f3fe60806040526004361061010d5760003560e01c8063918f867411610095578063b881547711610064578063b8815477146102e5578063ca68d8f6146102f8578063e0af361614610310578063e99bfa9514610332578063fa461e331461034557600080fd5b8063918f8674146102945780639871efa4146102ac57806398d2ac62146102bf578063b80c2f09146102d257600080fd5b806344014e98116100dc57806344014e98146101c357806354fd4d50146101d6578063591b3d08146102195780636aa476451461022c57806373679b6b1461026c57600080fd5b806301617fab1461016457806303b87e5f1461017757806308298b5a1461019d5780630d5f0e3b146101b057600080fd5b3661015f5732330361015d5760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61015d610172366004614115565b610365565b61018a6101853660046141bf565b610391565b6040519081526020015b60405180910390f35b61018a6101ab36600461428b565b610442565b61018a6101be3660046142fd565b610568565b61018a6101d136600461435d565b6105c1565b3480156101e257600080fd5b5061020c6040518060400160405280600a81526020016976312e302e352d74656560b01b81525081565b6040516101949190614402565b61018a6102273660046149f7565b6106ea565b34801561023857600080fd5b50610254731b5d39419c268b76db06de49e38b010fbfb5e22681565b6040516001600160a01b039091168152602001610194565b34801561027857600080fd5b5061025473d2f0ac2012c8433f235c8e5e97f2368197dd06c781565b3480156102a057600080fd5b5061018a633b9aca0081565b61018a6102ba3660046142fd565b610942565b61015d6102cd366004614ab9565b61095c565b61018a6102e0366004614af8565b610a97565b61018a6102f336600461435d565b610af4565b34801561030457600080fd5b5061018a6301c9c38081565b34801561031c57600080fd5b50610254600080516020614ef683398151915281565b61018a610340366004614bae565b610cf4565b34801561035157600080fd5b5061015d610360366004614c5e565b610d04565b600160ff1b81166fffffffffffffffffffffffffffffffff821661038b84338484610f34565b50505050565b60008760800135428110156103b85760405162461bcd60e51b815260040161015490614cdd565b6040518b8152600080516020614f368339815191529060200160405180910390a161043333808c6103ee368e90038e018e614d05565b8c8c8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061042e92508d91508e9050614d21565b611312565b9b9a5050505050505050505050565b60405160a087901c8152600090600080516020614f368339815191529060200160405180910390a160008061047b6000341186866113db565b9150915060006104918a6001600160a01b031690565b9050826001600160a01b0316816001600160a01b03161480156104cb57506001600160a01b038316600080516020614ed683398151915214155b806104fe57506001600160a01b0381161580156104fe57506001600160a01b038316600080516020614ed6833981519152145b61054a5760405162461bcd60e51b815260206004820152601760248201527f756e78737761703a20746f6b656e206d69736d617463680000000000000000006044820152606401610154565b61055a83838b8b338c8c8c6116e7565b9a9950505050505050505050565b60405160a086901c8152600090600080516020614f368339815191529060200160405180910390a16000806105a16000341186866117bc565b915091506105b5338984848b8b8b8b611abe565b98975050505050505050565b60008360800135428110156105e85760405162461bcd60e51b815260040161015490614cdd565b604051878152600080516020614f368339815191529060200160405180910390a160008061061a6000341187876117bc565b90925090506001600160a01b03821661063a88356001600160a01b031690565b6001600160a01b031614801561067057506001600160a01b0381166106656040890160208a01614d2e565b6001600160a01b0316145b6106bc5760405162461bcd60e51b815260206004820152601960248201527f756e697377617056333a20746f6b656e206d69736d61746368000000000000006044820152606401610154565b6106dd33896001600160a01b031684848b604001358c606001358c8c611abe565b9998505050505050505050565b60008660800151428110156107115760405162461bcd60e51b815260040161015490614cdd565b87516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed1981016107775760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610154565b6001600160a01b0384166107c65760405162461bcd60e51b8152602060048201526016602482015275726566756e64546f206973206164647265737328302960501b6044820152606401610154565b6001600160a01b03851661080f5760405162461bcd60e51b815260206004820152601060248201526f746f206973206164647265737328302960801b6044820152606401610154565b600089604001511161085a5760405162461bcd60e51b8152602060048201526014602482015273066726f6d546f6b656e416d6f756e7420697320360641b6044820152606401610154565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156108a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c59190614d4b565b905060005b895181101561092c578a60400151828b83815181106108eb576108eb614d64565b60200260200101516108fd9190614d90565b6109079190614da7565b8a828151811061091957610919614d64565b60209081029190910101526001016108ca565b5060408a0181905261055a8a8a8a30898b611b08565b6000610952868686338787610442565b9695505050505050565b8060800135428110156109815760405162461bcd60e51b815260040161015490614cdd565b600082356001600160a01b038116600080516020614ed68339815191521480156109d05750600080516020614ef68339815191526109c56040860160208701614d2e565b6001600160a01b0316145b156109de5760009150610a7f565b6001600160a01b038116600080516020614ef6833981519152148015610a295750600080516020614ed6833981519152610a1e6040860160208701614d2e565b6001600160a01b0316145b15610a375760019150610a7f565b60405162461bcd60e51b815260206004820152601c60248201527f53776170577261703a20696e76616c696420746f6b656e2070616972000000006044820152606401610154565b610a8f8686848760400135610f34565b505050505050565b6000876080013542811015610abe5760405162461bcd60e51b815260040161015490614cdd565b6040518a8152600080516020614f368339815191529060200160405180910390a161055a3380806103ee368e90038e018e614d05565b6000836080013542811015610b1b5760405162461bcd60e51b815260040161015490614cdd565b604051878152600080516020614f368339815191529060200160405180910390a1600080610b4d6000341187876113db565b90925090506001600160a01b038735811690831681148015610b8657506001600160a01b038316600080516020614ed683398151915214155b80610bb957506001600160a01b038116158015610bb957506001600160a01b038316600080516020614ed6833981519152145b610c055760405162461bcd60e51b815260206004820152601b60248201527f756e78737761703a2066726f6d546f6b656e206d69736d6174636800000000006044820152606401610154565b6001600160a01b038216610c1f60408a0160208b01614d2e565b6001600160a01b0316148015610c4c57506001600160a01b038216600080516020614ed683398151915214155b80610c9057506000610c6460408a0160208b01614d2e565b6001600160a01b0316148015610c9057506001600160a01b038216600080516020614ed6833981519152145b610cdc5760405162461bcd60e51b815260206004820152601960248201527f756e78737761703a20746f546f6b656e206d69736d61746368000000000000006044820152606401610154565b61055a83838a604001358b60600135338e8d8d6116e7565b60006109528686868686876106ea565b610da5565b3d6000803e3d6000fd5b67a9059cbb70a0823160c01b815230816008015260206000602483600401855afa610d4057610d40610d09565b6000518015610d6b5760a435600483015260248201819052610d6b6020600060448582885af1610d70565b505050565b80610d7d57610d7d610d09565b600160005114601f3d11163d151780610da157633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa610ddc57610ddc610d09565b6020806004808501335afa610df357610df3610d09565b60206040600460088501335afa610e0c57610e0c610d09565b6000806000881360018114610e28576020519250879150610e31565b60005192508891505b5060008452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b0360558520169250338314610e8a57635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b845230831460018114610efc57826014860152836034860152336054860152816074860152610ef7602060006084601089016000731b5d39419c268b76db06de49e38b010fbfb5e2265af1610d70565b610f29565b336010860152816030860152610f1f602060006044600c89016000885af1610d70565b610f298386610d13565b505050505050505050565b60008111610f795760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610154565b6000610f83611e3f565b9050600083610fa057600080516020614ed6833981519152610fb0565b600080516020614ef68339815191525b9050600084610fcd57600080516020614ef6833981519152610fdd565b600080516020614ed68339815191525b9050610fea838383611f40565b600080610ff985338a89611ff2565b9150915086156111bb5760405163052f523360e11b8152600080516020614ef6833981519152600482015233602482015273d2f0ac2012c8433f235c8e5e97f2368197dd06c7604482015260648101879052731b5d39419c268b76db06de49e38b010fbfb5e22690630a5ea46690608401600060405180830381600087803b15801561108457600080fd5b505af1158015611098573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b81526004810189905273d2f0ac2012c8433f235c8e5e97f2368197dd06c79250632e1a7d4d9150602401600060405180830381600087803b1580156110e957600080fd5b505af11580156110fd573d6000803e3d6000fd5b505050506001600160a01b03821630146111b6576000826001600160a01b03164760405160006040518083038185875af1925050503d806000811461115e576040519150601f19603f3d011682016040523d82523d6000602084013e611163565b606091505b50509050806111b45760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610154565b505b611295565b8451611209578534146112095760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610154565b600080516020614ef68339815191526001600160a01b031663d0e30db0876040518263ffffffff1660e01b81526004016000604051808303818588803b15801561125257600080fd5b505af1158015611266573d6000803e3d6000fd5b505050506001600160a01b0383163014905061129557611295600080516020614ef6833981519152838861254f565b6112a085898361257f565b50604051898152600080516020614f368339815191529060200160405180910390a1604080516001600160a01b03868116825285166020820152328183015260608101889052608081018890529051600080516020614f168339815191529181900360a00190a1505050505050505050565b60006001600160a01b0385166113585760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610154565b6000611362611e3f565b90506113868161137c87600001516001600160a01b031690565b8760200151611f40565b600080611399838b8a8a60400151611ff2565b90925090508960006113af898989858f89611b08565b905060006113be868c8661257f565b90506113ca8183614dc9565b9d9c50505050505050505050505050565b6000808261142b5760405162461bcd60e51b815260206004820152601c60248201527f706f6f6c73206d7573742062652067726561746572207468616e2030000000006044820152606401610154565b60006001600160a01b038585600081811061144857611448614d64565b9050602002013560001c1690506000600160ff1b8686600081811061146f5761146f614d64565b9050602002013560001c16600014159050806114ec57816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e79190614ddc565b61154e565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561152a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154e9190614ddc565b93506001600160a01b038416600080516020614ef68339815191521480156115735750865b1561158a57600080516020614ed683398151915293505b60008686611599600182614dc9565b8181106115a8576115a8614d64565b60200291909101359150506001600160a01b038116600160ff1b821615158061163257816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162d9190614ddc565b611694565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116949190614ddc565b9550600160fe1b831615156001600160a01b038716600080516020614ef68339815191521480156116c25750805b156116d957600080516020614ed683398151915296505b505050505050935093915050565b60006001600160a01b03841661172d5760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610154565b6000611737611e3f565b9050611744818b8b611f40565b6000806117538389898d611ff2565b9092509050600061178f6001600160a01b038e16600080516020614ed683398151915214611781578d611784565b60005b8c8c8a8a8e89612973565b9050600061179e858a8561257f565b90506117aa8183614dc9565b9e9d5050505050505050505050505050565b6000808261180c5760405162461bcd60e51b815260206004820152601c60248201527f706f6f6c73206d7573742062652067726561746572207468616e2030000000006044820152606401610154565b60006001600160a01b038585600081811061182957611829614d64565b905060200201351690506000600160ff1b8686600081811061184d5761184d614d64565b90506020020135166000149050806118c657816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561189d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c19190614ddc565b611928565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611904573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119289190614ddc565b93506001600160a01b038416600080516020614ef683398151915214801561194d5750865b1561196457600080516020614ed683398151915293505b60008686611973600182614dc9565b81811061198257611982614d64565b60200291909101359150506001600160a01b038116600160ff1b82161580611a0b57816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a069190614ddc565b611a6d565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6d9190614ddc565b9550600160fd1b831615156001600160a01b038716600080516020614ef68339815191521480156116c2575080156116d957600080516020614ed68339815191529650505050505050935093915050565b600080611ac9611e3f565b9050611ad6818989611f40565b600080611ae5838d8d8b611ff2565b915091506000611af98d848b8b8b8b61319a565b9050600061179e858e8561257f565b60408601516000908790611b695760405162461bcd60e51b815260206004820152602260248201527f526f7574653a2066726f6d546f6b656e416d6f756e74206d757374206265203e604482015261020360f41b6064820152608401610154565b805160208201516001600160a01b0391821691611b879116856136b1565b9250611b9281613745565b15611c0157600080516020614ef68339815191526001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611be457600080fd5b505af1158015611bf8573d6000803e3d6000fd5b50505050503095505b6000805b8951811015611c3d57898181518110611c2057611c20614d64565b602002602001015182611c339190614df9565b9150600101611c05565b508260400151811115611cb05760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610154565b508651885114611cf45760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610154565b60005b8751811015611d5d57611d55878787611d1c87602001516001600160a01b0316613745565b8d8681518110611d2e57611d2e614d64565b60200260200101518d8781518110611d4857611d48614d64565b6020026020010151613761565b600101611cf7565b50611d6c8260200151856138d9565b60208201518390611d86906001600160a01b0316866136b1565b611d909190614dc9565b92508160600151831015611ddf5760405162461bcd60e51b8152602060048201526016602482015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b6044820152606401610154565b60208083015160408085015181516001600160a01b038087168252909316938301939093523290820152606081019190915260808101849052600080516020614f168339815191529060a00160405180910390a150509695505050505050565b6040805161010081018252600060a080830182905260c0830191909152651111057e155560d11b36601f198101356001600160d01b03198116928314651e51057e155560d11b8414811786526522220afc2bbb60d01b8414653ca20afc2bbb60d01b8514811760208801529482901c65ffffffffffff16968601969096526001600160a01b039081166060860152603f1990910135600160ff1b8116151560e0860152908116608085015292939091176001808214908114611f0e5760008560a0015260008560c00152611f39565b6060360335935065ffffffffffff60a01b841660a01c8560a001526001600160a01b0384168560c001525b5050505090565b82518015611f635750816001600160a01b031683608001516001600160a01b0316145b80611f8f575082602001518015611f8f5750806001600160a01b031683608001516001600160a01b0316145b80611fa657508251158015611fa657508260200151155b610d6b5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420636f6d6d697373696f6e20696e666f0000000000000000006044820152606401610154565b600080856020015115612017573061200e876080015130613ba1565b91509150612546565b855161202857508290506000612546565b61232b565b8082028115828204841417840261204c5763ad251c276000526004601cfd5b9290920492915050565b60008282101561206e576346e72d036000526004601cfd5b500390565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b60008060008085855af180610d6b57610d6b60607c1c20636f6d6d697373696f6e2077697468206574686572206572726f72612073565b6040516084810160405263052f523360e11b81528160048201528260248201528360448201528460648201526000806084836000731b5d39419c268b76db06de49e38b010fbfb5e2265af19050806121405761214060577c13636c61696d20746f6b656e73206661696c6564000000000000000000612073565b5050505050565b600080604051604881016040526ba9059cbba9059cbb70a0823160a01b815230600c82015260206000602460088401875afa806121a1576121a16058740519d95d0818985b185b98d953d98819985a5b195960421b612073565b6000518988016121cc670de0b6b3a7640000836121c784670de0b6b3a76400008e61202d565b61202d565b955050808511156121ff576121ff60597c15696e76616c696420616d6f756e74315363616c656400000000000000612073565b8660088401528460288401526020600060446004860160008a5af1915081601f3d1160016000511416151615612238573d863b15171591505b8161226557612265605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00612073565b88156122da576122758582612056565b93508860048401528360248401526020600060448560008a5af1915081601f3d11600160005114161516156122ad573d863b15171591505b816122da576122da605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00612073565b5050509550959350505050565b604051606081016040528181528260208201528360408201527f0d3b1268ca3dbb6d3d8a0ea35f44f8f9d58cf578d732680b71b6904fb2733e0d606082a150505050565b608086015160e087015160a08801516040890151601090920281151501600080516020614ed68339815191528414610100020191600091829182918291906301c9c380828201111561239f5761239f605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400612073565b60608e015160c08f01519096509450818101633b9aca0003918b0282900493508a0204905084610100811461242957610101811461244c57610110811461242957610111811461244c57801561249257600181146124a957601081146124d757601181146125035761242460526e0e696e76616c69642073746174757360701b612073565b612537565b612433838661208f565b6124248584600080516020614ed68339815191526122e7565b612456838661208f565b61246f8584600080516020614ed68339815191526122e7565b612479828561208f565b6124248483600080516020614ed68339815191526122e7565b61249e83868e8a6120c6565b6124248584896122e7565b6124b583868e8a6120c6565b6124c08584896122e7565b6124cc82858e8a6120c6565b6124248483896122e7565b6124e383308e8a6120c6565b6124f160008085888b612147565b506124fd86828a6122e7565b50612537565b612511828401308e8a6120c6565b61251e828585888b612147565b61252987838b6122e7565b61253486828b6122e7565b50505b50505050505050836000915091505b94509492505050565b6125628363a9059cbb60e01b8484613c21565b610d6b5760405163fb7f507960e01b815260040160405180910390fd5b600083602001516125925750600061296c565b604084015160a08501516301c9c38081830111156125d2576125d2605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400612073565b6080860151606087015160405160608101604052600080516020614ed683398151915283146001811461282957604051604c81016040526fa9059cbba9059cbba9059cbb70a0823160801b8152306010820152602060006024600c8401885afa8061265a5761265a6058740519d95d0818985b185b98d953d98819985a5b195960421b612073565b6000518a81101561267e5761267e604d6a029cdd588819985a5b195960921b612073565b8a81039050633b9aca0089820204995085600c84015289602c8401526020600060446008860160008b5af1915081601f3d11600160005114161516156126c7573d873b15171591505b816126f4576126f4605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00612073565b868552896020860152856040860152600080516020614eb6833981519152606086a187156127b65760c08d0151633b9aca0089830204808c019b508160088601528060288601526020600060446004880160008d5af1935083601f3d1160016000511416151615612768573d893b15171593505b8361279557612795605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00612073565b88875260208701526040860152600080516020614eb6833981519152606086a15b6001600160a01b038c166004840152899003602483015260206000604484828a5af1905080601f3d11600160005114161516156127f55750843b153d17155b806128225761282260607c1c7472616e7366657220746f6b656e207265636569766572206661696c612073565b5050612965565b8747101561284a5761284a604d6a029cdd588819985a5b195960921b612073565b874703633b9aca008782020497506000806000808b885af18061288f5761288f605d7c197472616e73666572206574682072656665726572206661696c000000612073565b858452886020850152846040850152600080516020614eb6833981519152606085a186156129215760c08c0151633b9aca0083890204998a0199600080808084865af1806128ff576128ff605d7c197472616e73666572206574682072656665726572206661696c000000612073565b5087865260208601526040850152600080516020614eb6833981519152606085a15b6000806000808c86038f60601b60601c5af190508061296257612962605e7c1a7472616e7366657220657468207265636569766572206661696c0000612073565b50505b5050505050505b9392505050565b6000612ba3565b828152600060206000600484600401865afa6129af576129af6054700419d95d081d1bdad95b8819985a5b195960621b612073565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa6129fd576129fd605672049d1bdad95b8c0818d85b1b0819985a5b195960521b612073565b600051915083836004015260206000602485855afa612a3e57612a3e60597c1562616c616e63654f662063616c6c206661696c656400000000000000612073565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa6129fd576129fd605672049d1bdad95b8c4818d85b1b0819985a5b195960521b612073565b668b0367c240bc6b60c21b8152600060406000600484600401875afa612ad557612ad560587c1472657365727665732063616c6c206661696c65640000000000000000612073565b600051602051868015612b01578915612af957612af28786612a4a565b8390039650505b909190612b18565b8815612b1857612b1187866129ba565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca009290920282019102049050848015612b525781600484015260006024840152612b60565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af16105b5576105b5605470041cddd85c0818d85b1b0819985a5b195960621b612073565b846020850281018580612bca57612bca604e6b0b656d70747920706f6f6c7360901b612073565b5060405182358b1560018114612c74573415612c0057612c0060557111696e76616c6964206d73672e76616c756560581b612073565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b60648401526000806084856000731b5d39419c268b76db06de49e38b010fbfb5e2265af1612c6f57612c6f6056720498db185a5b481d1bdad95b8819985a5b195960521b612073565b612d41565b60018c341003612c9e57612c9e60557111696e76616c6964206d73672e76616c756560581b612073565b670a9059cbbd0e30db60c41b835260008060048086018f600080516020614ef68339815191525af1612ceb57612ceb6056720499195c1bdcda5d081155120819985a5b195960521b612073565b6001600160a01b03821683600401528b8360240152602060006044856000600080516020614ef68339815191525af1612d4157612d41605874051d1c985b9cd9995c8815d155120819985a5b195960421b612073565b508a9450602084015b83811015612da0578035612d946001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b612a8d565b96509150602001612d4a565b5060009350600160fe1b81168015612eee5760009450612ded3063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a612a8d565b9550672e1a7d4da9059cbb60c01b835273d2f0ac2012c8433f235c8e5e97f2368197dd06c76008840152856028840152602060006044856004016000600080516020614ef68339815191525af1612e6157612e61605874051d1c985b9cd9995c8815d155120819985a5b195960421b612073565b85600484015260206000602485600073d2f0ac2012c8433f235c8e5e97f2368197dd06c75af1612eb357612eb360577c13776974686472617720455448206661696c6564000000000000000000612073565b600080600080898b5af1612ee957612ee960577c137472616e7366657220455448206661696c6564000000000000000000612073565b61312c565b60009350600160ff1b82168015612fa057600160fc1b831615612f9b576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa612f5457612f54605672049d1bdad95b8c0818d85b1b0819985a5b195960521b612073565b600051955087846004015260206000602486895afa612f9557612f9560567c15746f6b656e302062616c616e6365206661696c656400000000000000612073565b60005194505b61303c565b600160fd1b83161561303c576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa612ff557612ff5605672049d1bdad95b8c4818d85b1b0819985a5b195960521b612073565b600051955087846004015260206000602486895afa6130365761303660597c15746f6b656e312062616c616e6365206661696c656400000000000000612073565b60005194505b506130748763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a612a8d565b955084600010600181146130dd57600160ff1b831680156130b5576130ae6770a082310dfe168160c01b6001600160a01b0386168761297a565b96506130d7565b6130d46770a08231d21220a760c01b6001600160a01b0386168761297a565b96505b5061312a565b6770a082310dfe168160c01b845287846004015260206000602486895afa613122576131226058740519d95d0818985b185b98d953d98819985a5b195960421b612073565b846000510396505b505b50508884101561315e5761315e605a7c164d696e2072657475726e206e6f742072656163686564000000000000612073565b8a8152826020820152326040820152896060820152836080820152600080516020614f1683398151915260a082a1505050979650505050505050565b60006135b2565b6000856001600160ff1b0310156131c357630b3f79fd60e41b60005260046000fd5b604051600160ff1b8616156001600160a01b038716816001811461325757630251596160e31b845260048401868152600060208201528a604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af18061324b5760206000fd5b5060206000803e6132ba565b630251596160e31b845260048401868152600160208201528a60408201526401000276a4606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af1806132b25760206000fd5b5060208060003e5b505050506000519050600160ff1b8110156132e0576322323ba760e21b60005260046000fd5b1960010195945050505050565b60018134100361330857631841b4e160e01b60005260046000fd5b60008060008084600080516020614ef68339815191525af180610da157610da160577c1357455448206465706f736974206661696c6564000000000000000000612073565b60405160048101672e1a7d4da9059cbb60c01b825273d2f0ac2012c8433f235c8e5e97f2368197dd06c760048201528360248201526000806044836000600080516020614ef68339815191525af19050806133ca576133ca60587c147472616e736665722077657468206661696c65640000000000000000612073565b836004830152600080602484600073d2f0ac2012c8433f235c8e5e97f2368197dd06c75af190508061341e5761341e60587c1477697468647261772077657468206661696c65640000000000000000612073565b60008060008087875af190508061038b5761038b605571045cd95b9908195d1a195c8819985a5b1959605a1b612073565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b8152600080600483865afa90508061349e5761349e6055710459d95d081d1bdad95b8c0819985a5b1959605a1b612073565b5060206000803e505060005190565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b81526000806004808401865afa90508061349e5761349e6054710459d95d081d1bdad95b8c4819985a5b1959605a1b612073565b600080516020614ed68339815191528034613544578235600160ff1b811615600181146135355761352e826134ad565b9350613541565b61353e8261344f565b93505b50505b8335600160fd1b16613581578335600160ff1b811615600181146135725761356b8261344f565b925061357e565b61357b826134ad565b92505b50505b60405182600052816020523260405285608052600080516020614f1683398151915260a06000a16040525050505050565b82601f196020840282010183806135d4576333f3e07b60e11b60005260046000fd5b50886000341180156135ed576135e9896132ed565b309a505b5087606052825b828110156136175761360a898235848e306131a1565b309b5098506020016135f4565b506000600160fd1b83351611806001811461363757801561365657613667565b6136458a8535858f306131a1565b9550613651868c61334d565b613667565b6136648a8535858f8f6131a1565b95505b5050508583101561369a5761369a605a7c164d696e2072657475726e206e6f742072656163686564000000000000612073565b6136a58382846134fe565b50509695505050505050565b60006136bc83613745565b156136d257506001600160a01b0381163161373f565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa158015613718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061373c9190614d4b565b90505b92915050565b6001600160a01b0316600080516020614ed68339815191521490565b60006137918260008151811061377957613779614d64565b6020026020010151608001516001600160a01b031690565b905060008060008451905060005b818110156138cc5780156137dd576137c286828151811061377957613779614d64565b94506137d76001600160a01b038616306136b1565b9650309a505b306137e9600184614dc9565b821480156137f5575088155b15613801575088613899565b61380c600184614dc9565b82108015613842575086613821836001614df9565b8151811061383157613831614d64565b602002602001015160200151516001145b156138945786613853836001614df9565b8151811061386357613863614d64565b60200260200101516020015160008151811061388157613881614d64565b6020026020010151905060019450613899565b600094505b6138c08c8c838b8b87815181106138b2576138b2614d64565b602002602001015189613c75565b5083925060010161379f565b5050505050505050505050565b6138eb826001600160a01b0316613745565b15613b13576040516370a0823160e01b8152306004820152600090600080516020614ef6833981519152906370a0823190602401602060405180830381865afa15801561393c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139609190614d4b565b90508015613a595760405163a9059cbb60e01b815273d2f0ac2012c8433f235c8e5e97f2368197dd06c7600482015260248101829052600080516020614ef68339815191529063a9059cbb906044016020604051808303816000875af11580156139ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f29190614e0c565b50604051632e1a7d4d60e01b81526004810182905273d2f0ac2012c8433f235c8e5e97f2368197dd06c790632e1a7d4d90602401600060405180830381600087803b158015613a4057600080fd5b505af1158015613a54573d6000803e3d6000fd5b505050505b6001600160a01b0382163014610d6b5747801561038b576000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114613abd576040519150601f19603f3d011682016040523d82523d6000602084013e613ac2565b606091505b50509050806121405760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610154565b6001600160a01b0381163014610da1576040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015613b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8e9190614d4b565b90508015610d6b57610d6b83838361254f565b6000600080516020614ed6833981519152831460018114613c1557604051602481016040526370a0823160e01b815283600482015260206000602483885afa905080613c0a57613c0a6058740519d95d0818985b185b98d953d98819985a5b195960421b612073565b506000519150613c1a565b823191505b5092915050565b60006040518481528360048201528260248201526020600060448360008a5af19150508015613c6d573d8015613c6357600160005114601f3d11169150613c6b565b6000863b1191505b505b949350505050565b6000805b835151811015613e2257600084604001518281518110613c9b57613c9b614d64565b602002602001015160001b9050600080600080613cc289608001516001600160a01b031690565b6001600160a01b0386169450600160ff1b8616935061ffff60a087901c1692509050613cee8288614df9565b895151909750613d0090600190614dc9565b8603613d6757612710871115613d675760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610154565b87613dc25760008261271014613d9357612710613d84848d614d90565b613d8e9190614da7565b613d95565b8a5b9050613dc08e8b602001518981518110613db157613db1614d64565b60200260200101518484613e2c565b505b5050613e0c8188600001518681518110613dde57613dde614d64565b60200260200101518b858b606001518981518110613dfe57613dfe614d64565b60200260200101518f613ecc565b5050508080613e1a90614e29565b915050613c79565b5050505050505050565b306001600160a01b03851603613e4c57613e4782848361254f565b61038b565b60405163052f523360e11b81526001600160a01b03808416600483015280861660248301528416604482015260648101829052731b5d39419c268b76db06de49e38b010fbfb5e22690630a5ea46690608401600060405180830381600087803b158015613eb857600080fd5b505af1158015613e22573d6000803e3d6000fd5b8515613fd157600080866001600160a01b0316636f7929f260e01b878787604051602401613efc93929190614e42565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613f4a6001600160a01b038616650f2882bf0b3360d21b614df9565b604051602001613f5b929190614e77565b60408051601f1981840301815290829052613f7591614e99565b6000604051808303816000865af19150503d8060008114613fb2576040519150601f19603f3d011682016040523d82523d6000602084013e613fb7565b606091505b509150915081613fca57613fca816140c5565b5050610a8f565b600080866001600160a01b03166330e6ae3160e01b878787604051602401613ffb93929190614e42565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526140496001600160a01b038616650f2882bf0b3360d21b614df9565b60405160200161405a929190614e77565b60408051601f198184030181529082905261407491614e99565b6000604051808303816000865af19150503d80600081146140b1576040519150601f19603f3d011682016040523d82523d6000602084013e6140b6565b606091505b509150915081613e2257613e22815b8051156140d457805160208201fd5b60405162461bcd60e51b81526020600482015260136024820152721859185c1d1bdc8818d85b1b0819985a5b1959606a1b6044820152606401610154565b50565b6000806040838503121561412857600080fd5b50508035926020909101359150565b6001600160a01b038116811461411257600080fd5b803561415781614137565b919050565b600060a0828403121561416e57600080fd5b50919050565b60008083601f84011261418657600080fd5b5081356001600160401b0381111561419d57600080fd5b6020830191508360208260051b85010111156141b857600080fd5b9250929050565b60008060008060008060008060006101408a8c0312156141de57600080fd5b8935985060208a01356141f081614137565b97506141ff8b60408c0161415c565b965060e08a01356001600160401b038082111561421b57600080fd5b6142278d838e01614174565b90985096506101008c013591508082111561424157600080fd5b61424d8d838e01614174565b90965094506101208c013591508082111561426757600080fd5b506142748c828d01614174565b915080935050809150509295985092959850929598565b60008060008060008060a087890312156142a457600080fd5b86359550602087013594506040870135935060608701356142c481614137565b925060808701356001600160401b038111156142df57600080fd5b6142eb89828a01614174565b979a9699509497509295939492505050565b60008060008060006080868803121561431557600080fd5b85359450602086013593506040860135925060608601356001600160401b0381111561434057600080fd5b61434c88828901614174565b969995985093965092949392505050565b6000806000806000610100868803121561437657600080fd5b85359450602086013561438881614137565b9350614397876040880161415c565b925060e08601356001600160401b0381111561434057600080fd5b60005b838110156143cd5781810151838201526020016143b5565b50506000910152565b600081518084526143ee8160208601602086016143b2565b601f01601f19169290920160200192915050565b60208152600061296c60208301846143d6565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b038111828210171561444d5761444d614415565b60405290565b60405161014081016001600160401b038111828210171561444d5761444d614415565b604051601f8201601f191681016001600160401b038111828210171561449e5761449e614415565b604052919050565b600060a082840312156144b857600080fd5b6144c061442b565b90508135815260208201356144d481614137565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b60006001600160401b0382111561451857614518614415565b5060051b60200190565b600082601f83011261453357600080fd5b81356020614548614543836144ff565b614476565b82815260059290921b8401810191818101908684111561456757600080fd5b8286015b84811015614582578035835291830191830161456b565b509695505050505050565b600082601f83011261459e57600080fd5b813560206145ae614543836144ff565b82815260059290921b840181019181810190868411156145cd57600080fd5b8286015b848110156145825780356145e481614137565b83529183019183016145d1565b600082601f83011261460257600080fd5b81356001600160401b0381111561461b5761461b614415565b61462e601f8201601f1916602001614476565b81815284602083860101111561464357600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261467157600080fd5b81356020614681614543836144ff565b82815260059290921b840181019181810190868411156146a057600080fd5b8286015b848110156145825780356001600160401b038111156146c35760008081fd5b6146d18986838b01016145f1565b8452509183019183016146a4565b60006146ed614543846144ff565b838152905060208101600584901b830185101561470957600080fd5b825b8460051b8401811015614879576001600160401b03808235111561472e57600080fd5b8135850187601f82011261474157600080fd5b61474e61454382356144ff565b81358082526020808301929160051b8401018a81111561476d57600080fd5b602084015b8181101561486257858135111561478857600080fd5b8035850160a0818e03601f190112156147a057600080fd5b6147a861442b565b87602083013511156147b957600080fd5b6147cb8e60208085013585010161458d565b815287604083013511156147de57600080fd5b6147f18e6020604085013585010161458d565b6020820152876060830135111561480757600080fd5b61481a8e60206060850135850101614522565b6040820152876080830135111561483057600080fd5b6148438e60206080850135850101614660565b606082015260a091909101356080820152845260209384019301614772565b50508552505060209283019291909101905061470b565b50509392505050565b600082601f83011261489357600080fd5b61296c838335602085016146df565b801515811461411257600080fd5b8035614157816148a2565b600082601f8301126148cc57600080fd5b813560206148dc614543836144ff565b82815260059290921b840181019181810190868411156148fb57600080fd5b8286015b848110156145825780356001600160401b038082111561491f5760008081fd5b90880190610140828b03601f190181131561493a5760008081fd5b614942614453565b878401358152604061495581860161414c565b89830152606061496681870161414c565b828401526080915061497982870161414c565b818401525060a0808601358284015260c0915081860135818401525060e0808601358284015261010091508186013581840152506101206149bb8187016148b0565b838301529285013592848411156149d457600091508182fd5b6149e28e8b868901016145f1565b908301525086525050509183019183016148ff565b6000806000806000806101408789031215614a1157600080fd5b614a1b88886144a6565b955060a08701356001600160401b0380821115614a3757600080fd5b614a438a838b01614522565b965060c0890135915080821115614a5957600080fd5b614a658a838b01614882565b955060e0890135915080821115614a7b57600080fd5b50614a8889828a016148bb565b935050610100870135614a9a81614137565b9150610120870135614aab81614137565b809150509295509295509295565b600080600060e08486031215614ace57600080fd5b833592506020840135614ae081614137565b9150614aef856040860161415c565b90509250925092565b600080600080600080600080610120898b031215614b1557600080fd5b88359750614b268a60208b0161415c565b965060c08901356001600160401b0380821115614b4257600080fd5b614b4e8c838d01614174565b909850965060e08b0135915080821115614b6757600080fd5b614b738c838d01614174565b90965094506101008b0135915080821115614b8d57600080fd5b50614b9a8b828c01614174565b999c989b5096995094979396929594505050565b60008060008060006101208688031215614bc757600080fd5b614bd187876144a6565b945060a08601356001600160401b0380821115614bed57600080fd5b614bf989838a01614522565b955060c0880135915080821115614c0f57600080fd5b614c1b89838a01614882565b945060e0880135915080821115614c3157600080fd5b50614c3e888289016148bb565b925050610100860135614c5081614137565b809150509295509295909350565b60008060008060608587031215614c7457600080fd5b843593506020850135925060408501356001600160401b0380821115614c9957600080fd5b818701915087601f830112614cad57600080fd5b813581811115614cbc57600080fd5b886020828501011115614cce57600080fd5b95989497505060200194505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a08284031215614d1757600080fd5b61296c83836144a6565b600061296c3684846146df565b600060208284031215614d4057600080fd5b813561296c81614137565b600060208284031215614d5d57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761373f5761373f614d7a565b600082614dc457634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561373f5761373f614d7a565b600060208284031215614dee57600080fd5b815161296c81614137565b8082018082111561373f5761373f614d7a565b600060208284031215614e1e57600080fd5b815161296c816148a2565b600060018201614e3b57614e3b614d7a565b5060010190565b6001600160a01b03848116825283166020820152606060408201819052600090614e6e908301846143d6565b95945050505050565b60008351614e898184602088016143b2565b9190910191825250602001919050565b60008251614eab8184602087016143b2565b919091019291505056fef171268de859ec269c52bbfac94dcb7715e784de194342abb284bf34fd30b32d000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000a00744882684c3e4747faefd68d283ea44099d031bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba26469706673582212202254720c4085cafa7ea115788cdf7907b3d823f3190bce6592bb0cf0a924684a64736f6c63430008110033