60806040526000609a5534801561001557600080fd5b506137ed806100256000396000f3fe60806040526004361061025c5760003560e01c806370a0823111610144578063aaf10f42116100b6578063d536f19f1161007a578063d536f19f146106f8578063d716a1b714610718578063d784d4261461072d578063e985e9c51461074d578063f4481f5b1461076d578063f851a4401461078d57600080fd5b8063aaf10f4214610663578063b6afc4dc14610678578063b88d4fde14610698578063ba9e186e146106b8578063c87b56dd146106d857600080fd5b806382ce11fa1161010857806382ce11fa146105c457806389f1258c146105e45780638da5cb5b146105f957806395d89b411461060e578063a0bcfc7f14610623578063a22cb4651461064357600080fd5b806370a082311461052f57806370a8e6d51461054f5780637152ec951461056f578063779ad133146105845780637b2f0870146105a457600080fd5b80633408e470116101dd57806358aadb72116101a157806358aadb721461046f5780636352211e1461048f578063675cfac7146104af5780636ebeefca146104cf5780636fe1b9da146104ef578063704b6c021461050f57600080fd5b80633408e470146103e75780633d1d74a8146103fa5780633e63eb2a1461041a57806340c10f191461042f57806342842e0e1461044f57600080fd5b80630f7e5970116102245780630f7e59701461032557806320379ee51461035257806323b872dd146103715780632a81ae67146103915780632d0335ab146103b157600080fd5b806301ffc9a71461026157806306fdde0314610296578063081812fc146102b8578063095ea7b3146102f05780630c53c51c14610312575b600080fd5b34801561026d57600080fd5b5061028161027c366004613024565b6107a2565b60405190151581526020015b60405180910390f35b3480156102a257600080fd5b506102ab6107f4565b60405161028d91906133f2565b3480156102c457600080fd5b506102d86102d336600461300c565b610886565b6040516001600160a01b03909116815260200161028d565b3480156102fc57600080fd5b5061031061030b366004612f28565b610920565b005b6102ab610320366004612eae565b610a48565b34801561033157600080fd5b506102ab604051806040016040528060018152602001603160f81b81525081565b34801561035e57600080fd5b506097545b60405190815260200161028d565b34801561037d57600080fd5b5061031061038c366004612dd4565b610c32565b34801561039d57600080fd5b506103106103ac366004613078565b610c6a565b3480156103bd57600080fd5b506103636103cc366004612d80565b6001600160a01b031660009081526098602052604090205490565b3480156103f357600080fd5b5046610363565b34801561040657600080fd5b506102ab61041536600461300c565b610cb0565b34801561042657600080fd5b506102ab610cc3565b34801561043b57600080fd5b5061031061044a366004612f28565b610d51565b34801561045b57600080fd5b5061031061046a366004612dd4565b610d8a565b34801561047b57600080fd5b506102ab61048a36600461300c565b610da5565b34801561049b57600080fd5b506102d86104aa36600461300c565b610db3565b3480156104bb57600080fd5b506102ab6104ca36600461300c565b610e2a565b3480156104db57600080fd5b506102ab6104ea36600461300c565b610e3d565b3480156104fb57600080fd5b506102ab61050a36600461300c565b610e4b565b34801561051b57600080fd5b5061031061052a366004612d80565b610e5e565b34801561053b57600080fd5b5061036361054a366004612d80565b610eef565b34801561055b57600080fd5b5061031061056a3660046130aa565b610f76565b34801561057b57600080fd5b506102ab61107f565b34801561059057600080fd5b506102ab61059f36600461300c565b61108c565b3480156105b057600080fd5b506102ab6105bf36600461300c565b61113b565b3480156105d057600080fd5b506102ab6105df36600461300c565b611149565b3480156105f057600080fd5b5061031061115c565b34801561060557600080fd5b506102d8611197565b34801561061a57600080fd5b506102ab6111a6565b34801561062f57600080fd5b5061031061063e366004613078565b6111b5565b34801561064f57600080fd5b5061031061065e366004612e7d565b6111f7565b34801561066f57600080fd5b506102d8611209565b34801561068457600080fd5b50610310610693366004612f53565b61123c565b3480156106a457600080fd5b506103106106b3366004612e14565b6112c3565b3480156106c457600080fd5b506102ab6106d336600461300c565b611302565b3480156106e457600080fd5b506102ab6106f336600461300c565b611310565b34801561070457600080fd5b50610310610713366004613078565b6113eb565b34801561072457600080fd5b506102ab61142d565b34801561073957600080fd5b50610310610748366004612d80565b61143a565b34801561075957600080fd5b50610281610768366004612d9c565b611511565b34801561077957600080fd5b506102ab61078836600461300c565b6115e1565b34801561079957600080fd5b506102d8611618565b60006001600160e01b031982166380ac58cd60e01b14806107d357506001600160e01b03198216635b5e139f60e01b145b806107ee57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060606580546108039061360e565b80601f016020809104026020016040519081016040528092919081815260200182805461082f9061360e565b801561087c5780601f106108515761010080835404028352916020019161087c565b820191906000526020600020905b81548152906001019060200180831161085f57829003601f168201915b5050505050905090565b6000818152606760205260408120546001600160a01b03166109045760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152606960205260409020546001600160a01b031690565b600061092b82610db3565b9050806001600160a01b0316836001600160a01b031614156109995760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016108fb565b806001600160a01b03166109ab611640565b6001600160a01b031614806109c757506109c781610768611640565b610a395760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016108fb565b610a43838361164a565b505050565b60408051606081810183526001600160a01b03881660008181526098602090815290859020548452830152918101869052610a8687828787876116b8565b610adc5760405162461bcd60e51b815260206004820152602160248201527f5369676e657220616e64207369676e617475726520646f206e6f74206d6174636044820152600d60fb1b60648201526084016108fb565b6001600160a01b038716600090815260986020526040902054610b009060016117a8565b6001600160a01b0388166000908152609860205260409081902091909155517f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b90610b5090899033908a90613380565b60405180910390a1600080306001600160a01b0316888a604051602001610b78929190613264565b60408051601f1981840301815290829052610b9291613248565b6000604051808303816000865af19150503d8060008114610bcf576040519150601f19603f3d011682016040523d82523d6000602084013e610bd4565b606091505b509150915081610c265760405162461bcd60e51b815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c0000000060448201526064016108fb565b98975050505050505050565b610c43610c3d611640565b826117b4565b610c5f5760405162461bcd60e51b81526004016108fb906134e8565b610a43838383611883565b33610c73611618565b6001600160a01b031614610c995760405162461bcd60e51b81526004016108fb90613457565b8051610cac90609c906020840190612c6d565b5050565b60606107ee610cbe83611149565b611a23565b609d8054610cd09061360e565b80601f0160208091040260200160405190810160405280929190818152602001828054610cfc9061360e565b8015610d495780601f10610d1e57610100808354040283529160200191610d49565b820191906000526020600020905b815481529060010190602001808311610d2c57829003601f168201915b505050505081565b33610d5a611618565b6001600160a01b031614610d805760405162461bcd60e51b81526004016108fb90613457565b610cac8282611a36565b610a43838383604051806020016040528060008152506112c3565b60606107ee610cbe83611302565b6000818152606760205260408120546001600160a01b0316806107ee5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016108fb565b60606107ee610e38836115e1565b611a50565b60606107ee610e388361108c565b60606107ee610e5983611149565b611d41565b33610e67611618565b6001600160a01b031614610e8d5760405162461bcd60e51b81526004016108fb90613457565b6001600160a01b038116610ee35760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964206e657741646d696e2061646472657373000000000000000060448201526064016108fb565b610eec81611d54565b50565b60006001600160a01b038216610f5a5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016108fb565b506001600160a01b031660009081526068602052604090205490565b33610f7f611618565b6001600160a01b031614610fa55760405162461bcd60e51b81526004016108fb90613457565b600054610100900460ff1680610fbe575060005460ff16155b610fda5760405162461bcd60e51b81526004016108fb9061349a565b600054610100900460ff16158015610ffc576000805461ffff19166101011790555b61100587611d7b565b61100d611df0565b611015611df0565b61101f8787611e5b565b61102885611ef0565b835161103b90609b906020870190612c6d565b50825161104f90609c906020860190612c6d565b50815161106390609d906020850190612c6d565b508015611076576000805461ff00191690555b50505050505050565b609c8054610cd09061360e565b6000818152606760205260409020546060906001600160a01b03166110e95760405162461bcd60e51b8152602060048201526013602482015272151bdad95b88191bd95cdb89dd08195e1a5cdd606a1b60448201526064016108fb565b6040517f546f74616c6974792e5473756b616d6f746f2e486964656b69000000000000006020820152603981018390526107ee90605901604051602081830303815290604052805190602001206115e1565b60606107ee610e5983611302565b60606107ee611157836115e1565b611f77565b33611165611618565b6001600160a01b03161461118b5760405162461bcd60e51b81526004016108fb90613457565b6111956000611d54565b565b60006111a1611618565b905090565b6060606680546108039061360e565b336111be611618565b6001600160a01b0316146111e45760405162461bcd60e51b81526004016108fb90613457565b8051610cac90609d906020840190612c6d565b610cac611202611640565b83836123da565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b546001600160a01b0316919050565b33611245611618565b6001600160a01b03161461126b5760405162461bcd60e51b81526004016108fb90613457565b60005b8251811015610a43576112b383828151811061129a57634e487b7160e01b600052603260045260246000fd5b602002602001015182846112ae9190613569565b611a36565b6112bc81613649565b905061126e565b6112d46112ce611640565b836117b4565b6112f05760405162461bcd60e51b81526004016108fb906134e8565b6112fc848484846124a9565b50505050565b60606107ee6111578361108c565b6000818152606760205260409020546060906001600160a01b031661138f5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016108fb565b60006113996124dc565b905060008151116113b957604051806020016040528060008152506113e4565b806113c3846124eb565b6040516020016113d492919061329b565b6040516020818303038152906040525b9392505050565b336113f4611618565b6001600160a01b03161461141a5760405162461bcd60e51b81526004016108fb90613457565b8051610cac90609b906020840190612c6d565b609b8054610cd09061360e565b33611443611618565b6001600160a01b0316146114695760405162461bcd60e51b81526004016108fb90613457565b803b6114cd5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108fb565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60995460405163c455279160e01b81526001600160a01b03848116600483015260009281169190841690829063c45527919060240160206040518083038186803b15801561155e57600080fd5b505afa158015611572573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611596919061305c565b6001600160a01b031614156115af5760019150506107ee565b6001600160a01b038085166000908152606a602090815260408083209387168352929052205460ff165b949350505050565b6060609b6115ee83612604565b609c604051602001611602939291906132ca565b6040516020818303038152906040529050919050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610361122d565b60006111a1612658565b600081815260696020526040902080546001600160a01b0319166001600160a01b038416908117909155819061167f82610db3565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006001600160a01b03861661171e5760405162461bcd60e51b815260206004820152602560248201527f4e61746976654d6574615472616e73616374696f6e3a20494e56414c49445f5360448201526424a3a722a960d91b60648201526084016108fb565b600161173161172c876126b5565b612732565b6040805160008152602081018083529290925260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa15801561177f573d6000803e3d6000fd5b505050602060405103516001600160a01b0316866001600160a01b031614905095945050505050565b60006113e48284613569565b6000818152606760205260408120546001600160a01b031661182d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016108fb565b600061183883610db3565b9050806001600160a01b0316846001600160a01b031614806118735750836001600160a01b031661186884610886565b6001600160a01b0316145b806115d957506115d98185611511565b826001600160a01b031661189682610db3565b6001600160a01b0316146118fe5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016108fb565b6001600160a01b0382166119605760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016108fb565b61196b60008261164a565b6001600160a01b03831660009081526068602052604081208054600192906119949084906135b4565b90915550506001600160a01b03821660009081526068602052604081208054600192906119c2908490613569565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b606081604051602001611602919061333b565b610cac828260405180602001604052806000815250612762565b604080518082019091526005815264262334343b60d81b60208201528151606091908390600090611a8390611f40613569565b6001600160401b03811115611aa857634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611ad2576020820181803683370190505b5080518351919250906000805b82811015611c5157858181518110611b0757634e487b7160e01b600052603260045260246000fd5b6020910101516001600160f81b031916600b60fa1b1415611c41576000611b2e83836135b4565b905084611b3c826005613569565b1115611be1576000818751611b519190613569565b611b5d906103e8613569565b6001600160401b03811115611b8257634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611bac576020820181803683370190505b5090506000868851611bbe91906135b4565b90508060208901818160045afa50819750808851611bdc91906135b4565b965050505b6000858751611bf091906135b4565b9050611bfd826005613569565b611c0790876135b4565b955081816020890101838660208c010160045afa506005828260208a010101600560208c0160045afa50611c3c836001613569565b935050505b611c4a81613649565b9050611adf565b808214611d34576000611c6483836135b4565b905084811115611d01576000818751611c7d9190613569565b6001600160401b03811115611ca257634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611ccc576020820181803683370190505b5090506000868851611cde91906135b4565b90508060208901818160045afa50819750808851611cfc91906135b4565b965050505b6000858751611d1091906135b4565b9050611d1c82876135b4565b955081816020890101838660208c010160045afa5050505b5092979650505050505050565b60608160405160200161160291906132fd565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036114f0565b600054610100900460ff1680611d94575060005460ff16155b611db05760405162461bcd60e51b81526004016108fb9061349a565b600054610100900460ff16158015611dd2576000805461ffff19166101011790555b611ddb82612795565b8015610cac576000805461ff00191690555050565b600054610100900460ff1680611e09575060005460ff16155b611e255760405162461bcd60e51b81526004016108fb9061349a565b600054610100900460ff16158015611e47576000805461ffff19166101011790555b8015610eec576000805461ff001916905550565b600054610100900460ff1680611e74575060005460ff16155b611e905760405162461bcd60e51b81526004016108fb9061349a565b600054610100900460ff16158015611eb2576000805461ffff19166101011790555b8251611ec5906065906020860190612c6d565b508151611ed9906066906020850190612c6d565b508015610a43576000805461ff0019169055505050565b600054610100900460ff1680611f09575060005460ff16155b611f255760405162461bcd60e51b81526004016108fb9061349a565b600054610100900460ff16158015611f47576000805461ffff19166101011790555b609980546001600160a01b0319166001600160a01b0384161790558015610cac576000805461ff00191690555050565b6040805160608181018352828252918391600091613778602083013982519091508190600090611fa8906008613595565b90506000611fb7600683613581565b9050611fc4600683613664565b15611fd557611fd281613649565b90505b6000611fe2600483613664565b9050801561200257611ff58160046135b4565b611fff9083613569565b91505b6000826001600160401b0381111561202a57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612054576020820181803683370190505b5090506000805b88518110156123cb576000818a5161207391906135b4565b905060008a838151811061209757634e487b7160e01b600052603260045260246000fd5b016020015160f81c905060008060018411156120e2578c6120b9866001613569565b815181106120d757634e487b7160e01b600052603260045260246000fd5b016020015160f81c91505b6002841115612120578c6120f7866002613569565b8151811061211557634e487b7160e01b600052603260045260246000fd5b016020015160f81c90505b8a60028460fc16901c8151811061214757634e487b7160e01b600052603260045260246000fd5b602001015160f81c60f81b87878151811061217257634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053508a60048360f016901c600485600316901b17815181106121b957634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b031916876121d4886001613569565b815181106121f257634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506001841115612297578a60068260c016901c600284600f16901b178151811061224257634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b0319168761225d886002613569565b8151811061227b57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506122de565b603d60f81b876122a8886002613569565b815181106122c657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053505b600284111561235f578a81603f168151811061230a57634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b03191687612325886003613569565b8151811061234357634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506123a6565b603d60f81b87612370886003613569565b8151811061238e57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053505b6123b1600487613569565b9550505050506003816123c49190613569565b905061205b565b50909998505050505050505050565b816001600160a01b0316836001600160a01b0316141561243c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016108fb565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6124b4848484611883565b6124c084848484612836565b6112fc5760405162461bcd60e51b81526004016108fb90613405565b6060609d80546108039061360e565b60608161250f5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612539578061252381613649565b91506125329050600a83613581565b9150612513565b6000816001600160401b0381111561256157634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561258b576020820181803683370190505b5090505b84156115d9576125a06001836135b4565b91506125ad600a86613664565b6125b8906030613569565b60f81b8183815181106125db57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506125fd600a86613581565b945061258f565b60608161262b5750506040805180820190915260048152630307830360e41b602082015290565b8160005b811561264e578061263f81613649565b915050600882901c915061262f565b6115d9848261294a565b6000333014156126af57600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031691506126b29050565b50335b90565b60006040518060800160405280604381526020016136e66043913980516020918201208351848301516040808701518051908601209051612715950193845260208401929092526001600160a01b03166040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b600061273d60975490565b60405161190160f01b6020820152602281019190915260428101839052606201612715565b61276c8383612b2b565b6127796000848484612836565b610a435760405162461bcd60e51b81526004016108fb90613405565b6040518060800160405280604f8152602001613729604f9139805160209182012082519282019290922060408051808201825260018152603160f81b90840152805180840194909452838101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608401523060808401524660a0808501919091528151808503909101815260c090930190528151910120609755565b60006001600160a01b0384163b1561293f57836001600160a01b031663150b7a0261285f611640565b8786866040518563ffffffff1660e01b815260040161288194939291906133b5565b602060405180830381600087803b15801561289b57600080fd5b505af19250505080156128cb575060408051601f3d908101601f191682019092526128c891810190613040565b60015b612925573d8080156128f9576040519150601f19603f3d011682016040523d82523d6000602084013e6128fe565b606091505b50805161291d5760405162461bcd60e51b81526004016108fb90613405565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506115d9565b506001949350505050565b60606000612959836002613595565b612964906002613569565b6001600160401b0381111561298957634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156129b3576020820181803683370190505b509050600360fc1b816000815181106129dc57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612a1957634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506000612a3d846002613595565b612a48906001613569565b90505b6001811115612adc576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612a8a57634e487b7160e01b600052603260045260246000fd5b1a60f81b828281518110612aae57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c93612ad5816135f7565b9050612a4b565b5083156113e45760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108fb565b6001600160a01b038216612b815760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016108fb565b6000818152606760205260409020546001600160a01b031615612be65760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016108fb565b6001600160a01b0382166000908152606860205260408120805460019290612c0f908490613569565b909155505060008181526067602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054612c799061360e565b90600052602060002090601f016020900481019282612c9b5760008555612ce1565b82601f10612cb457805160ff1916838001178555612ce1565b82800160010185558215612ce1579182015b82811115612ce1578251825591602001919060010190612cc6565b50612ced929150612cf1565b5090565b5b80821115612ced5760008155600101612cf2565b8035612d11816136ba565b919050565b600082601f830112612d26578081fd5b81356001600160401b03811115612d3f57612d3f6136a4565b612d52601f8201601f1916602001613539565b818152846020838601011115612d66578283fd5b816020850160208301379081016020019190915292915050565b600060208284031215612d91578081fd5b81356113e4816136ba565b60008060408385031215612dae578081fd5b8235612db9816136ba565b91506020830135612dc9816136ba565b809150509250929050565b600080600060608486031215612de8578081fd5b8335612df3816136ba565b92506020840135612e03816136ba565b929592945050506040919091013590565b60008060008060808587031215612e29578081fd5b8435612e34816136ba565b93506020850135612e44816136ba565b92506040850135915060608501356001600160401b03811115612e65578182fd5b612e7187828801612d16565b91505092959194509250565b60008060408385031215612e8f578182fd5b8235612e9a816136ba565b915060208301358015158114612dc9578182fd5b600080600080600060a08688031215612ec5578081fd5b8535612ed0816136ba565b945060208601356001600160401b03811115612eea578182fd5b612ef688828901612d16565b9450506040860135925060608601359150608086013560ff81168114612f1a578182fd5b809150509295509295909350565b60008060408385031215612f3a578182fd5b8235612f45816136ba565b946020939093013593505050565b60008060408385031215612f65578182fd5b82356001600160401b0380821115612f7b578384fd5b818501915085601f830112612f8e578384fd5b8135602082821115612fa257612fa26136a4565b8160051b9250612fb3818401613539565b8281528181019085830185870184018b1015612fcd578889fd5b8896505b84871015612ffb5780359550612fe6866136ba565b85835260019690960195918301918301612fd1565b509997909101359750505050505050565b60006020828403121561301d578081fd5b5035919050565b600060208284031215613035578081fd5b81356113e4816136cf565b600060208284031215613051578081fd5b81516113e4816136cf565b60006020828403121561306d578081fd5b81516113e4816136ba565b600060208284031215613089578081fd5b81356001600160401b0381111561309e578182fd5b6115d984828501612d16565b60008060008060008060c087890312156130c2578384fd5b86356001600160401b03808211156130d8578586fd5b6130e48a838b01612d16565b975060208901359150808211156130f9578586fd5b6131058a838b01612d16565b965061311360408a01612d06565b95506060890135915080821115613128578283fd5b6131348a838b01612d16565b94506080890135915080821115613149578283fd5b6131558a838b01612d16565b935060a089013591508082111561316a578283fd5b5061317789828a01612d16565b9150509295509295509295565b6000815180845261319c8160208601602086016135cb565b601f01601f19169290920160200192915050565b8054600090600181811c90808316806131ca57607f831692505b60208084108214156131ea57634e487b7160e01b86526022600452602486fd5b8180156131fe576001811461320f5761323c565b60ff1986168952848901965061323c565b60008881526020902060005b868110156132345781548b82015290850190830161321b565b505084890196505b50505050505092915050565b6000825161325a8184602087016135cb565b9190910192915050565b600083516132768184602088016135cb565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b600083516132ad8184602088016135cb565b8351908301906132c18183602088016135cb565b01949350505050565b60006132d682866131b0565b84516132e68183602089016135cb565b6132f2818301866131b0565b979650505050505050565b7519185d184e9d195e1d0bda1d1b5b0ed8985cd94d8d0b60521b81526000825161332e8160168501602087016135cb565b9190910160160192915050565b7f646174613a746578742f68746d6c3b626173653634262334343b00000000000081526000825161337381601a8501602087016135cb565b91909101601a0192915050565b6001600160a01b038481168252831660208201526060604082018190526000906133ac90830184613184565b95945050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906133e890830184613184565b9695505050505050565b6020815260006113e46020830184613184565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526023908201527f496d706c656d656e746174696f6e3a2063616c6c6572206973206e6f7420616460408201526236b4b760e91b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b604051601f8201601f191681016001600160401b0381118282101715613561576135616136a4565b604052919050565b6000821982111561357c5761357c613678565b500190565b6000826135905761359061368e565b500490565b60008160001904831182151516156135af576135af613678565b500290565b6000828210156135c6576135c6613678565b500390565b60005b838110156135e65781810151838201526020016135ce565b838111156112fc5750506000910152565b60008161360657613606613678565b506000190190565b600181811c9082168061362257607f821691505b6020821081141561364357634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561365d5761365d613678565b5060010190565b6000826136735761367361368e565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610eec57600080fd5b6001600160e01b031981168114610eec57600080fdfe4d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c6164647265737320766572696679696e67436f6e74726163742c627974657333322073616c74294142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212202caa080ab09a6166f231f1dd7d80eb7e78933cacb43e2d8b12feaf04c2c1257264736f6c63430008040033