0x0000000000000000000000000000000000000000000000000000000000001234608060405234801561001057600080fd5b50611506806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631f931c1c14610030575b600080fd5b61004361003e366004610e5a565b610045565b005b7f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f6716804605473ffffffffffffffffffffffffffffffffffffffff1633146100b5576040517f2f7a8ee100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131e547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9061ffff8116908190600090600716156101245750600381901c60009081526001840160205260409020545b60005b8881101561021b5761020483838c8c8581811061014657610146610f0c565b90506020028101906101589190610f3b565b610166906020810190610f79565b8d8d8681811061017857610178610f0c565b905060200281019061018a9190610f3b565b61019b906040810190602001610faa565b8e8e878181106101ad576101ad610f0c565b90506020028101906101bf9190610f3b565b6101cd906040810190610fc5565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061030092505050565b9093509150806102138161105c565b915050610127565b50828214610254576002840180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff84161790555b600782161561027657600382901c600090815260018501602052604090208190555b7f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67389898989896040516102ad959493929190611174565b60405180910390a16102f58787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610cc892505050565b505050505050505050565b600080807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c905060008451116103a35760405162461bcd60e51b815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f2063757400000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60008560028111156103b7576103b7611094565b03610574576103de8660405180606001604052806024815260200161145d60249139610dc7565b60005b845181101561056e5760008582815181106103fe576103fe610f0c565b6020908102919091018101517fffffffff000000000000000000000000000000000000000000000000000000008116600090815291859052604090912054909150606081901c156104b75760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c7265616479206578697374730000000000000000000000606482015260840161039a565b7fffffffff0000000000000000000000000000000000000000000000000000000080831660008181526020879052604090207fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608d901b168e17905560e060058e901b811692831c199c909c1690821c179a81900361054b5760038c901c600090815260018601602052604081209b909b555b8b6105558161105c565b9c505050505080806105669061105c565b9150506103e1565b50610cbc565b600185600281111561058857610588611094565b03610834576105af866040518060600160405280602881526020016114a960289139610dc7565b60005b845181101561056e5760008582815181106105cf576105cf610f0c565b6020908102919091018101517fffffffff000000000000000000000000000000000000000000000000000000008116600090815291859052604090912054909150606081901c30810361068a5760405162461bcd60e51b815260206004820152602f60248201527f4c69624469616d6f6e644375743a2043616e2774207265706c61636520696d6d60448201527f757461626c652066756e6374696f6e0000000000000000000000000000000000606482015260840161039a565b8973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361072b5760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606482015260840161039a565b73ffffffffffffffffffffffffffffffffffffffff81166107b45760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e207468617420646f65736e27742065786973740000000000000000606482015260840161039a565b507fffffffff0000000000000000000000000000000000000000000000000000000090911660009081526020849052604090206bffffffffffffffffffffffff919091167fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608a901b161790558061082c8161105c565b9150506105b2565b600285600281111561084857610848611094565b03610c4e5773ffffffffffffffffffffffffffffffffffffffff8616156108d75760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d757374206265206164647265737328302900000000000000000000606482015260840161039a565b600388901c6007891660005b8651811015610c2e5760008a900361091f57826108ff8161132d565b60008181526001870160205260409020549b5093506007925061092d9050565b816109298161132d565b9250505b6000806000808a858151811061094557610945610f0c565b6020908102919091018101517fffffffff0000000000000000000000000000000000000000000000000000000081166000908152918a9052604090912054909150606081901c6109fd5760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606482015260840161039a565b30606082901c03610a765760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201527f7461626c652066756e6374696f6e000000000000000000000000000000000000606482015260840161039a565b600587901b8f901b94507fffffffff0000000000000000000000000000000000000000000000000000000080861690831614610b14577fffffffff000000000000000000000000000000000000000000000000000000008516600090815260208a90526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff83161790555b7fffffffff0000000000000000000000000000000000000000000000000000000091909116600090815260208990526040812055600381901c611fff16925060051b60e0169050858214610ba9576000828152600188016020526040902080547fffffffff0000000000000000000000000000000000000000000000000000000080841c19909116908516831c179055610bfa565b80837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c817fffffffff0000000000000000000000000000000000000000000000000000000060001b901c198e16179c505b84600003610c1857600086815260018801602052604081208190559c505b5050508080610c269061105c565b9150506108e3565b5080610c3b836008611362565b610c45919061137f565b99505050610cbc565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560448201527f74416374696f6e00000000000000000000000000000000000000000000000000606482015260840161039a565b50959694955050505050565b73ffffffffffffffffffffffffffffffffffffffff8216610ce7575050565b610d098260405180606001604052806028815260200161148160289139610dc7565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610d3191906113b6565b600060405180830381855af49150503d8060008114610d6c576040519150601f19603f3d011682016040523d82523d6000602084013e610d71565b606091505b509150915081610dc157805115610d8b5780518082602001fd5b83836040517f192105d700000000000000000000000000000000000000000000000000000000815260040161039a929190611412565b50505050565b813b8181610dc15760405162461bcd60e51b815260040161039a9190611449565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e0c57600080fd5b919050565b60008083601f840112610e2357600080fd5b50813567ffffffffffffffff811115610e3b57600080fd5b602083019150836020828501011115610e5357600080fd5b9250929050565b600080600080600060608688031215610e7257600080fd5b853567ffffffffffffffff80821115610e8a57600080fd5b818801915088601f830112610e9e57600080fd5b813581811115610ead57600080fd5b8960208260051b8501011115610ec257600080fd5b60208301975080965050610ed860208901610de8565b94506040880135915080821115610eee57600080fd5b50610efb88828901610e11565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610f6f57600080fd5b9190910192915050565b600060208284031215610f8b57600080fd5b610f9482610de8565b9392505050565b803560038110610e0c57600080fd5b600060208284031215610fbc57600080fd5b610f9482610f9b565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ffa57600080fd5b83018035915067ffffffffffffffff82111561101557600080fd5b6020019150600581901b3603821315610e5357600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361108d5761108d61102d565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b818352600060208085019450826000805b8681101561111f5782357fffffffff00000000000000000000000000000000000000000000000000000000811680821461110c578384fd5b89525096830196918301916001016110d4565b50959695505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6060808252818101869052600090600560808085019089831b8601018a855b8b8110156112ed577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18e36030181126111f457600080fd5b8d0173ffffffffffffffffffffffffffffffffffffffff61121482610de8565b1684526020611224818301610f9b565b6003811061125b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b85820152604082810135368490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe101811261129657600080fd5b90920181810192903567ffffffffffffffff8111156112b457600080fd5b80891b36038413156112c557600080fd5b89828801526112d78a880182866110c3565b9783019796505050929092019150600101611193565b505073ffffffffffffffffffffffffffffffffffffffff89166020870152858103604087015261131e81888a61112b565b9b9a5050505050505050505050565b60008161133c5761133c61102d565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b80820281158282048414176113795761137961102d565b92915050565b808201808211156113795761137961102d565b60005b838110156113ad578181015183820152602001611395565b50506000910152565b60008251610f6f818460208701611392565b600081518084526113e0816020860160208601611392565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061144160408301846113c8565b949350505050565b602081526000610f9460208301846113c856fe4c69624469616d6f6e644375743a2041646420666163657420686173206e6f20636f64654c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a205265706c61636520666163657420686173206e6f20636f6465a2646970667358221220d1a533c7eeb1450b73193901891e8dd254dddc4d663bde4062658e186461194a64736f6c63430008120033