60806040523480156200001157600080fd5b506040518060600160405280603f815260200162002dc4603f9139620000446301ffc9a760e01b6200015d60201b60201c565b62000055816200026660201b60201c565b6200006d63d9b67a2660e01b6200015d60201b60201c565b62000085630e89341c60e01b6200015d60201b60201c565b50620000b2336000670de0b6b3a7640000604051806020016040528060008152506200028260201b60201c565b620000e23360016b033b2e3c9fd0803ce8000000604051806020016040528060008152506200028260201b60201c565b620001073360026001604051806020016040528060008152506200028260201b60201c565b6200012f336003633b9aca00604051806020016040528060008152506200028260201b60201c565b62000157336004633b9aca00604051806020016040528060008152506200028260201b60201c565b62000a8a565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620001fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b80600390805190602001906200027e929190620009db565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156200030a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018062002e036021913960400191505060405180910390fd5b60006200031c620004b660201b60201c565b905062000355816000876200033788620004be60201b60201c565b6200034888620004be60201b60201c565b876200051960201b60201c565b620003bf836001600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200052160201b6200175a1790919060201c565b6001600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a4620004af81600087878787620005aa60201b60201c565b5050505050565b600033905090565b6060806001604051908082528060200260200182016040528015620004f25781602001602082028038833980820191505090505b50905082816000815181106200050457fe5b60200260200101818152505080915050919050565b505050505050565b600080828401905083811015620005a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b620005d68473ffffffffffffffffffffffffffffffffffffffff16620009c860201b620020a91760201c565b15620009c0578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620006be578082015181840152602081019050620006a1565b50505050905090810190601f168015620006ec5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1580156200071057600080fd5b505af19250505080156200074657506040513d60208110156200073257600080fd5b810190808051906020019092919050505060015b6200091f5760006040519050600081526001156200081b5760443d10156200077257600090506200081b565b60046000803e60005160e01c6308c379a08114620007955760009150506200081b565b60043d036004833e81513d602482011167ffffffffffffffff82111715620007c3576000925050506200081b565b808301805167ffffffffffffffff811115620007e75760009450505050506200081b565b8060208301013d860181111562000807576000955050505050506200081b565b601f19601f82011660405282955050505050505b80620008285750620008cd565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200089157808201518184015260208101905062000874565b50505050905090810190601f168015620008bf5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018062002d686034913960400191505060405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614620009be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018062002d9c6028913960400191505060405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000a1e57805160ff191683800117855562000a4f565b8280016001018555821562000a4f579182015b8281111562000a4e57825182559160200191906001019062000a31565b5b50905062000a5e919062000a62565b5090565b62000a8791905b8082111562000a8357600081600090555060010162000a69565b5090565b90565b6122ce8062000a9a6000396000f3fe608060405234801561001057600080fd5b50600436106100ce5760003560e01c80634e1273f41161008c578063d562e20411610066578063d562e204146106af578063e3e55f08146106cd578063e985e9c5146106eb578063f242432a14610767576100ce565b80634e1273f4146104a05780635b2725ed14610641578063a22cb4651461065f576100ce565b8062fdd58e146100d357806301ffc9a7146101355780630e89341c1461019a57806313dc989f146102415780632eb2c2d61461025f5780633e4bee3814610482575b600080fd5b61011f600480360360408110156100e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610876565b6040518082815260200191505060405180910390f35b6101806004803603602081101561014b57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610956565b604051808215151515815260200191505060405180910390f35b6101c6600480360360208110156101b057600080fd5b81019080803590602001909291905050506109bd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102065780820151818401526020810190506101eb565b50505050905090810190601f1680156102335780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610249610a61565b6040518082815260200191505060405180910390f35b610480600480360360a081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156102d257600080fd5b8201836020820111156102e457600080fd5b8035906020019184602083028401116401000000008311171561030657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561036657600080fd5b82018360208201111561037857600080fd5b8035906020019184602083028401116401000000008311171561039a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156103fa57600080fd5b82018360208201111561040c57600080fd5b8035906020019184600183028401116401000000008311171561042e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610a66565b005b61048a610ef4565b6040518082815260200191505060405180910390f35b6105ea600480360360408110156104b657600080fd5b81019080803590602001906401000000008111156104d357600080fd5b8201836020820111156104e557600080fd5b8035906020019184602083028401116401000000008311171561050757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561056757600080fd5b82018360208201111561057957600080fd5b8035906020019184602083028401116401000000008311171561059b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610ef9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561062d578082015181840152602081019050610612565b505050509050019250505060405180910390f35b6106496110d7565b6040518082815260200191505060405180910390f35b6106ad6004803603604081101561067557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506110dc565b005b6106b7611277565b6040518082815260200191505060405180910390f35b6106d561127c565b6040518082815260200191505060405180910390f35b61074d6004803603604081101561070157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611281565b604051808215151515815260200191505060405180910390f35b610874600480360360a081101561077d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156107ee57600080fd5b82018360208201111561080057600080fd5b8035906020019184600183028401116401000000008311171561082257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611315565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180612119602b913960400191505060405180910390fd5b6001600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a555780601f10610a2a57610100808354040283529160200191610a55565b820191906000526020600020905b815481529060010190602001808311610a3857829003601f168201915b50505050509050919050565b600381565b8151835114610ac0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806122716028913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610b46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061219e6025913960400191505060405180910390fd5b610b4e61168a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610b945750610b9385610b8e61168a565b611281565b5b610be9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806121c36032913960400191505060405180910390fd5b6000610bf361168a565b9050610c03818787878787611692565b60008090505b8451811015610dd7576000858281518110610c2057fe5b602002602001015190506000858381518110610c3857fe5b60200260200101519050610cbf816040518060600160405280602a81526020016121f5602a91396001600086815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461169a9092919063ffffffff16565b6001600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d76816001600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461175a90919063ffffffff16565b6001600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050806001019050610c09565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610e87578082015181840152602081019050610e6c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610ec9578082015181840152602081019050610eae565b5050505090500194505050505060405180910390a4610eec8187878787876117e2565b505050505050565b600081565b60608151835114610f55576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806122486029913960400191505060405180910390fd5b60608351604051908082528060200260200182016040528015610f875781602001602082028038833980820191505090505b50905060008090505b84518110156110cc57600073ffffffffffffffffffffffffffffffffffffffff16858281518110610fbd57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415611032576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806121446031913960400191505060405180910390fd5b6001600085838151811061104257fe5b60200260200101518152602001908152602001600020600086838151811061106657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548282815181106110b557fe5b602002602001018181525050806001019050610f90565b508091505092915050565b600481565b8173ffffffffffffffffffffffffffffffffffffffff166110fb61168a565b73ffffffffffffffffffffffffffffffffffffffff161415611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061221f6029913960400191505060405180910390fd5b806002600061117561168a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661122261168a565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b600281565b600181565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561139b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061219e6025913960400191505060405180910390fd5b6113a361168a565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806113e957506113e8856113e361168a565b611281565b5b61143e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806121756029913960400191505060405180910390fd5b600061144861168a565b905061146881878761145988611c5a565b61146288611c5a565b87611692565b6114e5836040518060600160405280602a81526020016121f5602a91396001600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461169a9092919063ffffffff16565b6001600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061159c836001600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461175a90919063ffffffff16565b6001600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a4611682818787878787611cb3565b505050505050565b600033905090565b505050505050565b6000838311158290611747576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561170c5780820151818401526020810190506116f1565b50505050905090810190601f1680156117395780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156117d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6118018473ffffffffffffffffffffffffffffffffffffffff166120a9565b15611c52578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156118e55780820151818401526020810190506118ca565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561192757808201518184015260208101905061190c565b50505050905001848103825285818151815260200191508051906020019080838360005b8381101561196657808201518184015260208101905061194b565b50505050905090810190601f1680156119935780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b1580156119b857600080fd5b505af19250505080156119ec57506040513d60208110156119d857600080fd5b810190808051906020019092919050505060015b611bb3576000604051905060008152600115611ab55760443d1015611a145760009050611ab5565b60046000803e60005160e01c6308c379a08114611a35576000915050611ab5565b60043d036004833e81513d602482011167ffffffffffffffff82111715611a6157600092505050611ab5565b808301805167ffffffffffffffff811115611a83576000945050505050611ab5565b8060208301013d8601811115611aa157600095505050505050611ab5565b601f19601f82011660405282955050505050505b80611ac05750611b62565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611b27578082015181840152602081019050611b0c565b50505050905090810190601f168015611b545780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806120bd6034913960400191505060405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611c50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806120f16028913960400191505060405180910390fd5b505b505050505050565b6060806001604051908082528060200260200182016040528015611c8d5781602001602082028038833980820191505090505b5090508281600081518110611c9e57fe5b60200260200101818152505080915050919050565b611cd28473ffffffffffffffffffffffffffffffffffffffff166120a9565b156120a1578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611db7578082015181840152602081019050611d9c565b50505050905090810190601f168015611de45780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015611e0757600080fd5b505af1925050508015611e3b57506040513d6020811015611e2757600080fd5b810190808051906020019092919050505060015b612002576000604051905060008152600115611f045760443d1015611e635760009050611f04565b60046000803e60005160e01c6308c379a08114611e84576000915050611f04565b60043d036004833e81513d602482011167ffffffffffffffff82111715611eb057600092505050611f04565b808301805167ffffffffffffffff811115611ed2576000945050505050611f04565b8060208301013d8601811115611ef057600095505050505050611f04565b601f19601f82011660405282955050505050505b80611f0f5750611fb1565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f76578082015181840152602081019050611f5b565b50505050905090810190601f168015611fa35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806120bd6034913960400191505060405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461209f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806120f16028913960400191505060405180910390fd5b505b505050505050565b600080823b90506000811191505091905056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2062617463682062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368a2646970667358221220a641593c0cd6bbca327d01e5369e334cfa3e43886466de8a33646ec5eea95be264736f6c63430006020033455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73697066733a2f2f516d5a394a513477513739376b39367350676333314e46563851664a71413277577068743774687a5569335035442f7b69647d2e6a736f6e455243313135353a206d696e7420746f20746865207a65726f2061646472657373