60806040526009600155600154600a6200001a9190620004be565b64e8d4a510006200002c91906200050e565b6002556040518060400160405280601481526020017f496e7369646572204465746563746f7220426f7400000000000000000000000081525060039081620000759190620007b3565b506040518060400160405280600381526020017f494442000000000000000000000000000000000000000000000000000000000081525060049081620000bc9190620007b3565b50737a250d5630b4cf539739df2c5dacb4c659f2488d60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200011d575f80fd5b50335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360025460095f620001ec6200033160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550620002396200033160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60095f6200029a6200033160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051620002e39190620008a8565b60405180910390a33360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620008c3565b5f33905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620003c2578086048111156200039a576200039962000338565b5b6001851615620003aa5780820291505b8081029050620003ba8562000365565b94506200037a565b94509492505050565b5f82620003dc5760019050620004ae565b81620003eb575f9050620004ae565b81600181146200040457600281146200040f5762000445565b6001915050620004ae565b60ff84111562000424576200042362000338565b5b8360020a9150848211156200043e576200043d62000338565b5b50620004ae565b5060208310610133831016604e8410600b84101617156200047f5782820a90508381111562000479576200047862000338565b5b620004ae565b6200048e848484600162000371565b92509050818404811115620004a857620004a762000338565b5b81810290505b9392505050565b5f819050919050565b5f620004ca82620004b5565b9150620004d783620004b5565b9250620005067fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620003cb565b905092915050565b5f6200051a82620004b5565b91506200052783620004b5565b92508282026200053781620004b5565b9150828204841483151762000551576200055062000338565b5b5092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620005d457607f821691505b602082108103620005ea57620005e96200058f565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200064e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000611565b6200065a868362000611565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6200069b620006956200068f84620004b5565b62000672565b620004b5565b9050919050565b5f819050919050565b620006b6836200067b565b620006ce620006c582620006a2565b8484546200061d565b825550505050565b5f90565b620006e4620006d6565b620006f1818484620006ab565b505050565b5b8181101562000718576200070c5f82620006da565b600181019050620006f7565b5050565b601f82111562000767576200073181620005f0565b6200073c8462000602565b810160208510156200074c578190505b620007646200075b8562000602565b830182620006f6565b50505b505050565b5f82821c905092915050565b5f620007895f19846008026200076c565b1980831691505092915050565b5f620007a3838362000778565b9150826002028217905092915050565b620007be8262000558565b67ffffffffffffffff811115620007da57620007d962000562565b5b620007e68254620005bc565b620007f38282856200071c565b5f60209050601f83116001811462000829575f841562000814578287015190505b62000820858262000796565b8655506200088f565b601f1984166200083986620005f0565b5f5b8281101562000862578489015182556001820191506020850194506020810190506200083b565b868310156200088257848901516200087e601f89168262000778565b8355505b6001600288020188555050505b505050505050565b620008a281620004b5565b82525050565b5f602082019050620008bd5f83018462000897565b92915050565b611d5380620008d15f395ff3fe608060405234801561000f575f80fd5b5060043610610140575f3560e01c806339509351116100b65780638da5cb5b1161007a5780638da5cb5b1461031857806395d89b4114610336578063a457c2d714610354578063a9059cbb14610384578063ca103bce146103b4578063dd62ed3e146103be57610140565b806339509351146102725780633eaaf86b146102a25780636f268a99146102c057806370a08231146102de578063715018a61461030e57610140565b8063214235e311610108578063214235e3146101d657806322e99582146101f257806323b872dd146101fc5780632a33dea61461022c578063313ce5671461023657806332424aa31461025457610140565b8063054143cd1461014457806306fdde031461014e578063095ea7b31461016c57806316b9b9131461019c57806318160ddd146101b8575b5f80fd5b61014c6103ee565b005b6101566103f0565b60405161016391906113cb565b60405180910390f35b61018660048036038101906101819190611480565b610480565b60405161019391906114d8565b60405180910390f35b6101b660048036038101906101b19190611552565b610496565b005b6101c061054a565b6040516101cd91906115ac565b60405180910390f35b6101f060048036038101906101eb91906115c5565b610553565b005b6101fa6107f0565b005b61021660048036038101906102119190611603565b6107f2565b60405161022391906114d8565b60405180910390f35b610234610894565b005b61023e610896565b60405161024b91906115ac565b60405180910390f35b61025c61089f565b60405161026991906115ac565b60405180910390f35b61028c60048036038101906102879190611480565b6108a5565b60405161029991906114d8565b60405180910390f35b6102aa610945565b6040516102b791906115ac565b60405180910390f35b6102c861094b565b6040516102d59190611662565b60405180910390f35b6102f860048036038101906102f3919061167b565b610970565b60405161030591906115ac565b60405180910390f35b6103166109b6565b005b610320610ae5565b60405161032d9190611662565b60405180910390f35b61033e610b0c565b60405161034b91906113cb565b60405180910390f35b61036e60048036038101906103699190611480565b610b9c565b60405161037b91906114d8565b60405180910390f35b61039e60048036038101906103999190611480565b610cc0565b6040516103ab91906114d8565b60405180910390f35b6103bc610cdd565b005b6103d860048036038101906103d391906116a6565b610cdf565b6040516103e591906115ac565b60405180910390f35b565b6060600380546103ff90611711565b80601f016020809104026020016040519081016040528092919081815260200182805461042b90611711565b80156104765780601f1061044d57610100808354040283529160200191610476565b820191905f5260205f20905b81548152906001019060200180831161045957829003601f168201915b5050505050905090565b5f61048c338484610d61565b6001905092915050565b5f61049f610f24565b90505f5b83839050811015610544576104b6610f2b565b15610531576001826104c8919061176e565b60085f8686858181106104de576104dd6117a1565b5b90506020020160208101906104f3919061167b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b808061053c906117ce565b9150506104a3565b50505050565b5f600254905090565b61055b610f2b565b156107e65761058c3060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610d61565b8160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f600267ffffffffffffffff8111156105ea576105e9611815565b5b6040519080825280602002602001820160405280156106185781602001602082028036833780820191505090505b50905030815f8151811061062f5761062e6117a1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f79190611856565b8160018151811061070b5761070a6117a1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8486602042610793919061176e565b6040518663ffffffff1660e01b81526004016107b395949392919061197a565b5f604051808303815f87803b1580156107ca575f80fd5b505af11580156107dc573d5f803e3d5ffd5b50505050506107eb565b6107ec565b5b5050565b565b5f6107fe848484610f88565b8160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610845611267565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610889575f80fd5b600190509392505050565b565b5f600154905090565b60015481565b5f61093b6108b1611267565b848460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610936919061176e565b610d61565b6001905092915050565b60025481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff166109d5610ae5565b73ffffffffffffffffffffffffffffffffffffffff1614610a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2290611a1c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b1b90611711565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4790611711565b8015610b925780601f10610b6957610100808354040283529160200191610b92565b820191905f5260205f20905b815481529060010190602001808311610b7557829003601f168201915b5050505050905090565b5f8160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610c21575f80fd5b610cb6610c2c611267565b848460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610cb19190611a3a565b610d61565b6001905092915050565b5f610cd3610ccc611267565b8484610f88565b6001905092915050565b565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc690611add565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3490611b6b565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f1791906115ac565b60405180910390a3505050565b5f43905090565b5f610f34611267565b73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905090565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610fc0575f80fd5b60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054821115611009575f80fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161106691906115ac565b60405180910390a38160095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546110b79190611a3a565b60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f611101610f24565b60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054111590505f61116d6103e861115f6103e78761126e90919063ffffffff16565b6112e590919063ffffffff16565b90505f60085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054141580156111b95750815b156111c2578092505b5f60095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050838561120f9190611a3a565b8161121a919061176e565b90508060095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050505050505050565b5f33905090565b5f80830361127e575f90506112df565b5f828461128b9190611b89565b905082848261129a9190611bf7565b146112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d190611c97565b60405180910390fd5b809150505b92915050565b5f808211611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f90611cff565b60405180910390fd5b5f82846113359190611bf7565b90508091505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561137857808201518184015260208101905061135d565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61139d82611341565b6113a7818561134b565b93506113b781856020860161135b565b6113c081611383565b840191505092915050565b5f6020820190508181035f8301526113e38184611393565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61141c826113f3565b9050919050565b61142c81611412565b8114611436575f80fd5b50565b5f8135905061144781611423565b92915050565b5f819050919050565b61145f8161144d565b8114611469575f80fd5b50565b5f8135905061147a81611456565b92915050565b5f8060408385031215611496576114956113eb565b5b5f6114a385828601611439565b92505060206114b48582860161146c565b9150509250929050565b5f8115159050919050565b6114d2816114be565b82525050565b5f6020820190506114eb5f8301846114c9565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611512576115116114f1565b5b8235905067ffffffffffffffff81111561152f5761152e6114f5565b5b60208301915083602082028301111561154b5761154a6114f9565b5b9250929050565b5f8060208385031215611568576115676113eb565b5b5f83013567ffffffffffffffff811115611585576115846113ef565b5b611591858286016114fd565b92509250509250929050565b6115a68161144d565b82525050565b5f6020820190506115bf5f83018461159d565b92915050565b5f80604083850312156115db576115da6113eb565b5b5f6115e88582860161146c565b92505060206115f985828601611439565b9150509250929050565b5f805f6060848603121561161a576116196113eb565b5b5f61162786828701611439565b935050602061163886828701611439565b92505060406116498682870161146c565b9150509250925092565b61165c81611412565b82525050565b5f6020820190506116755f830184611653565b92915050565b5f602082840312156116905761168f6113eb565b5b5f61169d84828501611439565b91505092915050565b5f80604083850312156116bc576116bb6113eb565b5b5f6116c985828601611439565b92505060206116da85828601611439565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061172857607f821691505b60208210810361173b5761173a6116e4565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6117788261144d565b91506117838361144d565b925082820190508082111561179b5761179a611741565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6117d88261144d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361180a57611809611741565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061185081611423565b92915050565b5f6020828403121561186b5761186a6113eb565b5b5f61187884828501611842565b91505092915050565b5f819050919050565b5f819050919050565b5f6118ad6118a86118a384611881565b61188a565b61144d565b9050919050565b6118bd81611893565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6118f581611412565b82525050565b5f61190683836118ec565b60208301905092915050565b5f602082019050919050565b5f611928826118c3565b61193281856118cd565b935061193d836118dd565b805f5b8381101561196d57815161195488826118fb565b975061195f83611912565b925050600181019050611940565b5085935050505092915050565b5f60a08201905061198d5f83018861159d565b61199a60208301876118b4565b81810360408301526119ac818661191e565b90506119bb6060830185611653565b6119c8608083018461159d565b9695505050505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611a0660208361134b565b9150611a11826119d2565b602082019050919050565b5f6020820190508181035f830152611a33816119fa565b9050919050565b5f611a448261144d565b9150611a4f8361144d565b9250828203905081811115611a6757611a66611741565b5b92915050565b7f4945524332303a20617070726f76652066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611ac760258361134b565b9150611ad282611a6d565b604082019050919050565b5f6020820190508181035f830152611af481611abb565b9050919050565b7f4945524332303a20617070726f766520746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611b5560238361134b565b9150611b6082611afb565b604082019050919050565b5f6020820190508181035f830152611b8281611b49565b9050919050565b5f611b938261144d565b9150611b9e8361144d565b9250828202611bac8161144d565b91508282048414831517611bc357611bc2611741565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611c018261144d565b9150611c0c8361144d565b925082611c1c57611c1b611bca565b5b828204905092915050565b7f536166654d6174683a20206d756c7469706c69636174696f6e206f766572666c5f8201527f6f77000000000000000000000000000000000000000000000000000000000000602082015250565b5f611c8160228361134b565b9150611c8c82611c27565b604082019050919050565b5f6020820190508181035f830152611cae81611c75565b9050919050565b7f536166654d6174683a20206469766973696f6e206279207a65726f00000000005f82015250565b5f611ce9601b8361134b565b9150611cf482611cb5565b602082019050919050565b5f6020820190508181035f830152611d1681611cdd565b905091905056fea2646970667358221220444ac2c4d6d3b17f1186fb325051a05d1956b8fa87f432aa9db4bbf3e7eca70864736f6c63430008150033