0x60806040523480156200001157600080fd5b506040518060400160405280600481526020017f4348494e000000000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f43484f5050410000000000000000000000000000000000000000000000000000815250816002908051906020019062000096929190620000d3565b508060039080519060200190620000af929190620000d3565b50620000c0620000ce60201b60201c565b6000819055505050620001e8565b600090565b828054620000e190620001b2565b90600052602060002090601f01602090048101928262000105576000855562000151565b82601f106200012057805160ff191683800117855562000151565b8280016001018555821562000151579182015b828111156200015057825182559160200191906001019062000133565b5b50905062000160919062000164565b5090565b5b808211156200017f57600081600090555060010162000165565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001cb57607f821691505b60208210811415620001e257620001e162000183565b5b50919050565b611a7180620001f86000396000f3fe6080604052600436106100e85760003560e01c80636352211e1161008a578063a22cb46511610059578063a22cb465146102d2578063b88d4fde146102fb578063c87b56dd14610317578063e985e9c514610354576100e8565b80636352211e1461021157806370a082311461024e57806395d89b411461028b578063a0712d68146102b6576100e8565b8063095ea7b3116100c6578063095ea7b31461019257806318160ddd146101ae57806323b872dd146101d957806342842e0e146101f5576100e8565b806301ffc9a7146100ed57806306fdde031461012a578063081812fc14610155575b600080fd5b3480156100f957600080fd5b50610114600480360381019061010f91906112e7565b610391565b604051610121919061132f565b60405180910390f35b34801561013657600080fd5b5061013f610423565b60405161014c91906113e3565b60405180910390f35b34801561016157600080fd5b5061017c6004803603810190610177919061143b565b6104b5565b60405161018991906114a9565b60405180910390f35b6101ac60048036038101906101a791906114f0565b610513565b005b3480156101ba57600080fd5b506101c3610523565b6040516101d0919061153f565b60405180910390f35b6101f360048036038101906101ee919061155a565b61053a565b005b61020f600480360381019061020a919061155a565b6107fe565b005b34801561021d57600080fd5b506102386004803603810190610233919061143b565b61081e565b60405161024591906114a9565b60405180910390f35b34801561025a57600080fd5b50610275600480360381019061027091906115ad565b610830565b604051610282919061153f565b60405180910390f35b34801561029757600080fd5b506102a06108c8565b6040516102ad91906113e3565b60405180910390f35b6102d060048036038101906102cb919061143b565b61095a565b005b3480156102de57600080fd5b506102f960048036038101906102f49190611606565b610967565b005b6103156004803603810190610310919061177b565b610a72565b005b34801561032357600080fd5b5061033e6004803603810190610339919061143b565b610ac4565b60405161034b91906113e3565b60405180910390f35b34801561036057600080fd5b5061037b600480360381019061037691906117fe565b610b42565b604051610388919061132f565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103ec57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061041c5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6060600280546104329061186d565b80601f016020809104026020016040519081016040528092919081815260200182805461045e9061186d565b80156104ab5780601f10610480576101008083540402835291602001916104ab565b820191906000526020600020905b81548152906001019060200180831161048e57829003601f168201915b5050505050905090565b60006104c082610bd6565b6104d5576104d463cf4700e460e01b610c50565b5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61051f82826001610c5a565b5050565b600061052d610d89565b6001546000540303905090565b600061054582610d8e565b905073ffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff161693508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146105ba576105b963a114810060e01b610c50565b5b6000806105c684610e8a565b915091506105dc81876105d7610eb1565b610eb9565b610607576105f1866105ec610eb1565b610b42565b610606576106056359c896be60e01b610c50565b5b5b6106148686866001610efd565b801561061f57600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154600101919050819055506106ed856106c9888887610f03565b7c020000000000000000000000000000000000000000000000000000000017610f2b565b600460008681526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000084161415610775576000600185019050600060046000838152602001908152602001600020541415610773576000548114610772578360046000838152602001908152602001600020819055505b5b505b600073ffffffffffffffffffffffffffffffffffffffff8673ffffffffffffffffffffffffffffffffffffffff161690508481887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a460008114156107e8576107e763ea553b3460e01b610c50565b5b6107f58787876001610f56565b50505050505050565b61081983838360405180602001604052806000815250610a72565b505050565b600061082982610d8e565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561087757610876638f4eb60460e01b610c50565b5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b6060600380546108d79061186d565b80601f01602080910402602001604051908101604052809291908181526020018280546109039061186d565b80156109505780601f1061092557610100808354040283529160200191610950565b820191906000526020600020905b81548152906001019060200180831161093357829003601f168201915b5050505050905090565b6109643382610f5c565b50565b8060076000610974610eb1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610a21610eb1565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610a66919061132f565b60405180910390a35050565b610a7d84848461053a565b60008373ffffffffffffffffffffffffffffffffffffffff163b14610abe57610aa8848484846110c2565b610abd57610abc63d1a57ed660e01b610c50565b5b5b50505050565b6060610acf82610bd6565b610ae457610ae363a14c4b5060e01b610c50565b5b6000610aee6111f2565b9050600081511415610b0f5760405180602001604052806000815250610b3a565b80610b1984611209565b604051602001610b2a9291906118db565b6040516020818303038152906040525b915050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600081610be1610d89565b11610c4b57600054821015610c4a5760005b600060046000858152602001908152602001600020549150811415610c235782610c1c9061192e565b9250610bf3565b60007c01000000000000000000000000000000000000000000000000000000008216149150505b5b919050565b8060005260046000fd5b6000610c658361081e565b9050818015610ca757508073ffffffffffffffffffffffffffffffffffffffff16610c8e610eb1565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610cd357610cbd81610cb8610eb1565b610b42565b610cd257610cd163cfb3b94260e01b610c50565b5b5b836006600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b600090565b600081610d99610d89565b11610e7457600460008381526020019081526020016000205490506000811415610e46576000548210610dd757610dd663df2d9b4260e01b610c50565b5b5b60046000836001900393508381526020019081526020016000205490506000811415610e0357610e41565b60007c010000000000000000000000000000000000000000000000000000000082161415610e3057610e85565b610e4063df2d9b4260e01b610c50565b5b610dd8565b60007c010000000000000000000000000000000000000000000000000000000082161415610e7357610e85565b5b610e8463df2d9b4260e01b610c50565b5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e8610f1a868684611262565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b6000805490506000821415610f7c57610f7b63b562e8dd60e01b610c50565b5b610f896000848385610efd565b610fa983610f9a6000866000610f03565b610fa38561126b565b17610f2b565b6004600083815260200190815260200160002081905550600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600073ffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff16169050600081141561106257611061632e07630060e01b610c50565b5b6000838301905060008390505b808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a48181600101915081141561106f57816000819055505050506110bd6000848385610f56565b505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026110e8610eb1565b8786866040518563ffffffff1660e01b815260040161110a94939291906119ad565b6020604051808303816000875af192505050801561114657506040513d601f19601f820116820180604052508101906111439190611a0e565b60015b61119f573d8060008114611176576040519150601f19603f3d011682016040523d82523d6000602084013e61117b565b606091505b506000815114156111975761119663d1a57ed660e01b610c50565b5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b606060405180602001604052806000815250905090565b606060a060405101806040526020810391506000825281835b60011561124d57600184039350600a81066030018453600a81049050806112485761124d565b611222565b50828103602084039350808452505050919050565b60009392505050565b60006001821460e11b9050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6112c48161128f565b81146112cf57600080fd5b50565b6000813590506112e1816112bb565b92915050565b6000602082840312156112fd576112fc611285565b5b600061130b848285016112d2565b91505092915050565b60008115159050919050565b61132981611314565b82525050565b60006020820190506113446000830184611320565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611384578082015181840152602081019050611369565b83811115611393576000848401525b50505050565b6000601f19601f8301169050919050565b60006113b58261134a565b6113bf8185611355565b93506113cf818560208601611366565b6113d881611399565b840191505092915050565b600060208201905081810360008301526113fd81846113aa565b905092915050565b6000819050919050565b61141881611405565b811461142357600080fd5b50565b6000813590506114358161140f565b92915050565b60006020828403121561145157611450611285565b5b600061145f84828501611426565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061149382611468565b9050919050565b6114a381611488565b82525050565b60006020820190506114be600083018461149a565b92915050565b6114cd81611488565b81146114d857600080fd5b50565b6000813590506114ea816114c4565b92915050565b6000806040838503121561150757611506611285565b5b6000611515858286016114db565b925050602061152685828601611426565b9150509250929050565b61153981611405565b82525050565b60006020820190506115546000830184611530565b92915050565b60008060006060848603121561157357611572611285565b5b6000611581868287016114db565b9350506020611592868287016114db565b92505060406115a386828701611426565b9150509250925092565b6000602082840312156115c3576115c2611285565b5b60006115d1848285016114db565b91505092915050565b6115e381611314565b81146115ee57600080fd5b50565b600081359050611600816115da565b92915050565b6000806040838503121561161d5761161c611285565b5b600061162b858286016114db565b925050602061163c858286016115f1565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61168882611399565b810181811067ffffffffffffffff821117156116a7576116a6611650565b5b80604052505050565b60006116ba61127b565b90506116c6828261167f565b919050565b600067ffffffffffffffff8211156116e6576116e5611650565b5b6116ef82611399565b9050602081019050919050565b82818337600083830152505050565b600061171e611719846116cb565b6116b0565b90508281526020810184848401111561173a5761173961164b565b5b6117458482856116fc565b509392505050565b600082601f83011261176257611761611646565b5b813561177284826020860161170b565b91505092915050565b6000806000806080858703121561179557611794611285565b5b60006117a3878288016114db565b94505060206117b4878288016114db565b93505060406117c587828801611426565b925050606085013567ffffffffffffffff8111156117e6576117e561128a565b5b6117f28782880161174d565b91505092959194509250565b6000806040838503121561181557611814611285565b5b6000611823858286016114db565b9250506020611834858286016114db565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061188557607f821691505b602082108114156118995761189861183e565b5b50919050565b600081905092915050565b60006118b58261134a565b6118bf818561189f565b93506118cf818560208601611366565b80840191505092915050565b60006118e782856118aa565b91506118f382846118aa565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061193982611405565b9150600082141561194d5761194c6118ff565b5b600182039050919050565b600081519050919050565b600082825260208201905092915050565b600061197f82611958565b6119898185611963565b9350611999818560208601611366565b6119a281611399565b840191505092915050565b60006080820190506119c2600083018761149a565b6119cf602083018661149a565b6119dc6040830185611530565b81810360608301526119ee8184611974565b905095945050505050565b600081519050611a08816112bb565b92915050565b600060208284031215611a2457611a23611285565b5b6000611a32848285016119f9565b9150509291505056fea264697066735822122084471b5ab6ece53d6e65fc4848ca1c9819f4317ba06ab53c9076f40aa4d2026c64736f6c634300080c0033