60a0604052660e35fa931a00006011553480156200001c57600080fd5b5060405162004d7b38038062004d7b8339810160408190526200003f916200025b565b838383836040518060400160405280600b81526020016a135a5b9d1b1e4813d3919560aa1b8152506040518060400160405280600381526020016226a4a760e91b8152508585838383838080620000a56200009f6200016160201b60201c565b62000165565b6001600160a01b031660805250600160065581620001155760405162461bcd60e51b8152602060048201526024808201527f6d696e476173546f5472616e73666572416e6453746f7265206d7573742062656044820152630203e20360e41b606482015260840160405180910390fd5b5060075581516200012e90600b906020850190620001b5565b5080516200014490600c906020840190620001b5565b50505060129590955550505060135550620002e595505050505050565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620001c390620002a8565b90600052602060002090601f016020900481019282620001e7576000855562000232565b82601f106200020257805160ff191683800117855562000232565b8280016001018555821562000232579182015b828111156200023257825182559160200191906001019062000215565b506200024092915062000244565b5090565b5b8082111562000240576000815560010162000245565b600080600080608085870312156200027257600080fd5b845160208601519094506001600160a01b03811681146200029257600080fd5b6040860151606090960151949790965092505050565b600181811c90821680620002bd57607f821691505b60208210811415620002df57634e487b7160e01b600052602260045260246000fd5b50919050565b608051614a3b620003406000396000818161095f01528181610baf01528181610eb301528181611138015281816113dd01528181611d1c0152818161208b015281816122680152818161239b0152612a3e0152614a3b6000f3fe60806040526004361061038b5760003560e01c80637533d788116101dc578063c446183411610102578063df2a5b3b116100a0578063f23536411161006f578063f235364114610b1f578063f2fde38b14610b3f578063f5ecbdbc14610b5f578063fa25f9b614610b7f57600080fd5b8063df2a5b3b14610a80578063e1d4c87014610aa0578063e985e9c514610ab6578063eb8d72b714610aff57600080fd5b8063d12473a5116100dc578063d12473a514610a17578063d1deba1f14610a37578063da09f15d14610a4a578063ddca3f4314610a6a57600080fd5b8063c4461834146109c1578063c87b56dd146109d7578063cbed8b9c146109f757600080fd5b80639f38369a1161017a578063af3fb21c11610149578063af3fb21c14610925578063b353aaa71461094d578063b88d4fde14610981578063baf3292d146109a157600080fd5b80639f38369a146108b2578063a22cb465146108d2578063a6c3d165146108f2578063ab3ffb931461091257600080fd5b80638ffa1f2a116101b65780638ffa1f2a1461083d578063950c8a741461085d57806395d89b411461087d5780639ea5d6b11461089257600080fd5b80637533d788146107c75780638cfd8f5c146107e75780638da5cb5b1461081f57600080fd5b80633d8b38f6116102c1578063519056361161025f57806369fe0e2d1161022e57806369fe0e2d1461075c5780636aa99da31461077c57806370a0823114610792578063715018a6146107b257600080fd5b806351905636146106ba5780635b8c41e6146106cd5780636352211e1461071c57806366ad5c8a1461073c57600080fd5b806342d65a8d1161029b57806342d65a8d1461064457806348288190146106645780634ac3f4ff1461067a5780635154c0b4146106a757600080fd5b80633d8b38f6146105c95780633f1f4fa4146105e957806342842e0e1461062457600080fd5b80630df374831161032e57806322a3ecf91161030857806322a3ecf9146104e957806323b872dd1461056c5780632a205e3d1461058c5780633ccfd60b146105c157600080fd5b80630df37483146104a157806310ddb137146104c15780631249c58b146104e157600080fd5b806307e0db171161036a57806307e0db1714610409578063081812fc14610429578063095ea7b3146104615780630b4cad4c1461048157600080fd5b80621d35671461039057806301ffc9a7146103b257806306fdde03146103e7575b600080fd5b34801561039c57600080fd5b506103b06103ab366004613a10565b610bac565b005b3480156103be57600080fd5b506103d26103cd366004613ab9565b610ddd565b60405190151581526020015b60405180910390f35b3480156103f357600080fd5b506103fc610e00565b6040516103de9190613b2e565b34801561041557600080fd5b506103b0610424366004613b41565b610e92565b34801561043557600080fd5b50610449610444366004613b5c565b610f1b565b6040516001600160a01b0390911681526020016103de565b34801561046d57600080fd5b506103b061047c366004613b95565b610f42565b34801561048d57600080fd5b506103b061049c366004613b5c565b611058565b3480156104ad57600080fd5b506103b06104bc366004613bc1565b6110f8565b3480156104cd57600080fd5b506103b06104dc366004613b41565b611117565b6103b061116f565b3480156104f557600080fd5b5061053d610504366004613b5c565b600a6020526000908152604090208054600182015460029092015461ffff821692620100009092046001600160a01b0316919060ff1684565b6040805161ffff90951685526001600160a01b03909316602085015291830152151560608201526080016103de565b34801561057857600080fd5b506103b0610587366004613bdd565b611222565b34801561059857600080fd5b506105ac6105a7366004613cf1565b611254565b604080519283526020830191909152016103de565b6103b061127a565b3480156105d557600080fd5b506103d26105e4366004613d7f565b6112d7565b3480156105f557600080fd5b50610616610604366004613b41565b60036020526000908152604090205481565b6040519081526020016103de565b34801561063057600080fd5b506103b061063f366004613bdd565b6113a3565b34801561065057600080fd5b506103b061065f366004613d7f565b6113be565b34801561067057600080fd5b5061061660075481565b34801561068657600080fd5b50610616610695366004613b41565b60086020526000908152604090205481565b6103b06106b5366004613dd1565b611444565b6103b06106c8366004613e30565b611498565b3480156106d957600080fd5b506106166106e8366004613ee9565b6005602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b34801561072857600080fd5b50610449610737366004613b5c565b6114af565b34801561074857600080fd5b506103b0610757366004613a10565b61150f565b34801561076857600080fd5b506103b0610777366004613b5c565b6115eb565b34801561078857600080fd5b5061061660125481565b34801561079e57600080fd5b506106166107ad366004613f46565b6115f8565b3480156107be57600080fd5b506103b061167e565b3480156107d357600080fd5b506103fc6107e2366004613b41565b611692565b3480156107f357600080fd5b50610616610802366004613f63565b600260209081526000928352604080842090915290825290205481565b34801561082b57600080fd5b506000546001600160a01b0316610449565b34801561084957600080fd5b506103b0610858366004613f96565b61172c565b34801561086957600080fd5b50600454610449906001600160a01b031681565b34801561088957600080fd5b506103fc611975565b34801561089e57600080fd5b506103b06108ad366004613bc1565b611984565b3480156108be57600080fd5b506103fc6108cd366004613b41565b611a3b565b3480156108de57600080fd5b506103b06108ed366004613fca565b611b52565b3480156108fe57600080fd5b506103b061090d366004613d7f565b611b61565b6103b061092036600461407f565b611bf4565b34801561093157600080fd5b5061093a600181565b60405161ffff90911681526020016103de565b34801561095957600080fd5b506104497f000000000000000000000000000000000000000000000000000000000000000081565b34801561098d57600080fd5b506103b061099c366004614134565b611c03565b3480156109ad57600080fd5b506103b06109bc366004613f46565b611c3b565b3480156109cd57600080fd5b5061061661271081565b3480156109e357600080fd5b506103fc6109f2366004613b5c565b611c91565b348015610a0357600080fd5b506103b0610a1236600461419f565b611cfd565b348015610a2357600080fd5b506103b0610a32366004613bc1565b611d92565b6103b0610a45366004613a10565b611e42565b348015610a5657600080fd5b506105ac610a6536600461420d565b612058565b348015610a7657600080fd5b5061061660115481565b348015610a8c57600080fd5b506103b0610a9b366004614239565b61211d565b348015610aac57600080fd5b5061061660135481565b348015610ac257600080fd5b506103d2610ad1366004614275565b6001600160a01b03918216600090815260106020908152604080832093909416825291909152205460ff1690565b348015610b0b57600080fd5b506103b0610b1a366004613d7f565b6121cf565b348015610b2b57600080fd5b506105ac610b3a3660046142ae565b612229565b348015610b4b57600080fd5b506103b0610b5a366004613f46565b6122f4565b348015610b6b57600080fd5b506103fc610b7a366004614327565b61236a565b348015610b8b57600080fd5b50610616610b9a366004613b41565b60096020526000908152604090205481565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610c295760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff861660009081526001602052604081208054610c4790614374565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7390614374565b8015610cc05780601f10610c9557610100808354040283529160200191610cc0565b820191906000526020600020905b815481529060010190602001808311610ca357829003601f168201915b50505050509050805186869050148015610cdb575060008151115b8015610d03575080516020820120604051610cf990889088906143af565b6040518091039020145b610d5e5760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608401610c20565b610dd48787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a93509150889088908190840183828082843760009201919091525061241d92505050565b50505050505050565b60006001600160e01b031982161580610dfa5750610dfa82612496565b92915050565b6060600b8054610e0f90614374565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3b90614374565b8015610e885780601f10610e5d57610100808354040283529160200191610e88565b820191906000526020600020905b815481529060010190602001808311610e6b57829003601f168201915b5050505050905090565b610e9a6124d6565b6040516307e0db1760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307e0db17906024015b600060405180830381600087803b158015610f0057600080fd5b505af1158015610f14573d6000803e3d6000fd5b5050505050565b6000610f2682612530565b506000908152600f60205260409020546001600160a01b031690565b6000610f4d826114af565b9050806001600160a01b0316836001600160a01b03161415610fbb5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610c20565b336001600160a01b0382161480610fd75750610fd78133610ad1565b6110495760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610c20565b6110538383612580565b505050565b6110606124d6565b600081116110bc5760405162461bcd60e51b8152602060048201526024808201527f6d696e476173546f5472616e73666572416e6453746f7265206d7573742062656044820152630203e20360e41b6064820152608401610c20565b60078190556040518181527ffebbc4f8bb9ec2313950c718d43123124b15778efda4c1f1d529de2995b4f34d906020015b60405180910390a150565b6111006124d6565b61ffff909116600090815260036020526040902055565b61111f6124d6565b6040516310ddb13760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906310ddb13790602401610ee6565b6011543410156111b95760405162461bcd60e51b8152602060048201526015602482015274139bdd08195b9bdd59da08195d1a195c881cd95b9d605a1b6044820152606401610c20565b60135460125411156111fe5760405162461bcd60e51b815260206004820152600e60248201526d2a37b79036b0b73c961031393abb60911b6044820152606401610c20565b601280549081906000611210836143d5565b919050555061121f33826125ee565b50565b61122d335b82612608565b6112495760405162461bcd60e51b8152600401610c20906143f0565b611053838383612686565b60008061126c8787611265886127ea565b8787612229565b915091509550959350505050565b6112826124d6565b604051600090339047908381818185875af1925050503d80600081146112c4576040519150601f19603f3d011682016040523d82523d6000602084013e6112c9565b606091505b505090508061121f57600080fd5b61ffff8316600090815260016020526040812080548291906112f890614374565b80601f016020809104026020016040519081016040528092919081815260200182805461132490614374565b80156113715780601f1061134657610100808354040283529160200191611371565b820191906000526020600020905b81548152906001019060200180831161135457829003601f168201915b5050505050905083836040516113889291906143af565b60405180910390208180519060200120149150509392505050565b61105383838360405180602001604052806000815250611c03565b6113c66124d6565b6040516342d65a8d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906342d65a8d9061141690869086908690600401614466565b600060405180830381600087803b15801561143057600080fd5b505af1158015610dd4573d6000803e3d6000fd5b61ffff83166000908152600960205260409020546114689084906001908490612835565b60408051336020820152600081830152815180820383018152606090910190915261105390849030858534612914565b610dd48787876114a7886127ea565b878787612aba565b6000818152600d60205260408120546001600160a01b031680610dfa5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c20565b33301461156d5760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608401610c20565b6115e38686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250612c8e92505050565b505050505050565b6115f36124d6565b601155565b60006001600160a01b0382166116625760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610c20565b506001600160a01b03166000908152600e602052604090205490565b6116866124d6565b6116906000612de5565b565b600160205260009081526040902080546116ab90614374565b80601f01602080910402602001604051908101604052809291908181526020018280546116d790614374565b80156117245780601f106116f957610100808354040283529160200191611724565b820191906000526020600020905b81548152906001019060200180831161170757829003601f168201915b505050505081565b611734612e35565b80516020808301919091206000818152600a90925260409091206002015460ff166117955760405162461bcd60e51b81526020600482015260116024820152701b9bc818dc99591a5d1cc81cdd1bdc9959607a1b6044820152606401610c20565b6000828060200190518101906117ab91906144c9565b6000848152600a6020526040812080546001909101549294509092506117e79161ffff8216916201000090046001600160a01b03169085612e8f565b6000848152600a6020526040902060010154909150811161185c5760405162461bcd60e51b815260206004820152602960248201527f6e6f7420656e6f7567682067617320746f2070726f6365737320637265646974604482015268103a3930b739b332b960b91b6064820152608401610c20565b81518114156118d4576000838152600a602052604080822080546001600160b01b031916815560018101929092556002909101805460ff19169055517fd7be02b8dd0d27bd0517a9cb4d7469ce27df4313821ae5ec1ff69acc594ba233906118c79085815260200190565b60405180910390a1611968565b604080516080810182526000858152600a6020818152848320805461ffff80821687526001600160a01b03620100008084048216868a019081529989018b8152600160608b01818152998f90529790965297519851169096026001600160b01b03199091169690951695909517939093178455915191830191909155516002909101805491151560ff199092169190911790555b50505061121f6001600655565b6060600c8054610e0f90614374565b61198c6124d6565b600081116119e75760405162461bcd60e51b815260206004820152602260248201527f647374436861696e4964546f42617463684c696d6974206d757374206265203e604482015261020360f41b6064820152608401610c20565b61ffff8216600081815260086020908152604091829020849055815192835282018390527f7315f7654d594ead24a30160ed9ba2d23247f543016b918343591e93d7afdb6d91015b60405180910390a15050565b61ffff8116600090815260016020526040812080546060929190611a5e90614374565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8a90614374565b8015611ad75780601f10611aac57610100808354040283529160200191611ad7565b820191906000526020600020905b815481529060010190602001808311611aba57829003601f168201915b50505050509050805160001415611b305760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606401610c20565b611b4b600060148351611b439190614583565b839190612ee1565b9392505050565b611b5d338383612fee565b5050565b611b696124d6565b818130604051602001611b7e9392919061459a565b60408051601f1981840301815291815261ffff85166000908152600160209081529190208251611bb39391929091019061388d565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce838383604051611be793929190614466565b60405180910390a1505050565b610dd487878787878787612aba565b611c0d3383612608565b611c295760405162461bcd60e51b8152600401610c20906143f0565b611c35848484846130bd565b50505050565b611c436124d6565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b906020016110ed565b6060611ccd6040805180820190915260208082527f68747470733a2f2f6170692e636a736b692e78797a2f6170692f6d696e746c799082015290565b611cd6836130f0565b604051602001611ce79291906145c0565b6040516020818303038152906040529050919050565b611d056124d6565b6040516332fb62e760e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c90611d5990889088908890889088906004016145ff565b600060405180830381600087803b158015611d7357600080fd5b505af1158015611d87573d6000803e3d6000fd5b505050505050505050565b611d9a6124d6565b60008111611df65760405162461bcd60e51b815260206004820152602360248201527f647374436861696e4964546f5472616e73666572476173206d7573742062652060448201526203e20360ec1b6064820152608401610c20565b61ffff8216600081815260096020908152604091829020849055815192835282018390527fc46df2983228ac2d9754e94a0d565e6671665dc8ad38602bc8e544f0685a29fb9101611a2f565b61ffff86166000908152600560205260408082209051611e6590889088906143af565b90815260408051602092819003830190206001600160401b03871660009081529252902054905080611ee55760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608401610c20565b808383604051611ef69291906143af565b604051809103902014611f555760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608401610c20565b61ffff87166000908152600560205260408082209051611f7890899089906143af565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f88018290048202830182019052868252612010918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250612c8e92505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051612047959493929190614638565b60405180910390a150505050505050565b604080513360208201526000818301819052825180830384018152606083019384905263040a7bb160e41b9093529182917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340a7bb10906120d0908990309086908b908b90606401614673565b6040805180830381865afa1580156120ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211091906146c7565b9250925050935093915050565b6121256124d6565b6000811161216d5760405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606401610c20565b61ffff83811660008181526002602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac090606001611be7565b6121d76124d6565b61ffff831660009081526001602052604090206121f5908383613911565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab838383604051611be793929190614466565b60008060008686604051602001612241929190614726565b60408051601f198184030181529082905263040a7bb160e41b825291506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb10906122a5908b90309086908b908b90600401614673565b6040805180830381865afa1580156122c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e591906146c7565b92509250509550959350505050565b6122fc6124d6565b6001600160a01b0381166123615760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c20565b61121f81612de5565b604051633d7b2f6f60e21b815261ffff808616600483015284166024820152306044820152606481018290526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f5ecbdbc90608401600060405180830381865afa1580156123ea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124129190810190614754565b90505b949350505050565b6000806124805a60966366ad5c8a60e01b898989896040516024016124459493929190614788565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091523092919061318c565b91509150816115e3576115e38686868685613216565b60006001600160e01b031982166380ac58cd60e01b14806124c757506001600160e01b03198216635b5e139f60e01b145b80610dfa5750610dfa826132b3565b6000546001600160a01b031633146116905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c20565b612539816132e8565b61121f5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c20565b6000818152600f6020526040902080546001600160a01b0319166001600160a01b03841690811790915581906125b5826114af565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b611b5d828260405180602001604052806000815250613305565b600080612614836114af565b9050806001600160a01b0316846001600160a01b0316148061265b57506001600160a01b0380821660009081526010602090815260408083209388168352929052205460ff165b806124155750836001600160a01b031661267484610f1b565b6001600160a01b031614949350505050565b826001600160a01b0316612699826114af565b6001600160a01b0316146126bf5760405162461bcd60e51b8152600401610c20906147c6565b6001600160a01b0382166127215760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610c20565b826001600160a01b0316612734826114af565b6001600160a01b03161461275a5760405162461bcd60e51b8152600401610c20906147c6565b6000818152600f6020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652600e8552838620805460001901905590871680865283862080546001019055868652600d90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106128245761282461480b565b602090810291909101015292915050565b600061284083613338565b61ffff808716600090815260026020908152604080832093891683529290529081205491925090612872908490614821565b9050600081116128c45760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606401610c20565b808210156115e35760405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606401610c20565b61ffff86166000908152600160205260408120805461293290614374565b80601f016020809104026020016040519081016040528092919081815260200182805461295e90614374565b80156129ab5780601f10612980576101008083540402835291602001916129ab565b820191906000526020600020905b81548152906001019060200180831161298e57829003601f168201915b50505050509050805160001415612a1d5760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608401610c20565b612a28878751613394565b60405162c5803160e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5803100908490612a7f908b9086908c908c908c908c90600401614839565b6000604051808303818588803b158015612a9857600080fd5b505af1158015612aac573d6000803e3d6000fd5b505050505050505050505050565b6000845111612b015760405162461bcd60e51b8152602060048201526013602482015272746f6b656e4964735b5d20697320656d70747960681b6044820152606401610c20565b835160011480612b25575061ffff8616600090815260086020526040902054845111155b612b7c5760405162461bcd60e51b815260206004820152602260248201527f62617463682073697a65206578636565647320647374206261746368206c696d6044820152611a5d60f21b6064820152608401610c20565b60005b8451811015612bbf57612bad888888888581518110612ba057612ba061480b565b6020026020010151613402565b80612bb7816143d5565b915050612b7f565b5060008585604051602001612bd5929190614726565b6040516020818303038152906040529050612c1a876001848851600960008d61ffff1661ffff16815260200190815260200160002054612c1591906148a0565b612835565b612c28878286868634612914565b85604051612c3691906148bf565b6040518091039020886001600160a01b03168861ffff167fe1b87c47fdeb4f9cbadbca9df3af7aba453bb6e501075d0440d88125b711522a88604051612c7c91906148db565b60405180910390a45050505050505050565b60008082806020019051810190612ca591906144c9565b601482015191935091506000612cbd88838386612e8f565b90508251811015612d915784516020808701919091206040805160808101825261ffff808d1682526001600160a01b038088168387019081528385018881526001606086018181526000898152600a909a529887902095518654935190941662010000026001600160b01b03199093169390941692909217178355519082015592516002909301805493151560ff199094169390931790925590517f10e0b70d256bccc84b7027506978bd8b68984a870788b93b479def144c839ad790612d8790839089906148ee565b60405180910390a1505b816001600160a01b031687604051612da991906148bf565b60405180910390208961ffff167f5b821db8a46f8ecbe1941ba2f51cfeea9643268b56631f70d45e2a745d99026586604051612c7c91906148db565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60026006541415612e885760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c20565b6002600655565b6000825b8251811015612412576007545a1015612eab57612412565b612ecf8686858481518110612ec257612ec261480b565b60200260200101516134ed565b80612ed9816143d5565b915050612e93565b606081612eef81601f614821565b1015612f2e5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610c20565b612f388284614821565b84511015612f7c5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610c20565b606082158015612f9b5760405191506000825260208201604052612fe5565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612fd4578051835260209283019201612fbc565b5050858452601f01601f1916604052505b50949350505050565b816001600160a01b0316836001600160a01b031614156130505760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610c20565b6001600160a01b03838116600081815260106020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6130c8848484612686565b6130d48484848461354d565b611c355760405162461bcd60e51b8152600401610c2090614907565b606060006130fd83613648565b60010190506000816001600160401b0381111561311c5761311c613c1e565b6040519080825280601f01601f191660200182016040528015613146576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461317f57613184565b613150565b509392505050565b6000606060008060008661ffff166001600160401b038111156131b1576131b1613c1e565b6040519080825280601f01601f1916602001820160405280156131db576020820181803683370190505b50905060008087516020890160008d8df191503d9250868311156131fd578692505b828152826000602083013e909890975095505050505050565b8180519060200120600560008761ffff1661ffff1681526020019081526020016000208560405161324791906148bf565b9081526040805191829003602090810183206001600160401b0388166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c906132a49087908790879087908790614959565b60405180910390a15050505050565b60006001600160e01b031982166322bac5d960e01b1480610dfa57506301ffc9a760e01b6001600160e01b0319831614610dfa565b6000908152600d60205260409020546001600160a01b0316151590565b61330f8383613720565b61331c600084848461354d565b6110535760405162461bcd60e51b8152600401610c2090614907565b600060228251101561338c5760405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606401610c20565b506022015190565b61ffff8216600090815260036020526040902054806133b257506127105b808211156110535760405162461bcd60e51b815260206004820181905260248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152606401610c20565b61340b33611227565b61346e5760405162461bcd60e51b815260206004820152602e60248201527f4f4e46543732313a2073656e642063616c6c6572206973206e6f74206f776e6560448201526d1c881b9bdc88185c1c1c9bdd995960921b6064820152608401610c20565b836001600160a01b0316613481826114af565b6001600160a01b0316146134e25760405162461bcd60e51b815260206004820152602260248201527f4f4e46543732313a2073656e642066726f6d20696e636f7272656374206f776e60448201526132b960f11b6064820152608401610c20565b611c35843083612686565b6134f6816132e8565b15806135225750613506816132e8565b8015613522575030613517826114af565b6001600160a01b0316145b61352b57600080fd5b613534816132e8565b6135425761105382826125ee565b611053308383612686565b60006001600160a01b0384163b1561364057604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906135919033908990889088906004016149ab565b6020604051808303816000875af19250505080156135cc575060408051601f3d908101601f191682019092526135c9918101906149e8565b60015b613626573d8080156135fa576040519150601f19603f3d011682016040523d82523d6000602084013e6135ff565b606091505b50805161361e5760405162461bcd60e51b8152600401610c2090614907565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612415565b506001612415565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106136875772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106136b3576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106136d157662386f26fc10000830492506010015b6305f5e10083106136e9576305f5e100830492506008015b61271083106136fd57612710830492506004015b6064831061370f576064830492506002015b600a8310610dfa5760010192915050565b6001600160a01b0382166137765760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610c20565b61377f816132e8565b156137cc5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c20565b6137d5816132e8565b156138225760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c20565b6001600160a01b0382166000818152600e6020908152604080832080546001019055848352600d90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461389990614374565b90600052602060002090601f0160209004810192826138bb5760008555613901565b82601f106138d457805160ff1916838001178555613901565b82800160010185558215613901579182015b828111156139015782518255916020019190600101906138e6565b5061390d929150613985565b5090565b82805461391d90614374565b90600052602060002090601f01602090048101928261393f5760008555613901565b82601f106139585782800160ff19823516178555613901565b82800160010185558215613901579182015b8281111561390157823582559160200191906001019061396a565b5b8082111561390d5760008155600101613986565b803561ffff811681146139ac57600080fd5b919050565b60008083601f8401126139c357600080fd5b5081356001600160401b038111156139da57600080fd5b6020830191508360208285010111156139f257600080fd5b9250929050565b80356001600160401b03811681146139ac57600080fd5b60008060008060008060808789031215613a2957600080fd5b613a328761399a565b955060208701356001600160401b0380821115613a4e57600080fd5b613a5a8a838b016139b1565b9097509550859150613a6e60408a016139f9565b94506060890135915080821115613a8457600080fd5b50613a9189828a016139b1565b979a9699509497509295939492505050565b6001600160e01b03198116811461121f57600080fd5b600060208284031215613acb57600080fd5b8135611b4b81613aa3565b60005b83811015613af1578181015183820152602001613ad9565b83811115611c355750506000910152565b60008151808452613b1a816020860160208601613ad6565b601f01601f19169290920160200192915050565b602081526000611b4b6020830184613b02565b600060208284031215613b5357600080fd5b611b4b8261399a565b600060208284031215613b6e57600080fd5b5035919050565b6001600160a01b038116811461121f57600080fd5b80356139ac81613b75565b60008060408385031215613ba857600080fd5b8235613bb381613b75565b946020939093013593505050565b60008060408385031215613bd457600080fd5b613bb38361399a565b600080600060608486031215613bf257600080fd5b8335613bfd81613b75565b92506020840135613c0d81613b75565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613c5c57613c5c613c1e565b604052919050565b60006001600160401b03821115613c7d57613c7d613c1e565b50601f01601f191660200190565b600082601f830112613c9c57600080fd5b8135613caf613caa82613c64565b613c34565b818152846020838601011115613cc457600080fd5b816020850160208301376000918101602001919091529392505050565b803580151581146139ac57600080fd5b600080600080600060a08688031215613d0957600080fd5b613d128661399a565b945060208601356001600160401b0380821115613d2e57600080fd5b613d3a89838a01613c8b565b955060408801359450613d4f60608901613ce1565b93506080880135915080821115613d6557600080fd5b50613d7288828901613c8b565b9150509295509295909350565b600080600060408486031215613d9457600080fd5b613d9d8461399a565b925060208401356001600160401b03811115613db857600080fd5b613dc4868287016139b1565b9497909650939450505050565b600080600060608486031215613de657600080fd5b613def8461399a565b92506020840135613dff81613b75565b915060408401356001600160401b03811115613e1a57600080fd5b613e2686828701613c8b565b9150509250925092565b600080600080600080600060e0888a031215613e4b57600080fd5b8735613e5681613b75565b9650613e646020890161399a565b955060408801356001600160401b0380821115613e8057600080fd5b613e8c8b838c01613c8b565b965060608a0135955060808a01359150613ea582613b75565b90935060a089013590613eb782613b75565b90925060c08901359080821115613ecd57600080fd5b50613eda8a828b01613c8b565b91505092959891949750929550565b600080600060608486031215613efe57600080fd5b613f078461399a565b925060208401356001600160401b03811115613f2257600080fd5b613f2e86828701613c8b565b925050613f3d604085016139f9565b90509250925092565b600060208284031215613f5857600080fd5b8135611b4b81613b75565b60008060408385031215613f7657600080fd5b613f7f8361399a565b9150613f8d6020840161399a565b90509250929050565b600060208284031215613fa857600080fd5b81356001600160401b03811115613fbe57600080fd5b61241584828501613c8b565b60008060408385031215613fdd57600080fd5b8235613fe881613b75565b9150613f8d60208401613ce1565b60006001600160401b0382111561400f5761400f613c1e565b5060051b60200190565b600082601f83011261402a57600080fd5b8135602061403a613caa83613ff6565b82815260059290921b8401810191818101908684111561405957600080fd5b8286015b84811015614074578035835291830191830161405d565b509695505050505050565b600080600080600080600060e0888a03121561409a57600080fd5b87356140a581613b75565b96506140b36020890161399a565b955060408801356001600160401b03808211156140cf57600080fd5b6140db8b838c01613c8b565b965060608a01359150808211156140f157600080fd5b6140fd8b838c01614019565b955060808a0135915061410f82613b75565b81945061411e60a08b01613b8a565b935060c08a0135915080821115613ecd57600080fd5b6000806000806080858703121561414a57600080fd5b843561415581613b75565b9350602085013561416581613b75565b92506040850135915060608501356001600160401b0381111561418757600080fd5b61419387828801613c8b565b91505092959194509250565b6000806000806000608086880312156141b757600080fd5b6141c08661399a565b94506141ce6020870161399a565b93506040860135925060608601356001600160401b038111156141f057600080fd5b6141fc888289016139b1565b969995985093965092949392505050565b60008060006060848603121561422257600080fd5b61422b8461399a565b9250613dff60208501613ce1565b60008060006060848603121561424e57600080fd5b6142578461399a565b92506142656020850161399a565b9150604084013590509250925092565b6000806040838503121561428857600080fd5b823561429381613b75565b915060208301356142a381613b75565b809150509250929050565b600080600080600060a086880312156142c657600080fd5b6142cf8661399a565b945060208601356001600160401b03808211156142eb57600080fd5b6142f789838a01613c8b565b9550604088013591508082111561430d57600080fd5b61431989838a01614019565b9450613d4f60608901613ce1565b6000806000806080858703121561433d57600080fd5b6143468561399a565b93506143546020860161399a565b9250604085013561436481613b75565b9396929550929360600135925050565b600181811c9082168061438857607f821691505b602082108114156143a957634e487b7160e01b600052602260045260246000fd5b50919050565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156143e9576143e96143bf565b5060010190565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff8416815260406020820152600061241260408301848661443d565b600082601f83011261449557600080fd5b81516144a3613caa82613c64565b8181528460208386010111156144b857600080fd5b612415826020830160208701613ad6565b600080604083850312156144dc57600080fd5b82516001600160401b03808211156144f357600080fd5b6144ff86838701614484565b935060209150818501518181111561451657600080fd5b85019050601f8101861361452957600080fd5b8051614537613caa82613ff6565b81815260059190911b8201830190838101908883111561455657600080fd5b928401925b828410156145745783518252928401929084019061455b565b80955050505050509250929050565b600082821015614595576145956143bf565b500390565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b600083516145d2818460208801613ad6565b633f69643d60e01b90830190815283516145f3816004840160208801613ad6565b01600401949350505050565b600061ffff80881683528087166020840152508460408301526080606083015261462d60808301848661443d565b979650505050505050565b61ffff8616815260806020820152600061465660808301868861443d565b6001600160401b0394909416604083015250606001529392505050565b61ffff861681526001600160a01b038516602082015260a0604082018190526000906146a190830186613b02565b841515606084015282810360808401526146bb8185613b02565b98975050505050505050565b600080604083850312156146da57600080fd5b505080516020909101519092909150565b600081518084526020808501945080840160005b8381101561471b578151875295820195908201906001016146ff565b509495945050505050565b6040815260006147396040830185613b02565b828103602084015261474b81856146eb565b95945050505050565b60006020828403121561476657600080fd5b81516001600160401b0381111561477c57600080fd5b61241584828501614484565b61ffff851681526080602082015260006147a56080830186613b02565b6001600160401b0385166040840152828103606084015261462d8185613b02565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008219821115614834576148346143bf565b500190565b61ffff8716815260c06020820152600061485660c0830188613b02565b82810360408401526148688188613b02565b6001600160a01b0387811660608601528616608085015283810360a085015290506148938185613b02565b9998505050505050505050565b60008160001904831182151516156148ba576148ba6143bf565b500290565b600082516148d1818460208701613ad6565b9190910192915050565b602081526000611b4b60208301846146eb565b8281526040602082015260006124156040830184613b02565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b61ffff8616815260a06020820152600061497660a0830187613b02565b6001600160401b038616604084015282810360608401526149978186613b02565b905082810360808401526146bb8185613b02565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906149de90830184613b02565b9695505050505050565b6000602082840312156149fa57600080fd5b8151611b4b81613aa356fea2646970667358221220884fb27f3d88f093d43e34b23cd120da7e2b282f7262afb51eec7d2edff8219364736f6c634300080c0033000000000000000000000000000000000000000000000000000000000000c350000000000000000000000000b6319cc6c8c27a8f5daf0dd3df91ea35c4720dd70000000000000000000000000000000000000000000000000000000000061a81000000000000000000000000000000000000000000000000000000000006ddd0