6060604052604060405190810160405280600381526020017f312e30000000000000000000000000000000000000000000000000000000000081525060039080519060200190620000529291906200016b565b50600060055534156200006157fe5b60405160208062001b2c833981016040528080519060200190919050505b33600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806004819055506012600a0a631dcd6500026000819055506012600a0a631dcd65000260016000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660006101000a81548160ff0219169083151502179055505b506200021a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001ae57805160ff1916838001178555620001df565b82800160010185558215620001df579182015b82811115620001de578251825591602001919060010190620001c1565b5b509050620001ee9190620001f2565b5090565b6200021791905b8082111562000213576000816000905550600101620001f9565b5090565b90565b611902806200022a6000396000f30060606040523615610126576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610158578063095ea7b3146101f157806318160ddd1461023057806323b872dd14610256578063313ce567146102b457806354fd4d50146102da5780635c474f9e146103735780636a28f8281461039d57806370a08231146103c357806377d6a8801461040d57806383197ef014610437578063890340821461044957806391b7f5ed1461047757806395d89b4114610497578063a035b1fe14610530578063a9059cbb14610556578063acda28a114610595578063af6c3021146105bb578063b66a0e5d146105e1578063d4b83992146105f3578063dd62ed3e14610645578063e36b0b37146106ae575b6101565b600660009054906101000a900460ff161561014d57610148336106c0565b610153565b60006000fd5b5b565b005b341561016057fe5b61016861099a565b60405180806020018281038252838181518152602001915080519060200190808383600083146101b7575b8051825260208311156101b757602082019150602081019050602083039250610193565b505050905090810190601f1680156101e35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101f957fe5b61022e600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506109d4565b005b341561023857fe5b610240610b58565b6040518082815260200191505060405180910390f35b341561025e57fe5b6102b2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610b5e565b005b34156102bc57fe5b6102c4610e21565b6040518082815260200191505060405180910390f35b34156102e257fe5b6102ea610e26565b6040518080602001828103825283818151815260200191508051906020019080838360008314610339575b80518252602083111561033957602082019150602081019050602083039250610315565b505050905090810190601f1680156103655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57fe5b610383610ec4565b604051808215151515815260200191505060405180910390f35b34156103a557fe5b6103ad610edc565b6040518082815260200191505060405180910390f35b34156103cb57fe5b6103f7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ee2565b6040518082815260200191505060405180910390f35b341561041557fe5b61041d610f2c565b604051808215151515815260200191505060405180910390f35b341561043f57fe5b610447610f3f565b005b610475600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506106c0565b005b341561047f57fe5b6104956004808035906020019091905050611041565b005b341561049f57fe5b6104a7611188565b60405180806020018281038252838181518152602001915080519060200190808383600083146104f6575b8051825260208311156104f6576020820191506020810190506020830392506104d2565b505050905090810190601f1680156105225780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561053857fe5b6105406111c2565b6040518082815260200191505060405180910390f35b341561055e57fe5b610593600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506111c8565b005b341561059d57fe5b6105a5611375565b6040518082815260200191505060405180910390f35b34156105c357fe5b6105cb611383565b6040518082815260200191505060405180910390f35b34156105e957fe5b6105f1611391565b005b34156105fb57fe5b610603611527565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561064d57fe5b610698600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061154d565b6040518082815260200191505060405180910390f35b34156106b657fe5b6106be6115d5565b005b60006106ca610ec4565b1561092757662386f26fc1000034101515156106e257fe5b6106eb34611837565b90506012600a0a633b9aca00026012600a0a631dcd65000201600054101561084d5761075f81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461185690919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506107b78160005461185690919063ffffffff16565b6000819055507fe316e9c07bf6ee91102f762d73f95b6cab9dcc157278814c7408906855c6a3a66005600081548092919060010191905055833484604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a16108bb565b7fa24636c18e73457917a92dad223d797b84c2f7a4bdd82892f15a8c4cd9aec1b76040518080602001828103825260118152602001807f424143206973206e6f7420656e6f75676800000000000000000000000000000081525060200191505060405180910390a160006000fd5b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051809050600060405180830381858888f1935050505015156109215760006000fd5b5b610995565b7fa24636c18e73457917a92dad223d797b84c2f7a4bdd82892f15a8c4cd9aec1b76040518080602001828103825260178152602001807f53616c65206973206e6f7420696e2070726f677265737300000000000000000081525060200191505060405180910390a160006000fd5b5b5050565b604060405190810160405280600e81526020017f42616e616e6146756e64436f696e00000000000000000000000000000000000081525081565b60008114158015610a6257506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b15610a6d5760006000fd5b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35b5050565b60005481565b600060606004810160003690501015610b775760006000fd5b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150610c4883600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461185690919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610cdd83600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461187690919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d33838361187690919063ffffffff16565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35b5b5050505050565b601281565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ebc5780601f10610e9157610100808354040283529160200191610ebc565b820191906000526020600020905b815481529060010190602001808311610e9f57829003601f168201915b505050505081565b6000600660009054906101000a900460ff1690505b90565b60055481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600660009054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610fd557600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b61103e565b7fcbd9d2e0b97a08f1b662bf4d639e76b32edd97a5d890cafbd2b3cf1b803243a433604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a160006000fd5b5b565b3373ffffffffffffffffffffffffffffffffffffffff16600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561111b5760008111156110ac5780600481905550611115565b7f6fa9ba077ce7c505de70f870ca325052b313e11cfc23c2c439181ae7f2b9db5c60405180806020018281038252600d8152602001807f496e76616c69642070726963650000000000000000000000000000000000000081525060200191505060405180910390a15b5b611184565b7fcbd9d2e0b97a08f1b662bf4d639e76b32edd97a5d890cafbd2b3cf1b803243a433604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a160006000fd5b5b50565b604060405190810160405280600381526020017f424143000000000000000000000000000000000000000000000000000000000081525081565b60045481565b604060048101600036905010156111df5760006000fd5b61123182600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461187690919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112c682600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461185690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35b5b505050565b6012600a0a631dcd65000281565b6012600a0a633b9aca000281565b3373ffffffffffffffffffffffffffffffffffffffff16600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156114bb57600660009054906101000a900460ff16151561144c576001600660006101000a81548160ff0219169083151502179055507f8224b76b4baaefaa4e3654d2a0e669802b49be210bd18099c4a299cab02b5bfd60405180905060405180910390a16114b5565b7f6fa9ba077ce7c505de70f870ca325052b313e11cfc23c2c439181ae7f2b9db5c60405180806020018281038252600c8152602001807f73616c6520697320696e6720000000000000000000000000000000000000000081525060200191505060405180910390a15b5b611524565b7fcbd9d2e0b97a08f1b662bf4d639e76b32edd97a5d890cafbd2b3cf1b803243a433604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a160006000fd5b5b565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b3373ffffffffffffffffffffffffffffffffffffffff16600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156117cb57600660009054906101000a900460ff161561175c576000600660006101000a81548160ff0219169083151502179055506012600a0a6359682f00026000541015611757576116f16000546012600a0a6359682f00020360016000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461185690919063ffffffff16565b60016000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6117c5565b7f6fa9ba077ce7c505de70f870ca325052b313e11cfc23c2c439181ae7f2b9db5c6040518080602001828103825260128152602001807f73616c6520686173206265656e206f766572000000000000000000000000000081525060200191505060405180910390a15b5b611834565b7fcbd9d2e0b97a08f1b662bf4d639e76b32edd97a5d890cafbd2b3cf1b803243a433604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a160006000fd5b5b565b600061184e8260045461189090919063ffffffff16565b90505b919050565b60006000828401905061186b848210156118c5565b8091505b5092915050565b6000611884838311156118c5565b81830390505b92915050565b6000600082840290506118ba60008514806118b557508385838115156118b257fe5b04145b6118c5565b8091505b5092915050565b8015156118d25760006000fd5b5b505600a165627a7a72305820d7afbe364eae881446af80a83f2aec4d539b6d429dbb459c9d403feefa3ba5d7002900000000000000000000000000000000000000000000000000000000000003e8