0x60806040526000600360006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b50620000456301ffc9a760e01b6200006c60201b60201c565b6200006663bc197c8160e01b63f23a6e6160e01b186200006c60201b60201c565b62000175565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141562000109576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612b5f80620001856000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063bc197c81116100a2578063e375b64e11610071578063e375b64e146106fc578063e9cff291146107d5578063eacc7af2146107f3578063ec87621c14610811578063f23a6e611461082f57610116565b8063bc197c8114610473578063c4d66de814610628578063ca15c8731461066c578063d547741f146106ae57610116565b8063609c92b8116100e9578063609c92b81461025e5780638274664f1461027c5780639010d07c1461037757806391d14854146103ef578063a217fddf1461045557610116565b806301ffc9a71461011b578063248a9ca3146101805780632f2ff15d146101c257806336568abe14610210575b600080fd5b6101666004803603602081101561013157600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919050505061094e565b604051808215151515815260200191505060405180910390f35b6101ac6004803603602081101561019657600080fd5b81019080803590602001909291905050506109b5565b6040518082815260200191505060405180910390f35b61020e600480360360408110156101d857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109d5565b005b61025c6004803603604081101561022657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a5f565b005b610266610af8565b6040518082815260200191505060405180910390f35b6103756004803603606081101561029257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156102ef57600080fd5b82018360208201111561030157600080fd5b8035906020019184600183028401116401000000008311171561032357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610b31565b005b6103ad6004803603604081101561038d57600080fd5b81019080803590602001909291908035906020019092919050505061139d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61043b6004803603604081101561040557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113cf565b604051808215151515815260200191505060405180910390f35b61045d611401565b6040518082815260200191505060405180910390f35b6105d4600480360360a081101561048957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156104e657600080fd5b8201836020820111156104f857600080fd5b8035906020019184602083028401116401000000008311171561051a57600080fd5b90919293919293908035906020019064010000000081111561053b57600080fd5b82018360208201111561054d57600080fd5b8035906020019184602083028401116401000000008311171561056f57600080fd5b90919293919293908035906020019064010000000081111561059057600080fd5b8201836020820111156105a257600080fd5b803590602001918460018302840111640100000000831117156105c457600080fd5b9091929391929390505050611408565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b61066a6004803603602081101561063e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611420565b005b6106986004803603602081101561068257600080fd5b810190808035906020019092919050505061154b565b6040518082815260200191505060405180910390f35b6106fa600480360360408110156106c457600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611572565b005b6107d36004803603608081101561071257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561078f57600080fd5b8201836020820111156107a157600080fd5b803590602001918460018302840111640100000000831117156107c357600080fd5b90919293919293905050506115fc565b005b6107dd611bc5565b6040518082815260200191505060405180910390f35b6107fb611bec565b6040518082815260200191505060405180910390f35b610819611c13565b6040518082815260200191505060405180910390f35b6108fa600480360360a081101561084557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156108b657600080fd5b8201836020820111156108c857600080fd5b803590602001918460018302840111640100000000831117156108ea57600080fd5b9091929391929390505050611c4c565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b600060016000838152602001908152602001600020600201549050919050565b6109fc60016000848152602001908152602001600020600201546109f7611c5e565b6113cf565b610a51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806129b2602f913960400191505060405180910390fd5b610a5b8282611c66565b5050565b610a67611c5e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610aea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612ad4602f913960400191505060405180910390fd5b610af48282611cfa565b5050565b60405180807f45524331313535000000000000000000000000000000000000000000000000008152506007019050604051809103902081565b60405180807f4d414e414745525f524f4c450000000000000000000000000000000000000000815250600c0190506040518091039020610b7881610b73611c5e565b6113cf565b600290610c3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015610c2e5780601f10610c0357610100808354040283529160200191610c2e565b820191906000526020600020905b815481529060010190602001808311610c1157829003601f168201915b50509250505060405180910390fd5b506060610c51610c4c84611d8e565b611e33565b90506060610c7282600181518110610c6557fe5b6020026020010151611e33565b90506060610c9383600281518110610c8657fe5b6020026020010151611ffe565b9050610cb282600281518110610ca557fe5b60200260200101516120fe565b73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614610d52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f455243313135355072656469636174653a20494e56414c49445f53454e44455281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16610d8783600381518110610d7a57fe5b60200260200101516120fe565b73ffffffffffffffffffffffffffffffffffffffff1614610df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612a076022913960400191505060405180910390fd5b7fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260001b610e3483600081518110610e2757fe5b60200260200101516120fe565b60001b1415610fd257600080828060200190516040811015610e5557600080fd5b810190808051906020019092919080519060200190929190505050915091508773ffffffffffffffffffffffffffffffffffffffff1663f242432a308b8585604051806020016040528060008152506040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610f63578082015181840152602081019050610f48565b50505050905090810190601f168015610f905780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b505050505050611394565b7f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb60001b6110138360008151811061100657fe5b60200260200101516120fe565b60001b14156113425760608082806020019051604081101561103457600080fd5b810190808051604051939291908464010000000082111561105457600080fd5b8382019150602082018581111561106a57600080fd5b825186602082028301116401000000008211171561108757600080fd5b8083526020830192505050908051906020019060200280838360005b838110156110be5780820151818401526020810190506110a3565b50505050905001604052602001805160405193929190846401000000008211156110e757600080fd5b838201915060208201858111156110fd57600080fd5b825186602082028301116401000000008211171561111a57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015611151578082015181840152602081019050611136565b50505050905001604052505050915091508773ffffffffffffffffffffffffffffffffffffffff16632eb2c2d6308b8585604051806020016040528060008152506040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015611250578082015181840152602081019050611235565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015611292578082015181840152602081019050611277565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156112d15780820151818401526020810190506112b6565b50505050905090810190601f1680156112fe5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801561132357600080fd5b505af1158015611337573d6000803e3d6000fd5b505050505050611393565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806129e16026913960400191505060405180910390fd5b5b50505050505050565b60006113c782600160008681526020019081526020016000206000016122b390919063ffffffff16565b905092915050565b60006113f982600160008681526020019081526020016000206000016122cd90919063ffffffff16565b905092915050565b6000801b81565b600063bc197c8160e01b905098975050505050505050565b600360009054906101000a900460ff16156114a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f616c726561647920696e6974656400000000000000000000000000000000000081525060200191505060405180910390fd5b6114e16040518060400160405280601081526020017f45524331313535507265646963617465000000000000000000000000000000008152506122fd565b6114ee6000801b826123a9565b61152d60405180807f4d414e414745525f524f4c450000000000000000000000000000000000000000815250600c0190506040518091039020826123a9565b6001600360006101000a81548160ff02191690831515021790555050565b600061156b600160008481526020019081526020016000206000016123b7565b9050919050565b6115996001600084815260200190815260200160002060020154611594611c5e565b6113cf565b6115ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180612a516030913960400191505060405180910390fd5b6115f88282611cfa565b5050565b60405180807f4d414e414745525f524f4c450000000000000000000000000000000000000000815250600c01905060405180910390206116438161163e611c5e565b6113cf565b600290611708576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156116f95780601f106116ce576101008083540402835291602001916116f9565b820191906000526020600020905b8154815290600101906020018083116116dc57829003601f168201915b50509250505060405180910390fd5b5060608060608585606081101561171e57600080fd5b810190808035906020019064010000000081111561173b57600080fd5b82018360208201111561174d57600080fd5b8035906020019184602083028401116401000000008311171561176f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156117cf57600080fd5b8201836020820111156117e157600080fd5b8035906020019184602083028401116401000000008311171561180357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561186357600080fd5b82018360208201111561187557600080fd5b8035906020019184600183028401116401000000008311171561189757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050509250925092508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f5a921678b5779e4471b77219741a417a6ad6ec5d89fa5c8ce8cd7bd2d9f341868686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561199957808201518184015260208101905061197e565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156119db5780820151818401526020810190506119c0565b5050505090500194505050505060405180910390a48673ffffffffffffffffffffffffffffffffffffffff16632eb2c2d68a308686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015611acf578082015181840152602081019050611ab4565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015611b11578082015181840152602081019050611af6565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015611b50578082015181840152602081019050611b35565b50505050905090810190601f168015611b7d5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015611ba257600080fd5b505af1158015611bb6573d6000803e3d6000fd5b50505050505050505050505050565b7fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260001b81565b7f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb60001b81565b60405180807f4d414e414745525f524f4c450000000000000000000000000000000000000000815250600c019050604051809103902081565b60008060e01b90509695505050505050565b600033905090565b611c8e81600160008581526020019081526020016000206000016123cc90919063ffffffff16565b15611cf657611c9b611c5e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b611d2281600160008581526020019081526020016000206000016123fc90919063ffffffff16565b15611d8a57611d2f611c5e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b611d966128d0565b6000825111611e0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f524c505265616465723a20494e56414c49445f42595445535f4c454e4754480081525060200191505060405180910390fd5b600060208301905060405180604001604052808451815260200182815250915050919050565b6060611e3e8261242c565b611eb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f524c505265616465723a204954454d5f4e4f545f4c495354000000000000000081525060200191505060405180910390fd5b6000611ebb83612465565b905060608167ffffffffffffffff81118015611ed657600080fd5b50604051908082528060200260200182016040528015611f1057816020015b611efd6128d0565b815260200190600190039081611ef55790505b5090506000611f228560200151612519565b905084600001518114611f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180612aad6027913960400191505060405180910390fd5b6000611f8f86602001516125d1565b8660200151019050600080600090505b85811015611ff057611fb083612519565b9150604051806040016040528083815260200184815250858281518110611fd357fe5b602002602001018190525081830192508080600101915050611f9f565b508395505050505050919050565b6060600061200f8360200151612519565b90508260000151811461206d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612a296028913960400191505060405180910390fd5b600061207c84602001516125d1565b9050600081856000015103905060608167ffffffffffffffff811180156120a257600080fd5b506040519080825280601f01601f1916602001820160405280156120d55781602001600182028036833780820191505090505b50905060008160200190506120f184886020015101828561265a565b8195505050505050919050565b60006121098261242c565b1561217c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f524c505265616465723a204445434f44494e475f4c4953545f41535f55494e5481525060200191505060405180910390fd5b6021826000015111156121f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f524c505265616465723a20494e56414c49445f55494e545f4c454e475448000081525060200191505060405180910390fd5b60006122068360200151612519565b905082600001518114612264576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180612b036027913960400191505060405180910390fd5b600061227384602001516125d1565b905060008185600001510390506000808387602001510190508051915060208310156122a657826020036101000a820491505b8195505050505050919050565b60006122c283600001836126c1565b60001c905092915050565b60006122f5836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612744565b905092915050565b806040516020018082805190602001908083835b602083106123345780518252602082019150602081019050602083039250612311565b6001836020036101000a038019825116818451168082178552505050505050905001807f3a20494e53554646494349454e545f5045524d495353494f4e53000000000000815250601a01915050604051602081830303815290604052600290805190602001906123a59291906128ea565b5050565b6123b38282611c66565b5050565b60006123c582600001612767565b9050919050565b60006123f4836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612778565b905092915050565b6000612424836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6127e8565b905092915050565b600080600083602001519050805160001a915060c060ff168260ff16101561245957600092505050612460565b6001925050505b919050565b60008060009050600061247b84602001516125d1565b84602001510190506000846000015185602001510190505b8082101561250e576124a482612519565b8201915080821115612501576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612a81602c913960400191505060405180910390fd5b8280600101935050612493565b829350505050919050565b6000806000835160001a9050608060ff1681101561253a57600191506125c7565b60b860ff16811015612557576001608060ff1682030191506125c6565b60c060ff168110156125875760b78103600185019450806020036101000a855104600182018101935050506125c5565b60f860ff168110156125a457600160c060ff1682030191506125c4565b60f78103600185019450806020036101000a855104600182018101935050505b5b5b5b8192505050919050565b600080825160001a9050608060ff168110156125f1576000915050612655565b60b860ff16811080612616575060c060ff168110158015612615575060f860ff1681105b5b15612625576001915050612655565b60c060ff168110156126455760018060b80360ff16820301915050612655565b60018060f80360ff168203019150505b919050565b6000811415612668576126bc565b5b602060ff1681106126985782518252602060ff1683019250602060ff1682019150602060ff1681039050612669565b6000600182602060ff16036101000a03905080198451168184511681811785525050505b505050565b600081836000018054905011612722576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806129906022913960400191505060405180910390fd5b82600001828154811061273157fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600001805490509050919050565b60006127848383612744565b6127dd5782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506127e2565b600090505b92915050565b600080836001016000848152602001908152602001600020549050600081146128c4576000600182039050600060018660000180549050039050600086600001828154811061283357fe5b906000526020600020015490508087600001848154811061285057fe5b906000526020600020018190555060018301876001016000838152602001908152602001600020819055508660000180548061288857fe5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506128ca565b60009150505b92915050565b604051806040016040528060008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061292b57805160ff1916838001178555612959565b82800160010185558215612959579182015b8281111561295857825182559160200191906001019061293d565b5b509050612966919061296a565b5090565b61298c91905b80821115612988576000816000905550600101612970565b5090565b9056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74455243313135355072656469636174653a20494e56414c49445f57495448445241575f534947455243313135355072656469636174653a20494e56414c49445f5245434549564552524c505265616465723a2042595445535f4445434f4445445f4c454e4754485f4d49534d41544348416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65524c505265616465723a204e554d5f4954454d535f4445434f4445445f4c454e4754485f4d49534d41544348524c505265616465723a204c4953545f4445434f4445445f4c454e4754485f4d49534d41544348416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66524c505265616465723a2055494e545f4445434f4445445f4c454e4754485f4d49534d41544348a26469706673582212207b7381bf0d03ca9160e1c2edb0b85225293655ec5bdccc5ee8dd19aebf4325a664736f6c63430006060033