0x608060405234801561000f575f80fd5b506114118061001d5f395ff3fe608060405260043610610033575f3560e01c80635a80000114610037578063627dd56a1461006f578063a5c80d5914610084575b5f80fd5b348015610042575f80fd5b50610056610051366004610c64565b6100a3565b6040805192835260208301919091520160405180910390f35b61008261007d366004610cf6565b610139565b005b34801561008f575f80fd5b5061005661009e366004610d62565b6101a0565b5f806100b0898686610215565b915061012a6040518061010001604052808481526020015f81526020018b6001600160a01b031681526020018a6001600160a01b03168152602001896001600160a01b03168152602001886001600160a01b031681526020018c6001600160a01b03168152602001856001600160a01b0316815250610318565b90509850989650505050505050565b34156101725760405162461bcd60e51b815260206004820152600360248201526215905360ea1b60448201526064015b60405180910390fd5b5f61017f82840184610e58565b604080515f81526020810190915290915061019b908290610833565b505050565b5f806101ad878686610215565b91506102086040518060c001604052808481526020015f8152602001896001600160a01b03168152602001886001600160a01b031681526020018a6001600160a01b03168152602001856001600160a01b03168152506108de565b9050965096945050505050565b5f825f0361029f576040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa15801561025f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102839190610f21565b90508181111561029a576102978282610f4c565b90505b6102d6565b81156102d35760405162461bcd60e51b815260206004820152600360248201526244454360e81b6044820152606401610169565b50815b5f81116103115760405162461bcd60e51b815260206004820152600960248201526820a6a7aaa72a2fa4a760b91b6044820152606401610169565b9392505050565b5f61033a82604001516e22d473030f116ddee9f6b43ac78ba3845f0151610b09565b60408281015160e0840151845192516387517c4560e01b81526001600160a01b0392831660048201529082166024820152911660448201525f60648201526e22d473030f116ddee9f6b43ac78ba3906387517c45906084015f604051808303815f87803b1580156103a9575f80fd5b505af11580156103bb573d5f803e3d5ffd5b505f9250600191506103ca9050565b60405190808252806020026020018201604052801561042c57816020015b61041960405180608001604052805f6001600160a01b03168152602001606081526020015f81526020015f81525090565b8152602001906001900390816103e85790505b509050606083606001516001600160a01b031684604001516001600160a01b0316148061047257508360a001516001600160a01b031684608001516001600160a01b0316145b156104bf576040805160028082526060820190925290816020015b604080516060810182525f80825260208083018290529282015282525f1990920191018161048d579050509050610503565b6040805160038082526080820190925290816020015b604080516060810182525f80825260208083018290529282015282525f199092019101816104d55790505090505b83606001516001600160a01b031684604001516001600160a01b0316036105d35760405180606001604052808560c001516001600160a01b031681526020018560a001516001600160a01b031681526020015f1515815250815f8151811061056d5761056d610f65565b602002602001018190525060405180606001604052808560a001516001600160a01b0316815260200185608001516001600160a01b0316815260200160011515815250816001815181106105c3576105c3610f65565b60200260200101819052506106f5565b604051806060016040528085606001516001600160a01b0316815260200185606001516001600160a01b0316815260200160011515815250815f8151811061061d5761061d610f65565b602002602001018190525060405180606001604052808560c001516001600160a01b031681526020018560a001516001600160a01b031681526020015f15158152508160018151811061067257610672610f65565b60200260200101819052508360a001516001600160a01b031684608001516001600160a01b0316146106f55760405180606001604052808560a001516001600160a01b0316815260200185608001516001600160a01b0316815260200160011515815250816002815181106106e9576106e9610f65565b60200260200101819052505b604051806080016040528085604001516001600160a01b03168152602001828152602001855f015181526020018560200151815250825f8151811061073c5761073c610f65565b602090810291909101015260e08401515f906001600160a01b031663286f580d844284805b6040519080825280601f01601f19166020018201604052801561078b576020820181803683370190505b506040518563ffffffff1660e01b81526004016107ab9493929190610fc6565b5f604051808303815f875af11580156107c6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107ed919081019061115d565b92505050805f8151811061080357610803610f65565b6020026020010151935061082b85604001516e22d473030f116ddee9f6b43ac78ba35f610b09565b505050919050565b60208201516001600160f81b0319165f03610871575f825f0151806020019051810190610860919061123b565b905061086b816108de565b50505050565b60208201516001600160f81b031916600160f81b036108ad575f825f01518060200190518101906108a291906112d4565b905061086b81610318565b60405162461bcd60e51b815260040161016990602080825260049082015263494e565360e01b604082015260600190565b5f61090082604001516e22d473030f116ddee9f6b43ac78ba3845f0151610b09565b60408281015160a0840151845192516387517c4560e01b81526001600160a01b0392831660048201529082166024820152911660448201525f60648201526e22d473030f116ddee9f6b43ac78ba3906387517c45906084015f604051808303815f87803b15801561096f575f80fd5b505af1158015610981573d5f803e3d5ffd5b505f9250600191506109909050565b6040519080825280602002602001820160405280156109f257816020015b6109df60405180608001604052805f6001600160a01b03168152602001606081526020015f81526020015f81525090565b8152602001906001900390816109ae5790505b506040805160018082528183019092529192505f9190816020015b604080516060810182525f80825260208083018290529282015282525f19909201910181610a0d579050509050604051806060016040528085608001516001600160a01b0316815260200185606001516001600160a01b031681526020015f1515815250815f81518110610a8357610a83610f65565b6020026020010181905250604051806080016040528085604001516001600160a01b03168152602001828152602001855f015181526020018560200151815250825f81518110610ad557610ad5610f65565b60200260200101819052505f8460a001516001600160a01b031663286f580d84426018610b02919061138e565b5f80610761565b5f80610b16858585610ba6565b91509150818015610b3f575080511580610b3f575080806020019051810190610b3f91906113a1565b610b9f5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201526a1c9bdd994819985a5b195960aa1b6064820152608401610169565b5050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291515f9260609290871691610c0291906113c0565b5f604051808303815f865af19150503d805f8114610c3b576040519150601f19603f3d011682016040523d82523d5f602084013e610c40565b606091505b5091509150935093915050565b6001600160a01b0381168114610c61575f80fd5b50565b5f805f805f805f80610100898b031215610c7c575f80fd5b8835610c8781610c4d565b97506020890135610c9781610c4d565b96506040890135610ca781610c4d565b95506060890135610cb781610c4d565b94506080890135610cc781610c4d565b935060a0890135925060c0890135915060e0890135610ce581610c4d565b809150509295985092959890939650565b5f8060208385031215610d07575f80fd5b823567ffffffffffffffff80821115610d1e575f80fd5b818501915085601f830112610d31575f80fd5b813581811115610d3f575f80fd5b866020828501011115610d50575f80fd5b60209290920196919550909350505050565b5f805f805f8060c08789031215610d77575f80fd5b8635610d8281610c4d565b95506020870135610d9281610c4d565b94506040870135610da281610c4d565b9350606087013592506080870135915060a0870135610dc081610c4d565b809150509295509295509295565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610e0557610e05610dce565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e3457610e34610dce565b604052919050565b80356001600160f81b031981168114610e53575f80fd5b919050565b5f6020808385031215610e69575f80fd5b823567ffffffffffffffff80821115610e80575f80fd5b9084019060408287031215610e93575f80fd5b610e9b610de2565b823582811115610ea9575f80fd5b8301601f81018813610eb9575f80fd5b803583811115610ecb57610ecb610dce565b610edd601f8201601f19168701610e0b565b93508084528886828401011115610ef2575f80fd5b80868301878601375f90840186015250818152610f10838501610e3c565b848201528094505050505092915050565b5f60208284031215610f31575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610f5f57610f5f610f38565b92915050565b634e487b7160e01b5f52603260045260245ffd5b5f5b83811015610f93578181015183820152602001610f7b565b50505f910152565b5f8151808452610fb2816020860160208601610f79565b601f01601f19169290920160200192915050565b5f608080830181845280885180835260a092508286019150828160051b8701016020808c015f805b85811015611096578a8503609f19018752825180516001600160a01b039081168752858201518688018c905280518c8901819052908701919085908c8a01905b8083101561106a5784518051851683528a81015185168b840152604090810151151590830152938901936001929092019160609091019061102e565b50604085810151908b015260609485015194909901939093525050509583019591830191600101610fee565b50505087018a9052881515604088015286810360608801526110b88189610f9b565b9b9a5050505050505050505050565b5f67ffffffffffffffff8211156110e0576110e0610dce565b5060051b60200190565b5f82601f8301126110f9575f80fd5b8151602061110e611109836110c7565b610e0b565b82815260059290921b8401810191818101908684111561112c575f80fd5b8286015b848110156111475780518352918301918301611130565b509695505050505050565b8051610e5381610c4d565b5f805f6060848603121561116f575f80fd5b835167ffffffffffffffff80821115611186575f80fd5b611192878388016110ea565b94506020915081860151818111156111a8575f80fd5b8601601f810188136111b8575f80fd5b80516111c6611109826110c7565b81815260059190911b8201840190848101908a8311156111e4575f80fd5b928501925b8284101561120b5783516111fc81610c4d565b825292850192908501906111e9565b60408a0151909750945050505080821115611224575f80fd5b50611231868287016110ea565b9150509250925092565b5f60c0828403121561124b575f80fd5b60405160c0810181811067ffffffffffffffff8211171561126e5761126e610dce565b80604052508251815260208301516020820152604083015161128f81610c4d565b604082015260608301516112a281610c4d565b606082015260808301516112b581610c4d565b608082015260a08301516112c881610c4d565b60a08201529392505050565b5f6101008083850312156112e6575f80fd5b6040519081019067ffffffffffffffff8211818310171561130957611309610dce565b8160405283518152602084015160208201526040840151915061132b82610c4d565b81604082015261133d60608501611152565b606082015261134e60808501611152565b608082015261135f60a08501611152565b60a082015261137060c08501611152565b60c082015261138160e08501611152565b60e0820152949350505050565b80820180821115610f5f57610f5f610f38565b5f602082840312156113b1575f80fd5b81518015158114610311575f80fd5b5f82516113d1818460208701610f79565b919091019291505056fea26469706673582212205b66e080032ff7c9461d6260a571fec39f83e2df0f61e6dd738edca256da31cd64736f6c63430008150033