0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80637bbdad111161011a578063b4b5ea57116100ad578063dd62ed3e1161007c578063dd62ed3e146103f6578063e43252d714610409578063e7a324dc1461041c578063eb9253c014610424578063f1127ed814610437576101fb565b8063b4b5ea57146103b5578063b74ca805146103c8578063c3cda520146103d0578063d505accf146103e3576101fb565b80638eeb1017116100e95780638eeb10171461037f57806395d89b41146103875780639b19251a1461038f578063a9059cbb146103a2576101fb565b80637bbdad11146103495780637ecebe00146103515780638ab1d681146103645780638da5cb5b14610377576101fb565b80633ecd4255116101925780635c19a95c116101615780635c19a95c146102e35780636fcfff45146102f657806370a0823114610316578063782d6fe114610329576101fb565b80633ecd4255146102a057806340c10f19146102a857806354840c6e146102bb578063587cde1e146102c3576101fb565b806320606b70116101ce57806320606b701461026857806323b872dd1461027057806330adf81f14610283578063313ce5671461028b576101fb565b806306fdde0314610200578063095ea7b31461021e57806313af40351461023e57806318160ddd14610253575b600080fd5b610208610458565b60405161021591906124d9565b60405180910390f35b61023161022c366004611e63565b610482565b60405161021591906123d5565b61025161024c366004611d1a565b61054c565b005b61025b6105e8565b60405161021591906123e3565b61025b6105ee565b61023161027e366004611d7a565b610605565b61025b610773565b61029361077f565b60405161021591906125c3565b610231610784565b6102516102b6366004611e63565b610794565b610231610966565b6102d66102d1366004611d1a565b610976565b60405161021591906123ac565b6102516102f1366004611d1a565b610991565b610309610304366004611d1a565b61099e565b604051610215919061259a565b61025b610324366004611d1a565b6109b6565b61033c610337366004611e63565b6109da565b60405161021591906125df565b610251610be8565b61025b61035f366004611d1a565b610c28565b610251610372366004611d1a565b610c3a565b6102d6610c85565b610251610c94565b610208610ccd565b61023161039d366004611d1a565b610ced565b6102316103b0366004611e63565b610d02565b61033c6103c3366004611d1a565b610d49565b610251610db9565b6102516103de366004611e93565b610df2565b6102516103f1366004611dc7565b610fe2565b61025b610404366004611d40565b6112df565b610251610417366004611d1a565b611313565b61025b611361565b610251610432366004611e63565b61136d565b61044a610445366004611f1a565b611516565b6040516102159291906125a8565b6040518060400160405280600e81526020016d43415420476f7665726e616e636560901b81525081565b60008060001983141561049857506000196104c8565b6104c5836040518060400160405280601a81526020016000805160206126c583398151915281525061154b565b90505b3360008181526003602090815260408083206001600160a01b03891680855292529182902080546001600160601b0319166001600160601b03861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105389085906125d1565b60405180910390a360019150505b92915050565b6001546001600160a01b0316331461057f5760405162461bcd60e51b81526004016105769061250a565b60405180910390fd5b6001546040517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c916105be916001600160a01b039091169084906123ba565b60405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b60005481565b6040516105fa90612396565b604051809103902081565b6001600160a01b038316600090815260036020908152604080832033808552908352818420548251808401909352601a83526000805160206126c583398151915293830193909352916001600160601b031690839061066590869061154b565b9050866001600160a01b0316836001600160a01b03161415801561069257506001600160601b0382811614155b156107595760006106d983836040518060400160405280601d81526020017f434154473a414d4f554e545f455843454544535f414c4c4f57414e434500000081525061157a565b6001600160a01b038981166000818152600360209081526040808320948a16808452949091529081902080546001600160601b0319166001600160601b0386161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061074f9085906125d1565b60405180910390a3505b6107648787836115b9565b600193505050505b9392505050565b6040516105fa9061238b565b601281565b600154600160a81b900460ff1681565b6001546001600160a01b031633146107be5760405162461bcd60e51b81526004016105769061250a565b6001600160a01b0382166107e45760405162461bcd60e51b81526004016105769061252a565b6000610813826040518060400160405280601a81526020016000805160206126c583398151915281525061154b565b905061086861082d600054836001600160601b03166117d5565b6040518060400160405280601f81526020017f434154473a544f54414c535550504c595f455843454544535f3936424954530081525061154b565b6001600160601b0390811660009081556001600160a01b0385168152600460209081526040918290205482518084019093526014835273434154473a414d4f554e545f4f564552464c4f5760601b918301919091526108ca92169083906117fa565b6001600160a01b03841660008181526004602052604080822080546001600160601b0319166001600160601b03959095169490941790935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109349085906125d1565b60405180910390a36001600160a01b03808416600090815260056020526040812054610961921683611836565b505050565b600154600160a01b900460ff1681565b6005602052600090815260409020546001600160a01b031681565b61099b33826119f1565b50565b60076020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600460205260409020546001600160601b031690565b60004382106109fb5760405162461bcd60e51b81526004016105769061251a565b6001600160a01b03831660009081526007602052604090205463ffffffff1680610a29576000915050610546565b6001600160a01b038416600090815260066020908152604080832063ffffffff600019860181168552925290912054168310610aa5576001600160a01b03841660009081526006602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050610546565b6001600160a01b038416600090815260066020908152604080832083805290915290205463ffffffff16831015610ae0576000915050610546565b600060001982015b8163ffffffff168163ffffffff161115610ba357600282820363ffffffff16048103610b12611cd7565b506001600160a01b038716600090815260066020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415610b7e576020015194506105469350505050565b805163ffffffff16871115610b9557819350610b9c565b6001820392505b5050610ae8565b506001600160a01b038516600090815260066020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b6001546001600160a01b03163314610c125760405162461bcd60e51b81526004016105769061250a565b6001805461ffff60a01b1916600160a01b179055565b60086020526000908152604090205481565b6001546001600160a01b03163314610c645760405162461bcd60e51b81526004016105769061250a565b6001600160a01b03166000908152600260205260409020805460ff19169055565b6001546001600160a01b031681565b6001546001600160a01b03163314610cbe5760405162461bcd60e51b81526004016105769061250a565b6001805460ff60a01b19169055565b604051806040016040528060048152602001634341544760e01b81525081565b60026020526000908152604090205460ff1681565b600080610d32836040518060400160405280601a81526020016000805160206126c583398151915281525061154b565b9050610d3f3385836115b9565b5060019392505050565b6001600160a01b03811660009081526007602052604081205463ffffffff1680610d7457600061076c565b6001600160a01b0383166000908152600660209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03169392505050565b6001546001600160a01b03163314610de35760405162461bcd60e51b81526004016105769061250a565b6001805460ff60a81b19169055565b6000604051610e0090612396565b60408051918290038220828201909152600e82526d43415420476f7665726e616e636560901b6020909201919091527f1a4dc32364846c43de86b9582edec2f3c2eaee1c86d42b3f334f150f60949d44610e58611a7b565b30604051602001610e6c9493929190612489565b6040516020818303038152906040528051906020012090506000604051610e92906123a1565b604051908190038120610ead918a908a908a9060200161244b565b60405160208183030381529060405280519060200120905060008282604051602001610eda92919061235a565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610f1794939291906124be565b6020604051602081039080840390855afa158015610f39573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610f6c5760405162461bcd60e51b8152600401610576906124fa565b6001600160a01b03811660009081526008602052604090208054600181019091558914610fab5760405162461bcd60e51b81526004016105769061255a565b87421115610fcb5760405162461bcd60e51b81526004016105769061256a565b610fd5818b6119f1565b505050505b505050505050565b6000600019861415610ff75750600019611027565b611024866040518060400160405280601a81526020016000805160206126c583398151915281525061154b565b90505b600060405161103590612396565b60408051918290038220828201909152600e82526d43415420476f7665726e616e636560901b6020909201919091527f1a4dc32364846c43de86b9582edec2f3c2eaee1c86d42b3f334f150f60949d4461108d611a7b565b306040516020016110a19493929190612489565b60405160208183030381529060405280519060200120905060006040516110c79061238b565b604080519182900382206001600160a01b038d166000908152600860209081529290208054600181019091556111099391928e928e928e9290918e91016123f1565b6040516020818303038152906040528051906020012090506000828260405160200161113692919061235a565b60405160208183030381529060405280519060200120905060006001828989896040516000815260200160405260405161117394939291906124be565b6020604051602081039080840390855afa158015611195573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111c85760405162461bcd60e51b8152600401610576906124fa565b8b6001600160a01b0316816001600160a01b0316146111f95760405162461bcd60e51b81526004016105769061257a565b884211156112195760405162461bcd60e51b81526004016105769061256a565b84600360008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b031602179055508a6001600160a01b03168c6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516112c991906125d1565b60405180910390a3505050505050505050505050565b6001600160a01b0391821660009081526003602090815260408083209390941682529190915220546001600160601b031690565b6001546001600160a01b0316331461133d5760405162461bcd60e51b81526004016105769061250a565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6040516105fa906123a1565b6001546001600160a01b031633146113975760405162461bcd60e51b81526004016105769061250a565b600154600160a81b900460ff166113ad57600080fd5b60006113dc826040518060400160405280601a81526020016000805160206126c583398151915281525061154b565b905061141f6113f6600054836001600160601b0316611a7f565b6040518060400160405280601a81526020016000805160206126c583398151915281525061154b565b6001600160601b0390811660009081556001600160a01b0385168152600460209081526040918290205482518084019093526014835273434154473a414d4f554e545f4f564552464c4f5760601b91830191909152611481921690839061157a565b6001600160a01b03841660008181526004602052604080822080546001600160601b0319166001600160601b03959095169490941790935591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114e89085906125d1565b60405180910390a36001600160a01b0380841660009081526005602052604081205461096192169083611836565b600660209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b600081600160601b84106115725760405162461bcd60e51b815260040161057691906124d9565b509192915050565b6000836001600160601b0316836001600160601b0316111582906115b15760405162461bcd60e51b815260040161057691906124d9565b505050900390565b6001600160a01b0383166115df5760405162461bcd60e51b8152600401610576906124ea565b6001600160a01b0382166116055760405162461bcd60e51b81526004016105769061258a565b600154600160a01b900460ff1661164e576001600160a01b03831660009081526002602052604090205460ff1661164e5760405162461bcd60e51b81526004016105769061254a565b6001600160a01b038316600090815260046020908152604091829020548251808401909352601b83527f434154473a414d4f554e545f455843454544535f42414c414e43450000000000918301919091526116b6916001600160601b0390911690839061157a565b6001600160a01b03848116600090815260046020908152604080832080546001600160601b0319166001600160601b039687161790559286168252908290205482518084019093526014835273434154473a414d4f554e545f4f564552464c4f5760601b9183019190915261172e92169083906117fa565b6001600160a01b038381166000818152600460205260409081902080546001600160601b0319166001600160601b0395909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061179b9085906125d1565b60405180910390a36001600160a01b0380841660009081526005602052604080822054858416835291205461096192918216911683611836565b60008282018381101561076c5760405162461bcd60e51b81526004016105769061253a565b6000838301826001600160601b03808716908316101561182d5760405162461bcd60e51b815260040161057691906124d9565b50949350505050565b816001600160a01b0316836001600160a01b03161415801561186157506000816001600160601b0316115b15610961576001600160a01b0383161561192e576001600160a01b03831660009081526007602052604081205463ffffffff1690816118a15760006118e0565b6001600160a01b0385166000908152600660209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b9050600061191c828560405180604001604052806015815260200174434154473a414d4f554e545f554e444552464c4f5760581b81525061157a565b905061192a86848484611aba565b5050505b6001600160a01b03821615610961576001600160a01b03821660009081526007602052604081205463ffffffff1690816119695760006119a8565b6001600160a01b0384166000908152600660209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b905060006119e3828560405180604001604052806014815260200173434154473a414d4f554e545f4f564552464c4f5760601b8152506117fa565b9050610fda85848484611aba565b6001600160a01b03808316600081815260056020818152604080842080546004845282862054949093528787166001600160a01b031984168117909155905191909516946001600160601b039092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611a75828483611836565b50505050565b4690565b600061076c838360405180604001604052806016815260200175534146454d4154483a5355425f554e444552464c4f5760501b815250611c8c565b6000611afb436040518060400160405280602081526020017f434154473a424c4f434b5f4e554d4245525f455843454544535f333242495453815250611cb0565b905060008463ffffffff16118015611b4457506001600160a01b038516600090815260066020908152604080832063ffffffff6000198901811685529252909120548282169116145b15611ba3576001600160a01b0385166000908152600660209081526040808320600019880163ffffffff168452909152902080546fffffffffffffffffffffffff000000001916600160201b6001600160601b03851602179055611c42565b60408051808201825263ffffffff80841682526001600160601b0380861660208085019182526001600160a01b038b166000818152600683528781208c871682528352878120965187549451909516600160201b026fffffffffffffffffffffffff000000001995871663ffffffff19958616179590951694909417909555938252600790935292909220805460018801909316929091169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051611c7d9291906125ed565b60405180910390a25050505050565b600081848411156115b15760405162461bcd60e51b815260040161057691906124d9565b600081600160201b84106115725760405162461bcd60e51b815260040161057691906124d9565b604080518082019091526000808252602082015290565b803561054681612695565b8035610546816126a9565b8035610546816126b2565b8035610546816126bb565b600060208284031215611d2c57600080fd5b6000611d388484611cee565b949350505050565b60008060408385031215611d5357600080fd5b6000611d5f8585611cee565b9250506020611d7085828601611cee565b9150509250929050565b600080600060608486031215611d8f57600080fd5b6000611d9b8686611cee565b9350506020611dac86828701611cee565b9250506040611dbd86828701611cf9565b9150509250925092565b600080600080600080600060e0888a031215611de257600080fd5b6000611dee8a8a611cee565b9750506020611dff8a828b01611cee565b9650506040611e108a828b01611cf9565b9550506060611e218a828b01611cf9565b9450506080611e328a828b01611d0f565b93505060a0611e438a828b01611cf9565b92505060c0611e548a828b01611cf9565b91505092959891949750929550565b60008060408385031215611e7657600080fd5b6000611e828585611cee565b9250506020611d7085828601611cf9565b60008060008060008060c08789031215611eac57600080fd5b6000611eb88989611cee565b9650506020611ec989828a01611cf9565b9550506040611eda89828a01611cf9565b9450506060611eeb89828a01611d0f565b9350506080611efc89828a01611cf9565b92505060a0611f0d89828a01611cf9565b9150509295509295509295565b60008060408385031215611f2d57600080fd5b6000611f398585611cee565b9250506020611d7085828601611d04565b611f538161261a565b82525050565b611f5381612625565b611f538161262a565b611f53611f778261262a565b61262a565b6000611f8782612608565b611f91818561260c565b9350611fa181856020860161265f565b611faa8161268b565b9093019392505050565b6000611fc160168361260c565b75434154473a46524f4d5f5a45524f5f4144445245535360501b815260200192915050565b6000611ff360168361260c565b7510d05511ce94d251d3905515549157d253959053125160521b815260200192915050565b6000612025600283612615565b61190160f01b815260020192915050565b6000612043600f8361260c565b6e21a0aa239d27a7262cafa7aba722a960891b815260200192915050565b600061206e605283612615565b7f5065726d69742861646472657373206f776e65722c616464726573732073706581527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63656020820152712c75696e7432353620646561646c696e652960701b604082015260520192915050565b60006120e8604383612615565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b600061215360178361260c565b7f434154473a4e4f545f5945545f44455445524d494e4544000000000000000000815260200192915050565b600061218c60148361260c565b73434154473a544f5f5a45524f5f4144445245535360601b815260200192915050565b60006121bc60158361260c565b74534146454d4154483a4144445f4f564552464c4f5760581b815260200192915050565b60006121ed60178361260c565b7f434154473a544f5f4e4f545f57484954454c4953544544000000000000000000815260200192915050565b600061222660128361260c565b7110d05511ce9393d390d157d253959053125160721b815260200192915050565b600061225460168361260c565b7510d05511ce94d251d3905515549157d156141254915160521b815260200192915050565b600061228660118361260c565b7010d05511ce95539055551213d492569151607a1b815260200192915050565b60006122b3603a83612615565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b600061231260158361260c565b74434154473a3a544f5f5a45524f5f4144445245535360581b815260200192915050565b611f5381612639565b611f5381612642565b611f5381612654565b611f5381612648565b600061236582612018565b91506123718285611f6b565b6020820191506123818284611f6b565b5060200192915050565b600061054682612061565b6000610546826120db565b6000610546826122a6565b602081016105468284611f4a565b604081016123c88285611f4a565b61076c6020830184611f4a565b602081016105468284611f59565b602081016105468284611f62565b60c081016123ff8289611f62565b61240c6020830188611f4a565b6124196040830187611f4a565b6124266060830186611f62565b6124336080830185611f62565b61244060a0830184611f62565b979650505050505050565b608081016124598287611f62565b6124666020830186611f4a565b6124736040830185611f62565b6124806060830184611f62565b95945050505050565b608081016124978287611f62565b6124a46020830186611f62565b6124b16040830185611f62565b6124806060830184611f4a565b608081016124cc8287611f62565b612466602083018661233f565b6020808252810161076c8184611f7c565b6020808252810161054681611fb4565b6020808252810161054681611fe6565b6020808252810161054681612036565b6020808252810161054681612146565b602080825281016105468161217f565b60208082528101610546816121af565b60208082528101610546816121e0565b6020808252810161054681612219565b6020808252810161054681612247565b6020808252810161054681612279565b6020808252810161054681612305565b602081016105468284612336565b604081016125b68285612336565b61076c6020830184612351565b60208101610546828461233f565b602081016105468284612348565b602081016105468284612351565b604081016125fb8285612348565b61076c6020830184612348565b5190565b90815260200190565b919050565b60006105468261262d565b151590565b90565b6001600160a01b031690565b63ffffffff1690565b60ff1690565b6001600160601b031690565b600061054682612648565b60005b8381101561267a578181015183820152602001612662565b83811115611a755750506000910152565b601f01601f191690565b61269e8161261a565b811461099b57600080fd5b61269e8161262a565b61269e81612639565b61269e8161264256fe434154473a414d4f554e545f455843454544535f393642495453000000000000a365627a7a723158202003b01120a5ea583ae830543649a83d846783249cc5dd372d66e08fd240fa896c6578706572696d656e74616cf564736f6c63430005100040
0x608060405269152d02c7e14af68000006000556001805460ff60a81b1916600160a81b1790553480156200003257600080fd5b506040516200295e3803806200295e83398101604081905262000055916200015e565b600080546001600160a01b0383168083526004602052604080842080546001600160601b0319166001600160601b0390941693909317909255825491519092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620000c39190620001d4565b60405180910390a3600180546001600160a01b0319166001600160a01b0383161790556040517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c906200011b906000908490620001ae565b60405180910390a16001600160a01b03166000908152600260205260409020805460ff1916600117905562000227565b805162000158816200020d565b92915050565b6000602082840312156200017157600080fd5b60006200017f84846200014b565b949350505050565b6200019281620001f9565b82525050565b6200019281620001e4565b6200019281620001f6565b60408101620001be828562000187565b620001cd602083018462000198565b9392505050565b60208101620001588284620001a3565b60006001600160a01b03821662000158565b90565b6000620001588260006200015882620001e4565b6200021881620001e4565b81146200022457600080fd5b50565b61272780620002376000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80637bbdad111161011a578063b4b5ea57116100ad578063dd62ed3e1161007c578063dd62ed3e146103f6578063e43252d714610409578063e7a324dc1461041c578063eb9253c014610424578063f1127ed814610437576101fb565b8063b4b5ea57146103b5578063b74ca805146103c8578063c3cda520146103d0578063d505accf146103e3576101fb565b80638eeb1017116100e95780638eeb10171461037f57806395d89b41146103875780639b19251a1461038f578063a9059cbb146103a2576101fb565b80637bbdad11146103495780637ecebe00146103515780638ab1d681146103645780638da5cb5b14610377576101fb565b80633ecd4255116101925780635c19a95c116101615780635c19a95c146102e35780636fcfff45146102f657806370a0823114610316578063782d6fe114610329576101fb565b80633ecd4255146102a057806340c10f19146102a857806354840c6e146102bb578063587cde1e146102c3576101fb565b806320606b70116101ce57806320606b701461026857806323b872dd1461027057806330adf81f14610283578063313ce5671461028b576101fb565b806306fdde0314610200578063095ea7b31461021e57806313af40351461023e57806318160ddd14610253575b600080fd5b610208610458565b60405161021591906124d9565b60405180910390f35b61023161022c366004611e63565b610482565b60405161021591906123d5565b61025161024c366004611d1a565b61054c565b005b61025b6105e8565b60405161021591906123e3565b61025b6105ee565b61023161027e366004611d7a565b610605565b61025b610773565b61029361077f565b60405161021591906125c3565b610231610784565b6102516102b6366004611e63565b610794565b610231610966565b6102d66102d1366004611d1a565b610976565b60405161021591906123ac565b6102516102f1366004611d1a565b610991565b610309610304366004611d1a565b61099e565b604051610215919061259a565b61025b610324366004611d1a565b6109b6565b61033c610337366004611e63565b6109da565b60405161021591906125df565b610251610be8565b61025b61035f366004611d1a565b610c28565b610251610372366004611d1a565b610c3a565b6102d6610c85565b610251610c94565b610208610ccd565b61023161039d366004611d1a565b610ced565b6102316103b0366004611e63565b610d02565b61033c6103c3366004611d1a565b610d49565b610251610db9565b6102516103de366004611e93565b610df2565b6102516103f1366004611dc7565b610fe2565b61025b610404366004611d40565b6112df565b610251610417366004611d1a565b611313565b61025b611361565b610251610432366004611e63565b61136d565b61044a610445366004611f1a565b611516565b6040516102159291906125a8565b6040518060400160405280600e81526020016d43415420476f7665726e616e636560901b81525081565b60008060001983141561049857506000196104c8565b6104c5836040518060400160405280601a81526020016000805160206126c583398151915281525061154b565b90505b3360008181526003602090815260408083206001600160a01b03891680855292529182902080546001600160601b0319166001600160601b03861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105389085906125d1565b60405180910390a360019150505b92915050565b6001546001600160a01b0316331461057f5760405162461bcd60e51b81526004016105769061250a565b60405180910390fd5b6001546040517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c916105be916001600160a01b039091169084906123ba565b60405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b60005481565b6040516105fa90612396565b604051809103902081565b6001600160a01b038316600090815260036020908152604080832033808552908352818420548251808401909352601a83526000805160206126c583398151915293830193909352916001600160601b031690839061066590869061154b565b9050866001600160a01b0316836001600160a01b03161415801561069257506001600160601b0382811614155b156107595760006106d983836040518060400160405280601d81526020017f434154473a414d4f554e545f455843454544535f414c4c4f57414e434500000081525061157a565b6001600160a01b038981166000818152600360209081526040808320948a16808452949091529081902080546001600160601b0319166001600160601b0386161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061074f9085906125d1565b60405180910390a3505b6107648787836115b9565b600193505050505b9392505050565b6040516105fa9061238b565b601281565b600154600160a81b900460ff1681565b6001546001600160a01b031633146107be5760405162461bcd60e51b81526004016105769061250a565b6001600160a01b0382166107e45760405162461bcd60e51b81526004016105769061252a565b6000610813826040518060400160405280601a81526020016000805160206126c583398151915281525061154b565b905061086861082d600054836001600160601b03166117d5565b6040518060400160405280601f81526020017f434154473a544f54414c535550504c595f455843454544535f3936424954530081525061154b565b6001600160601b0390811660009081556001600160a01b0385168152600460209081526040918290205482518084019093526014835273434154473a414d4f554e545f4f564552464c4f5760601b918301919091526108ca92169083906117fa565b6001600160a01b03841660008181526004602052604080822080546001600160601b0319166001600160601b03959095169490941790935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109349085906125d1565b60405180910390a36001600160a01b03808416600090815260056020526040812054610961921683611836565b505050565b600154600160a01b900460ff1681565b6005602052600090815260409020546001600160a01b031681565b61099b33826119f1565b50565b60076020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600460205260409020546001600160601b031690565b60004382106109fb5760405162461bcd60e51b81526004016105769061251a565b6001600160a01b03831660009081526007602052604090205463ffffffff1680610a29576000915050610546565b6001600160a01b038416600090815260066020908152604080832063ffffffff600019860181168552925290912054168310610aa5576001600160a01b03841660009081526006602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050610546565b6001600160a01b038416600090815260066020908152604080832083805290915290205463ffffffff16831015610ae0576000915050610546565b600060001982015b8163ffffffff168163ffffffff161115610ba357600282820363ffffffff16048103610b12611cd7565b506001600160a01b038716600090815260066020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415610b7e576020015194506105469350505050565b805163ffffffff16871115610b9557819350610b9c565b6001820392505b5050610ae8565b506001600160a01b038516600090815260066020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b6001546001600160a01b03163314610c125760405162461bcd60e51b81526004016105769061250a565b6001805461ffff60a01b1916600160a01b179055565b60086020526000908152604090205481565b6001546001600160a01b03163314610c645760405162461bcd60e51b81526004016105769061250a565b6001600160a01b03166000908152600260205260409020805460ff19169055565b6001546001600160a01b031681565b6001546001600160a01b03163314610cbe5760405162461bcd60e51b81526004016105769061250a565b6001805460ff60a01b19169055565b604051806040016040528060048152602001634341544760e01b81525081565b60026020526000908152604090205460ff1681565b600080610d32836040518060400160405280601a81526020016000805160206126c583398151915281525061154b565b9050610d3f3385836115b9565b5060019392505050565b6001600160a01b03811660009081526007602052604081205463ffffffff1680610d7457600061076c565b6001600160a01b0383166000908152600660209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03169392505050565b6001546001600160a01b03163314610de35760405162461bcd60e51b81526004016105769061250a565b6001805460ff60a81b19169055565b6000604051610e0090612396565b60408051918290038220828201909152600e82526d43415420476f7665726e616e636560901b6020909201919091527f1a4dc32364846c43de86b9582edec2f3c2eaee1c86d42b3f334f150f60949d44610e58611a7b565b30604051602001610e6c9493929190612489565b6040516020818303038152906040528051906020012090506000604051610e92906123a1565b604051908190038120610ead918a908a908a9060200161244b565b60405160208183030381529060405280519060200120905060008282604051602001610eda92919061235a565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610f1794939291906124be565b6020604051602081039080840390855afa158015610f39573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610f6c5760405162461bcd60e51b8152600401610576906124fa565b6001600160a01b03811660009081526008602052604090208054600181019091558914610fab5760405162461bcd60e51b81526004016105769061255a565b87421115610fcb5760405162461bcd60e51b81526004016105769061256a565b610fd5818b6119f1565b505050505b505050505050565b6000600019861415610ff75750600019611027565b611024866040518060400160405280601a81526020016000805160206126c583398151915281525061154b565b90505b600060405161103590612396565b60408051918290038220828201909152600e82526d43415420476f7665726e616e636560901b6020909201919091527f1a4dc32364846c43de86b9582edec2f3c2eaee1c86d42b3f334f150f60949d4461108d611a7b565b306040516020016110a19493929190612489565b60405160208183030381529060405280519060200120905060006040516110c79061238b565b604080519182900382206001600160a01b038d166000908152600860209081529290208054600181019091556111099391928e928e928e9290918e91016123f1565b6040516020818303038152906040528051906020012090506000828260405160200161113692919061235a565b60405160208183030381529060405280519060200120905060006001828989896040516000815260200160405260405161117394939291906124be565b6020604051602081039080840390855afa158015611195573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111c85760405162461bcd60e51b8152600401610576906124fa565b8b6001600160a01b0316816001600160a01b0316146111f95760405162461bcd60e51b81526004016105769061257a565b884211156112195760405162461bcd60e51b81526004016105769061256a565b84600360008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b031602179055508a6001600160a01b03168c6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516112c991906125d1565b60405180910390a3505050505050505050505050565b6001600160a01b0391821660009081526003602090815260408083209390941682529190915220546001600160601b031690565b6001546001600160a01b0316331461133d5760405162461bcd60e51b81526004016105769061250a565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6040516105fa906123a1565b6001546001600160a01b031633146113975760405162461bcd60e51b81526004016105769061250a565b600154600160a81b900460ff166113ad57600080fd5b60006113dc826040518060400160405280601a81526020016000805160206126c583398151915281525061154b565b905061141f6113f6600054836001600160601b0316611a7f565b6040518060400160405280601a81526020016000805160206126c583398151915281525061154b565b6001600160601b0390811660009081556001600160a01b0385168152600460209081526040918290205482518084019093526014835273434154473a414d4f554e545f4f564552464c4f5760601b91830191909152611481921690839061157a565b6001600160a01b03841660008181526004602052604080822080546001600160601b0319166001600160601b03959095169490941790935591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114e89085906125d1565b60405180910390a36001600160a01b0380841660009081526005602052604081205461096192169083611836565b600660209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b600081600160601b84106115725760405162461bcd60e51b815260040161057691906124d9565b509192915050565b6000836001600160601b0316836001600160601b0316111582906115b15760405162461bcd60e51b815260040161057691906124d9565b505050900390565b6001600160a01b0383166115df5760405162461bcd60e51b8152600401610576906124ea565b6001600160a01b0382166116055760405162461bcd60e51b81526004016105769061258a565b600154600160a01b900460ff1661164e576001600160a01b03831660009081526002602052604090205460ff1661164e5760405162461bcd60e51b81526004016105769061254a565b6001600160a01b038316600090815260046020908152604091829020548251808401909352601b83527f434154473a414d4f554e545f455843454544535f42414c414e43450000000000918301919091526116b6916001600160601b0390911690839061157a565b6001600160a01b03848116600090815260046020908152604080832080546001600160601b0319166001600160601b039687161790559286168252908290205482518084019093526014835273434154473a414d4f554e545f4f564552464c4f5760601b9183019190915261172e92169083906117fa565b6001600160a01b038381166000818152600460205260409081902080546001600160601b0319166001600160601b0395909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061179b9085906125d1565b60405180910390a36001600160a01b0380841660009081526005602052604080822054858416835291205461096192918216911683611836565b60008282018381101561076c5760405162461bcd60e51b81526004016105769061253a565b6000838301826001600160601b03808716908316101561182d5760405162461bcd60e51b815260040161057691906124d9565b50949350505050565b816001600160a01b0316836001600160a01b03161415801561186157506000816001600160601b0316115b15610961576001600160a01b0383161561192e576001600160a01b03831660009081526007602052604081205463ffffffff1690816118a15760006118e0565b6001600160a01b0385166000908152600660209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b9050600061191c828560405180604001604052806015815260200174434154473a414d4f554e545f554e444552464c4f5760581b81525061157a565b905061192a86848484611aba565b5050505b6001600160a01b03821615610961576001600160a01b03821660009081526007602052604081205463ffffffff1690816119695760006119a8565b6001600160a01b0384166000908152600660209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b905060006119e3828560405180604001604052806014815260200173434154473a414d4f554e545f4f564552464c4f5760601b8152506117fa565b9050610fda85848484611aba565b6001600160a01b03808316600081815260056020818152604080842080546004845282862054949093528787166001600160a01b031984168117909155905191909516946001600160601b039092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611a75828483611836565b50505050565b4690565b600061076c838360405180604001604052806016815260200175534146454d4154483a5355425f554e444552464c4f5760501b815250611c8c565b6000611afb436040518060400160405280602081526020017f434154473a424c4f434b5f4e554d4245525f455843454544535f333242495453815250611cb0565b905060008463ffffffff16118015611b4457506001600160a01b038516600090815260066020908152604080832063ffffffff6000198901811685529252909120548282169116145b15611ba3576001600160a01b0385166000908152600660209081526040808320600019880163ffffffff168452909152902080546fffffffffffffffffffffffff000000001916600160201b6001600160601b03851602179055611c42565b60408051808201825263ffffffff80841682526001600160601b0380861660208085019182526001600160a01b038b166000818152600683528781208c871682528352878120965187549451909516600160201b026fffffffffffffffffffffffff000000001995871663ffffffff19958616179590951694909417909555938252600790935292909220805460018801909316929091169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051611c7d9291906125ed565b60405180910390a25050505050565b600081848411156115b15760405162461bcd60e51b815260040161057691906124d9565b600081600160201b84106115725760405162461bcd60e51b815260040161057691906124d9565b604080518082019091526000808252602082015290565b803561054681612695565b8035610546816126a9565b8035610546816126b2565b8035610546816126bb565b600060208284031215611d2c57600080fd5b6000611d388484611cee565b949350505050565b60008060408385031215611d5357600080fd5b6000611d5f8585611cee565b9250506020611d7085828601611cee565b9150509250929050565b600080600060608486031215611d8f57600080fd5b6000611d9b8686611cee565b9350506020611dac86828701611cee565b9250506040611dbd86828701611cf9565b9150509250925092565b600080600080600080600060e0888a031215611de257600080fd5b6000611dee8a8a611cee565b9750506020611dff8a828b01611cee565b9650506040611e108a828b01611cf9565b9550506060611e218a828b01611cf9565b9450506080611e328a828b01611d0f565b93505060a0611e438a828b01611cf9565b92505060c0611e548a828b01611cf9565b91505092959891949750929550565b60008060408385031215611e7657600080fd5b6000611e828585611cee565b9250506020611d7085828601611cf9565b60008060008060008060c08789031215611eac57600080fd5b6000611eb88989611cee565b9650506020611ec989828a01611cf9565b9550506040611eda89828a01611cf9565b9450506060611eeb89828a01611d0f565b9350506080611efc89828a01611cf9565b92505060a0611f0d89828a01611cf9565b9150509295509295509295565b60008060408385031215611f2d57600080fd5b6000611f398585611cee565b9250506020611d7085828601611d04565b611f538161261a565b82525050565b611f5381612625565b611f538161262a565b611f53611f778261262a565b61262a565b6000611f8782612608565b611f91818561260c565b9350611fa181856020860161265f565b611faa8161268b565b9093019392505050565b6000611fc160168361260c565b75434154473a46524f4d5f5a45524f5f4144445245535360501b815260200192915050565b6000611ff360168361260c565b7510d05511ce94d251d3905515549157d253959053125160521b815260200192915050565b6000612025600283612615565b61190160f01b815260020192915050565b6000612043600f8361260c565b6e21a0aa239d27a7262cafa7aba722a960891b815260200192915050565b600061206e605283612615565b7f5065726d69742861646472657373206f776e65722c616464726573732073706581527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63656020820152712c75696e7432353620646561646c696e652960701b604082015260520192915050565b60006120e8604383612615565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b600061215360178361260c565b7f434154473a4e4f545f5945545f44455445524d494e4544000000000000000000815260200192915050565b600061218c60148361260c565b73434154473a544f5f5a45524f5f4144445245535360601b815260200192915050565b60006121bc60158361260c565b74534146454d4154483a4144445f4f564552464c4f5760581b815260200192915050565b60006121ed60178361260c565b7f434154473a544f5f4e4f545f57484954454c4953544544000000000000000000815260200192915050565b600061222660128361260c565b7110d05511ce9393d390d157d253959053125160721b815260200192915050565b600061225460168361260c565b7510d05511ce94d251d3905515549157d156141254915160521b815260200192915050565b600061228660118361260c565b7010d05511ce95539055551213d492569151607a1b815260200192915050565b60006122b3603a83612615565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b600061231260158361260c565b74434154473a3a544f5f5a45524f5f4144445245535360581b815260200192915050565b611f5381612639565b611f5381612642565b611f5381612654565b611f5381612648565b600061236582612018565b91506123718285611f6b565b6020820191506123818284611f6b565b5060200192915050565b600061054682612061565b6000610546826120db565b6000610546826122a6565b602081016105468284611f4a565b604081016123c88285611f4a565b61076c6020830184611f4a565b602081016105468284611f59565b602081016105468284611f62565b60c081016123ff8289611f62565b61240c6020830188611f4a565b6124196040830187611f4a565b6124266060830186611f62565b6124336080830185611f62565b61244060a0830184611f62565b979650505050505050565b608081016124598287611f62565b6124666020830186611f4a565b6124736040830185611f62565b6124806060830184611f62565b95945050505050565b608081016124978287611f62565b6124a46020830186611f62565b6124b16040830185611f62565b6124806060830184611f4a565b608081016124cc8287611f62565b612466602083018661233f565b6020808252810161076c8184611f7c565b6020808252810161054681611fb4565b6020808252810161054681611fe6565b6020808252810161054681612036565b6020808252810161054681612146565b602080825281016105468161217f565b60208082528101610546816121af565b60208082528101610546816121e0565b6020808252810161054681612219565b6020808252810161054681612247565b6020808252810161054681612279565b6020808252810161054681612305565b602081016105468284612336565b604081016125b68285612336565b61076c6020830184612351565b60208101610546828461233f565b602081016105468284612348565b602081016105468284612351565b604081016125fb8285612348565b61076c6020830184612348565b5190565b90815260200190565b919050565b60006105468261262d565b151590565b90565b6001600160a01b031690565b63ffffffff1690565b60ff1690565b6001600160601b031690565b600061054682612648565b60005b8381101561267a578181015183820152602001612662565b83811115611a755750506000910152565b601f01601f191690565b61269e8161261a565b811461099b57600080fd5b61269e8161262a565b61269e81612639565b61269e8161264256fe434154473a414d4f554e545f455843454544535f393642495453000000000000a365627a7a723158202003b01120a5ea583ae830543649a83d846783249cc5dd372d66e08fd240fa896c6578706572696d656e74616cf564736f6c634300051000400000000000000000000000001dd1fb688200be97d312399ece57cda7fdaa5aab