PHNjcmlwdCBhc3luYyBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0YWcvanM/aWQ9Ry1ERkRETk1YODlRIj48L3NjcmlwdD4NCjxzY3JpcHQ+DQogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOw0KDQogIGZ1bmN0aW9uIGd0YWcoKSB7DQogICAgZGF0YUxheWVyLnB1c2goYXJndW1lbnRzKTsNCiAgfQ0KDQogIGd0YWcoJ2pzJywgbmV3IERhdGUoKSk7DQoNCiAgKGZ1bmN0aW9uICgpIHsNCiAgICBmdW5jdGlvbiB1dWlkKGEpIHsNCiAgICAgIHJldHVybiAoYSkNCiAgICAgICAgPyAoYSBeIE1hdGgucmFuZG9tKCkgKiAxNiA+PiBhIC8gNCkudG9TdHJpbmcoMTYpDQogICAgICAgIDogKFsxZTddICsgLTFlMyArIC00ZTMgKyAtOGUzICsgLTFlMTEpLnJlcGxhY2UoL1swMThdL2csIHV1aWQpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHNlbmROYXZpZ2F0aW9uVGltaW5nTWV0cmljcygpIHsNCiAgICAgIC8vIE9ubHkgdHJhY2sgcGVyZm9ybWFuY2UgaW4gc3VwcG9ydGluZyBicm93c2Vycy4NCiAgICAgIGlmICghKHdpbmRvdy5wZXJmb3JtYW5jZSAmJiB3aW5kb3cucGVyZm9ybWFuY2UudGltaW5nKSkgcmV0dXJuOw0KDQogICAgICAvLyBJZiB0aGUgd2luZG93IGhhc24ndCBsb2FkZWQsIHJ1biB0aGlzIGZ1bmN0aW9uIGFmdGVyIHRoZSBgbG9hZGAgZXZlbnQuDQogICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gJ2NvbXBsZXRlJykgew0KICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHNlbmROYXZpZ2F0aW9uVGltaW5nTWV0cmljcyk7DQogICAgICAgIHJldHVybjsNCiAgICAgIH0NCg0KICAgICAgY29uc3QgbnQgPSBwZXJmb3JtYW5jZS50aW1pbmc7DQogICAgICBjb25zdCBuYXZTdGFydCA9IG50Lm5hdmlnYXRpb25TdGFydDsNCiAgICAgIGNvbnN0IHJlc3BvbnNlRW5kID0gTWF0aC5yb3VuZChudC5yZXNwb25zZUVuZCAtIG5hdlN0YXJ0KTsNCiAgICAgIGNvbnN0IGRvbUxvYWRlZCA9IE1hdGgucm91bmQobnQuZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnQgLSBuYXZTdGFydCk7DQogICAgICBjb25zdCB3aW5kb3dMb2FkZWQgPSBNYXRoLnJvdW5kKG50LmxvYWRFdmVudFN0YXJ0IC0gbmF2U3RhcnQpOw0KDQogICAgICAvLyBJbiBzb21lIGVkZ2UgY2FzZXMgYnJvd3NlcnMgcmV0dXJuIHZlcnkgb2J2aW91c2x5IGluY29ycmVjdCBOVCB2YWx1ZXMsDQogICAgICAvLyBlLmcuIDAsIG5lZ2F0aXZlLCBvciBmdXR1cmUgdGltZXMuIFRoaXMgdmFsaWRhdGVzIHZhbHVlcyBiZWZvcmUgc2VuZGluZy4NCiAgICAgIGZ1bmN0aW9uIGFsbFZhbHVlc0FyZVZhbGlkKHZhbHVlcykgew0KICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgew0KICAgICAgICAgIGlmICghKHZhbHVlc1tpXSA+IDAgJiYgdmFsdWVzW2ldIDwgMWU2KSkgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICB9DQoNCiAgICAgIGlmIChhbGxWYWx1ZXNBcmVWYWxpZChbcmVzcG9uc2VFbmQsIGRvbUxvYWRlZCwgd2luZG93TG9hZGVkXSkpIHsNCiAgICAgICAgY29uc3QgZ2FPYmogPSB7DQogICAgICAgICAgZXZlbnRDYXRlZ29yeTogJ05hdmlnYXRpb24gVGltaW5nJywNCiAgICAgICAgICBldmVudEFjdGlvbjogJ3RyYWNrJywNCiAgICAgICAgICBub25JbnRlcmFjdGlvbjogdHJ1ZSwNCg0KICAgICAgICAgIHJlc3BvbnNlX2VuZF90aW1lOiByZXNwb25zZUVuZCwNCiAgICAgICAgICBkb21fbG9hZF90aW1lOiBkb21Mb2FkZWQsDQogICAgICAgICAgd2luZG93X2xvYWRfdGltZTogd2luZG93TG9hZGVkDQogICAgICAgIH07DQoNCiAgICAgICAgZ3RhZygnZXZlbnQnLCAndHJhY2snLCBnYU9iaik7DQoNCiAgICAgIH0NCiAgICB9DQoNCiAgICBsZXQgd2luZG93SWQgPSAnJzsNCiAgICBpZiAoJ3Nlc3Npb25TdG9yYWdlJyBpbiB3aW5kb3cpIHsNCiAgICAgIGNvbnN0IHNhdmVkV2luZG93SWQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd3aW5kb3dJZCcpOw0KICAgICAgaWYgKHNhdmVkV2luZG93SWQpIHsNCiAgICAgICAgd2luZG93SWQgPSBzYXZlZFdpbmRvd0lkOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgd2luZG93SWQgPSB1dWlkKCk7DQogICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3dpbmRvd0lkJywgd2luZG93SWQpOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIC8vc2VuZCBuYXZpZ2F0aW9uIHRpbWluZyBtZXRyaWNzDQogICAgaWYgKHdpbmRvdy5wZXJmb3JtYW5jZSAmJiB3aW5kb3cucGVyZm9ybWFuY2UudGltaW5nKSB7DQogICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gJ2NvbXBsZXRlJykgew0KICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHNlbmROYXZpZ2F0aW9uVGltaW5nTWV0cmljcyk7DQogICAgICB9DQogICAgfQ0KDQogICAgZ3RhZygnZ2V0JywgJ0ctREZERE5NWDg5UScsICdjbGllbnRfaWQnLCAoY2xpZW50SWQpID0+IHsNCiAgICAgIGxldCBjdXN0b21EaW1lbnNpb25zID0gew0KICAgICAgICBoaXRfaWQ6IHV1aWQoKSwNCiAgICAgICAgaGl0X3RpbWU6IG5ldyBEYXRlKCkuZ2V0VGltZSgpLnRvU3RyaW5nKCksDQogICAgICAgIGhpdF90eXBlOiAncGFnZXZpZXcnLA0KICAgICAgICB3aW5kb3dfaWQ6IHdpbmRvd0lkLA0KICAgICAgICBjbGllbnRfaWQ6IGNsaWVudElkLA0KICAgICAgICB0cmFja2luZ192ZXJzaW9uOiAnMicNCiAgICAgIH07DQoNCiAgICAgIC8vZ2EoJ3Byb2Quc2VuZCcsICdwYWdldmlldycpOw0KICAgICAgZ3RhZygnY29uZmlnJywgJ0ctREZERE5NWDg5UScsIGN1c3RvbURpbWVuc2lvbnMpOw0KDQogICAgICBzZW5kTmF2aWdhdGlvblRpbWluZ01ldHJpY3MoKTsNCiAgICB9KTsNCiAgfSkoKTsNCjwvc2NyaXB0Pg==
Peppermill Reno Calendar