6101406040523480156200001257600080fd5b50604051620042ff380380620042ff83398101604081905262000035916200031c565b60405180604001604052806013815260200172115b5c1b1bde5b595b9d0810dbdb9d1c9858dd606a1b815250604051806040016040528060038152602001620312e360ec1b81525060405180604001604052806013815260200172115b5c1b1bde5b595b9d0810dbdb9d1c9858dd606a1b81525060405180604001604052806005815260200164474545475360d81b8152508160009080519060200190620000df92919062000243565b508051620000f590600190602084019062000243565b505050620001126200010c620001ed60201b60201c565b620001f1565b6001600755815160208084019190912082518383012060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81880181905281830187905260608201869052608082019490945230818401528151808203909301835260c00190528051940193909320919290916080523060c0526101205250508351620001bd925060089150602085019062000243565b50600b80546001600160a01b03909216620100000262010000600160b01b03199092169190911790555062000449565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b82805462000251906200040d565b90600052602060002090601f016020900481019282620002755760008555620002c0565b82601f106200029057805160ff1916838001178555620002c0565b82800160010185558215620002c0579182015b82811115620002c0578251825591602001919060010190620002a3565b50620002ce929150620002d2565b5090565b5b80821115620002ce5760008155600101620002d3565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200031757600080fd5b919050565b600080604083850312156200033057600080fd5b82516001600160401b03808211156200034857600080fd5b818501915085601f8301126200035d57600080fd5b815181811115620003725762000372620002e9565b604051601f8201601f19908116603f011681019083821181831017156200039d576200039d620002e9565b81604052828152602093508884848701011115620003ba57600080fd5b600091505b82821015620003de5784820184015181830185015290830190620003bf565b82821115620003f05760008484830101525b955062000402915050858201620002ff565b925050509250929050565b600181811c908216806200042257607f821691505b6020821081036200044357634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e0516101005161012051613e7862000487600039600050506000505060005050600050506000505060005050613e786000f3fe6080604052600436106102d15760003560e01c806386d6282c11610179578063c2ed2b05116100d6578063f0d67c9e1161008a578063f2f6596011610064578063f2f659601461085f578063f2fde38b1461087f578063f98322ed1461089f57600080fd5b8063f0d67c9e146107e4578063f103ba2114610804578063f25f4b561461083f57600080fd5b8063c87b56dd116100bb578063c87b56dd1461075b578063e95139921461077b578063e985e9c51461079b57600080fd5b8063c2ed2b05146106d3578063c4ae31681461074657600080fd5b8063a06db7dc1161012d578063a269fbe511610112578063a269fbe514610670578063a2a2357c146106a0578063b88d4fde146106b357600080fd5b8063a06db7dc1461063a578063a22cb4651461065057600080fd5b806390d49b9d1161015e57806390d49b9d146105e557806395d89b411461060557806395ef6d1c1461061a57600080fd5b806386d6282c146105a75780638da5cb5b146105c757600080fd5b8063483e60d6116102325780636352211e116101e6578063715018a6116101c0578063715018a61461055c57806375794a3c14610571578063834c14481461058757600080fd5b80636352211e146105075780636c0360eb1461052757806370a082311461053c57600080fd5b806355f804b31161021757806355f804b3146104925780635c975abb146104b25780635f68c439146104cc57600080fd5b8063483e60d61461044c578063528d87111461046c57600080fd5b80631ed6144e1161028957806341d01a8f1161026e57806341d01a8f146103f757806342842e0e1461040c57806342966c681461042c57600080fd5b80631ed6144e146103b757806323b872dd146103d757600080fd5b8063081812fc116102ba578063081812fc1461032d578063095ea7b31461036557806313e7c9d81461038757600080fd5b806301ffc9a7146102d657806306fdde031461030b575b600080fd5b3480156102e257600080fd5b506102f66102f1366004613611565b6108be565b60405190151581526020015b60405180910390f35b34801561031757600080fd5b506103206109a3565b6040516103029190613686565b34801561033957600080fd5b5061034d610348366004613699565b610a35565b6040516001600160a01b039091168152602001610302565b34801561037157600080fd5b506103856103803660046136c7565b610a5c565b005b34801561039357600080fd5b506102f66103a23660046136f3565b600f6020526000908152604090205460ff1681565b3480156103c357600080fd5b506103856103d2366004613725565b610ad1565b3480156103e357600080fd5b506103856103f23660046137a9565b610b50565b34801561040357600080fd5b50610385610bbc565b34801561041857600080fd5b506103856104273660046137a9565b610bfe565b34801561043857600080fd5b50610385610447366004613699565b610c6a565b34801561045857600080fd5b506103856104673660046137f7565b610de8565b34801561047857600080fd5b50600b5461034d906201000090046001600160a01b031681565b34801561049e57600080fd5b506103856104ad3660046138b3565b610f56565b3480156104be57600080fd5b50600b546102f69060ff1681565b3480156104d857600080fd5b506104f96104e7366004613699565b600c6020526000908152604090205481565b604051908152602001610302565b34801561051357600080fd5b5061034d610522366004613699565b610f75565b34801561053357600080fd5b50610320610fda565b34801561054857600080fd5b506104f96105573660046136f3565b611068565b34801561056857600080fd5b50610385611102565b34801561057d57600080fd5b506104f960115481565b34801561059357600080fd5b506103856105a23660046138fc565b611116565b3480156105b357600080fd5b506103856105c2366004613699565b6113e9565b3480156105d357600080fd5b506006546001600160a01b031661034d565b3480156105f157600080fd5b506103856106003660046136f3565b6114ba565b34801561061157600080fd5b506103206114f1565b34801561062657600080fd5b506103856106353660046136f3565b611500565b34801561064657600080fd5b506104f9600a5481565b34801561065c57600080fd5b5061038561066b366004613937565b611548565b34801561067c57600080fd5b506102f661068b366004613699565b60106020526000908152604090205460ff1681565b6103856106ae36600461396c565b611553565b3480156106bf57600080fd5b506103856106ce3660046139bd565b61181f565b3480156106df57600080fd5b506107346106ee366004613699565b600d602052600090815260409020805460018201546002830154600384015460048501546005909501546001600160a01b03948516959390941693919260ff9091169186565b60405161030296959493929190613a3f565b34801561075257600080fd5b5061038561188c565b34801561076757600080fd5b50610320610776366004613699565b6118a8565b34801561078757600080fd5b50610385610796366004613a99565b61190f565b3480156107a757600080fd5b506102f66107b6366004613ae0565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156107f057600080fd5b506103856107ff3660046138fc565b611cd2565b34801561081057600080fd5b506102f661081f366004613b0e565b8051602081830181018051600e8252928201919093012091525460ff1681565b34801561084b57600080fd5b5060095461034d906001600160a01b031681565b34801561086b57600080fd5b5061038561087a366004613699565b611ead565b34801561088b57600080fd5b5061038561089a3660046136f3565b611ec8565b3480156108ab57600080fd5b50600b546102f690610100900460ff1681565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061095157507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061099d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546109b290613b43565b80601f01602080910402602001604051908101604052809291908181526020018280546109de90613b43565b8015610a2b5780601f10610a0057610100808354040283529160200191610a2b565b820191906000526020600020905b815481529060010190602001808311610a0e57829003601f168201915b5050505050905090565b6000610a4082611f58565b506000908152600460205260409020546001600160a01b031690565b600081815260106020526040902054819060ff1615610ac2576000818152600c6020526040902054610ac25760405162461bcd60e51b815260206004820152600a60248201526914dbdd5b08189bdd5b9960b21b60448201526064015b60405180910390fd5b610acc8383611fbc565b505050565b610ad96120e8565b60005b82811015610b4a5781600f6000868685818110610afb57610afb613b7d565b9050602002016020810190610b1091906136f3565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610b4281613ba9565b915050610adc565b50505050565b600081815260106020526040902054819060ff1615610bb1576000818152600c6020526040902054610bb15760405162461bcd60e51b815260206004820152600a60248201526914dbdd5b08189bdd5b9960b21b6044820152606401610ab9565b610b4a848484612142565b610bc46120e8565b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff81166101009182900460ff1615909102179055565b600081815260106020526040902054819060ff1615610c5f576000818152600c6020526040902054610c5f5760405162461bcd60e51b815260206004820152600a60248201526914dbdd5b08189bdd5b9960b21b6044820152606401610ab9565b610b4a8484846121c9565b6000818152600d6020526040902060018101546001600160a01b03163314610ca4576040516282b42960e81b815260040160405180910390fd5b6000600382015460ff166005811115610cbf57610cbf613a29565b1115610cde57604051632e4baded60e11b815260040160405180910390fd5b60038101805460ff19166005179055610cf6826121e4565b600b5460028201546005830154604051631a73989160e11b8152600481019290925260248201526000916201000090046001600160a01b0316906334e73122906044016040805180830381865afa158015610d55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d799190613bc3565b509050600080336001600160a01b03168360405160006040518083038185875af1925050503d8060008114610dca576040519150601f19603f3d011682016040523d82523d6000602084013e610dcf565b606091505b509150915081610de157805181602001fd5b5050505050565b6000828152600d6020526040808220600b54600282015460058301549351631a73989160e11b8152929493849384936001600160a01b036201000090910416926334e7312292610e4392600401918252602082015260400190565b6040805180830381865afa158015610e5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e839190613bc3565b506002808601549190910393509150610e999050565b600383015460ff166005811115610eb257610eb2613a29565b10610ed057604051632e4baded60e11b815260040160405180910390fd5b60018201546001600160a01b03163314610efc576040516282b42960e81b815260040160405180910390fd5b60038201805460ff191660021790558154610f20906001600160a01b031682612294565b600282015460405185907f12a1c1987aa73679916aba446c3dc908aba127ae71d422c51cece3350d680f0890600090a350505050565b610f5e6120e8565b8051610f7190600890602084019061354a565b5050565b6000818152600260205260408120546001600160a01b03168061099d5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610ab9565b60088054610fe790613b43565b80601f016020809104026020016040519081016040528092919081815260200182805461101390613b43565b80156110605780601f1061103557610100808354040283529160200191611060565b820191906000526020600020905b81548152906001019060200180831161104357829003601f168201915b505050505081565b60006001600160a01b0382166110e65760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610ab9565b506001600160a01b031660009081526003602052604090205490565b61110a6120e8565b61111460006123ad565b565b80356000908152600d6020526040902060038082015460ff16600581111561114057611140613a29565b1080611163575060038082015460ff16600581111561116157611161613a29565b115b1561118157604051632e4baded60e11b815260040160405180910390fd5b42600a5482600401546111949190613be7565b11156111b2576040516282b42960e81b815260040160405180910390fd5b6040516bffffffffffffffffffffffff193360601b1660208201528235603482015260009060540160408051601f1981840301815291905280516020909101209050606061120284820185613bff565b159050611253576112166060850185613bff565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935061128d92505050565b6112606080850185613bff565b159050611274576112166080850185613bff565b604051638baa579f60e01b815260040160405180910390fd5b600e8160405161129d9190613c64565b9081526040519081900360200190205460ff16156112ce57604051638baa579f60e01b815260040160405180910390fd5b6001600e826040516112e09190613c64565b9081526040805160209281900383018120805460ff1916941515949094179093557f19457468657265756d205369676e6564204d6573736167653a0a33320000000082840152603c80840186905281518085039091018152605c909301905281519101206000611350828461240c565b85549091506001600160a01b03808316911614801590611380575060018501546001600160a01b03828116911614155b1561139e57604051638baa579f60e01b815260040160405180910390fd5b60038501805460ff191660041790556040805180820190915285546001600160a01b039081168252600187015416602082015260028601546113e1918891612430565b505050505050565b6000818152600d602052604090206002600382015460ff16600581111561141257611412613a29565b1061143057604051632e4baded60e11b815260040160405180910390fd5b80546001600160a01b031633141580611456575060018101546001600160a01b03163314155b15611473576040516282b42960e81b815260040160405180910390fd5b6003818101805460ff19169091179055426004820155604051339083907f28dcf5449944b3fadfb5b45838a9cce97b6db781abbcbb01d23583096e6e29b190600090a35050565b6114c26120e8565b6009805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6060600180546109b290613b43565b6115086120e8565b600b80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b610f713383836126ba565b8160400135600081116115a85760405162461bcd60e51b815260206004820152600960248201527f426164206d696e747300000000000000000000000000000000000000000000006044820152606401610ab9565b600b5460ff16156115fb5760405162461bcd60e51b815260206004820152601360248201527f6d61726b6574706c6163652068616c74656421000000000000000000000000006044820152606401610ab9565b600061160d6080850160608601613c80565b600581111561161e5761161e613a29565b1461163c57604051632e4baded60e11b815260040160405180910390fd5b600b5460408051631a73989160e11b815290850135600482015260a08501356024820152600091829182916201000090046001600160a01b0316906334e73122906044016040805180830381865afa15801561169c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c09190613bc3565b915091508092508560400135341015611705576040517f1dc930eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095460405160009182916001600160a01b039091169085908381818185875af1925050503d8060008114611756576040519150601f19603f3d011682016040523d82523d6000602084013e61175b565b606091505b50915091508161176d57805181602001fd5b50506011546000818152600d602052604090209092508691506117908282613c9d565b50506000818152600d602052604090206005018290556117b03382612788565b6117c66117c060208701876136f3565b82610a5c565b601180549060006117d683613ba9565b90915550506040805185815281870135602082015282917fc87b05081d5b2bcbd06b4f1475fcae7c40f193cab496c7a0f9a2f70cd2043167910160405180910390a25050505050565b600082815260106020526040902054829060ff1615611880576000818152600c60205260409020546118805760405162461bcd60e51b815260206004820152600a60248201526914dbdd5b08189bdd5b9960b21b6044820152606401610ab9565b610de18585858561292e565b6118946120e8565b600b805460ff19811660ff90911615179055565b60606118b382611f58565b60006118bd6129b6565b905060008151116118dd5760405180602001604052806000815250611908565b806118e7846129c5565b6040516020016118f8929190613d6b565b6040516020818303038152906040525b9392505050565b6000828152600d60205260409020600b54610100900460ff16156119a057336000908152600f602052604090205460ff1680611954575080546001600160a01b031633145b6119a05760405162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606401610ab9565b600e826040516119b09190613c64565b9081526040519081900360200190205460ff16156119e157604051638baa579f60e01b815260040160405180910390fd5b6001600e836040516119f39190613c64565b908152604080519182900360209081018320805494151560ff19909516949094179093558181018152601382527f456d706c6f796d656e7420436f6e7472616374000000000000000000000000009183019190915280518082018252600381527f312e3000000000000000000000000000000000000000000000000000000000009083015280517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818401527f735b31e5c304c3f985cc517ae82e37567d39036122fd689af7deb7e0e6166099818301527fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b360608201524660808201523060a0808301919091528251808303909101815260c0820183528051908401208454600186015460028701547f7e6271045b3c62ca061f844f2525184b45ebedfb6d683294b0278b6d091fe02860e08601526001600160a01b03928316610100860152911661012084015261014083018890526101608084019190915283518084039091018152610180830184528051908501207f19010000000000000000000000000000000000000000000000000000000000006101a08401526101a283018290526101c2808401829052845180850390910181526101e2909301909352815191909301206000611be2828761240c565b85549091506001600160a01b03808316911614611c415760405162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e61747572650000000000000000000000000000006044820152606401610ab9565b60038501805460ff191660019081179091558501548554611c6f916001600160a01b03908116911689610b50565b60008781526010602052604090819020805460ff191660011790556002860154905188917fb76abbe4f718d3a5437da4640abcd02e3a2e2975873bd4b168d55f8df507780b91611cc191815260200190565b60405180910390a250505050505050565b80356000908152600d6020526040812090611cf06060840184613bff565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939450611d34925050506080850185613bff565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935060039250611d74915050565b600384015460ff166005811115611d8d57611d8d613a29565b1080611db0575060038084015460ff166005811115611dae57611dae613a29565b115b15611dce57604051632e4baded60e11b815260040160405180910390fd5b611deb604051806040016040528084815260200183815250612a65565b6040516bffffffffffffffffffffffff193360601b1660208201528435603482015260009060540160408051601f1981840301815282825280516020918201208383018352868452838201869052825180840190935287546001600160a01b039081168452600189015416918301919091529250611e6a918391612b40565b60038401805460ff191660041790556040805180820190915284546001600160a01b03908116825260018601541660208201526002850154610de1918791612430565b611eb56120e8565b611ec28162015180613d9a565b600a5550565b611ed06120e8565b6001600160a01b038116611f4c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610ab9565b611f55816123ad565b50565b6000818152600260205260409020546001600160a01b0316611f555760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610ab9565b6000611fc782610f75565b9050806001600160a01b0316836001600160a01b0316036120505760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610ab9565b336001600160a01b038216148061206c575061206c81336107b6565b6120de5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610ab9565b610acc8383612c0b565b6006546001600160a01b031633146111145760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ab9565b61214c3382612c86565b6121be5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610ab9565b610acc838383612d05565b610acc8383836040518060200160405280600081525061181f565b60006121ef82610f75565b90506121ff816000846001612f48565b61220882610f75565b6000838152600460209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b804710156122e45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610ab9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612331576040519150601f19603f3d011682016040523d82523d6000602084013e612336565b606091505b5050905080610acc5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610ab9565b600680546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080600061241b8585612fd0565b9150915061242881613015565b509392505050565b600b546040517f0e8d2b18000000000000000000000000000000000000000000000000000000008152600481018390526000916201000090046001600160a01b031690630e8d2b1890602401602060405180830381865afa158015612499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bd9190613db9565b90508160408501356124d3602087013584613be7565b6124dd9190613be7565b1461252a5760405162461bcd60e51b815260206004820152600e60248201527f496e76616c696420616d6f756e740000000000000000000000000000000000006044820152606401610ab9565b6020840135156125a257825160405160009182916001600160a01b03909116906020880135908381818185875af1925050503d8060008114612588576040519150601f19603f3d011682016040523d82523d6000602084013e61258d565b606091505b50915091508161259f57805181602001fd5b50505b60408401351561261f5760008084600160200201516001600160a01b0316866040013560405160006040518083038185875af1925050503d8060008114612605576040519150601f19603f3d011682016040523d82523d6000602084013e61260a565b606091505b50915091508161261c57805181602001fd5b50505b6040516000908190339084908381818185875af1925050503d8060008114612663576040519150601f19603f3d011682016040523d82523d6000602084013e612668565b606091505b50915091508161267a57805181602001fd5b6040805190870135906020880135908835907f19169f57deee70bd74be81f9f97f655a7bb0f159ee7cbe69040eca379dc092e990600090a4505050505050565b816001600160a01b0316836001600160a01b03160361271b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610ab9565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0382166127de5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610ab9565b6000818152600260205260409020546001600160a01b0316156128435760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610ab9565b612851600083836001612f48565b6000818152600260205260409020546001600160a01b0316156128b65760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610ab9565b6001600160a01b0382166000818152600360209081526040808320805460010190558483526002909152808220805473ffffffffffffffffffffffffffffffffffffffff19168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6129383383612c86565b6129aa5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610ab9565b610b4a8484848461317a565b6060600880546109b290613b43565b606060006129d283613203565b600101905060008167ffffffffffffffff8111156129f2576129f2613827565b6040519080825280601f01601f191660200182016040528015612a1c576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084612a2657509392505050565b8051604051600e91612a7691613c64565b9081526040519081900360200190205460ff1680612ab857506020810151604051600e91612aa391613c64565b9081526040519081900360200190205460ff16155b15612ad657604051638baa579f60e01b815260040160405180910390fd5b8051604051600191600e91612aeb9190613c64565b90815260405160209181900382018120805460ff191693151593909317909255820151600191600e91612b1d91613c64565b908152604051908190036020019020805491151560ff1990921691909117905550565b6000612b99846040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b90506000612bae8285835b602002015161240c565b90506000612bbe83866001612ba4565b84519091506001600160a01b038381169116141580612bed575060208401516001600160a01b03828116911614155b156113e157604051638baa579f60e01b815260040160405180910390fd5b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091558190612c4d82610f75565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080612c9283610f75565b9050806001600160a01b0316846001600160a01b03161480612cd957506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b80612cfd5750836001600160a01b0316612cf284610a35565b6001600160a01b0316145b949350505050565b826001600160a01b0316612d1882610f75565b6001600160a01b031614612d945760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610ab9565b6001600160a01b038216612e0f5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610ab9565b612e1c8383836001612f48565b826001600160a01b0316612e2f82610f75565b6001600160a01b031614612eab5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610ab9565b6000818152600460209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001811115610b4a576001600160a01b03841615612f8e576001600160a01b03841660009081526003602052604081208054839290612f88908490613dd2565b90915550505b6001600160a01b03831615610b4a576001600160a01b03831660009081526003602052604081208054839290612fc5908490613be7565b909155505050505050565b60008082516041036130065760208301516040840151606085015160001a612ffa878285856132e5565b9450945050505061300e565b506000905060025b9250929050565b600081600481111561302957613029613a29565b036130315750565b600181600481111561304557613045613a29565b036130925760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610ab9565b60028160048111156130a6576130a6613a29565b036130f35760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ab9565b600381600481111561310757613107613a29565b03611f555760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610ab9565b613185848484612d05565b613191848484846133a9565b610b4a5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610ab9565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061324c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310613278576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061329657662386f26fc10000830492506010015b6305f5e10083106132ae576305f5e100830492506008015b61271083106132c257612710830492506004015b606483106132d4576064830492506002015b600a831061099d5760010192915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561331c57506000905060036133a0565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613370573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613399576000600192509250506133a0565b9150600090505b94509492505050565b60006001600160a01b0384163b1561353f576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a0290613406903390899088908890600401613de9565b6020604051808303816000875af1925050508015613441575060408051601f3d908101601f1916820190925261343e91810190613e25565b60015b6134f4573d80801561346f576040519150601f19603f3d011682016040523d82523d6000602084013e613474565b606091505b5080516000036134ec5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610ab9565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050612cfd565b506001949350505050565b82805461355690613b43565b90600052602060002090601f01602090048101928261357857600085556135be565b82601f1061359157805160ff19168380011785556135be565b828001600101855582156135be579182015b828111156135be5782518255916020019190600101906135a3565b506135ca9291506135ce565b5090565b5b808211156135ca57600081556001016135cf565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611f5557600080fd5b60006020828403121561362357600080fd5b8135611908816135e3565b60005b83811015613649578181015183820152602001613631565b83811115610b4a5750506000910152565b6000815180845261367281602086016020860161362e565b601f01601f19169290920160200192915050565b602081526000611908602083018461365a565b6000602082840312156136ab57600080fd5b5035919050565b6001600160a01b0381168114611f5557600080fd5b600080604083850312156136da57600080fd5b82356136e5816136b2565b946020939093013593505050565b60006020828403121561370557600080fd5b8135611908816136b2565b8035801515811461372057600080fd5b919050565b60008060006040848603121561373a57600080fd5b833567ffffffffffffffff8082111561375257600080fd5b818601915086601f83011261376657600080fd5b81358181111561377557600080fd5b8760208260051b850101111561378a57600080fd5b6020928301955093506137a09186019050613710565b90509250925092565b6000806000606084860312156137be57600080fd5b83356137c9816136b2565b925060208401356137d9816136b2565b929592945050506040919091013590565b60068110611f5557600080fd5b6000806040838503121561380a57600080fd5b82359150602083013561381c816137ea565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561385857613858613827565b604051601f8501601f19908116603f0116810190828211818310171561388057613880613827565b8160405280935085815286868601111561389957600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156138c557600080fd5b813567ffffffffffffffff8111156138dc57600080fd5b8201601f810184136138ed57600080fd5b612cfd8482356020840161383d565b60006020828403121561390e57600080fd5b813567ffffffffffffffff81111561392557600080fd5b820160a0818503121561190857600080fd5b6000806040838503121561394a57600080fd5b8235613955816136b2565b915061396360208401613710565b90509250929050565b60008082840360e081121561398057600080fd5b60c081121561398e57600080fd5b50919360c08501359350915050565b600082601f8301126139ae57600080fd5b6119088383356020850161383d565b600080600080608085870312156139d357600080fd5b84356139de816136b2565b935060208501356139ee816136b2565b925060408501359150606085013567ffffffffffffffff811115613a1157600080fd5b613a1d8782880161399d565b91505092959194509250565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b038781168252861660208201526040810185905260c0810160068510613a7c57634e487b7160e01b600052602160045260246000fd5b8460608301528360808301528260a0830152979650505050505050565b60008060408385031215613aac57600080fd5b82359150602083013567ffffffffffffffff811115613aca57600080fd5b613ad68582860161399d565b9150509250929050565b60008060408385031215613af357600080fd5b8235613afe816136b2565b9150602083013561381c816136b2565b600060208284031215613b2057600080fd5b813567ffffffffffffffff811115613b3757600080fd5b612cfd8482850161399d565b600181811c90821680613b5757607f821691505b602082108103613b7757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198203613bbc57613bbc613b93565b5060010190565b60008060408385031215613bd657600080fd5b505080516020909101519092909150565b60008219821115613bfa57613bfa613b93565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613c3457600080fd5b83018035915067ffffffffffffffff821115613c4f57600080fd5b60200191503681900382131561300e57600080fd5b60008251613c7681846020870161362e565b9190910192915050565b600060208284031215613c9257600080fd5b8135611908816137ea565b8135613ca8816136b2565b815473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038216178255506020820135613cdd816136b2565b60018201805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555060408201356002820155600381016060830135613d24816137ea565b60068110613d4257634e487b7160e01b600052602160045260246000fd5b60ff1982541660ff8216811783555050506080820135600482015560a082013560058201555050565b60008351613d7d81846020880161362e565b835190830190613d9181836020880161362e565b01949350505050565b6000816000190483118215151615613db457613db4613b93565b500290565b600060208284031215613dcb57600080fd5b5051919050565b600082821015613de457613de4613b93565b500390565b60006001600160a01b03808716835280861660208401525083604083015260806060830152613e1b608083018461365a565b9695505050505050565b600060208284031215613e3757600080fd5b8151611908816135e356fea2646970667358221220fdaff69930699b6463cdfbdd46b668f60f24851c782a5465e432122d0b32745164736f6c634300080d00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000b803ce67bbab71bf850c1fbfd11c0fac8bb50e3e0000000000000000000000000000000000000000000000000000000000000000