608060405260405180602001604052806000815250600a90805190602001906200002b92919062000236565b506107d0600b556005600c5566071afd498d0000600d556107d0600e556001600f5560006010556000601160006101000a81548160ff0219169083151502179055503480156200007a57600080fd5b506040518060400160405280600881526020017f49616d47726f6f740000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f47524f4f540000000000000000000000000000000000000000000000000000008152508160029080519060200190620000ff92919062000236565b5080600390805190602001906200011892919062000236565b50620001296200015f60201b60201c565b600081905550505062000151620001456200016860201b60201c565b6200017060201b60201c565b60016009819055506200034b565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002449062000315565b90600052602060002090601f016020900481019282620002685760008555620002b4565b82601f106200028357805160ff1916838001178555620002b4565b82800160010185558215620002b4579182015b82811115620002b357825182559160200191906001019062000296565b5b509050620002c39190620002c7565b5090565b5b80821115620002e2576000816000905550600101620002c8565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200032e57607f821691505b60208210811415620003455762000344620002e6565b5b50919050565b613d60806200035b6000396000f3fe6080604052600436106101f95760003560e01c8063715018a61161010d578063a22cb465116100a0578063c87b56dd1161006f578063c87b56dd146106d6578063d547cfb714610713578063d5abeb011461073e578063e985e9c514610769578063f2fde38b146107a6576101f9565b8063a22cb46514610630578063b88d4fde14610659578063c1f2612314610682578063c6a91b42146106ab576101f9565b8063982d669e116100dc578063982d669e1461059557806398710d1e146105c05780639e9fcffc146105eb578063a0712d6814610614576101f9565b8063715018a6146104ff5780638da5cb5b1461051657806391b7f5ed1461054157806395d89b411461056a576101f9565b80631e84c4131161019057806342842e0e1161015f57806342842e0e1461040a57806355f804b3146104335780635aca1bb61461045c5780636352211e1461048557806370a08231146104c2576101f9565b80631e84c41314610376578063202f298a146103a157806323b872dd146103ca5780633ccfd60b146103f3576101f9565b8063095ea7b3116101cc578063095ea7b3146102ce5780630a00ae83146102f757806318160ddd14610320578063193ad7b41461034b576101f9565b806301ffc9a7146101fe57806306fdde031461023b57806307e89ec014610266578063081812fc14610291575b600080fd5b34801561020a57600080fd5b5061022560048036038101906102209190612c23565b6107cf565b6040516102329190612c6b565b60405180910390f35b34801561024757600080fd5b506102506108b1565b60405161025d9190612d1f565b60405180910390f35b34801561027257600080fd5b5061027b610943565b6040516102889190612d5a565b60405180910390f35b34801561029d57600080fd5b506102b860048036038101906102b39190612da1565b610949565b6040516102c59190612e0f565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f09190612e56565b6109c5565b005b34801561030357600080fd5b5061031e60048036038101906103199190612da1565b610ad0565b005b34801561032c57600080fd5b50610335610b56565b6040516103429190612d5a565b60405180910390f35b34801561035757600080fd5b50610360610b6d565b60405161036d9190612d5a565b60405180910390f35b34801561038257600080fd5b5061038b610b73565b6040516103989190612c6b565b60405180910390f35b3480156103ad57600080fd5b506103c860048036038101906103c39190612da1565b610b86565b005b3480156103d657600080fd5b506103f160048036038101906103ec9190612e96565b610c0c565b005b3480156103ff57600080fd5b50610408610c1c565b005b34801561041657600080fd5b50610431600480360381019061042c9190612e96565b610cfa565b005b34801561043f57600080fd5b5061045a6004803603810190610455919061301e565b610d1a565b005b34801561046857600080fd5b50610483600480360381019061047e9190613093565b610db0565b005b34801561049157600080fd5b506104ac60048036038101906104a79190612da1565b610e49565b6040516104b99190612e0f565b60405180910390f35b3480156104ce57600080fd5b506104e960048036038101906104e491906130c0565b610e5f565b6040516104f69190612d5a565b60405180910390f35b34801561050b57600080fd5b50610514610f2f565b005b34801561052257600080fd5b5061052b610fb7565b6040516105389190612e0f565b60405180910390f35b34801561054d57600080fd5b5061056860048036038101906105639190612da1565b610fe1565b005b34801561057657600080fd5b5061057f611067565b60405161058c9190612d1f565b60405180910390f35b3480156105a157600080fd5b506105aa6110f9565b6040516105b79190612d5a565b60405180910390f35b3480156105cc57600080fd5b506105d56110ff565b6040516105e29190612d5a565b60405180910390f35b3480156105f757600080fd5b50610612600480360381019061060d9190612da1565b611105565b005b61062e60048036038101906106299190612da1565b61118b565b005b34801561063c57600080fd5b50610657600480360381019061065291906130ed565b6113cc565b005b34801561066557600080fd5b50610680600480360381019061067b91906131ce565b611544565b005b34801561068e57600080fd5b506106a960048036038101906106a49190612da1565b6115c0565b005b3480156106b757600080fd5b506106c06116e3565b6040516106cd9190612d5a565b60405180910390f35b3480156106e257600080fd5b506106fd60048036038101906106f89190612da1565b6116e9565b60405161070a9190612d1f565b60405180910390f35b34801561071f57600080fd5b50610728611765565b6040516107359190612d1f565b60405180910390f35b34801561074a57600080fd5b506107536117f3565b6040516107609190612d5a565b60405180910390f35b34801561077557600080fd5b50610790600480360381019061078b9190613251565b6117f9565b60405161079d9190612c6b565b60405180910390f35b3480156107b257600080fd5b506107cd60048036038101906107c891906130c0565b61188d565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061089a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108aa57506108a982611985565b5b9050919050565b6060600280546108c0906132c0565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec906132c0565b80156109395780601f1061090e57610100808354040283529160200191610939565b820191906000526020600020905b81548152906001019060200180831161091c57829003601f168201915b5050505050905090565b600d5481565b6000610954826119ef565b61098a576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109d082610e49565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a38576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a57611a3d565b73ffffffffffffffffffffffffffffffffffffffff1614158015610a895750610a8781610a82611a3d565b6117f9565b155b15610ac0576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610acb838383611a45565b505050565b610ad8611a3d565b73ffffffffffffffffffffffffffffffffffffffff16610af6610fb7565b73ffffffffffffffffffffffffffffffffffffffff1614610b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b439061333e565b60405180910390fd5b80600e8190555050565b6000610b60611af7565b6001546000540303905090565b60105481565b601160009054906101000a900460ff1681565b610b8e611a3d565b73ffffffffffffffffffffffffffffffffffffffff16610bac610fb7565b73ffffffffffffffffffffffffffffffffffffffff1614610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf99061333e565b60405180910390fd5b80600f8190555050565b610c17838383611b00565b505050565b610c24611a3d565b73ffffffffffffffffffffffffffffffffffffffff16610c42610fb7565b73ffffffffffffffffffffffffffffffffffffffff1614610c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8f9061333e565b60405180910390fd5b60026009541415610cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd5906133aa565b60405180910390fd5b6002600981905550610cf03347611fb6565b6001600981905550565b610d1583838360405180602001604052806000815250611544565b505050565b610d22611a3d565b73ffffffffffffffffffffffffffffffffffffffff16610d40610fb7565b73ffffffffffffffffffffffffffffffffffffffff1614610d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8d9061333e565b60405180910390fd5b80600a9080519060200190610dac929190612ad1565b5050565b610db8611a3d565b73ffffffffffffffffffffffffffffffffffffffff16610dd6610fb7565b73ffffffffffffffffffffffffffffffffffffffff1614610e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e239061333e565b60405180910390fd5b80601160006101000a81548160ff02191690831515021790555050565b6000610e54826120aa565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ec7576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b610f37611a3d565b73ffffffffffffffffffffffffffffffffffffffff16610f55610fb7565b73ffffffffffffffffffffffffffffffffffffffff1614610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa29061333e565b60405180910390fd5b610fb56000612339565b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610fe9611a3d565b73ffffffffffffffffffffffffffffffffffffffff16611007610fb7565b73ffffffffffffffffffffffffffffffffffffffff161461105d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110549061333e565b60405180910390fd5b80600d8190555050565b606060038054611076906132c0565b80601f01602080910402602001604051908101604052809291908181526020018280546110a2906132c0565b80156110ef5780601f106110c4576101008083540402835291602001916110ef565b820191906000526020600020905b8154815290600101906020018083116110d257829003601f168201915b5050505050905090565b600e5481565b600f5481565b61110d611a3d565b73ffffffffffffffffffffffffffffffffffffffff1661112b610fb7565b73ffffffffffffffffffffffffffffffffffffffff1614611181576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111789061333e565b60405180910390fd5b80600c8190555050565b601160009054906101000a900460ff166111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d190613416565b60405180910390fd5b6001600b546111e99190613465565b816111f2610b56565b6111fc9190613465565b1061123c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123390613507565b60405180910390fd5b600e548160105461124d9190613465565b11156112a8573481600d546112629190613527565b11156112a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129a906135cd565b60405180910390fd5b6113bf565b600f54816112b533610e5f565b6112bf9190613465565b111561135f573481600d546112d49190613527565b1115611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c906135cd565b60405180910390fd5b600c5481111561135a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113519061365f565b60405180910390fd5b6113be565b600f548111156113a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139b9061365f565b60405180910390fd5b80601060008282546113b69190613465565b925050819055505b5b6113c933826123ff565b50565b6113d4611a3d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611439576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000611446611a3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166114f3611a3d565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115389190612c6b565b60405180910390a35050565b61154f848484611b00565b61156e8373ffffffffffffffffffffffffffffffffffffffff1661241d565b8015611583575061158184848484612440565b155b156115ba576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6115c8611a3d565b73ffffffffffffffffffffffffffffffffffffffff166115e6610fb7565b73ffffffffffffffffffffffffffffffffffffffff161461163c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116339061333e565b60405180910390fd5b6000811161167f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611676906136cb565b60405180910390fd5b600b548161168b610b56565b6116959190613465565b11156116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd90613737565b60405180910390fd5b6116e033826123ff565b50565b600c5481565b60606116f4826119ef565b611733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172a906137c9565b60405180910390fd5b600a61173e836125a0565b60405160200161174f929190613905565b6040516020818303038152906040529050919050565b600a8054611772906132c0565b80601f016020809104026020016040519081016040528092919081815260200182805461179e906132c0565b80156117eb5780601f106117c0576101008083540402835291602001916117eb565b820191906000526020600020905b8154815290600101906020018083116117ce57829003601f168201915b505050505081565b600b5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611895611a3d565b73ffffffffffffffffffffffffffffffffffffffff166118b3610fb7565b73ffffffffffffffffffffffffffffffffffffffff1614611909576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119009061333e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611979576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611970906139a6565b60405180910390fd5b61198281612339565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000816119fa611af7565b11158015611a09575060005482105b8015611a36575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006001905090565b6000611b0b826120aa565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611b76576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff16611b97611a3d565b73ffffffffffffffffffffffffffffffffffffffff161480611bc65750611bc585611bc0611a3d565b6117f9565b5b80611c0b5750611bd4611a3d565b73ffffffffffffffffffffffffffffffffffffffff16611bf384610949565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611c44576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611cab576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cb88585856001612701565b611cc460008487611a45565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611f44576000548214611f4357878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611faf8585856001612707565b5050505050565b80471015611ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff090613a12565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161201f90613a63565b60006040518083038185875af1925050503d806000811461205c576040519150601f19603f3d011682016040523d82523d6000602084013e612061565b606091505b50509050806120a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209c90613aea565b60405180910390fd5b505050565b6120b2612b57565b6000829050806120c0611af7565b111580156120cf575060005481105b15612302576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161230057600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146121e4578092505050612334565b5b6001156122ff57818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146122fa578092505050612334565b6121e5565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61241982826040518060200160405280600081525061270d565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612466611a3d565b8786866040518563ffffffff1660e01b81526004016124889493929190613b5f565b602060405180830381600087803b1580156124a257600080fd5b505af19250505080156124d357506040513d601f19601f820116820180604052508101906124d09190613bc0565b60015b61254d573d8060008114612503576040519150601f19603f3d011682016040523d82523d6000602084013e612508565b606091505b50600081511415612545576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b606060008214156125e8576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506126fc565b600082905060005b6000821461261a57808061260390613bed565b915050600a826126139190613c65565b91506125f0565b60008167ffffffffffffffff81111561263657612635612ef3565b5b6040519080825280601f01601f1916602001820160405280156126685781602001600182028036833780820191505090505b5090505b600085146126f5576001826126819190613c96565b9150600a856126909190613cca565b603061269c9190613465565b60f81b8183815181106126b2576126b1613cfb565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856126ee9190613c65565b945061266c565b8093505050505b919050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561277a576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008314156127b5576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127c26000858386612701565b82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000819050600084820190506129838673ffffffffffffffffffffffffffffffffffffffff1661241d565b15612a49575b818673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46129f86000878480600101955087612440565b612a2e576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80821415612989578260005414612a4457600080fd5b612ab5565b5b818060010192508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415612a4a575b816000819055505050612acb6000858386612707565b50505050565b828054612add906132c0565b90600052602060002090601f016020900481019282612aff5760008555612b46565b82601f10612b1857805160ff1916838001178555612b46565b82800160010185558215612b46579182015b82811115612b45578251825591602001919060010190612b2a565b5b509050612b539190612b9a565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115612bb3576000816000905550600101612b9b565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612c0081612bcb565b8114612c0b57600080fd5b50565b600081359050612c1d81612bf7565b92915050565b600060208284031215612c3957612c38612bc1565b5b6000612c4784828501612c0e565b91505092915050565b60008115159050919050565b612c6581612c50565b82525050565b6000602082019050612c806000830184612c5c565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612cc0578082015181840152602081019050612ca5565b83811115612ccf576000848401525b50505050565b6000601f19601f8301169050919050565b6000612cf182612c86565b612cfb8185612c91565b9350612d0b818560208601612ca2565b612d1481612cd5565b840191505092915050565b60006020820190508181036000830152612d398184612ce6565b905092915050565b6000819050919050565b612d5481612d41565b82525050565b6000602082019050612d6f6000830184612d4b565b92915050565b612d7e81612d41565b8114612d8957600080fd5b50565b600081359050612d9b81612d75565b92915050565b600060208284031215612db757612db6612bc1565b5b6000612dc584828501612d8c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612df982612dce565b9050919050565b612e0981612dee565b82525050565b6000602082019050612e246000830184612e00565b92915050565b612e3381612dee565b8114612e3e57600080fd5b50565b600081359050612e5081612e2a565b92915050565b60008060408385031215612e6d57612e6c612bc1565b5b6000612e7b85828601612e41565b9250506020612e8c85828601612d8c565b9150509250929050565b600080600060608486031215612eaf57612eae612bc1565b5b6000612ebd86828701612e41565b9350506020612ece86828701612e41565b9250506040612edf86828701612d8c565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612f2b82612cd5565b810181811067ffffffffffffffff82111715612f4a57612f49612ef3565b5b80604052505050565b6000612f5d612bb7565b9050612f698282612f22565b919050565b600067ffffffffffffffff821115612f8957612f88612ef3565b5b612f9282612cd5565b9050602081019050919050565b82818337600083830152505050565b6000612fc1612fbc84612f6e565b612f53565b905082815260208101848484011115612fdd57612fdc612eee565b5b612fe8848285612f9f565b509392505050565b600082601f83011261300557613004612ee9565b5b8135613015848260208601612fae565b91505092915050565b60006020828403121561303457613033612bc1565b5b600082013567ffffffffffffffff81111561305257613051612bc6565b5b61305e84828501612ff0565b91505092915050565b61307081612c50565b811461307b57600080fd5b50565b60008135905061308d81613067565b92915050565b6000602082840312156130a9576130a8612bc1565b5b60006130b78482850161307e565b91505092915050565b6000602082840312156130d6576130d5612bc1565b5b60006130e484828501612e41565b91505092915050565b6000806040838503121561310457613103612bc1565b5b600061311285828601612e41565b92505060206131238582860161307e565b9150509250929050565b600067ffffffffffffffff82111561314857613147612ef3565b5b61315182612cd5565b9050602081019050919050565b600061317161316c8461312d565b612f53565b90508281526020810184848401111561318d5761318c612eee565b5b613198848285612f9f565b509392505050565b600082601f8301126131b5576131b4612ee9565b5b81356131c584826020860161315e565b91505092915050565b600080600080608085870312156131e8576131e7612bc1565b5b60006131f687828801612e41565b945050602061320787828801612e41565b935050604061321887828801612d8c565b925050606085013567ffffffffffffffff81111561323957613238612bc6565b5b613245878288016131a0565b91505092959194509250565b6000806040838503121561326857613267612bc1565b5b600061327685828601612e41565b925050602061328785828601612e41565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806132d857607f821691505b602082108114156132ec576132eb613291565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613328602083612c91565b9150613333826132f2565b602082019050919050565b600060208201905081810360008301526133578161331b565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613394601f83612c91565b915061339f8261335e565b602082019050919050565b600060208201905081810360008301526133c381613387565b9050919050565b7f5075626c69632073616c65206973206e6f74206f70656e000000000000000000600082015250565b6000613400601783612c91565b915061340b826133ca565b602082019050919050565b6000602082019050818103600083015261342f816133f3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061347082612d41565b915061347b83612d41565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134b0576134af613436565b5b828201905092915050565b7f4e6f206d6f726500000000000000000000000000000000000000000000000000600082015250565b60006134f1600783612c91565b91506134fc826134bb565b602082019050919050565b60006020820190508181036000830152613520816134e4565b9050919050565b600061353282612d41565b915061353d83612d41565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561357657613575613436565b5b828202905092915050565b7f496e636f7272656374204554482076616c75652073656e740000000000000000600082015250565b60006135b7601883612c91565b91506135c282613581565b602082019050919050565b600060208201905081810360008301526135e6816135aa565b9050919050565b7f4d6178206d696e747320706572207472616e73616374696f6e2065786365656460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000613649602283612c91565b9150613654826135ed565b604082019050919050565b600060208201905081810360008301526136788161363c565b9050919050565b7f496e76616c6964206d696e7420616d6f756e7400000000000000000000000000600082015250565b60006136b5601383612c91565b91506136c08261367f565b602082019050919050565b600060208201905081810360008301526136e4816136a8565b9050919050565b7f4d6178696d756d20737570706c79206578636565646564000000000000000000600082015250565b6000613721601783612c91565b915061372c826136eb565b602082019050919050565b6000602082019050818103600083015261375081613714565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006137b3602f83612c91565b91506137be82613757565b604082019050919050565b600060208201905081810360008301526137e2816137a6565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b60008154613816816132c0565b61382081866137e9565b9450600182166000811461383b576001811461384c5761387f565b60ff1983168652818601935061387f565b613855856137f4565b60005b8381101561387757815481890152600182019150602081019050613858565b838801955050505b50505092915050565b600061389382612c86565b61389d81856137e9565b93506138ad818560208601612ca2565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b60006138ef6005836137e9565b91506138fa826138b9565b600582019050919050565b60006139118285613809565b915061391d8284613888565b9150613928826138e2565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613990602683612c91565b915061399b82613934565b604082019050919050565b600060208201905081810360008301526139bf81613983565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006139fc601d83612c91565b9150613a07826139c6565b602082019050919050565b60006020820190508181036000830152613a2b816139ef565b9050919050565b600081905092915050565b50565b6000613a4d600083613a32565b9150613a5882613a3d565b600082019050919050565b6000613a6e82613a40565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613ad4603a83612c91565b9150613adf82613a78565b604082019050919050565b60006020820190508181036000830152613b0381613ac7565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613b3182613b0a565b613b3b8185613b15565b9350613b4b818560208601612ca2565b613b5481612cd5565b840191505092915050565b6000608082019050613b746000830187612e00565b613b816020830186612e00565b613b8e6040830185612d4b565b8181036060830152613ba08184613b26565b905095945050505050565b600081519050613bba81612bf7565b92915050565b600060208284031215613bd657613bd5612bc1565b5b6000613be484828501613bab565b91505092915050565b6000613bf882612d41565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c2b57613c2a613436565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c7082612d41565b9150613c7b83612d41565b925082613c8b57613c8a613c36565b5b828204905092915050565b6000613ca182612d41565b9150613cac83612d41565b925082821015613cbf57613cbe613436565b5b828203905092915050565b6000613cd582612d41565b9150613ce083612d41565b925082613cf057613cef613c36565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122053145b6c25c7857a266e2c07e74674d979a16e9e5b9573596e7a8eababe8b90464736f6c63430008080033