6080604052666a94d74f430000600855738ad599c3a0ff1de082011efddc58f1908eb6e6d8600960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200007157600080fd5b506040518060400160405280600b81526020017f706570657468657265756d0000000000000000000000000000000000000000008152506040518060400160405280600281526020017f50450000000000000000000000000000000000000000000000000000000000008152508160019080519060200190620000f692919062000206565b5080600290805190602001906200010f92919062000206565b50505062000132620001266200013860201b60201c565b6200014060201b60201c565b6200031b565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200021490620002e5565b90600052602060002090601f01602090048101928262000238576000855562000284565b82601f106200025357805160ff191683800117855562000284565b8280016001018555821562000284579182015b828111156200028357825182559160200191906001019062000266565b5b50905062000293919062000297565b5090565b5b80821115620002b257600081600090555060010162000298565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002fe57607f821691505b60208210811415620003155762000314620002b6565b5b50919050565b613f65806200032b6000396000f3fe60806040526004361061020f5760003560e01c806365f1309711610118578063a22cb465116100a0578063d3681b951161006f578063d3681b95146107a4578063e222c7f9146107cf578063e985e9c5146107e6578063f2fde38b14610823578063f7ca32751461084c5761020f565b8063a22cb465146106fe578063b88d4fde14610727578063c4ae316814610750578063c87b56dd146107675761020f565b806383a974a2116100e757806383a974a2146106365780638456cb59146106615780638da5cb5b1461068c57806395d89b41146106b7578063a0712d68146106e25761020f565b806365f130971461057a57806370a08231146105a5578063715018a6146105e25780637a09e413146105f95761020f565b80632f745c591161019b57806342842e0e1161016a57806342842e0e146104855780634437152a146104ae57806344a0d68a146104d75780634f6ccce7146105005780636352211e1461053d5761020f565b80632f745c59146103db57806332cb6b0c1461041857806333bc1c5c146104435780633ccfd60b1461046e5761020f565b806313faede6116101e257806313faede6146102e257806318160ddd1461030d5780631aa8bd2f146103385780631c16521c1461037557806323b872dd146103b25761020f565b806301ffc9a71461021457806306fdde0314610251578063081812fc1461027c578063095ea7b3146102b9575b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612c5c565b610877565b6040516102489190612ca4565b60405180910390f35b34801561025d57600080fd5b506102666109c1565b6040516102739190612d58565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190612db0565b610a53565b6040516102b09190612e1e565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db9190612e65565b610acf565b005b3480156102ee57600080fd5b506102f7610bda565b6040516103049190612eb4565b60405180910390f35b34801561031957600080fd5b50610322610be0565b60405161032f9190612eb4565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a9190612db0565b610be9565b60405161036c9190612d58565b60405180910390f35b34801561038157600080fd5b5061039c60048036038101906103979190612ecf565b610c9a565b6040516103a99190612eb4565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d49190612efc565b610cb2565b005b3480156103e757600080fd5b5061040260048036038101906103fd9190612e65565b610cc2565b60405161040f9190612eb4565b60405180910390f35b34801561042457600080fd5b5061042d610e83565b60405161043a9190612eb4565b60405180910390f35b34801561044f57600080fd5b50610458610e88565b6040516104659190612ca4565b60405180910390f35b34801561047a57600080fd5b50610483610e9b565b005b34801561049157600080fd5b506104ac60048036038101906104a79190612efc565b610eec565b005b3480156104ba57600080fd5b506104d560048036038101906104d09190612ecf565b610f0c565b005b3480156104e357600080fd5b506104fe60048036038101906104f99190612db0565b610f58565b005b34801561050c57600080fd5b5061052760048036038101906105229190612db0565b610f6a565b6040516105349190612eb4565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f9190612db0565b610fb4565b6040516105719190612e1e565b60405180910390f35b34801561058657600080fd5b5061058f610fca565b60405161059c9190612eb4565b60405180910390f35b3480156105b157600080fd5b506105cc60048036038101906105c79190612ecf565b610fcf565b6040516105d99190612eb4565b60405180910390f35b3480156105ee57600080fd5b506105f76110af565b005b34801561060557600080fd5b50610620600480360381019061061b9190612db0565b6110c3565b60405161062d9190612d58565b60405180910390f35b34801561064257600080fd5b5061064b6111bf565b604051610658919061300d565b60405180910390f35b34801561066d57600080fd5b50610676611271565b6040516106839190612ca4565b60405180910390f35b34801561069857600080fd5b506106a1611284565b6040516106ae9190612e1e565b60405180910390f35b3480156106c357600080fd5b506106cc6112ae565b6040516106d99190612d58565b60405180910390f35b6106fc60048036038101906106f79190612db0565b611340565b005b34801561070a57600080fd5b506107256004803603810190610720919061305b565b611594565b005b34801561073357600080fd5b5061074e600480360381019061074991906131d0565b61170c565b005b34801561075c57600080fd5b5061076561175f565b005b34801561077357600080fd5b5061078e60048036038101906107899190612db0565b611793565b60405161079b9190612d58565b60405180910390f35b3480156107b057600080fd5b506107b96117a5565b6040516107c69190612e1e565b60405180910390f35b3480156107db57600080fd5b506107e46117cb565b005b3480156107f257600080fd5b5061080d60048036038101906108089190613253565b6117ff565b60405161081a9190612ca4565b60405180910390f35b34801561082f57600080fd5b5061084a60048036038101906108459190612ecf565b611893565b005b34801561085857600080fd5b50610861611917565b60405161086e91906132a2565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061094257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109aa57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109ba57506109b9826119c0565b5b9050919050565b6060600180546109d0906132ec565b80601f01602080910402602001604051908101604052809291908181526020018280546109fc906132ec565b8015610a495780601f10610a1e57610100808354040283529160200191610a49565b820191906000526020600020905b815481529060010190602001808311610a2c57829003601f168201915b5050505050905090565b6000610a5e82611a2a565b610a94576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610ada82610fb4565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b42576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b61611a37565b73ffffffffffffffffffffffffffffffffffffffff1614158015610b935750610b9181610b8c611a37565b6117ff565b155b15610bca576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bd5838383611a3f565b505050565b60085481565b60008054905090565b6060600073d15d1450382bcc50c819e722be6079593493e603905060008173ffffffffffffffffffffffffffffffffffffffff16638eba7fac85610c2b611917565b6040518363ffffffff1660e01b8152600401610c4892919061331e565b600060405180830381865afa158015610c65573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610c8e91906133e8565b90508092505050919050565b600a6020528060005260406000206000915090505481565b610cbd838383611af1565b505050565b6000610ccd83610fcf565b8210610d05576040517f0ddac30e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610d0f610be0565b905060008060005b83811015610e69576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610e0957806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e5b5786841415610e52578195505050505050610e7d565b83806001019450505b508080600101915050610d17565b506000610e7957610e78613431565b5b5050505b92915050565b60fa81565b600960009054906101000a900460ff1681565b610ea3612016565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610ee9573d6000803e3d6000fd5b50565b610f078383836040518060200160405280600081525061170c565b505050565b610f14612016565b80600960026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610f60612016565b8060088190555050565b6000610f74610be0565b8210610fac576040517fa723001c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b819050919050565b6000610fbf82612094565b600001519050919050565b600a81565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611037576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b6110b7612016565b6110c1600061221c565b565b60606110ce82611a2a565b61110d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611104906134d2565b60405180910390fd5b600061111883610be9565b9050600061114482604051602001611130919061352e565b6040516020818303038152906040526122e2565b6040516020016111549190613591565b604051602081830303815290604052905061119761117185612446565b82604051602001611183929190613704565b6040516020818303038152906040526122e2565b6040516020016111a79190613795565b60405160208183030381529060405292505050919050565b6060600033905060006111d182610fcf565b905060008167ffffffffffffffff8111156111ef576111ee6130a5565b5b60405190808252806020026020018201604052801561121d5781602001602082028036833780820191505090505b50905060005b82811015611267576112358482610cc2565b828281518110611248576112476137b7565b5b602002602001018181525050808061125f90613815565b915050611223565b5080935050505090565b600960019054906101000a900460ff1681565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546112bd906132ec565b80601f01602080910402602001604051908101604052809291908181526020018280546112e9906132ec565b80156113365780601f1061130b57610100808354040283529160200191611336565b820191906000526020600020905b81548152906001019060200180831161131957829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a5906138aa565b60405180910390fd5b600960009054906101000a900460ff166113fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f490613916565b60405180910390fd5b60fa81611408610be0565b6114129190613936565b1115611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a906139d8565b60405180910390fd5b600a81600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114a09190613936565b11156114e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d890613a44565b60405180910390fd5b806008546114ef9190613a64565b341015611531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152890613b0a565b60405180910390fd5b80600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115809190613936565b92505081905550611591338261251e565b50565b61159c611a37565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611601576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806006600061160e611a37565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166116bb611a37565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117009190612ca4565b60405180910390a35050565b611717848484611af1565b6117238484848461253c565b611759576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b611767612016565b600960019054906101000a900460ff1615600960016101000a81548160ff021916908315150217905550565b606061179e826110c3565b9050919050565b600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117d3612016565b600960009054906101000a900460ff1615600960006101000a81548160ff021916908315150217905550565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61189b612016565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561190b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190290613b9c565b60405180910390fd5b6119148161221c565b50565b600080600960029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa15801561198c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b09190613ca9565b5050505050509050809250505090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000805482109050919050565b600033905090565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000611afc82612094565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611b23611a37565b73ffffffffffffffffffffffffffffffffffffffff161480611b7f5750611b48611a37565b73ffffffffffffffffffffffffffffffffffffffff16611b6784610a53565b73ffffffffffffffffffffffffffffffffffffffff16145b80611b9b5750611b9a8260000151611b95611a37565b6117ff565b5b905080611bd4576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611c3d576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611ca4576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cb185858560016126bb565b611cc16000848460000151611a3f565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611fa657611f0581611a2a565b15611fa55782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461200f85858560016126c1565b5050505050565b61201e611a37565b73ffffffffffffffffffffffffffffffffffffffff1661203c611284565b73ffffffffffffffffffffffffffffffffffffffff1614612092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208990613d97565b60405180910390fd5b565b61209c612bb6565b6120a582611a2a565b6120db576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008290505b600081106121e4576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146121d5578092505050612217565b508080600190039150506120e1565b506040517fe7c0edfb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b606060008251141561230557604051806020016040528060008152509050612441565b6000604051806060016040528060408152602001613ef060409139905060006003600285516123349190613936565b61233e9190613de6565b600461234a9190613a64565b67ffffffffffffffff811115612363576123626130a5565b5b6040519080825280601f01601f1916602001820160405280156123955781602001600182028036833780820191505090505b509050600182016020820185865187015b80821015612401576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f81168501518453600184019350506123a6565b505060038651066001811461241d576002811461243057612438565b603d6001830353603d6002830353612438565b603d60018303535b50505080925050505b919050565b606060006001612455846126c7565b01905060008167ffffffffffffffff811115612474576124736130a5565b5b6040519080825280601f01601f1916602001820160405280156124a65781602001600182028036833780820191505090505b509050600082602001820190505b600115612513578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816124fd576124fc613db7565b5b049450600085141561250e57612513565b6124b4565b819350505050919050565b61253882826040518060200160405280600081525061281a565b5050565b600061255d8473ffffffffffffffffffffffffffffffffffffffff1661282c565b156126ae578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612586611a37565b8786866040518563ffffffff1660e01b81526004016125a89493929190613e61565b6020604051808303816000875af19250505080156125e457506040513d601f19601f820116820180604052508101906125e19190613ec2565b60015b61265e573d8060008114612614576040519150601f19603f3d011682016040523d82523d6000602084013e612619565b606091505b50600081511415612656576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506126b3565b600190505b949350505050565b50505050565b50505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612725577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161271b5761271a613db7565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612762576d04ee2d6d415b85acef8100000000838161275857612757613db7565b5b0492506020810190505b662386f26fc10000831061279157662386f26fc10000838161278757612786613db7565b5b0492506010810190505b6305f5e10083106127ba576305f5e10083816127b0576127af613db7565b5b0492506008810190505b61271083106127df5761271083816127d5576127d4613db7565b5b0492506004810190505b6064831061280257606483816127f8576127f7613db7565b5b0492506002810190505b600a8310612811576001810190505b80915050919050565b612827838383600161284f565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156128bc576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008414156128f7576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61290460008683876126bb565b83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b85811015612b9957818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4838015612b4d5750612b4b600088848861253c565b155b15612b84576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81806001019250508080600101915050612ad2565b508060008190555050612baf60008683876126c1565b5050505050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612c3981612c04565b8114612c4457600080fd5b50565b600081359050612c5681612c30565b92915050565b600060208284031215612c7257612c71612bfa565b5b6000612c8084828501612c47565b91505092915050565b60008115159050919050565b612c9e81612c89565b82525050565b6000602082019050612cb96000830184612c95565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612cf9578082015181840152602081019050612cde565b83811115612d08576000848401525b50505050565b6000601f19601f8301169050919050565b6000612d2a82612cbf565b612d348185612cca565b9350612d44818560208601612cdb565b612d4d81612d0e565b840191505092915050565b60006020820190508181036000830152612d728184612d1f565b905092915050565b6000819050919050565b612d8d81612d7a565b8114612d9857600080fd5b50565b600081359050612daa81612d84565b92915050565b600060208284031215612dc657612dc5612bfa565b5b6000612dd484828501612d9b565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e0882612ddd565b9050919050565b612e1881612dfd565b82525050565b6000602082019050612e336000830184612e0f565b92915050565b612e4281612dfd565b8114612e4d57600080fd5b50565b600081359050612e5f81612e39565b92915050565b60008060408385031215612e7c57612e7b612bfa565b5b6000612e8a85828601612e50565b9250506020612e9b85828601612d9b565b9150509250929050565b612eae81612d7a565b82525050565b6000602082019050612ec96000830184612ea5565b92915050565b600060208284031215612ee557612ee4612bfa565b5b6000612ef384828501612e50565b91505092915050565b600080600060608486031215612f1557612f14612bfa565b5b6000612f2386828701612e50565b9350506020612f3486828701612e50565b9250506040612f4586828701612d9b565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f8481612d7a565b82525050565b6000612f968383612f7b565b60208301905092915050565b6000602082019050919050565b6000612fba82612f4f565b612fc48185612f5a565b9350612fcf83612f6b565b8060005b83811015613000578151612fe78882612f8a565b9750612ff283612fa2565b925050600181019050612fd3565b5085935050505092915050565b600060208201905081810360008301526130278184612faf565b905092915050565b61303881612c89565b811461304357600080fd5b50565b6000813590506130558161302f565b92915050565b6000806040838503121561307257613071612bfa565b5b600061308085828601612e50565b925050602061309185828601613046565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6130dd82612d0e565b810181811067ffffffffffffffff821117156130fc576130fb6130a5565b5b80604052505050565b600061310f612bf0565b905061311b82826130d4565b919050565b600067ffffffffffffffff82111561313b5761313a6130a5565b5b61314482612d0e565b9050602081019050919050565b82818337600083830152505050565b600061317361316e84613120565b613105565b90508281526020810184848401111561318f5761318e6130a0565b5b61319a848285613151565b509392505050565b600082601f8301126131b7576131b661309b565b5b81356131c7848260208601613160565b91505092915050565b600080600080608085870312156131ea576131e9612bfa565b5b60006131f887828801612e50565b945050602061320987828801612e50565b935050604061321a87828801612d9b565b925050606085013567ffffffffffffffff81111561323b5761323a612bff565b5b613247878288016131a2565b91505092959194509250565b6000806040838503121561326a57613269612bfa565b5b600061327885828601612e50565b925050602061328985828601612e50565b9150509250929050565b61329c81612ddd565b82525050565b60006020820190506132b76000830184613293565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061330457607f821691505b60208210811415613318576133176132bd565b5b50919050565b60006040820190506133336000830185612ea5565b6133406020830184613293565b9392505050565b600067ffffffffffffffff821115613362576133616130a5565b5b61336b82612d0e565b9050602081019050919050565b600061338b61338684613347565b613105565b9050828152602081018484840111156133a7576133a66130a0565b5b6133b2848285612cdb565b509392505050565b600082601f8301126133cf576133ce61309b565b5b81516133df848260208601613378565b91505092915050565b6000602082840312156133fe576133fd612bfa565b5b600082015167ffffffffffffffff81111561341c5761341b612bff565b5b613428848285016133ba565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006134bc602f83612cca565b91506134c782613460565b604082019050919050565b600060208201905081810360008301526134eb816134af565b9050919050565b600081905092915050565b600061350882612cbf565b61351281856134f2565b9350613522818560208601612cdb565b80840191505092915050565b600061353a82846134fd565b915081905092915050565b7f646174613a696d6167652f7376672b786d6c3b6261736536342c000000000000600082015250565b600061357b601a836134f2565b915061358682613545565b601a82019050919050565b600061359c8261356e565b91506135a882846134fd565b915081905092915050565b7f7b226e616d65223a22506570456d6f74696f6e20230000000000000000000000600082015250565b60006135e96015836134f2565b91506135f4826135b3565b601582019050919050565b7f222c2022696d616765223a220000000000000000000000000000000000000000600082015250565b6000613635600c836134f2565b9150613640826135ff565b600c82019050919050565b600081519050919050565b600081905092915050565b600061366c8261364b565b6136768185613656565b9350613686818560208601612cdb565b80840191505092915050565b7f222c20226465736372697074696f6e223a2022446f657320657468206d616b6560008201527f2075203a29206f72203a28227d00000000000000000000000000000000000000602082015250565b60006136ee602d836134f2565b91506136f982613692565b602d82019050919050565b600061370f826135dc565b915061371b82856134fd565b915061372682613628565b91506137328284613661565b915061373d826136e1565b91508190509392505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b600061377f601d836134f2565b915061378a82613749565b601d82019050919050565b60006137a082613772565b91506137ac82846134fd565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061382082612d7a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613853576138526137e6565b5b600182019050919050565b7f43616e27742062652063616c6c6564206279206120636f6e7472616374000000600082015250565b6000613894601d83612cca565b915061389f8261385e565b602082019050919050565b600060208201905081810360008301526138c381613887565b9050919050565b7f4e6f742059657420416374697665000000000000000000000000000000000000600082015250565b6000613900600e83612cca565b915061390b826138ca565b602082019050919050565b6000602082019050818103600083015261392f816138f3565b9050919050565b600061394182612d7a565b915061394c83612d7a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613981576139806137e6565b5b828201905092915050565b7f4265796f6e64204d617820537570706c79210000000000000000000000000000600082015250565b60006139c2601283612cca565b91506139cd8261398c565b602082019050919050565b600060208201905081810360008301526139f1816139b5565b9050919050565b7f416c7265616479206d696e746564210000000000000000000000000000000000600082015250565b6000613a2e600f83612cca565b9150613a39826139f8565b602082019050919050565b60006020820190508181036000830152613a5d81613a21565b9050919050565b6000613a6f82612d7a565b9150613a7a83612d7a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ab357613ab26137e6565b5b828202905092915050565b7f42656c6f77206d696e7420707269636521000000000000000000000000000000600082015250565b6000613af4601183612cca565b9150613aff82613abe565b602082019050919050565b60006020820190508181036000830152613b2381613ae7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b86602683612cca565b9150613b9182613b2a565b604082019050919050565b60006020820190508181036000830152613bb581613b79565b9050919050565b613bc581612ddd565b8114613bd057600080fd5b50565b600081519050613be281613bbc565b92915050565b60008160020b9050919050565b613bfe81613be8565b8114613c0957600080fd5b50565b600081519050613c1b81613bf5565b92915050565b600061ffff82169050919050565b613c3881613c21565b8114613c4357600080fd5b50565b600081519050613c5581613c2f565b92915050565b600060ff82169050919050565b613c7181613c5b565b8114613c7c57600080fd5b50565b600081519050613c8e81613c68565b92915050565b600081519050613ca38161302f565b92915050565b600080600080600080600060e0888a031215613cc857613cc7612bfa565b5b6000613cd68a828b01613bd3565b9750506020613ce78a828b01613c0c565b9650506040613cf88a828b01613c46565b9550506060613d098a828b01613c46565b9450506080613d1a8a828b01613c46565b93505060a0613d2b8a828b01613c7f565b92505060c0613d3c8a828b01613c94565b91505092959891949750929550565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613d81602083612cca565b9150613d8c82613d4b565b602082019050919050565b60006020820190508181036000830152613db081613d74565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613df182612d7a565b9150613dfc83612d7a565b925082613e0c57613e0b613db7565b5b828204905092915050565b600082825260208201905092915050565b6000613e338261364b565b613e3d8185613e17565b9350613e4d818560208601612cdb565b613e5681612d0e565b840191505092915050565b6000608082019050613e766000830187612e0f565b613e836020830186612e0f565b613e906040830185612ea5565b8181036060830152613ea28184613e28565b905095945050505050565b600081519050613ebc81612c30565b92915050565b600060208284031215613ed857613ed7612bfa565b5b6000613ee684828501613ead565b9150509291505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212204969ce5f99dc8b3f8a45970531f522867cd0e804ca386676c7b4a141010479e464736f6c634300080c0033