0x60a06040523480156200001157600080fd5b506200001c620000b2565b6200002733620000f6565b620000328162000146565b506040516200004460208201620001fb565b601f19828203810183526000601f909201169081526020810160409081526200007191309181016200024a565b60408051601f19818403018152908290526200009192916020016200028e565b60408051601f198184030181529190528051602090910120608052620002c1565b600080604051620000c39062000209565b6001600160a01b039091168152602001604051809103906000f080158015620000f0573d6000803e3d6000fd5b50905090565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200015c81620001f560201b620008f71760201c565b620001d35760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b3b151590565b610a848062001b3b83390190565b6144b580620025bf83390190565b60005b83811015620002345781810151838201526020016200021a565b8381111562000244576000848401525b50505050565b60018060a01b038316815260406020820152600082518060408401526200027981606085016020870162000217565b601f01601f1916919091016060019392505050565b60008351620002a281846020880162000217565b835190830190620002b881836020880162000217565b01949350505050565b60805161185e620002dd6000396000610698015261185e6000f3fe60806040523480156200001157600080fd5b5060043610620000d95760003560e01c80635c60da1b116200008b578063bec595821162000062578063bec5958214620001ea578063e74b981b1462000201578063f2fde38b146200021857600080fd5b80635c60da1b14620001a2578063715018a614620001c15780638da5cb5b14620001cb57600080fd5b806331f8a7f311620000c057806331f8a7f3146200012d5780633659cfe6146200016a57806346904840146200018157600080fd5b80630e986d7f14620000de5780632ccc552e1462000114575b600080fd5b62000101620000ef36600462000ae1565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b6200012b6200012536600462000b25565b6200022f565b005b620001446200013e36600462000bea565b6200037f565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016200010b565b6200012b6200017b36600462000c26565b620004ed565b600254620001449073ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1662000144565b6200012b620005bf565b60005473ffffffffffffffffffffffffffffffffffffffff1662000144565b62000144620001fb36600462000c46565b62000650565b6200012b6200021236600462000c26565b620006c5565b6200012b6200022936600462000c26565b620007c1565b60005473ffffffffffffffffffffffffffffffffffffffff163314620002b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60005b8281101562000379576000848483818110620002d957620002d962000c80565b9050602002016020810190620002f0919062000ae1565b7fffffffff0000000000000000000000000000000000000000000000000000000081166000818152600360205260409081902086905551919250907f42cefd6e3811b091d9fd2b2afcc062bae53bc3290e79b6ee03fa8f2f0c1ac49f906200035b9086815260200190565b60405180910390a25080620003708162000caf565b915050620002b9565b50505050565b604080516000808252602082019092523360a085901b7fffffffffffffffffffffffff000000000000000000000000000000000000000016179081903090604051620003cb9062000ad3565b620003d892919062000d10565b8190604051809103906000f5905080158015620003f9573d6000803e3d6000fd5b506040517f485cc95500000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff85811660248301529193509083169063485cc95590604401600060405180830381600087803b1580156200046e57600080fd5b505af115801562000483573d6000803e3d6000fd5b50506040516bffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff80871693508516915033907f59da2778b791ed5f2be380282959631fc07669426505cc411dce116af076d56e9060200160405180910390a45092915050565b60005473ffffffffffffffffffffffffffffffffffffffff16331462000570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620002ad565b6200057b81620008fd565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff16331462000642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620002ad565b6200064e6000620009d4565b565b60007fffffffffffffffffffffffff000000000000000000000000000000000000000060a083901b1673ffffffffffffffffffffffffffffffffffffffff841617620006bd817f000000000000000000000000000000000000000000000000000000000000000062000a49565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331462000748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620002ad565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f6632de8ab33c46549f7bb29f647ea0d751157b25fe6a14b1bcc7527cdfbeb79c9060200160405180910390a150565b60005473ffffffffffffffffffffffffffffffffffffffff16331462000844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620002ad565b73ffffffffffffffffffffffffffffffffffffffff8116620008e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401620002ad565b620008f481620009d4565b50565b3b151590565b803b6200098d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e7472616374000000000000000000000000006064820152608401620002ad565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080517fff000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000905b9392505050565b610a848062000da583390190565b60006020828403121562000af457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811462000acc57600080fd5b60008060006040848603121562000b3b57600080fd5b833567ffffffffffffffff8082111562000b5457600080fd5b818601915086601f83011262000b6957600080fd5b81358181111562000b7957600080fd5b8760208260051b850101111562000b8f57600080fd5b6020928301989097509590910135949350505050565b80356bffffffffffffffffffffffff8116811462000bc257600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff81168114620008f457600080fd5b6000806040838503121562000bfe57600080fd5b62000c098362000ba5565b9150602083013562000c1b8162000bc7565b809150509250929050565b60006020828403121562000c3957600080fd5b813562000acc8162000bc7565b6000806040838503121562000c5a57600080fd5b823562000c678162000bc7565b915062000c776020840162000ba5565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000d09577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8316815260006020604081840152835180604085015260005b8181101562000d5c5785810183015185820160600152820162000d3e565b8181111562000d6f576000606083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160600194935050505056fe608060405260405162000a8438038062000a848339810160408190526200002691620004d4565b6200005360017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d51620005a2565b60008051602062000a3d83398151915214620000735762000073620005c8565b620000818282600062000089565b50506200064f565b62000094836200016e565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a2600082511180620000d65750805b15620001695762000167836001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200011a57600080fd5b505afa1580156200012f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001559190620005de565b836200031f60201b620000291760201c565b505b505050565b62000184816200034e60201b620000551760201c565b620001e45760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6200026e816001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022257600080fd5b505afa15801562000237573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025d9190620005de565b6200034e60201b620000551760201c565b620002d55760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401620001db565b80620002fe60008051602062000a3d83398151915260001b6200035460201b6200005b1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b606062000347838360405180606001604052806027815260200162000a5d6027913962000357565b9392505050565b3b151590565b90565b6060833b620003b85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001db565b600080856001600160a01b031685604051620003d59190620005fc565b600060405180830381855af49150503d806000811462000412576040519150601f19603f3d011682016040523d82523d6000602084013e62000417565b606091505b5090925090506200042a82828662000434565b9695505050505050565b606083156200044557508162000347565b825115620004565782518084602001fd5b8160405162461bcd60e51b8152600401620001db91906200061a565b80516001600160a01b03811681146200048a57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004c2578181015183820152602001620004a8565b83811115620001675750506000910152565b60008060408385031215620004e857600080fd5b620004f38362000472565b60208401519092506001600160401b03808211156200051157600080fd5b818501915085601f8301126200052657600080fd5b8151818111156200053b576200053b6200048f565b604051601f8201601f19908116603f011681019083821181831017156200056657620005666200048f565b816040528281528860208487010111156200058057600080fd5b62000593836020830160208801620004a5565b80955050505050509250929050565b600082821015620005c357634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600060208284031215620005f157600080fd5b620003478262000472565b6000825162000610818460208701620004a5565b9190910192915050565b60208152600082518060208401526200063b816040850160208701620004a5565b601f01601f19169190910160400192915050565b6103de806200065f6000396000f3fe60806040523661001357610011610017565b005b6100115b61002761002261005e565b610120565b565b606061004e838360405180606001604052806027815260200161038260279139610144565b9392505050565b3b151590565b90565b600061009e7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100e357600080fd5b505afa1580156100f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011b91906102ae565b905090565b3660008037600080366000845af43d6000803e80801561013f573d6000f35b3d6000fd5b6060833b6101d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516102019190610314565b600060405180830381855af49150503d806000811461023c576040519150601f19603f3d011682016040523d82523d6000602084013e610241565b606091505b509150915061025182828661025b565b9695505050505050565b6060831561026a57508161004e565b82511561027a5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d09190610330565b6000602082840312156102c057600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461004e57600080fd5b60005b838110156102ff5781810151838201526020016102e7565b8381111561030e576000848401525b50505050565b600082516103268184602087016102e4565b9190910192915050565b602081526000825180602084015261034f8160408501602087016102e4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cc40463d762d54130ecace4a06e8dae4a0d1c925a882d9104aa13a995affe78c64736f6c63430008090033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d7f8b9b05fe799ed4643accba9fbf0b3a2970000870f51b5d7d1bf85e73021d264736f6c63430008090033608060405260405162000a8438038062000a848339810160408190526200002691620004d4565b6200005360017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d51620005a2565b60008051602062000a3d83398151915214620000735762000073620005c8565b620000818282600062000089565b50506200064f565b62000094836200016e565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a2600082511180620000d65750805b15620001695762000167836001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200011a57600080fd5b505afa1580156200012f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001559190620005de565b836200031f60201b620000291760201c565b505b505050565b62000184816200034e60201b620000551760201c565b620001e45760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6200026e816001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022257600080fd5b505afa15801562000237573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025d9190620005de565b6200034e60201b620000551760201c565b620002d55760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401620001db565b80620002fe60008051602062000a3d83398151915260001b6200035460201b6200005b1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b606062000347838360405180606001604052806027815260200162000a5d6027913962000357565b9392505050565b3b151590565b90565b6060833b620003b85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001db565b600080856001600160a01b031685604051620003d59190620005fc565b600060405180830381855af49150503d806000811462000412576040519150601f19603f3d011682016040523d82523d6000602084013e62000417565b606091505b5090925090506200042a82828662000434565b9695505050505050565b606083156200044557508162000347565b825115620004565782518084602001fd5b8160405162461bcd60e51b8152600401620001db91906200061a565b80516001600160a01b03811681146200048a57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004c2578181015183820152602001620004a8565b83811115620001675750506000910152565b60008060408385031215620004e857600080fd5b620004f38362000472565b60208401519092506001600160401b03808211156200051157600080fd5b818501915085601f8301126200052657600080fd5b8151818111156200053b576200053b6200048f565b604051601f8201601f19908116603f011681019083821181831017156200056657620005666200048f565b816040528281528860208487010111156200058057600080fd5b62000593836020830160208801620004a5565b80955050505050509250929050565b600082821015620005c357634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600060208284031215620005f157600080fd5b620003478262000472565b6000825162000610818460208701620004a5565b9190910192915050565b60208152600082518060208401526200063b816040850160208701620004a5565b601f01601f19169190910160400192915050565b6103de806200065f6000396000f3fe60806040523661001357610011610017565b005b6100115b61002761002261005e565b610120565b565b606061004e838360405180606001604052806027815260200161038260279139610144565b9392505050565b3b151590565b90565b600061009e7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100e357600080fd5b505afa1580156100f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011b91906102ae565b905090565b3660008037600080366000845af43d6000803e80801561013f573d6000f35b3d6000fd5b6060833b6101d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516102019190610314565b600060405180830381855af49150503d806000811461023c576040519150601f19603f3d011682016040523d82523d6000602084013e610241565b606091505b509150915061025182828661025b565b9695505050505050565b6060831561026a57508161004e565b82511561027a5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d09190610330565b6000602082840312156102c057600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461004e57600080fd5b60005b838110156102ff5781810151838201526020016102e7565b8381111561030e576000848401525b50505050565b600082516103268184602087016102e4565b9190910192915050565b602081526000825180602084015261034f8160408501602087016102e4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cc40463d762d54130ecace4a06e8dae4a0d1c925a882d9104aa13a995affe78c64736f6c63430008090033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460806040523480156200001157600080fd5b50604051620044b5380380620044b5833981016040819052620000349162000203565b6200003f3362000058565b600160025562000051816000620000aa565b5062000235565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600354610100900460ff1680620000c4575060035460ff16155b6200012d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b600354610100900460ff1615801562000150576003805461ffff19166101011790555b6001600160a01b03821615620001995760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b2103a37b5b2b760991b604482015260640162000124565b620001a483620001c2565b600019600d558015620001bd576003805461ff00191690555b505050565b620001cd8162000058565b506003805462010000600160b01b031916336201000002179055426005556009805460ff19169055670de0b6b3a7640000600a55565b6000602082840312156200021657600080fd5b81516001600160a01b03811681146200022e57600080fd5b9392505050565b61427080620002456000396000f3fe6080604052600436106102845760003560e01c8063715018a611610153578063c45a0155116100cb578063e6ab48541161007f578063e9fad8ee11610064578063e9fad8ee1461079e578063f2fde38b146107a6578063f8077fae146107c657600080fd5b8063e6ab485414610768578063e72f6e301461077e57600080fd5b8063db2e21bc116100b0578063db2e21bc14610716578063dd4670641461071e578063dfe138a61461073e57600080fd5b8063c45a015514610681578063cbecf6b5146106b457600080fd5b806395b881de116101225780639ced7e76116101075780639ced7e761461061f578063abb06b951461063f578063c3bfeb531461065457600080fd5b806395b881de146105ec5780639a4083211461060c57600080fd5b8063715018a61461058457806388e271b6146105995780638da5cb5b146105b95780638ed955b9146105e457600080fd5b806343dcbe69116102015780635f3b443a116101b55780636bd3b87c1161019a5780636bd3b87c146104f75780636eef7a781461054e5780636f2c590a1461056e57600080fd5b80635f3b443a14610443578063669936461461045f57600080fd5b8063509b6c3f116101e6578063509b6c3f146103d35780635b9f0016146104185780635d0cde971461042e57600080fd5b806343dcbe6914610386578063485cc955146103b357600080fd5b80631c03e6cc1161025857806338d074361161023d57806338d074361461033d5780633a98ef39146103505780633d509c971461036657600080fd5b80631c03e6cc146102fd5780633355ffac1461031d57600080fd5b806206c61714610289578063043063bc146102ab57806307c4e48b146102d45780630e5c011e146102ea575b600080fd5b34801561029557600080fd5b506102a96102a4366004613e70565b6107dc565b005b3480156102b757600080fd5b506102c161016d81565b6040519081526020015b60405180910390f35b3480156102e057600080fd5b506102c1600c5481565b6102a96102f8366004613e9c565b61094e565b34801561030957600080fd5b506102a9610318366004613e9c565b610be8565b34801561032957600080fd5b506102a9610338366004613eb9565b610e30565b6102a961034b366004613ee9565b610fe4565b34801561035c57600080fd5b506102c160045481565b34801561037257600080fd5b506102a9610381366004613e9c565b6113de565b34801561039257600080fd5b506102c16103a1366004613e9c565b60086020526000908152604090205481565b3480156103bf57600080fd5b506102a96103ce366004613f19565b6116ea565b3480156103df57600080fd5b506103f36103ee366004613f47565b6118ad565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102cb565b34801561042457600080fd5b506102c1600b5481565b34801561043a57600080fd5b506102c1600a81565b34801561044f57600080fd5b506102c1670de0b6b3a764000081565b34801561046b57600080fd5b506104dc61047a366004613f19565b6040805180820182526000808252602091820181905273ffffffffffffffffffffffffffffffffffffffff9485168152600882528281209390941684526001928301815292819020815180830190925280548252909101549181019190915290565b604080518251815260209283015192810192909252016102cb565b34801561050357600080fd5b50610533610512366004613e9c565b60006020819052908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016102cb565b34801561055a57600080fd5b506102a9610569366004613f60565b6118e4565b34801561057a57600080fd5b506102c1600a5481565b34801561059057600080fd5b506102a96119eb565b3480156105a557600080fd5b506102a96105b4366004613e70565b611a78565b3480156105c557600080fd5b5060015473ffffffffffffffffffffffffffffffffffffffff166103f3565b6102a9611c7a565b3480156105f857600080fd5b506102c1610607366004613e9c565b611ebe565b6102a961061a366004613ee9565b611f9a565b34801561062b57600080fd5b506102c161063a366004613f19565b612312565b34801561064b57600080fd5b506006546102c1565b34801561066057600080fd5b506102c161066f366004613e9c565b600e6020526000908152604090205481565b34801561068d57600080fd5b506003546103f39062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b3480156106c057600080fd5b506106f66106cf366004613e9c565b60076020526000908152604090208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080016102cb565b6102a961245d565b34801561072a57600080fd5b506102a9610739366004613f47565b61271f565b34801561074a57600080fd5b506009546107589060ff1681565b60405190151581526020016102cb565b34801561077457600080fd5b506102c1600d5481565b34801561078a57600080fd5b506102c1610799366004613e9c565b612868565b6102a96129ea565b3480156107b257600080fd5b506102a96107c1366004613e9c565b612ca2565b3480156107d257600080fd5b506102c160055481565b60015473ffffffffffffffffffffffffffffffffffffffff163314610862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b61086a612dd2565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260076020526040902080546108f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f756e6b6e6f776e20746f6b656e000000000000000000000000000000000000006044820152606401610859565b6002810182905560405182815273ffffffffffffffffffffffffffffffffffffffff8416907f1db4bb723cb902ca89ee9de44648632638ceb6623dcfa7366a851881852300d49060200160405180910390a2505050565b6002805414156109ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610859565b600280556000806109cb3682613f7d565b6003546040517f0e986d7f0000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000831660048201529192506000916201000090910473ffffffffffffffffffffffffffffffffffffffff1690630e986d7f9060240160206040518083038186803b158015610a6157600080fd5b505afa158015610a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a999190613fc5565b9050610aa5818461400d565b3414610b0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c69642076616c7565000000000000000000000000000000000000006044820152606401610859565b8015610bd357610bd381600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663469048406040518163ffffffff1660e01b815260040160206040518083038186803b158015610b7f57600080fd5b505afa158015610b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb79190614025565b73ffffffffffffffffffffffffffffffffffffffff1690612f14565b5050610bdf338361306e565b50506001600255565b60015473ffffffffffffffffffffffffffffffffffffffff163314610c69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610859565b610c71612dd2565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600760205260409020805415610cff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6475706c696361746520746f6b656e00000000000000000000000000000000006044820152606401610859565b600654600a8110610d6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6c696d69742072656163686564000000000000000000000000000000000000006044820152606401610859565b60068054600180820183556000929092527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616179055610de890829061400d565b825560405173ffffffffffffffffffffffffffffffffffffffff8416907f851bbb4304bf0768ed98b97e429b5bd1dcc1f194b36cd1650f40293e951ae39390600090a2505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610eb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610859565b80821115610f1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f696e76616c6964206c696d6974730000000000000000000000000000000000006044820152606401610859565b600b5415610f9d57600c548211158015610f37575080600d5411155b610f9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f756e657870616e646564206c696d6974730000000000000000000000000000006044820152606401610859565b600c829055600d81905560408051838152602081018390527f7b0e4f7d04c9ce35dcb1e1370d62110185eb169c88452622c70f96d78a3cad3f910160405180910390a15050565b600280541415611050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610859565b600280556000806110613682613f7d565b6003546040517f0e986d7f0000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000831660048201529192506000916201000090910473ffffffffffffffffffffffffffffffffffffffff1690630e986d7f9060240160206040518083038186803b1580156110f757600080fd5b505afa15801561110b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112f9190613fc5565b905061113b818461400d565b34146111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c69642076616c7565000000000000000000000000000000000000006044820152606401610859565b80156112155761121581600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663469048406040518163ffffffff1660e01b815260040160206040518083038186803b158015610b7f57600080fd5b5050811561122657611226336130bf565b60006112313361314f565b336000908152600e60205260409020805491925090808611156112b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610859565b60006112bc8783614042565b9050801561133e5780600c54111580156112d85750600d548111155b61133e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c69642062616c616e636500000000000000000000000000000000006044820152606401610859565b8615611369578083556113513388612f14565b86600b60008282546113639190614042565b90915550505b60405187815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a2866113cf33670de0b6b3a76400006113b68885614059565b6113c091906140c5565b6113ca908461400d565b613229565b50506001600255505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff16331461145f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610859565b611467612dd2565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604090208054806114f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f756e6b6e6f776e20746f6b656e000000000000000000000000000000000000006044820152606401610859565b600182015415611561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f70656e64696e67207265776172640000000000000000000000000000000000006044820152606401610859565b60008083556002830181905560038301556006548082101561163a576000600661158c600184614042565b8154811061159c5761159c6140d9565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168083526007909152604090912084905590508060066115e0600186614042565b815481106115f0576115f06140d9565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b600680548061164b5761164b614108565b60008281526020812082017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590910190915560405173ffffffffffffffffffffffffffffffffffffffff8616917f36bd04094fa067bb9471a8fbdb0a6e8a43424a2566ad3a740c88973fa40a311891a250505050565b600354610100900460ff1680611703575060035460ff16155b61178f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610859565b600354610100900460ff161580156117ce57600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b73ffffffffffffffffffffffffffffffffffffffff82161561184c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c696420746f6b656e000000000000000000000000000000000000006044820152606401610859565b611855836132ae565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600d5580156118a857600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b505050565b600681815481106118bd57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60015473ffffffffffffffffffffffffffffffffffffffff163314611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610859565b61196d612dd2565b600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821515179055806119ac57670de0b6b3a76400006119b0565b6004545b600a5560405181151581527f3070602ec40a9344ebb1e5efa4731dc84be5f7b23bbe1ee962a966176e696bbf9060200160405180910390a150565b60015473ffffffffffffffffffffffffffffffffffffffff163314611a6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610859565b611a766000613321565b565b60015473ffffffffffffffffffffffffffffffffffffffff163314611af9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610859565b600280541415611b65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610859565b60028055611b71612dd2565b73ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604090208054611bfe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f756e6b6e6f776e20746f6b656e000000000000000000000000000000000000006044820152606401610859565b611c2073ffffffffffffffffffffffffffffffffffffffff8416333085613398565b8273ffffffffffffffffffffffffffffffffffffffff167f2386108be9237e6cebb631ec77ea4474231e519e0b4963993a76350110b0117383604051611c6891815260200190565b60405180910390a25050600160025550565b600280541415611ce6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610859565b60028055600080611cf73682613f7d565b6003546040517f0e986d7f0000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000831660048201529192506000916201000090910473ffffffffffffffffffffffffffffffffffffffff1690630e986d7f9060240160206040518083038186803b158015611d8d57600080fd5b505afa158015611da1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc59190613fc5565b9050611dd1818461400d565b3414611e39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c69642076616c7565000000000000000000000000000000000000006044820152606401610859565b8015611eab57611eab81600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663469048406040518163ffffffff1660e01b815260040160206040518083038186803b158015610b7f57600080fd5b5050611eb6336130bf565b506001600255565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8316906370a082319060240160206040518083038186803b158015611f2657600080fd5b505afa158015611f3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5e9190613fc5565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260076020526040902060010154909150611f949082614042565b92915050565b600280541415612006576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610859565b600280558160006120173682613f7d565b6003546040517f0e986d7f0000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000831660048201529192506000916201000090910473ffffffffffffffffffffffffffffffffffffffff1690630e986d7f9060240160206040518083038186803b1580156120ad57600080fd5b505afa1580156120c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e59190613fc5565b90506120f1818461400d565b3414612159576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c69642076616c7565000000000000000000000000000000000000006044820152606401610859565b80156121cb576121cb81600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663469048406040518163ffffffff1660e01b815260040160206040518083038186803b158015610b7f57600080fd5b505081156121dc576121dc336130bf565b336000908152600e60205260408120805490916121f9868361400d565b9050801561227b5780600c54111580156122155750600d548111155b61227b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c69642062616c616e636500000000000000000000000000000000006044820152606401610859565b851561229f57808355600b805487919060009061229990849061400d565b90915550505b60405186815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a260006122df33613474565b9050866113cf33670de0b6b3a76400006122f98585614059565b61230391906140c5565b61230d908461400d565b6134b6565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260076020526040812060038101546005544211156123dd57600454156123dd576000670de0b6b3a7640000600a5484600201546005544261236f9190614042565b6123799190614059565b6123839190614059565b61238d91906140c5565b9050600061239a86611ebe565b9050808211156123a8578091505b81156123da576004546123c383670de0b6b3a7640000614059565b6123cd91906140c5565b6123d7908461400d565b92505b50505b73ffffffffffffffffffffffffffffffffffffffff808616600090815260086020908152604080832093881683526001808501909252909120908101548254670de0b6b3a76400009190612432908690614059565b61243c9190614042565b61244691906140c5565b8154612452919061400d565b979650505050505050565b6002805414156124c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610859565b600280556000806124da3682613f7d565b6003546040517f0e986d7f0000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000831660048201529192506000916201000090910473ffffffffffffffffffffffffffffffffffffffff1690630e986d7f9060240160206040518083038186803b15801561257057600080fd5b505afa158015612584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a89190613fc5565b90506125b4818461400d565b341461261c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c69642076616c7565000000000000000000000000000000000000006044820152606401610859565b801561268e5761268e81600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663469048406040518163ffffffff1660e01b815260040160206040518083038186803b158015610b7f57600080fd5b50506126993361314f565b50336000908152600e60205260409020805480156126d757600082556126bf3382612f14565b80600b60008282546126d19190614042565b90915550505b60405181815233907f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd96959060200160405180910390a26127153361351c565b5050600160025550565b60028054141561278b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610859565b6002805560008061279c3384613584565b33600081815260086020908152604091829020805483518a81529283018690529597509395509293927f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b910160405180910390a26000811180156128005750828414155b1561285c5761285c33670de0b6b3a764000061281c8785614059565b61282691906140c5565b612830908461400d565b670de0b6b3a76400006128438786614059565b61284d91906140c5565b612857908561400d565b61375d565b50506001600255505050565b60015460009073ffffffffffffffffffffffffffffffffffffffff1633146128ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610859565b600280541415612958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610859565b60028055612964612dd2565b61296d82611ebe565b905061299073ffffffffffffffffffffffffffffffffffffffff831633836137f1565b8173ffffffffffffffffffffffffffffffffffffffff167f4ba2f3b044735356db52c2c595cfedd05fa9d53ba8ae3c34bbe10a7096e1888d826040516129d891815260200190565b60405180910390a26001600255919050565b600280541415612a56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610859565b60028055600080612a673682613f7d565b6003546040517f0e986d7f0000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000831660048201529192506000916201000090910473ffffffffffffffffffffffffffffffffffffffff1690630e986d7f9060240160206040518083038186803b158015612afd57600080fd5b505afa158015612b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b359190613fc5565b9050612b41818461400d565b3414612ba9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c69642076616c7565000000000000000000000000000000000000006044820152606401610859565b8015612c1b57612c1b81600360029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663469048406040518163ffffffff1660e01b815260040160206040518083038186803b158015610b7f57600080fd5b5050612c263361314f565b50336000908152600e6020526040902080548015612c645760008255612c4c3382612f14565b80600b6000828254612c5e9190614042565b90915550505b60405181815233907f22d324652c93739755cf4581508b60875ebdd78c20c0cff5cf8e23452b2996319060200160405180910390a261271533613847565b60015473ffffffffffffffffffffffffffffffffffffffff163314612d23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610859565b73ffffffffffffffffffffffffffffffffffffffff8116612dc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610859565b612dcf81613321565b50565b600554421115611a765760045415612f0e57600060055442612df49190614042565b60065490915060005b81811015612f0a57600060068281548110612e1a57612e1a6140d9565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16808352600790915260408220600a546002820154929450909291670de0b6b3a76400009190612e6d9089614059565b612e779190614059565b612e8191906140c5565b90506000612e8e84611ebe565b905080821115612e9c578091505b8115612ef35781836001016000828254612eb6919061400d565b9091555050600454612ed083670de0b6b3a7640000614059565b612eda91906140c5565b836003016000828254612eed919061400d565b90915550505b505050508080612f0290614137565b915050612dfd565b5050505b42600555565b80471015612f7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610859565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612fd8576040519150601f19603f3d011682016040523d82523d6000602084013e612fdd565b606091505b50509050806118a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610859565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600860205260409020805480156130ae576130a3612dd2565b6130ae8282836138c0565b6130b9848385613996565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600860205260409020805480156130ff576130f4612dd2565b6130ff8282836138c0565b6131098383613a97565b60405173ffffffffffffffffffffffffffffffffffffffff8416907f951da9d56bc4c88666815902e196576135a88dc5bdbcc4e8511e2054f61a152490600090a2505050565b60008061315f62015180426140c5565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602081905260409020600181015491925090801561321d57815480841180156131b557506131a98282614170565b6131b38386614170565b145b61321b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6e6f7420617661696c61626c65000000000000000000000000000000000000006044820152606401610859565b505b50600201549392505050565b80156132aa5773ffffffffffffffffffffffffffffffffffffffff82166000908152600860205260408120805490916132628483614042565b905061326c612dd2565b6132778383836138c0565b8083556004805485919060009061328f908490614042565b909155505060095460ff16156132a657600454600a555b5050505b5050565b6132b781613321565b50600380547fffffffffffffffffffff0000000000000000000000000000000000000000ffff1633620100000217905542600555600980547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055670de0b6b3a7640000600a55565b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526130b99085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613af6565b60008061348462015180426140c5565b73ffffffffffffffffffffffffffffffffffffffff909316600090815260208190526040902092835550506002015490565b80156132aa5773ffffffffffffffffffffffffffffffffffffffff82166000908152600860205260408120805490916134ef848361400d565b90506134f9612dd2565b6135048383836138c0565b8083556004805485919060009061328f90849061400d565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600860205260409020805480156118a85761355282613c02565b600080835560048054839290613569908490614042565b909155505060095460ff16156118a857600454600a55505050565b6000808061359562015180426140c5565b73ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020600181015491925090808610156136b157815460006135d98383614170565b905060006135e78487614170565b905060008282116136275782821061360d57868410613607576000613631565b84613631565b82613618868461400d565b6136229190614042565b613631565b6136318383614042565b9050600061363f8287614042565b9050808b10156136ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f62656c6f77206d696e696d756d000000000000000000000000000000000000006044820152606401610859565b50505050505b61016d86111561371d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f61626f7665206d6178696d756d000000000000000000000000000000000000006044820152606401610859565b6002820154945061016d61373987670de0b6b3a7640000614059565b61374391906140c5565b928255506001810185905560020181905590509250929050565b8082146118a85773ffffffffffffffffffffffffffffffffffffffff8316600090815260086020526040812080549091836137988684614042565b6137a2919061400d565b90506137ac612dd2565b6137b78383836138c0565b80835560045484906137ca908790614042565b6137d4919061400d565b60045560095460ff16156137e957600454600a555b505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526118a89084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016133f2565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600860205260409020805480156138b65761387c612dd2565b613888828260006138c0565b60008083556004805483929061389f908490614042565b909155505060095460ff16156138b657600454600a555b6118a88383613a97565b60065460005b818110156132a6576000600682815481106138e3576138e36140d9565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168083526007825260408084206003015460018b01909352909220919250908615613971576001810154670de0b6b3a764000090613944848a614059565b61394e9190614042565b61395891906140c5565b81600001600082825461396b919061400d565b90915550505b61397b8287614059565b6001909101555081905061398e81614137565b9150506138c6565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260409020805480156132a657600082556139ea73ffffffffffffffffffffffffffffffffffffffff841686836137f1565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604081206001018054839290613a22908490614042565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fa0306f61d3fafe13787b78e276cb6b644382854a66cb46daae14227d3ec2679783604051613a8891815260200190565b60405180910390a35050505050565b60065460005b818110156130b957613ae4848460068481548110613abd57613abd6140d9565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16613996565b80613aee81614137565b915050613a9d565b6000613b58826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613c729092919063ffffffff16565b8051909150156118a85780806020019051810190613b769190614184565b6118a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610859565b60065460005b818110156118a857600083600101600060068481548110613c2b57613c2b6140d9565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190206001015580613c6a81614137565b915050613c08565b6060613c818484600085613c8b565b90505b9392505050565b606082471015613d1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610859565b843b613d85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610859565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613dae91906141cd565b60006040518083038185875af1925050503d8060008114613deb576040519150601f19603f3d011682016040523d82523d6000602084013e613df0565b606091505b509150915061245282828660608315613e0a575081613c84565b825115613e1a5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085991906141e9565b73ffffffffffffffffffffffffffffffffffffffff81168114612dcf57600080fd5b60008060408385031215613e8357600080fd5b8235613e8e81613e4e565b946020939093013593505050565b600060208284031215613eae57600080fd5b8135613c8481613e4e565b60008060408385031215613ecc57600080fd5b50508035926020909101359150565b8015158114612dcf57600080fd5b60008060408385031215613efc57600080fd5b823591506020830135613f0e81613edb565b809150509250929050565b60008060408385031215613f2c57600080fd5b8235613f3781613e4e565b91506020830135613f0e81613e4e565b600060208284031215613f5957600080fd5b5035919050565b600060208284031215613f7257600080fd5b8135613c8481613edb565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015613fbd5780818660040360031b1b83161692505b505092915050565b600060208284031215613fd757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561402057614020613fde565b500190565b60006020828403121561403757600080fd5b8151613c8481613e4e565b60008282101561405457614054613fde565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561409157614091613fde565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826140d4576140d4614096565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561416957614169613fde565b5060010190565b60008261417f5761417f614096565b500690565b60006020828403121561419657600080fd5b8151613c8481613edb565b60005b838110156141bc5781810151838201526020016141a4565b838111156130b95750506000910152565b600082516141df8184602087016141a1565b9190910192915050565b60208152600082518060208401526142088160408501602087016141a1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220ae4c723452f03a5773d70c7ece9d9edb794280005e34ee07a65599dfaab1053164736f6c63430008090033