608060405234801561001057600080fd5b50613fe0806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063f147abbd14610030575b600080fd5b61004361003e36600461018e565b61006c565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60008089898989898989896040516100839061010f565b61009498979695949392919061025a565b604051809103906000f0801580156100b0573d6000803e3d6000fd5b506040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f33c981baba081f8fd2c52ac6ad1ea95b6814b4376640f55689051f6584729688910160405180910390a19998505050505050505050565b613ce9806102c283390190565b803573ffffffffffffffffffffffffffffffffffffffff8116811461014057600080fd5b919050565b60008083601f84011261015757600080fd5b50813567ffffffffffffffff81111561016f57600080fd5b60208301915083602082850101111561018757600080fd5b9250929050565b60008060008060008060008060c0898b0312156101aa57600080fd5b6101b38961011c565b9750602089013567ffffffffffffffff808211156101d057600080fd5b6101dc8c838d01610145565b909950975060408b01359150808211156101f557600080fd5b506102028b828c01610145565b909650945050606089013592506080890135915061022260a08a0161011c565b90509295985092959890939650565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600073ffffffffffffffffffffffffffffffffffffffff808b16835260c0602084015261028b60c084018a8c610231565b838103604085015261029e81898b610231565b606085019790975250608083019490945250911660a0909101529594505050505056fe60806040523480156200001157600080fd5b5060405162003ce938038062003ce98339810160408190526200003491620001d2565b8484600062000044838262000303565b50600162000053828262000303565b50506001600a81905560188581556019805462010000600160b01b031916620100006001600160a01b0396871602178155601a80546001600160a01b0319169a909516999099179093556000601781905560148690556015819055601681905560139190915593845250600f6020908152604080852084905591548452600d9052822055600e8190556010555050805461ffff19169055620003cf565b80516001600160a01b03811681146200010857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013557600080fd5b81516001600160401b03808211156200015257620001526200010d565b604051601f8301601f19908116603f011681019082821181831017156200017d576200017d6200010d565b816040528381526020925086838588010111156200019a57600080fd5b600091505b83821015620001be57858201830151818301840152908201906200019f565b600093810190920192909252949350505050565b60008060008060008060c08789031215620001ec57600080fd5b620001f787620000f0565b60208801519096506001600160401b03808211156200021557600080fd5b620002238a838b0162000123565b965060408901519150808211156200023a57600080fd5b506200024989828a0162000123565b94505060608701519250608087015191506200026860a08801620000f0565b90509295509295509295565b600181811c908216806200028957607f821691505b602082108103620002aa57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002fe57600081815260208120601f850160051c81016020861015620002d95750805b601f850160051c820191505b81811015620002fa57828155600101620002e5565b5050505b505050565b81516001600160401b038111156200031f576200031f6200010d565b620003378162000330845462000274565b84620002b0565b602080601f8311600181146200036f5760008415620003565750858301515b600019600386901b1c1916600185901b178555620002fa565b600085815260208120601f198616915b82811015620003a0578886015182559484019460019091019084016200037f565b5085821015620003bf5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61390a80620003df6000396000f3fe60806040526004361061026a5760003560e01c806370a0823111610153578063b342a1a2116100cb578063d7a084081161007f578063e66f53b711610064578063e66f53b7146106a4578063e985e9c5146106c4578063f4d39c871461070d57600080fd5b8063d7a0840814610664578063e09b5da51461068457600080fd5b8063c87b56dd116100b0578063c87b56dd1461060e578063cabadaa01461062e578063d517a0f21461064457600080fd5b8063b342a1a2146105ce578063b88d4fde146105ee57600080fd5b806395d89b41116101225780639ac8644b116101075780639ac8644b1461057b578063a22cb4651461059b578063abfe40a8146105bb57600080fd5b806395d89b411461055357806398ae99a81461056857600080fd5b806370a08231146104de5780637feffff3146104fe578063817234fa146105135780638da5cb5b1461053357600080fd5b806323b872dd116101e65780632f745c59116101b557806342842e0e1161019a57806342842e0e1461047e5780634f6ccce71461049e5780636352211e146104be57600080fd5b80632f745c591461043e57806336f6aeac1461045e57600080fd5b806323b872dd146103c4578063263e4f5e146103e45780632aadf692146103fe5780632cb4d2011461041e57600080fd5b80630c6a62dd1161023d57806316b4f75a1161022257806316b4f75a1461036057806318160ddd1461038657806318b3446d146103a557600080fd5b80630c6a62dd146103205780631182ec251461034057600080fd5b806301ffc9a71461026f57806306fdde03146102a4578063081812fc146102c6578063095ea7b3146102fe575b600080fd5b34801561027b57600080fd5b5061028f61028a366004613023565b610723565b60405190151581526020015b60405180910390f35b3480156102b057600080fd5b506102b9610767565b60405161029b9190613097565b3480156102d257600080fd5b506102e66102e13660046130aa565b6107f9565b6040516001600160a01b03909116815260200161029b565b34801561030a57600080fd5b5061031e6103193660046130df565b610820565b005b34801561032c57600080fd5b5061031e61033b366004613109565b610956565b34801561034c57600080fd5b5061031e61035b366004613109565b6109da565b34801561036c57600080fd5b506019546102e6906201000090046001600160a01b031681565b34801561039257600080fd5b506008545b60405190815260200161029b565b3480156103b157600080fd5b5060195461028f90610100900460ff1681565b3480156103d057600080fd5b5061031e6103df366004613124565b610a6f565b3480156103f057600080fd5b5060195461028f9060ff1681565b34801561040a57600080fd5b5061031e6104193660046131ac565b610bcb565b34801561042a57600080fd5b5061031e610439366004613226565b610e62565b34801561044a57600080fd5b506103976104593660046130df565b610eca565b34801561046a57600080fd5b5061031e610479366004613226565b610f72565b34801561048a57600080fd5b5061031e610499366004613124565b610fe1565b3480156104aa57600080fd5b506103976104b93660046130aa565b611132565b3480156104ca57600080fd5b506102e66104d93660046130aa565b6111d6565b3480156104ea57600080fd5b506103976104f9366004613109565b61123b565b34801561050a57600080fd5b5061031e6112d5565b34801561051f57600080fd5b5061031e61052e366004613285565b61139d565b34801561053f57600080fd5b50601a546102e6906001600160a01b031681565b34801561055f57600080fd5b506102b96114ba565b61031e6105763660046132d1565b6114c9565b34801561058757600080fd5b5061031e6105963660046132f3565b611944565b3480156105a757600080fd5b5061031e6105b6366004613335565b611a49565b61031e6105c93660046130aa565b611a58565b3480156105da57600080fd5b5061031e6105e936600461336c565b611bbe565b3480156105fa57600080fd5b5061031e610609366004613446565b611e44565b34801561061a57600080fd5b506102b96106293660046130aa565b611f9c565b34801561063a57600080fd5b5061039760185481565b34801561065057600080fd5b5061031e61065f3660046132d1565b61212f565b34801561067057600080fd5b5061039761067f3660046132d1565b6121ad565b34801561069057600080fd5b5061031e61069f366004613522565b612304565b3480156106b057600080fd5b50601b546102e6906001600160a01b031681565b3480156106d057600080fd5b5061028f6106df366004613558565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b34801561071957600080fd5b5061039760175481565b60006001600160e01b031982167f780e9d63000000000000000000000000000000000000000000000000000000001480610761575061076182612375565b92915050565b6060600080546107769061358b565b80601f01602080910402602001604051908101604052809291908181526020018280546107a29061358b565b80156107ef5780601f106107c4576101008083540402835291602001916107ef565b820191906000526020600020905b8154815290600101906020018083116107d257829003601f168201915b5050505050905090565b600061080482612410565b506000908152600460205260409020546001600160a01b031690565b600061082b826111d6565b9050806001600160a01b0316836001600160a01b0316036108b95760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336001600160a01b03821614806108d557506108d581336106df565b6109475760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016108b0565b6109518383612477565b505050565b601a546001600160a01b031633146109ab5760405162461bcd60e51b815260206004820152601860248201527721b0b63632b91034b9903737ba103a34329037bbb732b91760411b60448201526064016108b0565b601b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b601a546001600160a01b03163314610a2f5760405162461bcd60e51b815260206004820152601860248201527721b0b63632b91034b9903737ba103a34329037bbb732b91760411b60448201526064016108b0565b601980546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b826daaeb6d7670e522a718067333cd4e3b15610bba57336001600160a01b03821603610aa557610aa08484846124f2565b610bc5565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015610af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1891906135c5565b8015610b9b5750604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015610b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9b91906135c5565b610bba57604051633b79c77360e21b81523360048201526024016108b0565b610bc58484846124f2565b50505050565b601a546001600160a01b03163314610c205760405162461bcd60e51b815260206004820152601860248201527721b0b63632b91034b9903737ba103a34329037bbb732b91760411b60448201526064016108b0565b828114610c955760405162461bcd60e51b815260206004820152603760248201527f506c6561736520636865636b207768657468657220696e7075742076616c696460448201527f20696e666f20776974682073616d65206c656e6774682e00000000000000000060648201526084016108b0565b60005b81811015610e5b576daaeb6d7670e522a718067333cd4e63e4aecb5430878785818110610cc757610cc76135e2565b9050602002016020810190610cdc9190613109565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610d29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4d91906135c5565b1515838383818110610d6157610d616135e2565b9050602002016020810190610d769190613226565b151503610e49576daaeb6d7670e522a718067333cd4e63a2f367ab30878785818110610da457610da46135e2565b9050602002016020810190610db99190613109565b868686818110610dcb57610dcb6135e2565b9050602002016020810190610de09190613226565b6040516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152156044820152606401600060405180830381600087803b158015610e3057600080fd5b505af1158015610e44573d6000803e3d6000fd5b505050505b80610e538161360e565b915050610c98565b5050505050565b601a546001600160a01b03163314610eb75760405162461bcd60e51b815260206004820152601860248201527721b0b63632b91034b9903737ba103a34329037bbb732b91760411b60448201526064016108b0565b6019805460ff1916911515919091179055565b6000610ed58361123b565b8210610f495760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e647300000000000000000000000000000000000000000060648201526084016108b0565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b601a546001600160a01b03163314610fc75760405162461bcd60e51b815260206004820152601860248201527721b0b63632b91034b9903737ba103a34329037bbb732b91760411b60448201526064016108b0565b601980549115156101000261ff0019909216919091179055565b826daaeb6d7670e522a718067333cd4e3b1561112757336001600160a01b0382160361101257610aa0848484612579565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015611061573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108591906135c5565b80156111085750604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa1580156110e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110891906135c5565b61112757604051633b79c77360e21b81523360048201526024016108b0565b610bc5848484612579565b600061113d60085490565b82106111b15760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e6473000000000000000000000000000000000000000060648201526084016108b0565b600882815481106111c4576111c46135e2565b90600052602060002001549050919050565b6000818152600260205260408120546001600160a01b0316806107615760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016108b0565b60006001600160a01b0382166112b95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016108b0565b506001600160a01b031660009081526003602052604090205490565b601a546001600160a01b0316331461132a5760405162461bcd60e51b815260206004820152601860248201527721b0b63632b91034b9903737ba103a34329037bbb732b91760411b60448201526064016108b0565b6040517f4420e4860000000000000000000000000000000000000000000000000000000081523060048201526daaeb6d7670e522a718067333cd4e90634420e48690602401600060405180830381600087803b15801561138957600080fd5b505af1158015610bc5573d6000803e3d6000fd5b601a546001600160a01b031633146113f25760405162461bcd60e51b815260206004820152601860248201527721b0b63632b91034b9903737ba103a34329037bbb732b91760411b60448201526064016108b0565b601854836017546114039190613627565b111580156114195750601954610100900460ff16155b6114745760405162461bcd60e51b815260206004820152602660248201527f506c6561736520636865636b207768657468657220696e7075742076616c69646044820152651034b733379760d11b60648201526084016108b0565b82601760008282546114869190613627565b9091555050601754601454111561149e576017546014555b6017546000908152600b60205260409020610bc5828483613688565b6060600180546107769061358b565b8082600080601854905060008060008660000361157b57600091505b8582101561157657816013546114fb9190613627565b9250600090505b600e54811015611549576000818152601160205260409020548311611537576000818152601160205260409020549350611549565b806115418161360e565b915050611502565b6000848152600d60205260409020546115629086613627565b94508161156e8161360e565b9250506114e5565b611619565b8660010361161957600091505b85821015611619578160135461159e9190613627565b9250600090505b6010548110156115ec5760008181526012602052604090205483116115da5760008181526012602052604090205493506115ec565b806115e48161360e565b9150506115a5565b6000848152600f60205260409020546116059086613627565b9450816116118161360e565b925050611588565b34851480156116285750600085115b6116745760405162461bcd60e51b815260206004820152601960248201527f496e636f7272656374204554482076616c75652073656e742e0000000000000060448201526064016108b0565b8860185460016116849190613627565b816013546116929190613627565b11156116e05760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e732072656d61696e696e67000000000060448201526064016108b0565b6002600a54036117325760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108b0565b6002600a556000898152600c60205260409020544210156117955760405162461bcd60e51b815260206004820152601860248201527f4d696e74206973206e6f7420616c6c6f776564207965742e000000000000000060448201526064016108b0565b88600003611823576000898152600c602052604090205442108015906117d7575042600c60006117c68c6001613627565b815260200190815260200160002054115b6118235760405162461bcd60e51b815260206004820152601b60248201527f5072652d6d696e74206e6f7420617661696c61626c65206e6f772e000000000060448201526064016108b0565b60005b8a8110156118625761183a33601354612594565b6013805490600061184a8361360e565b9190505550808061185a9061360e565b915050611826565b506019546040516000916201000090046001600160a01b03169034908381818185875af1925050503d80600081146118b6576040519150601f19603f3d011682016040523d82523d6000602084013e6118bb565b606091505b50509050806119325760405162461bcd60e51b815260206004820152602660248201527f506c6561736520636865636b20796f7572206164647265737320616e6420626160448201527f6c616e63652e000000000000000000000000000000000000000000000000000060648201526084016108b0565b50506001600a55505050505050505050565b601b546001600160a01b0316331461199e5760405162461bcd60e51b815260206004820152601a60248201527f43616c6c6572206973206e6f74207468652063757261746f722e00000000000060448201526064016108b0565b60028111156119fe5760405162461bcd60e51b815260206004820152602660248201527f506c6561736520636865636b207768657468657220696e7075742076616c69646044820152651034b733379760d11b60648201526084016108b0565b60005b8181101561095157828282818110611a1b57611a1b6135e2565b6000848152600c60209081526040909120910292909201359091555080611a418161360e565b915050611a01565b611a543383836126ef565b5050565b806018546001611a689190613627565b81601354611a769190613627565b1115611ac45760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e732072656d61696e696e67000000000060448201526064016108b0565b6002600a5403611b165760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108b0565b6002600a55601b546001600160a01b03163314611b755760405162461bcd60e51b815260206004820152601a60248201527f43616c6c6572206973206e6f74207468652063757261746f722e00000000000060448201526064016108b0565b60005b82811015611bb457611b8c33601354612594565b60138054906000611b9c8361360e565b91905055508080611bac9061360e565b915050611b78565b50506001600a5550565b601a546001600160a01b03163314611c135760405162461bcd60e51b815260206004820152601860248201527721b0b63632b91034b9903737ba103a34329037bbb732b91760411b60448201526064016108b0565b8487148015611c2157508083145b611c935760405162461bcd60e51b815260206004820152603760248201527f506c6561736520636865636b207768657468657220696e7075742076616c696460448201527f20696e666f20776974682073616d65206c656e6774682e00000000000000000060648201526084016108b0565b60005b85811015611d3b57888882818110611cb057611cb06135e2565b9050602002013560156000828254611cc89190613627565b909155508790508682818110611ce057611ce06135e2565b601580546000908152600d6020908152604080832094820296909601359093559054600e80548352601190935293812093909355805492909150611d238361360e565b91905055508080611d339061360e565b915050611c96565b601854600e8054600090815260116020526040812092909255805491611d608361360e565b9190505550600090505b81811015611e0f57848482818110611d8457611d846135e2565b9050602002013560166000828254611d9c9190613627565b909155508390508282818110611db457611db46135e2565b601680546000908152600f6020908152604080832094820296909601359093559054601080548352601290935293812093909355805492909150611df78361360e565b91905055508080611e079061360e565b915050611d6a565b60185460108054600090815260126020526040812092909255805491611e348361360e565b9190505550505050505050505050565b836daaeb6d7670e522a718067333cd4e3b15611f9057336001600160a01b03821603611e7b57611e76858585856127bd565b610e5b565b604051633185c44d60e21b81523060048201523360248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015611eca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eee91906135c5565b8015611f715750604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015611f4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7191906135c5565b611f9057604051633b79c77360e21b81523360048201526024016108b0565b610e5b858585856127bd565b6000818152600260205260409020546060906001600160a01b03166120295760405162461bcd60e51b815260206004820152602b60248201527f4552433732314d657461646174613a20717565727920666f72206e6f6e65786960448201527f7374656e7420746f6b656e00000000000000000000000000000000000000000060648201526084016108b0565b60195460ff16612075576018546000818152600b602052604090209061204e90612845565b60405160200161205f9291906137bb565b6040516020818303038152906040529050919050565b600060145483101561208a57506014546120f0565b50815b60185481116120f057604080516000808252602080830180855283519020858352600b9091529083902090926120c39201613808565b60405160208183030381529060405280519060200120036120f057806120e88161360e565b91505061208d565b6000818152600b6020526040902061210784612845565b6040516020016121189291906137bb565b604051602081830303815290604052915050919050565b601a546001600160a01b031633146121845760405162461bcd60e51b815260206004820152601860248201527721b0b63632b91034b9903737ba103a34329037bbb732b91760411b60448201526064016108b0565b601880546000908152600d602090815260408083209590955591548152600f9091529190912055565b601854600090819081808087810361225a57600091505b8682101561225557816013546121da9190613627565b9250600090505b600e54811015612228576000818152601160205260409020548311612216576000818152601160205260409020549350612228565b806122208161360e565b9150506121e1565b6000848152600d60205260409020546122419086613627565b94508161224d8161360e565b9250506121c4565b6122f8565b876001036122f857600091505b868210156122f8578160135461227d9190613627565b9250600090505b6010548110156122cb5760008181526012602052604090205483116122b95760008181526012602052604090205493506122cb565b806122c38161360e565b915050612284565b6000848152600f60205260409020546122e49086613627565b9450816122f08161360e565b925050612267565b50929695505050505050565b601a546001600160a01b031633146123595760405162461bcd60e51b815260206004820152601860248201527721b0b63632b91034b9903737ba103a34329037bbb732b91760411b60448201526064016108b0565b6018546000908152600b60205260409020610951828483613688565b60006001600160e01b031982167f80ac58cd0000000000000000000000000000000000000000000000000000000014806123d857506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061076157507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614610761565b6000818152600260205260409020546001600160a01b03166124745760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016108b0565b50565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915581906124b9826111d6565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6124fc3382612982565b61256e5760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016108b0565b610951838383612a00565b61095183838360405180602001604052806000815250611e44565b6001600160a01b0382166125ea5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108b0565b6000818152600260205260409020546001600160a01b03161561264f5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108b0565b61265b60008383612be5565b6001600160a01b0382166000908152600360205260408120805460019290612684908490613627565b9091555050600081815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b816001600160a01b0316836001600160a01b0316036127505760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108b0565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6127c73383612982565b6128395760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016108b0565b610bc584848484612c9d565b60608160000361288857505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156128b2578061289c8161360e565b91506128ab9050600a8361382a565b915061288c565b60008167ffffffffffffffff8111156128cd576128cd613430565b6040519080825280601f01601f1916602001820160405280156128f7576020820181803683370190505b5090505b841561297a5761290c60018361383e565b9150612919600a86613851565b612924906030613627565b60f81b818381518110612939576129396135e2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612973600a8661382a565b94506128fb565b949350505050565b60008061298e836111d6565b9050806001600160a01b0316846001600160a01b031614806129d557506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b8061297a5750836001600160a01b03166129ee846107f9565b6001600160a01b031614949350505050565b826001600160a01b0316612a13826111d6565b6001600160a01b031614612a8f5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016108b0565b6001600160a01b038216612b0a5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016108b0565b612b15838383612be5565b612b20600082612477565b6001600160a01b0383166000908152600360205260408120805460019290612b4990849061383e565b90915550506001600160a01b0382166000908152600360205260408120805460019290612b77908490613627565b9091555050600081815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038316612c4057612c3b81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b612c63565b816001600160a01b0316836001600160a01b031614612c6357612c638382612d26565b6001600160a01b038216612c7a5761095181612dc3565b826001600160a01b0316826001600160a01b031614610951576109518282612e72565b612ca8848484612a00565b612cb484848484612eb6565b610bc55760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016108b0565b60006001612d338461123b565b612d3d919061383e565b600083815260076020526040902054909150808214612d90576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090612dd59060019061383e565b60008381526009602052604081205460088054939450909284908110612dfd57612dfd6135e2565b906000526020600020015490508060088381548110612e1e57612e1e6135e2565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480612e5657612e56613865565b6001900381819060005260206000200160009055905550505050565b6000612e7d8361123b565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b60006001600160a01b0384163b1561300257604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612efa90339089908890889060040161387b565b6020604051808303816000875af1925050508015612f35575060408051601f3d908101601f19168201909252612f32918101906138b7565b60015b612fe8573d808015612f63576040519150601f19603f3d011682016040523d82523d6000602084013e612f68565b606091505b508051600003612fe05760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016108b0565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061297a565b506001949350505050565b6001600160e01b03198116811461247457600080fd5b60006020828403121561303557600080fd5b81356130408161300d565b9392505050565b60005b8381101561306257818101518382015260200161304a565b50506000910152565b60008151808452613083816020860160208601613047565b601f01601f19169290920160200192915050565b602081526000613040602083018461306b565b6000602082840312156130bc57600080fd5b5035919050565b80356001600160a01b03811681146130da57600080fd5b919050565b600080604083850312156130f257600080fd5b6130fb836130c3565b946020939093013593505050565b60006020828403121561311b57600080fd5b613040826130c3565b60008060006060848603121561313957600080fd5b613142846130c3565b9250613150602085016130c3565b9150604084013590509250925092565b60008083601f84011261317257600080fd5b50813567ffffffffffffffff81111561318a57600080fd5b6020830191508360208260051b85010111156131a557600080fd5b9250929050565b600080600080604085870312156131c257600080fd5b843567ffffffffffffffff808211156131da57600080fd5b6131e688838901613160565b909650945060208701359150808211156131ff57600080fd5b5061320c87828801613160565b95989497509550505050565b801515811461247457600080fd5b60006020828403121561323857600080fd5b813561304081613218565b60008083601f84011261325557600080fd5b50813567ffffffffffffffff81111561326d57600080fd5b6020830191508360208285010111156131a557600080fd5b60008060006040848603121561329a57600080fd5b83359250602084013567ffffffffffffffff8111156132b857600080fd5b6132c486828701613243565b9497909650939450505050565b600080604083850312156132e457600080fd5b50508035926020909101359150565b6000806020838503121561330657600080fd5b823567ffffffffffffffff81111561331d57600080fd5b61332985828601613160565b90969095509350505050565b6000806040838503121561334857600080fd5b613351836130c3565b9150602083013561336181613218565b809150509250929050565b6000806000806000806000806080898b03121561338857600080fd5b883567ffffffffffffffff808211156133a057600080fd5b6133ac8c838d01613160565b909a50985060208b01359150808211156133c557600080fd5b6133d18c838d01613160565b909850965060408b01359150808211156133ea57600080fd5b6133f68c838d01613160565b909650945060608b013591508082111561340f57600080fd5b5061341c8b828c01613160565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561345c57600080fd5b613465856130c3565b9350613473602086016130c3565b925060408501359150606085013567ffffffffffffffff8082111561349757600080fd5b818701915087601f8301126134ab57600080fd5b8135818111156134bd576134bd613430565b604051601f8201601f19908116603f011681019083821181831017156134e5576134e5613430565b816040528281528a60208487010111156134fe57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806020838503121561353557600080fd5b823567ffffffffffffffff81111561354c57600080fd5b61332985828601613243565b6000806040838503121561356b57600080fd5b613574836130c3565b9150613582602084016130c3565b90509250929050565b600181811c9082168061359f57607f821691505b6020821081036135bf57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156135d757600080fd5b815161304081613218565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613620576136206135f8565b5060010190565b80820180821115610761576107616135f8565b601f82111561095157600081815260208120601f850160051c810160208610156136615750805b601f850160051c820191505b818110156136805782815560010161366d565b505050505050565b67ffffffffffffffff8311156136a0576136a0613430565b6136b4836136ae835461358b565b8361363a565b6000601f8411600181146136e857600085156136d05750838201355b600019600387901b1c1916600186901b178355610e5b565b600083815260209020601f19861690835b8281101561371957868501358255602094850194600190920191016136f9565b50868210156137365760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b600081546137558161358b565b6001828116801561376d5760018114613782576137b1565b60ff19841687528215158302870194506137b1565b8560005260208060002060005b858110156137a85781548a82015290840190820161378f565b50505082870194505b5050505092915050565b60006137c78285613748565b83516137d7818360208801613047565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000009101908152600501949350505050565b60006130408284613748565b634e487b7160e01b600052601260045260246000fd5b60008261383957613839613814565b500490565b81810381811115610761576107616135f8565b60008261386057613860613814565b500690565b634e487b7160e01b600052603160045260246000fd5b60006001600160a01b038087168352808616602084015250836040830152608060608301526138ad608083018461306b565b9695505050505050565b6000602082840312156138c957600080fd5b81516130408161300d56fea26469706673582212208bc7f310174b46da310415255f490b7c61f6de73ee3198bd7a54d8b8d17e640b64736f6c63430008100033a26469706673582212201656b216e20a95f738c79e49ee59f9f21303ed1e8fc8007546fcaa0dc0fb9ef264736f6c63430008100033