60a060405230608052348015601357600080fd5b506080516159ba61003d6000396000818161366901528181613692015261387801526159ba6000f3fe6080604052600436106103285760003560e01c80638da5cb5b116101a5578063c4d66de8116100ec578063da9d6e0311610095578063e30c39781161006f578063e30c397814610a56578063e985e9c514610a6b578063f2fde38b14610ae0578063fdab1a5d14610b0057600080fd5b8063da9d6e03146109ca578063de21b8df146109ea578063dfeb023b14610a0c57600080fd5b8063cde249f0116100c6578063cde249f014610975578063d39447a31461098a578063d7a78db8146109aa57600080fd5b8063c4d66de81461088d578063c87b56dd146108ad578063cdad58f0146108cd57600080fd5b8063a2f365421161014e578063b79bebaf11610128578063b79bebaf1461082d578063b88d4fde1461084d578063bce9b0381461086d57600080fd5b8063a2f3654214610797578063a4c6fd1b146107b7578063ad3cb1cc146107e457600080fd5b80639bac5f7a1161017f5780639bac5f7a1461072a5780639ff543c81461074a578063a22cb4651461077757600080fd5b80638da5cb5b146106e0578063925489a8146106f557806395d89b411461071557600080fd5b80633c519501116102745780636352211e1161021d578063715018a6116101f7578063715018a61461062157806379ba50971461063657806380da8d251461064b5780638ad96d7d146106c057600080fd5b80636352211e146105c15780636e936785146105e157806370a082311461060157600080fd5b80634f1ef2861161024e5780634f1ef2861461056b57806352d1902d1461057e578063603bfcbf146105a157600080fd5b80633c5195011461050b57806342842e0e1461052b578063478ca83e1461054b57600080fd5b806313bfffac116102d6578063287e2416116102b0578063287e2416146104815780633659cfe6146104cb578063379607f5146104eb57600080fd5b806313bfffac146104205780631d14426b1461044157806323b872dd1461046157600080fd5b8063081812fc11610307578063081812fc146103a6578063095ea7b3146103eb5780630d6688181461040b57600080fd5b80624c29451461032d57806301ffc9a71461034f57806306fdde0314610384575b600080fd5b34801561033957600080fd5b5061034d610348366004614b07565b610b20565b005b34801561035b57600080fd5b5061036f61036a366004614b4e565b610bec565b60405190151581526020015b60405180910390f35b34801561039057600080fd5b50610399610cd1565b60405161037b9190614bd9565b3480156103b257600080fd5b506103c66103c1366004614b07565b610d87565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161037b565b3480156103f757600080fd5b5061034d610406366004614c0e565b610ddc565b34801561041757600080fd5b506103c6610deb565b34801561042c57600080fd5b506103c66c447e69651d841bd8d104bed49381565b34801561044d57600080fd5b5061034d61045c366004614c86565b610e2b565b34801561046d57600080fd5b5061034d61047c366004614cc8565b610ef5565b34801561048d57600080fd5b507fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7635473ffffffffffffffffffffffffffffffffffffffff166103c6565b3480156104d757600080fd5b5061034d6104e6366004614d09565b610feb565b3480156104f757600080fd5b5061034d610506366004614b07565b611007565b34801561051757600080fd5b5061034d610526366004614d26565b611133565b34801561053757600080fd5b5061034d610546366004614cc8565b611439565b34801561055757600080fd5b5061034d610566366004614d09565b611454565b61034d610579366004614efc565b6114c2565b34801561058a57600080fd5b506105936114dd565b60405190815260200161037b565b3480156105ad57600080fd5b5061034d6105bc366004614f4c565b61150c565b3480156105cd57600080fd5b506103c66105dc366004614b07565b6117de565b3480156105ed57600080fd5b506105936105fc366004614b07565b6117e9565b34801561060d57600080fd5b5061059361061c366004614d09565b611836565b34801561062d57600080fd5b5061034d6118d7565b34801561064257600080fd5b5061034d6118eb565b34801561065757600080fd5b50610593610666366004614b07565b60009081527fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e96e60205260409020600101547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1690565b3480156106cc57600080fd5b5061034d6106db366004614b07565b611963565b3480156106ec57600080fd5b506103c66119d1565b34801561070157600080fd5b5061034d610710366004614c86565b611a13565b34801561072157600080fd5b50610399611bc2565b34801561073657600080fd5b50610399610745366004614b07565b611c13565b34801561075657600080fd5b5061076a610765366004614b07565b611cef565b60405161037b9190614fc9565b34801561078357600080fd5b5061034d610792366004614fe6565b611e06565b3480156107a357600080fd5b5061034d6107b236600461501f565b611e11565b3480156107c357600080fd5b506107d76107d2366004614b07565b611ef0565b60405161037b919061504d565b3480156107f057600080fd5b506103996040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b34801561083957600080fd5b50610399610848366004614b07565b612006565b34801561085957600080fd5b5061034d61086836600461509c565b612076565b34801561087957600080fd5b5061076a610888366004614b07565b61208d565b34801561089957600080fd5b5061034d6108a8366004614d09565b612182565b3480156108b957600080fd5b506103996108c8366004614b07565b612376565b3480156108d957600080fd5b5061095e6108e8366004614b07565b600881901c60009081527fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e96b60209081526040808320547fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e96d90925290912054600160ff9093169290921b9081161515929116151590565b60408051921515835290151560208301520161037b565b34801561098157600080fd5b506105936123e6565b34801561099657600080fd5b5061034d6109a5366004615108565b6123f5565b3480156109b657600080fd5b5061034d6109c5366004614b07565b6124f9565b3480156109d657600080fd5b5061034d6109e5366004615108565b612591565b3480156109f657600080fd5b506109ff612698565b60405161037b919061512d565b348015610a1857600080fd5b507fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7645473ffffffffffffffffffffffffffffffffffffffff166103c6565b348015610a6257600080fd5b506103c66127a8565b348015610a7757600080fd5b5061036f610a8636600461501f565b73ffffffffffffffffffffffffffffffffffffffff91821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b348015610aec57600080fd5b5061034d610afb366004614d09565b6127d1565b348015610b0c57600080fd5b5061034d610b1b366004614d09565b612888565b7fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e764547fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7629073ffffffffffffffffffffffffffffffffffffffff163314610bb2576040517f1e84f4d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82811015610be757610bc5612942565b6001826006016000828254610bda91906151b3565b9091555050600101610bb5565b505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd000000000000000000000000000000000000000000000000000000001480610c7f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610ccb57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793008054606091908190610d03906151c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2f906151c6565b8015610d7c5780601f10610d5157610100808354040283529160200191610d7c565b820191906000526020600020905b815481529060010190602001808311610d5f57829003601f168201915b505050505091505090565b6000610d9282612b74565b5060008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304602052604090205473ffffffffffffffffffffffffffffffffffffffff16610ccb565b610de7828233612bf2565b5050565b60007fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7625b5473ffffffffffffffffffffffffffffffffffffffff16919050565b610e33612bff565b60005b81811015610ecb576000838383818110610e5257610e52615213565b905060200201359050610e6481612c80565b60405181907f74308730007d8ee5b3c18fad784efa3555f62695e36960f803f475eeb663d10e90600090a26040518181527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a150600101610e36565b50610de760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b73ffffffffffffffffffffffffffffffffffffffff8216610f4a576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6000610f57838333612fd9565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610fe5576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80861660048301526024820184905282166044820152606401610f41565b50505050565b61100481604051806020016040528060008152506114c2565b50565b61100f6131a0565b611017612bff565b60007fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e76260028101546040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810185905291925060009173ffffffffffffffffffffffffffffffffffffffff90911690636352211e90602401602060405180830381865afa1580156110b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d59190615242565b60028301549091506110fe9073ffffffffffffffffffffffffffffffffffffffff16828561321d565b6111088184613356565b505061100460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b8261113d81613407565b611145612bff565b7fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e76354604080517f7ddf768200000000000000000000000000000000000000000000000000000000815290517fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7629273ffffffffffffffffffffffffffffffffffffffff16916000918391636fe5e3d5918a918491637ddf7682916004808201926020929091908290030181865afa158015611203573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611227919061525f565b61123191906151b3565b6040518263ffffffff1660e01b815260040161124f91815260200190565b6101c060405180830381865afa15801561126d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129191906152b2565b600088815261020c8501602052604090206001015481519192507401000000000000000000000000000000000000000090046bffffffffffffffffffffffff169086906112dd906134d3565b6112e782846151b3565b1115611322576040517f1886aa0b000000000000000000000000000000000000000000000000000000008152600481018a9052602401610f41565b60005b8181101561140a57600089898381811061134157611341615213565b9050602002013590506000828587610120015161135e91906151b3565b61136891906151b3565b9050611375828d836134e7565b60405182907f8acba9fd3ccf692d6e4f06aa98023414b40c5f9c55cc83c5727fe78fd425a9ac90600090a2604051819083907fe48197d9efb1fd6abc818954bc1b5d102c8cc1ca6713036d7dc3a6be29a4da4f90600090a36040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050600101611325565b505050505050610fe560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b610be783838360405180602001604052806000815250612076565b61145c6135f9565b7fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e76480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6114ca613651565b6114d38261371f565b610de78282613727565b60006114e7613860565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b8061151681612b74565b508261152181613407565b611529612bff565b7fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e76354604080517f7ddf768200000000000000000000000000000000000000000000000000000000815290517fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7629273ffffffffffffffffffffffffffffffffffffffff16916000918391636fe5e3d5918a918491637ddf7682916004808201926020929091908290030181865afa1580156115e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160b919061525f565b61161591906151b3565b6040518263ffffffff1660e01b815260040161163391815260200190565b6101c060405180830381865afa158015611651573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167591906152b2565b600088815261020c8501602052604090206001015481519192507401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16906116bf906134d3565b6116ca8260016151b3565b1115611705576040517f1886aa0b00000000000000000000000000000000000000000000000000000000815260048101899052602401610f41565b60008183610120015161171891906151b3565b9050611725888a836134e7565b60405188907f8acba9fd3ccf692d6e4f06aa98023414b40c5f9c55cc83c5727fe78fd425a9ac90600090a2604051819089907fe48197d9efb1fd6abc818954bc1b5d102c8cc1ca6713036d7dc3a6be29a4da4f90600090a36040518881527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050505050610fe560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000610ccb82612b74565b6000816117f581612b74565b5060008381527fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e969602052604090205461182d906138cf565b91505b50919050565b60007f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930073ffffffffffffffffffffffffffffffffffffffff83166118a9576040517f89c62b6400000000000000000000000000000000000000000000000000000000815260006004820152602401610f41565b73ffffffffffffffffffffffffffffffffffffffff9092166000908152600390920160205250604090205490565b6118df6135f9565b6118e96000613920565b565b33806118f56127a8565b73ffffffffffffffffffffffffffffffffffffffff161461195a576040517f118cdaa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610f41565b61100481613920565b61196b6135f9565b7fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e76260005b82811015610be75761199f612942565b60018260060160008282546119b491906151b3565b925050819055506119c9338360060154613356565b60010161198f565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b5473ffffffffffffffffffffffffffffffffffffffff1692915050565b611a1b6131a0565b611a23612bff565b7fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7626001821015611a7f576040517f3d5a54d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82811015611b97576000848483818110611a9e57611a9e615213565b60028601546040517f6352211e000000000000000000000000000000000000000000000000000000008152602092909202939093013560048201819052935060009273ffffffffffffffffffffffffffffffffffffffff169150636352211e90602401602060405180830381865afa158015611b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b429190615242565b6002850154909150611b6b9073ffffffffffffffffffffffffffffffffffffffff16828461321d565b611b8d81878786818110611b8157611b81615213565b90506020020135613356565b5050600101611a82565b5050610de760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930180546060917f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930091610d03906151c6565b606081611c1f81612b74565b50600080611c2c85613970565b6040517fb9ad0849000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff82169063b9ad084990611c83908590600401615347565b600060405180830381865afa158015611ca0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611ce6919081019061541b565b95945050505050565b611cf7614a2c565b81611d0181612b74565b5060008381527fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e96960205260408120547fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7629190611d5c906138cf565b600183015490915073ffffffffffffffffffffffffffffffffffffffff16631d7fbc6f82611d88613e93565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260440161010060405180830381865afa158015611de2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce691906154ff565b610de7338383613ec2565b611e196135f9565b447fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e76755427fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e766557fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e762805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091557fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7638054929093169116179055565b6060611efa6131a0565b7fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e763547fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7629073ffffffffffffffffffffffffffffffffffffffff16639f65ed4784611f62613e93565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526024820152604401600060405180830381865afa158015611fbb573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261182d919081019061551c565b919050565b60608161201281612b74565b5060008061201f85613970565b6040517f021370ef000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff82169063021370ef90611c83908590600401615347565b612081848484610ef5565b610fe584848484613fe3565b612095614a2c565b60009182527fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e96c602090815260409283902080548351600782810b9091528451680100000000000000008304820b9085015284517001000000000000000000000000000000008304820b9087015284517801000000000000000000000000000000000000000000000000909204900b6060909101526001908101548383018051600983810b90915281516a01000000000000000000008404820b950194909452517401000000000000000000000000000000000000000090910490920b918401919091529181019190915290565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156121cd5750825b905060008267ffffffffffffffff1660011480156121ea5750303b155b9050811580156121f8575080155b1561222f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156122905784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6123046040518060400160405280600681526020017f4379636c657300000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4359434c455300000000000000000000000000000000000000000000000000008152506141d3565b61230d866141e5565b831561236e5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b60608161238281612b74565b5060008061238f85613970565b6040517fe18b5791000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff82169063e18b579190611c83908590600401615347565b60006123f0613e93565b905090565b6123fd6135f9565b600382111561243b576040517f91401d9900000000000000000000000000000000000000000000000000000000815260048101839052602401610f41565b60008281527fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e96e602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851690811790915590517fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7629285917f177c9877dfe0342d77f02ae4672bfbba569ed5cfc2313338d9326a176413c6c79190a3505050565b612501612bff565b61250a81612c80565b60405181907f74308730007d8ee5b3c18fad784efa3555f62695e36960f803f475eeb663d10e90600090a26040518181527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a161100460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6125996135f9565b60038211156125d7576040517f91401d9900000000000000000000000000000000000000000000000000000000815260048101839052602401610f41565b60008281527fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e96e602052604080822060010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851690811790915590517fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7629285917fb432aacf878afc4c837379df5b6066522c599ffd9b8e7b9dde4f6c333d44561f9190a3505050565b604080518082018252606080825260208201527fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7655482517fde21b8df000000000000000000000000000000000000000000000000000000008152925191927fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7629273ffffffffffffffffffffffffffffffffffffffff9092169163de21b8df916004808201926000929091908290030181865afa15801561275c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526127a291908101906155d0565b91505090565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c006119f6565b6127d96135f9565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811782556128426119d1565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b6128906135f9565b7fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e76580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e76291907fc4e7297ade77eb893c6279e4635179d91fc8a6056a05d67c49a360eff0edda6a90600090a25050565b7fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e768547fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7629060009061299590610200615675565b90506000808284600601546001436129ad9190615675565b6040517f706c6163656d656e7473000000000000000000000000000000000000000000006020820152602a81019290925240604a82015244606a820152608a016040516020818303038152906040528051906020012060001c612a1091906156b7565b905083600701816102008110612a2857612a28615213565b0154600003612a3957809150612a54565b83600701816102008110612a4f57612a4f615213565b015491505b60078401612a63600185615675565b6102008110612a7457612a74615213565b015415612aba5760078401612a8a600185615675565b6102008110612a9b57612a9b615213565b015484600701826102008110612ab357612ab3615213565b0155612ade565b612ac5600184615675565b84600701826102008110612adb57612adb615213565b01555b818461020801600086600601546001612af791906151b3565b815260200190815260200160002081905550818461020701600086600601546001612b2291906151b3565b815260208101919091526040016000205560068401548290612b459060016151b3565b6040517fe48197d9efb1fd6abc818954bc1b5d102c8cc1ca6713036d7dc3a6be29a4da4f90600090a350505050565b60008181527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610ccb576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101849052602401610f41565b610be783838360016141f6565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612c7a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b612c9330612c8d836117de565b8361321d565b60008181527fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e96960205260408120547fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7629190612ced906138cf565b600183015490915060009073ffffffffffffffffffffffffffffffffffffffff16631d7fbc6f83612d1c613e93565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260440161010060405180830381865afa158015612d76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9a91906154ff565b600883901c600090815261020985016020526040902054909150600160ff84161b1615612df6576040517f9d597d7b00000000000000000000000000000000000000000000000000000000815260048101859052602401610f41565b60408101511515600003612e40576040517fd8a4a5530000000000000000000000000000000000000000000000000000000081526004810185905260248101839052604401610f41565b600082815261020a840160209081526040808320845180518254828601518386015160609094015167ffffffffffffffff90811678010000000000000000000000000000000000000000000000000291811668010000000000000000029381167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090931692909217929092176fffffffffffffffffffffffffffffffff1692167001000000000000000000000000000000000277ffffffffffffffffffffffffffffffffffffffffffffffff169190911717815584830151805160018084018054848801519487015169ffffffffffffffffffff90811674010000000000000000000000000000000000000000029581166a01000000000000000000000294167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617929092177fffff00000000000000000000ffffffffffffffffffffffffffffffffffffffff16929092179055600887901c855261020988019093529220805460ff86169290921b90911790555b5050505050565b60008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260408120547f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009073ffffffffffffffffffffffffffffffffffffffff9081169084161561305457613054818587614402565b73ffffffffffffffffffffffffffffffffffffffff8116156130cc5761307e6000866000806141f6565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600383016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff8616156131175773ffffffffffffffffffffffffffffffffffffffff861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a49150505b9392505050565b7fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e767547fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e76290600003611004576040517f5b4f9e2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82163314806132f357506040517fb9f3687400000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff80841660248301528416604482015260648101829052600060848201526c447e69651d841bd8d104bed4939063b9f368749060a401602060405180830381865afa1580156132cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132f391906156cb565b610be7576040517fdbbd681200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015233604482015260648101829052608401610f41565b73ffffffffffffffffffffffffffffffffffffffff82166133a6576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260006004820152602401610f41565b60006133b483836000612fd9565b905073ffffffffffffffffffffffffffffffffffffffff811615610be7576040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260006004820152602401610f41565b60008181527fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e96e6020526040902080547fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7629190339073ffffffffffffffffffffffffffffffffffffffff168114610fe55781546040517f91ef0fc40000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff80841660248301529091166044820152606401610f41565b6000610ccb670de0b6b3a7640000836156e8565b60008381527fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e96960205260408120547fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7629190613541906138cf565b600881901c600090815261020b8401602052604090208054600160ff84161b1790559050600085815261020783016020908152604080832086905586835261020c85019091529020600190810180546014906135c49084907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16615750565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505050505050565b336136026119d1565b73ffffffffffffffffffffffffffffffffffffffff16146118e9576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610f41565b3073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614806136e857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166136cf6144b2565b73ffffffffffffffffffffffffffffffffffffffff1614155b156118e9576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110046135f9565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156137ac575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526137a99181019061525f565b60015b6137fa576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610f41565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114613856576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610f41565b610be783836144da565b3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146118e9576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7626102008310156139195761020081600501548461390f91906151b3565b61182d91906156b7565b5090919050565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155610de78261453d565b613978614a98565b7fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e76354604080517f7ddf768200000000000000000000000000000000000000000000000000000000815290516000927fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e7629273ffffffffffffffffffffffffffffffffffffffff9091169184918391637ddf7682916004808201926020929091908290030181865afa158015613a30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a54919061525f565b60008781526102078501602052604081205491925090613a73906138cf565b90506000808473ffffffffffffffffffffffffffffffffffffffff16633e105807846040518263ffffffff1660e01b8152600401613ab391815260200190565b6040805180830381865afa158015613acf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af3919061577c565b60008b81526102088901602052604081205492945090925090613b15906138cf565b6040517fc16b063e0000000000000000000000000000000000000000000000000000000081526004810182905290915060009073ffffffffffffffffffffffffffffffffffffffff88169063c16b063e90602401602060405180830381865afa158015613b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613baa919061525f565b90506000613c348873ffffffffffffffffffffffffffffffffffffffff16636fe5e3d5846040518263ffffffff1660e01b8152600401613bec91815260200190565b6101c060405180830381865afa158015613c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2e91906152b2565b516134d3565b905060008873ffffffffffffffffffffffffffffffffffffffff16631d7fbc6f88613c5d613e93565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260440161010060405180830381865afa158015613cb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cdb91906154ff565b60408101519091501515600003613d28576040517fd8a4a553000000000000000000000000000000000000000000000000000000008152600481018e905260248101889052604401610f41565b600887901c60009081527fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e96b60209081526040909120547fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e96d909152600160ff89161b1615158887118015613dd55750600061020c8c0181613da88c8b615675565b815260208101919091526040016000206001015473ffffffffffffffffffffffffffffffffffffffff1614155b15613e1c5761020c8b016000613deb8b8a615675565b815260208101919091526040016000206001015473ffffffffffffffffffffffffffffffffffffffff169b50613e37565b8a5473ffffffffffffffffffffffffffffffffffffffff169b505b6040518061012001604052808f815260200186815260200185815260200184815260200188815260200187815260200182151581526020018c60050154815260200183602001518152509c505050505050505050505050915091565b7fa5936c1c5ff926641f9456fde676be773206fa2817c6c600ed934f7366d4e766546000906123f09042615675565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930073ffffffffffffffffffffffffffffffffffffffff8316613f48576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610f41565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260058401602090815260408083209488168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff83163b15610fe5576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a02906140589033908890879087906004016157a0565b6020604051808303816000875af19250505080156140b1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526140ae918101906157e9565b60015b614140573d8080156140df576040519150601f19603f3d011682016040523d82523d6000602084013e6140e4565b606091505b508051600003614138576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610f41565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014612fd2576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610f41565b6141db6145d3565b610de7828261463a565b6141ed6145d3565b6110048161467d565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793008180614238575073ffffffffffffffffffffffffffffffffffffffff831615155b156143ac57600061424885612b74565b905073ffffffffffffffffffffffffffffffffffffffff84161580159061429b57508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156142f9575073ffffffffffffffffffffffffffffffffffffffff80821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209388168352929052205460ff16155b15614348576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610f41565b82156143aa57848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61440d8383836146d5565b610be75773ffffffffffffffffffffffffffffffffffffffff8316614461576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101829052602401610f41565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101829052604401610f41565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610e0f565b6144e3826147da565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561453557610be782826148a9565b610de7614923565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166118e9576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6146426145d3565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793008061466e848261584e565b5060018101610fe5838261584e565b6146856145d3565b73ffffffffffffffffffffffffffffffffffffffff811661195a576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610f41565b600073ffffffffffffffffffffffffffffffffffffffff8316158015906147d257508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480614782575073ffffffffffffffffffffffffffffffffffffffff80851660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209387168352929052205460ff165b806147d2575060008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116145b949350505050565b8073ffffffffffffffffffffffffffffffffffffffff163b600003614843576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610f41565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516148d39190615968565b600060405180830381855af49150503d806000811461490e576040519150601f19603f3d011682016040523d82523d6000602084013e614913565b606091505b5091509150611ce685838361495b565b34156118e9576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826149705761496b826149ea565b613199565b8151158015614994575073ffffffffffffffffffffffffffffffffffffffff84163b155b156149e3576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610f41565b5080613199565b8051156149fa5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060600160405280614a626040518060800160405280600081526020016000815260200160008152602001600081525090565b8152602001614a8b60405180606001604052806000815260200160008152602001600081525090565b8152600060209091015290565b60405180610120016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160008152602001614b0260405180606001604052806000815260200160008152602001600081525090565b905290565b600060208284031215614b1957600080fd5b5035919050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461100457600080fd5b600060208284031215614b6057600080fd5b813561319981614b20565b60005b83811015614b86578181015183820152602001614b6e565b50506000910152565b60008151808452614ba7816020860160208601614b6b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006131996020830184614b8f565b73ffffffffffffffffffffffffffffffffffffffff8116811461100457600080fd5b60008060408385031215614c2157600080fd5b8235614c2c81614bec565b946020939093013593505050565b60008083601f840112614c4c57600080fd5b50813567ffffffffffffffff811115614c6457600080fd5b6020830191508360208260051b8501011115614c7f57600080fd5b9250929050565b60008060208385031215614c9957600080fd5b823567ffffffffffffffff811115614cb057600080fd5b614cbc85828601614c3a565b90969095509350505050565b600080600060608486031215614cdd57600080fd5b8335614ce881614bec565b92506020840135614cf881614bec565b929592945050506040919091013590565b600060208284031215614d1b57600080fd5b813561319981614bec565b600080600060408486031215614d3b57600080fd5b83359250602084013567ffffffffffffffff811115614d5957600080fd5b614d6586828701614c3a565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715614dc457614dc4614d72565b60405290565b604051610140810167ffffffffffffffff81118282101715614dc457614dc4614d72565b6040805190810167ffffffffffffffff81118282101715614dc457614dc4614d72565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614e5857614e58614d72565b604052919050565b600067ffffffffffffffff821115614e7a57614e7a614d72565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112614eb757600080fd5b8135614eca614ec582614e60565b614e11565b818152846020838601011115614edf57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614f0f57600080fd5b8235614f1a81614bec565b9150602083013567ffffffffffffffff811115614f3657600080fd5b614f4285828601614ea6565b9150509250929050565b60008060408385031215614f5f57600080fd5b50508035926020909101359150565b805180518352602081015160208401526040810151604084015260608101516060840152506020810151614fb960808401828051825260208082015190830152604090810151910152565b5060400151151560e09190910152565b6101008101610ccb8284614f6e565b801515811461100457600080fd5b60008060408385031215614ff957600080fd5b823561500481614bec565b9150602083013561501481614fd8565b809150509250929050565b6000806040838503121561503257600080fd5b823561503d81614bec565b9150602083013561501481614bec565b6020808252825182820181905260009190848201906040850190845b818110156150905761507c838551614f6e565b928401926101009290920191600101615069565b50909695505050505050565b600080600080608085870312156150b257600080fd5b84356150bd81614bec565b935060208501356150cd81614bec565b925060408501359150606085013567ffffffffffffffff8111156150f057600080fd5b6150fc87828801614ea6565b91505092959194509250565b6000806040838503121561511b57600080fd5b82359150602083013561501481614bec565b6020815260008251604060208401526151496060840182614b8f565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016040850152611ce68282614b8f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610ccb57610ccb615184565b600181811c908216806151da57607f821691505b602082108103611830577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561525457600080fd5b815161319981614bec565b60006020828403121561527157600080fd5b5051919050565b60006060828403121561528a57600080fd5b615292614da1565b905081518152602082015160208201526040820151604082015292915050565b60006101c082840312156152c557600080fd5b6152cd614dca565b825181526020830151602082015260408301516040820152606083015160608201526152fc8460808501615278565b608082015260e083015160a082015261010061531a85828601615278565b60c083015261016084015160e0830152610180840151908201526101a09092015161012083015250919050565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151151560c083015260e083015160e0830152610100808401516153c3828501828051825260208082015190830152604090810151910152565b505092915050565b60006153d9614ec584614e60565b90508281528383830111156153ed57600080fd5b613199836020830184614b6b565b600082601f83011261540c57600080fd5b613199838351602085016153cb565b60006020828403121561542d57600080fd5b815167ffffffffffffffff81111561544457600080fd5b6147d2848285016153fb565b805161200181614fd8565b600081830361010081121561546f57600080fd5b615477614da1565b9150608081121561548757600080fd5b506040516080810181811067ffffffffffffffff821117156154ab576154ab614d72565b806040525082518152602083015160208201526040830151604082015260608301516060820152808252506154e38360808401615278565b60208201526154f460e08301615450565b604082015292915050565b6000610100828403121561551257600080fd5b613199838361545b565b6000602080838503121561552f57600080fd5b825167ffffffffffffffff8082111561554757600080fd5b818501915085601f83011261555b57600080fd5b81518181111561556d5761556d614d72565b61557b848260051b01614e11565b818152848101925060089190911b83018401908782111561559b57600080fd5b928401925b818410156155c5576155b2888561545b565b83528483019250610100840193506155a0565b979650505050505050565b6000602082840312156155e257600080fd5b815167ffffffffffffffff808211156155fa57600080fd5b908301906040828603121561560e57600080fd5b615616614dee565b82518281111561562557600080fd5b8301601f8101871361563657600080fd5b615645878251602084016153cb565b82525060208301518281111561565a57600080fd5b615666878286016153fb565b60208301525095945050505050565b81810381811115610ccb57610ccb615184565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826156c6576156c6615688565b500690565b6000602082840312156156dd57600080fd5b815161319981614fd8565b6000826156f7576156f7615688565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561574b5761574b615184565b500590565b6bffffffffffffffffffffffff81811683821601908082111561577557615775615184565b5092915050565b6000806040838503121561578f57600080fd5b505080516020909101519092909150565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526157df6080830184614b8f565b9695505050505050565b6000602082840312156157fb57600080fd5b815161319981614b20565b601f821115610be7576000816000526020600020601f850160051c8101602086101561582f5750805b601f850160051c820191505b8181101561236e5782815560010161583b565b815167ffffffffffffffff81111561586857615868614d72565b61587c8161587684546151c6565b84615806565b602080601f8311600181146158cf57600084156158995750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561236e565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561591c578886015182559484019460019091019084016158fd565b508582101561595857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b6000825161597a818460208701614b6b565b919091019291505056fea26469706673582212204d04d5899d49aaf9d28d9e3e049b19e9128c97f5fbbea6ee4048a3a1763b860864736f6c63430008190033