Golf Events & Tournaments
Events
-
-
$30 Tuesday Golf @ Grand View Golf Course
Grand View Golf Course 5464 S 68th Ave, New Era, MIEnjoy 18 holes of championship golf, with a cart, at these amazing prices on Tuesdays: $18 Grand View Golf Course | $25 Arthur Hills Thoroughbred Golf Club
$30 -
-
Grand View Thursday Fall League (Full)
Grand View Golf Course 5464 S 68th Ave, New Era, MIREGISTRATION FOR THE FALL LEAGUE IS FULL Grand View Golf Course's Fall League every Thursday, 5PM shotgun start, runs 7-8 weeks (depending on weather): 3-3-3 format best ball, alternate shot, scramble $10 sign-up fee begins Thursday, September 12th and runs 7-8 weeks depending on weather 5:00 PM shotgun start last night dinner, fun and prizes […]
$10 -
-
November Golf Flash Sale
Thoroughbred Golf Club 5900 S Water Rd, Rothbury, MIFLASH SALE: Play 18 holes with a cart at the stunning Grand View Golf Course, with its breathtaking rolling hills, or at the meticulously designed Thoroughbred Golf Club—for just $30! Available on November 8 or 9. Don’t miss your chance to get in another round before the season ends! BOOK NOW
$30 -
-
Golf Specials | 2025 Season
Double JJ Resort is home to two premier 18-hole courses, the Thoroughbred Golf Club and Grand View Golf Course. Here is the lineup of 2025 Golf Specials. Be sure to check back as more specials are released throughout the year: STAY & PLAY PACKAGES Summer Golf Stay & Play Package for Two $345 per person […]
-
Rounds of Golf Punch Card Specials
Punch cards are now available for purchase. Each round includes 18 holes of golf, with cart, for play at the Double JJ Resort's Grand View and Thoroughbred Golf Course. Tee times are required. Punch cards are valid on weekdays (all day) and Saturday - Sunday (after 2pm). 4 rounds of play $189 8 rounds of […]
-
Golf Leagues
Double JJ Resort 5900 Water Rd, Rothbury, MI, United States2025 League Information : All League Members enjoy: 10% off regular-priced merchandise during the league season To sign up email - Stephanie @ SLIverson @doublejj.com or leave a message at the clubhouse (231) 861-6616. View Golf League Flyer. Monday Men’s League April 28 – August 25 5:00 PM Shotgun Start Grand View Golf Course Only […]
-
-
Corkscrews & Brews | Tastings on the Green
Thoroughbred Golf Club 5900 S Water Rd, Rothbury, MIJoin us for the Corkscrews & Brews Fall Color/Tasting Walk through the beautiful rolling hills at the Double JJ Resort's Grand View Golf Course.
$25 -
-
All-Access Golf Membership Limited Deal
Double JJ Resort 5900 Water Rd, Rothbury, MI, United StatesLimited Time Only • Ends April 18 All-Access Golf Membership Special Unlimited golf. Two distinct courses. One unforgettable season at Double JJ. Membership Options Single Person: $1,500 Couples: $1,800 Secure season-long access to both Grand View and Thoroughbred and enjoy the freedom to play more, practice more, and make the most of every round […]
-
-
Summer Golf Stay & Play Package for Two!
Double JJ Resort 5900 Water Rd, Rothbury, MI, United StatesSummer Golf Stay & Play Package for Two Memorial Day – Labor Day 2026 May 25 – September 1, 2026 Escape for a refined summer retreat with our exclusive golf package for two. This offer combines cozy accommodations with a full day on the greens at our premier courses, ensuring a perfect getaway for golf […]
-
-
Double JJ’s Annual Corkscrews & Brews
Thoroughbred Golf Club 5900 S Water Rd, Rothbury, MIPCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xIj4KICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iQ29ya3NjcmV3cyAmIEJyZXdzIGF0IERvdWJsZSBKSiBSZXNvcnQg4oCUIGEgZmFsbCBjb2xvciBhbmQgdGFzdGluZyB0b3VyIHRocm91Z2ggdGhlIFRob3JvdWdoYnJlZCBHb2xmIENsdWIgb24gT2N0b2JlciAzIGZyb20gMTEgQU0gdG8gNCBQTS4iPgogIDx0aXRsZT5Db3Jrc2NyZXdzICZhbXA7IEJyZXdzIHwgRG91YmxlIEpKIFJlc29ydDwvdGl0bGU+CiAgPHN0eWxlPgogICAgOnJvb3R7LS13aW5lOiM4ZjE3MTQ7LS13aW5lLWRhcms6IzU0MTAwZjstLXJ1c3Q6I2I4NDIxZjstLWNsYXk6I2RjOTE2ODstLWdvbGQ6I2U5YTMzYjstLWNyZWFtOiNmZmZhZjA7LS1wYXBlcjojZjZlZWRmOy0tZm9yZXN0OiMyODM5MWQ7LS1pbms6IzFlMTkxNTstLW11dGVkOiM2NjViNTA7LS13aGl0ZTojZmZmfQogICAgKntib3gtc2l6aW5nOmJvcmRlci1ib3h9CiAgICBodG1se3Njcm9sbC1iZWhhdmlvcjpzbW9vdGh9CiAgICBib2R5e21hcmdpbjowO2JhY2tncm91bmQ6IzFkMTIwZTtjb2xvcjp2YXIoLS1pbmspO2ZvbnQtZmFtaWx5OkFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmO2xpbmUtaGVpZ2h0OjEuNX0KICAgIC5ldmVudHtwb3NpdGlvbjpyZWxhdGl2ZTttaW4taGVpZ2h0OjEwMHZoO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjI4cHggMTZweCA1MnB4O2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxMiUgOCUscmdiYSgyMzEsMTU0LDU4LC4yNyksdHJhbnNwYXJlbnQgMjQlKSxyYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDkxJSA0NSUscmdiYSgxNDMsMjMsMjAsLjI0KSx0cmFuc3BhcmVudCAyNSUpLGxpbmVhci1ncmFkaWVudCgxNjBkZWcsIzJhMTcxMCwjMTIwZDBhIDYwJSwjMmIxODEwKX0KICAgIC5zY3JvbGwtbGluZXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjIwO3RvcDowO2xlZnQ6MDt3aWR0aDowO2hlaWdodDo1cHg7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoOTBkZWcsdmFyKC0tZ29sZCksI2VlN2EzNCx2YXIoLS13aW5lKSk7Ym94LXNoYWRvdzowIDJweCA4cHggcmdiYSgwLDAsMCwuMjUpfQogICAgLmxlYWZ7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDozO3RvcDotODBweDtsZWZ0OnZhcigtLXgpO2ZvbnQtc2l6ZTp2YXIoLS1zaXplKTtvcGFjaXR5Oi45O3BvaW50ZXItZXZlbnRzOm5vbmU7ZmlsdGVyOmRyb3Atc2hhZG93KDAgNXB4IDNweCByZ2JhKDAsMCwwLC4yNSkpO2FuaW1hdGlvbjpsZWFmRmFsbCB2YXIoLS1zcGVlZCkgbGluZWFyIHZhcigtLWRlbGF5KSBpbmZpbml0ZX0KICAgIC5zaGVsbHtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjI7bWF4LXdpZHRoOjExMjBweDttYXJnaW46MCBhdXRvO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOnZhcigtLWNyZWFtKTtib3JkZXI6NHB4IHNvbGlkICMwZDA5MDc7Ym9yZGVyLXJhZGl1czoyNnB4O2JveC1zaGFkb3c6MCAyMHB4IDAgIzBiMDcwNSwwIDQwcHggODBweCByZ2JhKDAsMCwwLC41NCl9CiAgICAuaGVyb3twb3NpdGlvbjpyZWxhdGl2ZTttaW4taGVpZ2h0OjU3MHB4O2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7b3ZlcmZsb3c6aGlkZGVuO2NvbG9yOiNmZmY7YmFja2dyb3VuZDojNDk1MTI4fQogICAgLmhlcm8tcGhvdG97cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO29iamVjdC1maXQ6Y292ZXI7b2JqZWN0LXBvc2l0aW9uOmNlbnRlciBjZW50ZXI7ZmlsdGVyOnNhdHVyYXRlKDEuMDcpIGNvbnRyYXN0KDEuMDMpO2FuaW1hdGlvbjpoZXJvRHJpZnQgMTZzIGVhc2UtaW4tb3V0IGluZmluaXRlIGFsdGVybmF0ZX0KICAgIC5oZXJvOmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7Y29udGVudDoiIjtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxODBkZWcscmdiYSgzMSwxOCwxMSwuMTIpLHJnYmEoMzAsMTMsNywuMjQpIDMzJSxyZ2JhKDI5LDEwLDcsLjkzKSAxMDAlKX0KICAgIC5oZXJvLWNvcHl7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyO3dpZHRoOjEwMCU7bWF4LXdpZHRoOjkwMHB4O3BhZGRpbmc6NThweCBjbGFtcCgyMnB4LDZ2dyw2OHB4KTt0ZXh0LWFsaWduOmNlbnRlcn0KICAgIC5raWNrZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDoxMXB4O21hcmdpbjowIDAgMTNweDtjb2xvcjojZmZkMThhO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjkwMDtsZXR0ZXItc3BhY2luZzoyLjVweDt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9CiAgICAua2lja2VyOmJlZm9yZSwua2lja2VyOmFmdGVye3dpZHRoOjQycHg7aGVpZ2h0OjJweDtjb250ZW50OiIiO2JhY2tncm91bmQ6I2ZmZDE4YX0KICAgIC5kamotY2ItZXZlbnQgaDF7bWF4LXdpZHRoOjgwMHB4O21hcmdpbjowIGF1dG87Y29sb3I6I2ZmZjtmb250LWZhbWlseTpHZW9yZ2lhLCJUaW1lcyBOZXcgUm9tYW4iLHNlcmlmO2ZvbnQtc2l6ZTpjbGFtcCg1MHB4LDl2dyw4OHB4KTtmb250LXdlaWdodDo5MDA7bGV0dGVyLXNwYWNpbmc6LTRweDtsaW5lLWhlaWdodDouODY7dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1zaGFkb3c6M3B4IDVweCAwIHJnYmEoNzksMTIsMTAsLjkpLDAgMTBweCAzNXB4IHJnYmEoMCwwLDAsLjUpfQogICAgLmRqai1jYi1ldmVudCBoMSBlbXtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MTNweDtjb2xvcjojZjNhNjRjO2ZvbnQtZmFtaWx5OiJCcnVzaCBTY3JpcHQgTVQiLCJTZWdvZSBTY3JpcHQiLGN1cnNpdmU7Zm9udC1zaXplOi43MmVtO2ZvbnQtd2VpZ2h0OjUwMDtsZXR0ZXItc3BhY2luZzotMnB4fQogICAgLmhlcm8taW50cm97bWF4LXdpZHRoOjY4MHB4O21hcmdpbjoyM3B4IGF1dG8gMDtjb2xvcjojZmZmOWVlO2ZvbnQtc2l6ZTpjbGFtcCgxN3B4LDIuNnZ3LDIxcHgpO2ZvbnQtd2VpZ2h0OjcwMDt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LXNoYWRvdzowIDJweCA4cHggIzFiMDkwNn0KICAgIC50aWNrZXJ7b3ZlcmZsb3c6aGlkZGVuO2NvbG9yOiNmZmY7YmFja2dyb3VuZDp2YXIoLS13aW5lKTtib3JkZXItdG9wOjRweCBzb2xpZCAjZjBhNjUyO2JvcmRlci1ib3R0b206NHB4IHNvbGlkICM1MjEwMGV9CiAgICAudGlja2VyLXRyYWNre2Rpc3BsYXk6ZmxleDt3aWR0aDptYXgtY29udGVudDtwYWRkaW5nOjExcHggMDtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo5MDA7bGV0dGVyLXNwYWNpbmc6Mi41cHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2FuaW1hdGlvbjp0aWNrZXIgMjRzIGxpbmVhciBpbmZpbml0ZX0KICAgIC50aWNrZXItdHJhY2sgc3BhbntkaXNwbGF5OmJsb2NrO3BhZGRpbmctcmlnaHQ6MzRweDt3aGl0ZS1zcGFjZTpub3dyYXB9CiAgICAudGlja2VyOmhvdmVyIC50aWNrZXItdHJhY2t7YW5pbWF0aW9uLXBsYXktc3RhdGU6cGF1c2VkfQogICAgLmNvbnRlbnR7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZzpjbGFtcCgzNnB4LDd2dyw3MHB4KSBjbGFtcCgyMHB4LDZ2dyw2NXB4KSA2MHB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0tY3JlYW0pO2JhY2tncm91bmQtaW1hZ2U6cmFkaWFsLWdyYWRpZW50KHJnYmEoMTU1LDQzLDI3LC4wOSkgMS4ycHgsdHJhbnNwYXJlbnQgMS4ycHgpO2JhY2tncm91bmQtc2l6ZToxM3B4IDEzcHh9CiAgICAuc3RhbXAtcm93e2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsLjk2ZnIpIG1pbm1heCgwLDEuMDRmcik7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDozMnB4O21heC13aWR0aDo5NDBweDttYXJnaW46MCBhdXRvIDU4cHh9CiAgICAuc3RhbXAtcm93Pip7bWluLXdpZHRoOjB9CiAgICAuZGpqLWNiLWV2ZW50IC5zdGFtcCwuZGpqLWNiLWV2ZW50IC5zdGFtcDpiZWZvcmUsLmRqai1jYi1ldmVudCAuc3RhbXA6YWZ0ZXJ7ZGlzcGxheTpub25lIWltcG9ydGFudDtjb250ZW50Om5vbmUhaW1wb3J0YW50fQogICAgLmRqai1jYi1ldmVudCAuc3RhbXAtbG9nb3twb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO3dpZHRoOm1pbigxMDAlLDQyMHB4KTttYXgtd2lkdGg6NDIwcHg7aGVpZ2h0OmF1dG87YXNwZWN0LXJhdGlvOjE7bWFyZ2luOmF1dG87b2JqZWN0LWZpdDpjb250YWluO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zNXMgZWFzZX0KICAgIC5kamotY2ItZXZlbnQgLnN0YW1wLWxvZ286aG92ZXJ7dHJhbnNmb3JtOnNjYWxlKDEuMDI1KX0KICAgIC5pbnRybyBoMnttYXJnaW46MDtjb2xvcjp2YXIoLS13aW5lLWRhcmspO2ZvbnQtZmFtaWx5Okdlb3JnaWEsIlRpbWVzIE5ldyBSb21hbiIsc2VyaWY7Zm9udC1zaXplOmNsYW1wKDM0cHgsNnZ3LDU0cHgpO2xpbmUtaGVpZ2h0Oi45OH0KICAgIC5pbnRybyBoMiBlbXtjb2xvcjp2YXIoLS1ydXN0KTtmb250LXdlaWdodDo1MDB9CiAgICAuaW50cm8gcHttYXJnaW46MjBweCAwIDA7Y29sb3I6IzQ2MzgyZTtmb250LXNpemU6Y2xhbXAoMTdweCwyLjV2dywyMHB4KTtsaW5lLWhlaWdodDoxLjd9CiAgICAuaW50cm8gc3Ryb25ne2NvbG9yOnZhcigtLXdpbmUpfQogICAgLmRldGFpbHN7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMyxtaW5tYXgoMCwxZnIpKTtnYXA6MTVweDttYXgtd2lkdGg6OTQwcHg7bWFyZ2luOjAgYXV0byA1NXB4fQogICAgLmRldGFpbHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7bWluLXdpZHRoOjA7bWluLWhlaWdodDoxNzBweDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzoyNHB4IDE2cHggMjJweDtjb2xvcjojZmZmO3RleHQtYWxpZ246Y2VudGVyO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE0NWRlZywjYzk2YjQyLCNhMjJkMWUpO2JvcmRlcjoycHggc29saWQgIzdlMWUxNjtib3JkZXItcmFkaXVzOjVweDtib3gtc2hhZG93OjAgOHB4IDAgIzZkMWExNCwwIDE1cHggMjZweCByZ2JhKDEwMCwzNiwyMCwuMik7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjI1cyBlYXNlLGJveC1zaGFkb3cgLjI1cyBlYXNlfQogICAgLmRldGFpbDphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotMTlweDtib3R0b206LTI1cHg7d2lkdGg6NzVweDtoZWlnaHQ6NzVweDtjb250ZW50OiIiO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDkpO2JvcmRlci1yYWRpdXM6NTAlfQogICAgLmRldGFpbDpob3Zlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNnB4KTtib3gtc2hhZG93OjAgMTRweCAwICM2ZDFhMTQsMCAyMHB4IDMwcHggcmdiYSgxMDAsMzYsMjAsLjI0KX0KICAgIC5kZXRhaWwgc21hbGx7ZGlzcGxheTpibG9jazttYXJnaW4tYm90dG9tOjdweDtjb2xvcjojZmZlN2M1O2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjkwMDtsZXR0ZXItc3BhY2luZzoycHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfQogICAgLmRqai1jYi1ldmVudCAuZGV0YWlsIHN0cm9uZ3tkaXNwbGF5OmJsb2NrO21heC13aWR0aDoxMDAlO2ZvbnQtZmFtaWx5Okdlb3JnaWEsIlRpbWVzIE5ldyBSb21hbiIsc2VyaWY7Zm9udC1zaXplOmNsYW1wKDIycHgsMi4zdncsMzBweCk7bGluZS1oZWlnaHQ6MS4wNTt3aGl0ZS1zcGFjZTpub3JtYWx9CiAgICAuZGpqLWNiLWV2ZW50IC5kZXRhaWwtbG9jYXRpb24gc3Ryb25ne2ZvbnQtc2l6ZTpjbGFtcCgxOXB4LDEuOHZ3LDI0cHgpIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzotLjRweDtsaW5lLWhlaWdodDoxLjA4fQogICAgLmRqai1jYi1ldmVudCAuZGV0YWlscyAuZGV0YWlsLWxvY2F0aW9ufi5kZXRhaWwtbG9jYXRpb257ZGlzcGxheTpub25lIWltcG9ydGFudH0KICAgIC5kamotY2ItZXZlbnQgLmRldGFpbCBzdXB7Zm9udC1zaXplOi41OGVtO2xpbmUtaGVpZ2h0OjB9CiAgICAudG91ci10aXRsZXttYXJnaW46MCAwIDI0cHg7Y29sb3I6IzZkMWExNDtmb250LWZhbWlseTpHZW9yZ2lhLCJUaW1lcyBOZXcgUm9tYW4iLHNlcmlmO2ZvbnQtc2l6ZTpjbGFtcCgzMHB4LDV2dyw0NHB4KTtsaW5lLWhlaWdodDoxO3RleHQtYWxpZ246Y2VudGVyfQogICAgLnJvdXRle3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDQsMWZyKTtnYXA6MTRweDttYXgtd2lkdGg6OTQwcHg7bWFyZ2luOjAgYXV0byA1NnB4fQogICAgLnJvdXRlOmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MzlweDtyaWdodDo4JTtsZWZ0OjglO2hlaWdodDo0cHg7Y29udGVudDoiIjtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCg5MGRlZyx2YXIoLS13aW5lKSx2YXIoLS1nb2xkKSx2YXIoLS1mb3Jlc3QpLHZhcigtLXdpbmUpKTtib3JkZXItcmFkaXVzOjRweH0KICAgIC5zdG9we3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MTt0ZXh0LWFsaWduOmNlbnRlcn0KICAgIC5zdG9wLWljb257cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jazt3aWR0aDo4NHB4O2hlaWdodDo4NHB4O21hcmdpbjowIGF1dG8gMTRweDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDojZmZmO2JvcmRlcjo0cHggc29saWQgdmFyKC0td2luZSk7Ym9yZGVyLXJhZGl1czo1MCU7Ym94LXNoYWRvdzowIDZweCAwICNkNWJmYTI7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGVhc2UsYmFja2dyb3VuZCAuM3MgZWFzZX0KICAgIC5zdG9wLWljb24gLmVtb2ppe3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bGVmdDo1MCU7ZGlzcGxheTpibG9jaztmb250LXNpemU6NTJweDtsaW5lLWhlaWdodDoxO3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTIlKSBzY2FsZSgxLjEyKTt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjtmaWx0ZXI6ZHJvcC1zaGFkb3coMCAycHggMXB4IHJnYmEoNjIsMzYsMjUsLjE0KSk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGVhc2V9CiAgICAuc3RvcC1pY29uIC5lbW9qaS1nb2xme3RyYW5zZm9ybTp0cmFuc2xhdGUoLTQ4JSwtNDglKSBzY2FsZSgxLjEpfQogICAgLnN0b3AtaWNvbiAuZW1vamktd2luZXt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTQ5JSkgc2NhbGUoMS4xNCl9CiAgICAuc3RvcC1pY29uIC5lbW9qaS1sZWFme3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSBzY2FsZSgxLjE2KX0KICAgIC5zdG9wLWljb24gLmVtb2ppLXdpZGV7Zm9udC1zaXplOjQ1cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKDEuMTQpfQogICAgLnN0b3A6aG92ZXIgLnN0b3AtaWNvbntiYWNrZ3JvdW5kOiNmZmYwZDY7dHJhbnNmb3JtOnJvdGF0ZSgtN2RlZykgc2NhbGUoMS4wOCl9CiAgICAuc3RvcDpob3ZlciAuc3RvcC1pY29uIC5lbW9qaXt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUyJSkgc2NhbGUoMS4yMikgcm90YXRlKDVkZWcpfQogICAgLnN0b3Agc3Ryb25ne2Rpc3BsYXk6YmxvY2s7Y29sb3I6IzNlMjQxOTtmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxLjI1fQogICAgLnN0b3Agc3BhbntkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6NHB4O2NvbG9yOnZhcigtLW11dGVkKTtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjM1fQogICAgLnRpY2tldC13cmFwe2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MS4yZnIgLjhmcjttYXgtd2lkdGg6OTQwcHg7bWFyZ2luOjAgYXV0bztvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDojZmZmO2JvcmRlcjozcHggc29saWQgIzJjMjExYTtib3JkZXItcmFkaXVzOjIwcHg7Ym94LXNoYWRvdzowIDE0cHggMzVweCByZ2JhKDU4LDI5LDE4LC4xOCl9CiAgICAudGlja2V0c3twb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOjM0cHg7YmFja2dyb3VuZDojZmZmZGY4fQogICAgLnRpY2tldHM6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6LTEwcHg7d2lkdGg6MjBweDtoZWlnaHQ6MTAwJTtjb250ZW50OiIiO2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAxMHB4IDEwcHgsdHJhbnNwYXJlbnQgOXB4LCNmZmZkZjggMTBweCk7YmFja2dyb3VuZC1zaXplOjIwcHggMjJweH0KICAgIC50aWNrZXRzIGgye21hcmdpbjowO2NvbG9yOnZhcigtLXdpbmUpO2ZvbnQtZmFtaWx5Okdlb3JnaWEsIlRpbWVzIE5ldyBSb21hbiIsc2VyaWY7Zm9udC1zaXplOmNsYW1wKDMwcHgsNXZ3LDQzcHgpO2xpbmUtaGVpZ2h0OjF9CiAgICAudGlja2V0LW9wdGlvbnN7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDoxMXB4O21hcmdpbjoyMHB4IDAgMTNweH0KICAgIC50aWNrZXQtb3B0aW9ue2ZsZXg6MSAxIDE1MHB4O3BhZGRpbmc6MTVweDtjb2xvcjojZmZmO3RleHQtYWxpZ246Y2VudGVyO2JhY2tncm91bmQ6dmFyKC0tZm9yZXN0KTtib3JkZXItcmFkaXVzOjEwcHh9CiAgICAudGlja2V0LW9wdGlvbiBzdHJvbmd7ZGlzcGxheTpibG9jaztjb2xvcjojZmZkODhlO2ZvbnQtZmFtaWx5Okdlb3JnaWEsIlRpbWVzIE5ldyBSb21hbiIsc2VyaWY7Zm9udC1zaXplOjI3cHh9CiAgICAudGlja2V0LW9wdGlvbiBzcGFue2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjgwMH0KICAgIC5wb3Vye21hcmdpbjowO2NvbG9yOnZhcigtLW11dGVkKTtmb250LXdlaWdodDo3MDB9CiAgICAuYWN0aW9ue2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7cGFkZGluZzozNHB4IDI4cHg7Y29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxNDVkZWcsIzhmMTcxNCwjNWMwZjBlKX0KICAgIC5jYXJ0e3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwNXB4O2hlaWdodDo3NnB4O21hcmdpbjowIGF1dG8gMTRweDthbmltYXRpb246Y2FydEJvdW5jZSAyLjdzIGVhc2UtaW4tb3V0IGluZmluaXRlfQogICAgLmNhcnQtcm9vZntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NHB4O2xlZnQ6OXB4O3dpZHRoOjgycHg7aGVpZ2h0OjdweDtib3JkZXI6NHB4IHNvbGlkICNmZmQxOGE7Ym9yZGVyLXJhZGl1czo4cHh9CiAgICAuY2FydC1yb29mOmJlZm9yZSwuY2FydC1yb29mOmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1cHg7d2lkdGg6NHB4O2hlaWdodDo0MHB4O2NvbnRlbnQ6IiI7YmFja2dyb3VuZDojZmZkMThhfQogICAgLmNhcnQtcm9vZjpiZWZvcmV7bGVmdDo1cHg7dHJhbnNmb3JtOnJvdGF0ZSg5ZGVnKX0KICAgIC5jYXJ0LXJvb2Y6YWZ0ZXJ7cmlnaHQ6NXB4fQogICAgLmNhcnQtYm9keXtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MTRweDtsZWZ0OjlweDt3aWR0aDo4N3B4O2hlaWdodDozMHB4O2JvcmRlcjo0cHggc29saWQgI2ZmZDE4YTtib3JkZXItcmFkaXVzOjdweCAxN3B4IDhweCA4cHh9CiAgICAuY2FydC1ib2R5OmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi04cHg7Ym90dG9tOjNweDt3aWR0aDoxN3B4O2hlaWdodDoxM3B4O2NvbnRlbnQ6IiI7Ym9yZGVyLXRvcDo0cHggc29saWQgI2ZmZDE4YTtib3JkZXItcmlnaHQ6NHB4IHNvbGlkICNmZmQxOGE7Ym9yZGVyLXJhZGl1czowIDEzcHggMCAwO3RyYW5zZm9ybTpza2V3WCgxOGRlZyl9CiAgICAuY2FydC1zZWF0e3Bvc2l0aW9uOmFic29sdXRlO3RvcDoyOXB4O2xlZnQ6NTFweDt3aWR0aDoyOHB4O2hlaWdodDoxNXB4O2JvcmRlci10b3A6NXB4IHNvbGlkICNmZmQxOGE7Ym9yZGVyLXJpZ2h0OjRweCBzb2xpZCAjZmZkMThhO2JvcmRlci1yYWRpdXM6NHB4fQogICAgLndoZWVse3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6Mjtib3R0b206MDt3aWR0aDoyNHB4O2hlaWdodDoyNHB4O2JhY2tncm91bmQ6IzZkMTAwZjtib3JkZXI6NXB4IHNvbGlkICNmZmQxOGE7Ym9yZGVyLXJhZGl1czo1MCV9CiAgICAud2hlZWwtb25le2xlZnQ6MThweH0ud2hlZWwtdHdve3JpZ2h0OjExcHh9CiAgICAuYWN0aW9uIHN0cm9uZ3tkaXNwbGF5OmJsb2NrO21hcmdpbjoxMHB4IDAgNXB4O2ZvbnQtc2l6ZToxOXB4O2xpbmUtaGVpZ2h0OjEuMn0KICAgIC5hY3Rpb24gc3BhbntkaXNwbGF5OmJsb2NrO2NvbG9yOiNmNWQ5YzQ7Zm9udC1zaXplOjE0cHh9CiAgICAuY2FsbHtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tdG9wOjE4cHg7cGFkZGluZzoxM3B4IDE4cHg7Y29sb3I6IzU4MTAwZTtmb250LXdlaWdodDo5MDA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7YmFja2dyb3VuZDojZjRiMDU5O2JvcmRlcjozcHggc29saWQgI2ZmZDM5NTtib3JkZXItcmFkaXVzOjhweDtib3gtc2hhZG93OjAgNnB4IDAgIzNkMGIwYTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMThzIGVhc2UsYm94LXNoYWRvdyAuMThzIGVhc2V9CiAgICAuY2FsbDpob3Zlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtM3B4KTtib3gtc2hhZG93OjAgOXB4IDAgIzNkMGIwYX0KICAgIC5ub3Rlc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLDFmcik7Z2FwOjE0cHg7bWF4LXdpZHRoOjk0MHB4O21hcmdpbjoyNHB4IGF1dG8gMH0KICAgIC5ub3Rle3BhZGRpbmc6MThweDtjb2xvcjojNDkzOTJmO3RleHQtYWxpZ246Y2VudGVyO2JhY2tncm91bmQ6I2YwZGZjNjtib3JkZXI6MnB4IHNvbGlkICNkNWI5OGQ7Ym9yZGVyLXJhZGl1czoxMnB4O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjcwMH0KICAgIC5ub3RlIHN0cm9uZ3tkaXNwbGF5OmJsb2NrO21hcmdpbi1ib3R0b206M3B4O2NvbG9yOnZhcigtLXdpbmUpO2ZvbnQtc2l6ZToxNnB4fQogICAgLnNodXR0bGV7Z3JpZC1jb2x1bW46MS8tMTtjb2xvcjojZmZmO2JhY2tncm91bmQ6dmFyKC0td2luZSk7Ym9yZGVyLWNvbG9yOiM1ZDBkMGJ9CiAgICAuc2h1dHRsZSBzdHJvbmd7Y29sb3I6I2ZmZDA4N30KICAgIC5mb290ZXJ7cGFkZGluZzoyN3B4IDIwcHg7Y29sb3I6I2VhZGJjOTt0ZXh0LWFsaWduOmNlbnRlcjtiYWNrZ3JvdW5kOiMxZDEzMGY7Ym9yZGVyLXRvcDo0cHggc29saWQgdmFyKC0tZ29sZCl9CiAgICAuZm9vdGVyIHN0cm9uZ3tjb2xvcjojZmZmO2ZvbnQtc2l6ZToxOHB4fQogICAgLmZvb3RlciBhe2NvbG9yOiNmMmE3NGU7Zm9udC13ZWlnaHQ6OTAwO3RleHQtZGVjb3JhdGlvbjpub25lfQogICAgLnJldmVhbHtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMjRweCk7dHJhbnNpdGlvbjpvcGFjaXR5IC42NXMgZWFzZSx0cmFuc2Zvcm0gLjY1cyBlYXNlfQogICAgLnJldmVhbC52aXNpYmxle29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZX0KICAgIGE6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjRweCBzb2xpZCAjZmZkMTZkO291dGxpbmUtb2Zmc2V0OjRweH0KICAgIEBrZXlmcmFtZXMgaGVyb0RyaWZ0ezAle3RyYW5zZm9ybTpzY2FsZSgxLjAxKSB0cmFuc2xhdGUzZCgwLDAsMCl9MTAwJXt0cmFuc2Zvcm06c2NhbGUoMS4wNykgdHJhbnNsYXRlM2QoLTEuMyUsMSUsMCl9fQogICAgQGtleWZyYW1lcyB0aWNrZXJ7dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSl9fQogICAgQGtleWZyYW1lcyBsZWFmRmFsbHswJXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtODBweCwwKSByb3RhdGUoMCk7b3BhY2l0eTowfTgle29wYWNpdHk6Ljl9MTAwJXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QodmFyKC0tZHJpZnQpLDEyNTBweCwwKSByb3RhdGUoNTQwZGVnKTtvcGFjaXR5Oi4xNX19CiAgICBAa2V5ZnJhbWVzIGNhcnRCb3VuY2V7MCUsMTAwJXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKSByb3RhdGUoLTJkZWcpfTUwJXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtN3B4KSByb3RhdGUoMmRlZyl9fQogICAgQG1lZGlhKG1heC13aWR0aDo3ODBweCl7Lmhlcm97bWluLWhlaWdodDo1NDBweH0uc3RhbXAtcm93e2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpfS5kamotY2ItZXZlbnQgLnN0YW1wLWxvZ297d2lkdGg6bWluKDEwMCUsMzUwcHgpO21heC13aWR0aDozNTBweH0uZGV0YWlsc3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKX0uZGpqLWNiLWV2ZW50IC5kZXRhaWwgc3Ryb25ne2ZvbnQtc2l6ZToyOHB4fS5kamotY2ItZXZlbnQgLmRldGFpbC1sb2NhdGlvbiBzdHJvbmd7Zm9udC1zaXplOjI0cHghaW1wb3J0YW50fS5yb3V0ZXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsbWlubWF4KDAsMWZyKSk7cm93LWdhcDoyOHB4fS5yb3V0ZTpiZWZvcmV7ZGlzcGxheTpub25lfS50aWNrZXQtd3JhcHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKX0udGlja2V0czphZnRlcntkaXNwbGF5Om5vbmV9Lm5vdGVze2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMCwxZnIpfS5zaHV0dGxle2dyaWQtY29sdW1uOmF1dG99Lmhlcm8tY29weXtwYWRkaW5nLWJvdHRvbTo0M3B4fX0KICAgIEBtZWRpYShtYXgtd2lkdGg6NDgwcHgpey5ldmVudHtwYWRkaW5nOjhweCA2cHggMzVweH0uc2hlbGx7Ym9yZGVyLXdpZHRoOjNweDtib3JkZXItcmFkaXVzOjE2cHh9Lmhlcm97bWluLWhlaWdodDo1MjBweH0uaGVyby1waG90b3tvYmplY3QtcG9zaXRpb246Y2VudGVyIGNlbnRlcn0ua2lja2Vye2ZvbnQtc2l6ZToxMXB4O2xldHRlci1zcGFjaW5nOjEuNXB4fS5raWNrZXI6YmVmb3JlLC5raWNrZXI6YWZ0ZXJ7d2lkdGg6MThweH0uZGpqLWNiLWV2ZW50IGgxe2ZvbnQtc2l6ZTpjbGFtcCg0MHB4LDEzdncsNDhweCk7bGV0dGVyLXNwYWNpbmc6LTJweH0uaGVyby1jb3B5e3BhZGRpbmctcmlnaHQ6MThweDtwYWRkaW5nLWxlZnQ6MThweH0uY29udGVudHtwYWRkaW5nLXJpZ2h0OjEycHg7cGFkZGluZy1sZWZ0OjEycHh9LmRqai1jYi1ldmVudCAuc3RhbXAtbG9nb3t3aWR0aDptaW4oMTAwJSwzMDBweCk7bWF4LXdpZHRoOjMwMHB4fS5kZXRhaWx7bWluLWhlaWdodDoxNDVweH0uZGpqLWNiLWV2ZW50IC5kZXRhaWwgc3Ryb25ne2ZvbnQtc2l6ZToyN3B4fS5kamotY2ItZXZlbnQgLmRldGFpbC1sb2NhdGlvbiBzdHJvbmd7Zm9udC1zaXplOjIycHghaW1wb3J0YW50fS5yb3V0ZXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6bWlubWF4KDAsMWZyKX0udGlja2V0LW9wdGlvbnN7ZGlzcGxheTpncmlkfS50aWNrZXRzLC5hY3Rpb257cGFkZGluZzoyN3B4IDE4cHh9LmxlYWZ7ZGlzcGxheTpub25lfX0KICAgIEBtZWRpYShwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7aHRtbHtzY3JvbGwtYmVoYXZpb3I6YXV0b30ubGVhZntkaXNwbGF5Om5vbmV9Lmhlcm8tcGhvdG8sLnRpY2tlci10cmFjaywuY2FydHthbmltYXRpb246bm9uZX0ucmV2ZWFse29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZTt0cmFuc2l0aW9uOm5vbmV9LmRldGFpbCwuc3RvcC1pY29uLC5zdG9wLWljb24gLmVtb2ppLC5zdGFtcC1sb2dvLC5jYWxse3RyYW5zaXRpb246bm9uZX0uc3RvcDpob3ZlciAuc3RvcC1pY29ue3RyYW5zZm9ybTpub25lfS5zdG9wOmhvdmVyIC5zdG9wLWljb24gLmVtb2ppe3RyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTIlKSBzY2FsZSgxLjEyKX19CiAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KICA8ZGl2IGNsYXNzPSJzY3JvbGwtbGluZSIgYXJpYS1oaWRkZW49InRydWUiPjwvZGl2PgogIDxtYWluIGNsYXNzPSJldmVudCBkamotY2ItZXZlbnQiPgogICAgPHNwYW4gY2xhc3M9ImxlYWYiIHN0eWxlPSItLXg6NSU7LS1zaXplOjI4cHg7LS1zcGVlZDoxM3M7LS1kZWxheTotMnM7LS1kcmlmdDo5MHB4IiBhcmlhLWhpZGRlbj0idHJ1ZSI+8J+Ngjwvc3Bhbj4KICAgIDxzcGFuIGNsYXNzPSJsZWFmIiBzdHlsZT0iLS14OjE4JTstLXNpemU6MjFweDstLXNwZWVkOjE2czstLWRlbGF5Oi0xMHM7LS1kcmlmdDotNDVweCIgYXJpYS1oaWRkZW49InRydWUiPvCfjYE8L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0ibGVhZiIgc3R5bGU9Ii0teDozOCU7LS1zaXplOjI2cHg7LS1zcGVlZDoxNXM7LS1kZWxheTotNXM7LS1kcmlmdDo3MHB4IiBhcmlhLWhpZGRlbj0idHJ1ZSI+8J+Ngjwvc3Bhbj4KICAgIDxzcGFuIGNsYXNzPSJsZWFmIiBzdHlsZT0iLS14OjYwJTstLXNpemU6MjNweDstLXNwZWVkOjE4czstLWRlbGF5Oi0xM3M7LS1kcmlmdDotODBweCIgYXJpYS1oaWRkZW49InRydWUiPvCfjYE8L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0ibGVhZiIgc3R5bGU9Ii0teDo3NiU7LS1zaXplOjMwcHg7LS1zcGVlZDoxNHM7LS1kZWxheTotN3M7LS1kcmlmdDo0MHB4IiBhcmlhLWhpZGRlbj0idHJ1ZSI+8J+Ngjwvc3Bhbj4KICAgIDxzcGFuIGNsYXNzPSJsZWFmIiBzdHlsZT0iLS14OjkyJTstLXNpemU6MjJweDstLXNwZWVkOjE3czstLWRlbGF5Oi0xNXM7LS1kcmlmdDotNjVweCIgYXJpYS1oaWRkZW49InRydWUiPvCfjYE8L3NwYW4+CgogICAgPGFydGljbGUgY2xhc3M9InNoZWxsIiBhcmlhLWxhYmVsbGVkYnk9ImV2ZW50LXRpdGxlIj4KICAgICAgPGhlYWRlciBjbGFzcz0iaGVybyI+CiAgICAgICAgPGltZyBjbGFzcz0iaGVyby1waG90byIgc3JjPSJodHRwczovL2RvdWJsZWpqLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wOC9Db2RleC1JbWFnZS1BdWctMjQtMjAyNi0xMF8zNF8zMC1BTS5qcGciIGFsdD0iU3Vuc2V0IG92ZXIgdGhlIHJvbGxpbmcgaGlsbHMgYW5kIGdvbGYgY291cnNlIGF0IERvdWJsZSBKSiBSZXNvcnQiPgogICAgICAgIDxkaXYgY2xhc3M9Imhlcm8tY29weSI+CiAgICAgICAgICA8cCBjbGFzcz0ia2lja2VyIj5GYWxsIENvbG9yICZhbXA7IFRhc3RpbmcgVG91cjwvcD4KICAgICAgICAgIDxoMSBpZD0iZXZlbnQtdGl0bGUiPkNvcmtzY3Jld3MgPGVtPiZhbXA7IEJyZXdzPC9lbT48L2gxPgogICAgICAgICAgPHAgY2xhc3M9Imhlcm8taW50cm8iPlNpcCwgc2FtcGxlLCBhbmQgZXhwbG9yZSB0aGUgcm9sbGluZyBoaWxscyBvZiBUaG9yb3VnaGJyZWQgR29sZiBDbHVi4oCUc3Vycm91bmRlZCBieSBldmVyeXRoaW5nIHRoYXQgbWFrZXMgZmFsbCBpbiBNaWNoaWdhbiBzbyBzcGVjaWFsLjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9oZWFkZXI+CgogICAgICA8ZGl2IGNsYXNzPSJ0aWNrZXIiIGFyaWEtbGFiZWw9IkNyYWZ0IGJlZXIsIHdpbmUsIGVudGVydGFpbm1lbnQsIGFuZCBmYWxsIGNvbG9yIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aWNrZXItdHJhY2siIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgIDxzcGFuPkNyYWZ0IEJlZXImbmJzcDsg4oCiICZuYnNwO1dpbmUmbmJzcDsg4oCiICZuYnNwO0VudGVydGFpbm1lbnQmbmJzcDsg4oCiICZuYnNwO0ZhbGwgQ29sb3ImbmJzcDsg4oCiICZuYnNwO1Rhc3RpbmcgVG91ciZuYnNwOyDigKIgJm5ic3A7PC9zcGFuPgogICAgICAgICAgPHNwYW4+Q3JhZnQgQmVlciZuYnNwOyDigKIgJm5ic3A7V2luZSZuYnNwOyDigKIgJm5ic3A7RW50ZXJ0YWlubWVudCZuYnNwOyDigKIgJm5ic3A7RmFsbCBDb2xvciZuYnNwOyDigKIgJm5ic3A7VGFzdGluZyBUb3VyJm5ic3A7IOKAoiAmbmJzcDs8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPHNlY3Rpb24gY2xhc3M9ImNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9InN0YW1wLXJvdyByZXZlYWwiPgogICAgICAgICAgPGltZyBjbGFzcz0ic3RhbXAtbG9nbyIgc3JjPSJodHRwczovL2RvdWJsZWpqLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wOC9leGVjLTY3YWExN2Q0LWM5MTgtNGIzNS04N2ViLTZiYWZkYWI4ZjYxYy5wbmciIGFsdD0iQ29ya3NjcmV3cyBhbmQgQnJld3Mg4oCUIGNyYWZ0IGJlZXIsIHdpbmUsIGVudGVydGFpbm1lbnQsIGZhbGwgY29sb3IgYW5kIHRhc3RpbmcgdG91ciBhdCBEb3VibGUgSkogUmVzb3J0IGluIFJvdGhidXJ5LCBNaWNoaWdhbiIgbG9hZGluZz0ibGF6eSIgZGVjb2Rpbmc9ImFzeW5jIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImludHJvIj4KICAgICAgICAgICAgPGgyPkZhbGwgdGFzdGVzIGJldHRlciA8ZW0+b3V0IGhlcmUuPC9lbT48L2gyPgogICAgICAgICAgICA8cD5FbmpveSBhIGZhbGwgY29sb3IgYW5kIHRhc3RpbmcgdG91ciB0aHJvdWdoIHRoZSByb2xsaW5nIGhpbGxzIG9mIHRoZSBUaG9yb3VnaGJyZWQgR29sZiBDbHViLiBBdCBlYWNoIHN0b3AsIGNob29zZSBhIDxzdHJvbmc+Y3JhZnQgYmVlciBvciB3aW5lIHNhbXBsZTwvc3Ryb25nPiBhbmQgdGFrZSBpbiB0aGUgdmlicmFudCBjb2xvcnMgb2YgdGhlIHNlYXNvbi48L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iZGV0YWlscyByZXZlYWwiIGFyaWEtbGFiZWw9IkV2ZW50IGRldGFpbHMiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZGV0YWlsIj48c21hbGw+U2F2ZSB0aGUgZGF0ZTwvc21hbGw+PHN0cm9uZz5PY3RvYmVyIDM8c3VwPnJkPC9zdXA+PC9zdHJvbmc+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXRhaWwgZGV0YWlsLWxvY2F0aW9uIj48c21hbGw+TWVldCB1cyBhdDwvc21hbGw+PHN0cm9uZz5UaG9yb3VnaGJyZWQ8YnI+R29sZiBDbHViPC9zdHJvbmc+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXRhaWwiPjxzbWFsbD5Ub3VyIGhvdXJzPC9zbWFsbD48c3Ryb25nPjExIEFN4oCTNCBQTTwvc3Ryb25nPjwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8aDIgY2xhc3M9InRvdXItdGl0bGUgcmV2ZWFsIj5DaG9vc2UgeW91ciB3YXkgdGhyb3VnaCB0aGUgdG91cjwvaDI+CiAgICAgICAgPGRpdiBjbGFzcz0icm91dGUgcmV2ZWFsIiBhcmlhLWxhYmVsPSJUb3VyIGV4cGVyaWVuY2UiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic3RvcCI+PHNwYW4gY2xhc3M9InN0b3AtaWNvbiIgYXJpYS1oaWRkZW49InRydWUiPjxzcGFuIGNsYXNzPSJlbW9qaSBlbW9qaS1nb2xmIj7im7M8L3NwYW4+PC9zcGFuPjxzdHJvbmc+RXhwbG9yZSB0aGUgQ291cnNlPC9zdHJvbmc+PHNwYW4+UmlkZSB0aHJvdWdoIHJvbGxpbmcgZmFsbCBzY2VuZXJ5PC9zcGFuPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic3RvcCI+PHNwYW4gY2xhc3M9InN0b3AtaWNvbiIgYXJpYS1oaWRkZW49InRydWUiPjxzcGFuIGNsYXNzPSJlbW9qaSBlbW9qaS13aW5lIj7wn423PC9zcGFuPjwvc3Bhbj48c3Ryb25nPkNob29zZSBZb3VyIFBvdXI8L3N0cm9uZz48c3Bhbj5DcmFmdCBiZWVyIG9yIHdpbmUgYXQgZWFjaCBzdG9wPC9zcGFuPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic3RvcCI+PHNwYW4gY2xhc3M9InN0b3AtaWNvbiIgYXJpYS1oaWRkZW49InRydWUiPjxzcGFuIGNsYXNzPSJlbW9qaSBlbW9qaS1sZWFmIj7wn42BPC9zcGFuPjwvc3Bhbj48c3Ryb25nPlRha2UgSW4gdGhlIENvbG9yPC9zdHJvbmc+PHNwYW4+UGVhayBNaWNoaWdhbiBmYWxsIGF0bW9zcGhlcmU8L3NwYW4+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdG9wIj48c3BhbiBjbGFzcz0ic3RvcC1pY29uIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHNwYW4gY2xhc3M9ImVtb2ppIGVtb2ppLXdpZGUiPvCfjb3vuI88L3NwYW4+PC9zcGFuPjxzdHJvbmc+U3RheSBmb3IgRGlubmVyPC9zdHJvbmc+PHNwYW4+UmVzdGF1cmFudCBzcGVjaWFscyBhdmFpbGFibGU8L3NwYW4+PC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJ0aWNrZXQtd3JhcCByZXZlYWwiIGFyaWEtbGFiZWxsZWRieT0idGlja2V0cy10aXRsZSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aWNrZXRzIj4KICAgICAgICAgICAgPGgyIGlkPSJ0aWNrZXRzLXRpdGxlIj5QaWNrIFlvdXIgVGFzdGluZyBQYWNrPC9oMj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGlja2V0LW9wdGlvbnMiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpY2tldC1vcHRpb24iPjxzdHJvbmc+MTAgZm9yICQyNTwvc3Ryb25nPjxzcGFuPlRhc3RpbmcgdGlja2V0czwvc3Bhbj48L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aWNrZXQtb3B0aW9uIj48c3Ryb25nPjE1IGZvciAkMzU8L3N0cm9uZz48c3Bhbj5UYXN0aW5nIHRpY2tldHM8L3NwYW4+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cCBjbGFzcz0icG91ciI+RWFjaCB0aWNrZXQgaXMgZ29vZCBmb3Igb25lIDMgb3ogdGFzdGluZyBwb3VyLiBSZWdpc3RlciBhbmQgcGF5IGluIHRoZSBQcm8gU2hvcC48L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbiI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FydCIgYXJpYS1oaWRkZW49InRydWUiPjxzcGFuIGNsYXNzPSJjYXJ0LXJvb2YiPjwvc3Bhbj48c3BhbiBjbGFzcz0iY2FydC1ib2R5Ij48L3NwYW4+PHNwYW4gY2xhc3M9ImNhcnQtc2VhdCI+PC9zcGFuPjxzcGFuIGNsYXNzPSJ3aGVlbCB3aGVlbC1vbmUiPjwvc3Bhbj48c3BhbiBjbGFzcz0id2hlZWwgd2hlZWwtdHdvIj48L3NwYW4+PC9kaXY+CiAgICAgICAgICAgICAgPHN0cm9uZz5SZXNlcnZlIGEgR29sZiBDYXJ0PC9zdHJvbmc+CiAgICAgICAgICAgICAgPHNwYW4+Q2FsbCB0aGUgUHJvIFNob3AgdG8gcmVzZXJ2ZSB5b3Vycy48L3NwYW4+CiAgICAgICAgICAgICAgPGEgY2xhc3M9ImNhbGwiIGhyZWY9InRlbDorMTIzMTg5NDM5MzkiPkNhbGwgKDIzMSkgODk0LTM5Mzk8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8ZGl2IGNsYXNzPSJub3RlcyByZXZlYWwiPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSI+PHN0cm9uZz5SZWdpc3RlciAmYW1wOyBQYXk8L3N0cm9uZz5WaXNpdCB0aGUgUHJvIFNob3AgdG8gZ2V0IHN0YXJ0ZWQuPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIj48c3Ryb25nPkNob29zZSBhdCBFdmVyeSBTdG9wPC9zdHJvbmc+RW5qb3kgY3JhZnQgYmVlciBvciB3aW5lIHNhbXBsZXMuPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIj48c3Ryb25nPkRpbm5lciBTcGVjaWFsczwvc3Ryb25nPkF2YWlsYWJsZSBhdCB0aGUgcmVzdGF1cmFudC48L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vdGUgc2h1dHRsZSI+PHN0cm9uZz5Db21wbGltZW50YXJ5IFNodXR0bGUgU2VydmljZTwvc3Ryb25nPkF2YWlsYWJsZSBmb3IgYWxsIGd1ZXN0cyBvbiB0aGUgcHJvcGVydHkuPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvc2VjdGlvbj4KCiAgICAgIDxmb290ZXIgY2xhc3M9ImZvb3RlciI+PHN0cm9uZz5Eb3VibGUgSkogUmVzb3J0PC9zdHJvbmc+PGJyPlRob3JvdWdoYnJlZCBHb2xmIENsdWIg4oCiIFJvdGhidXJ5LCBNaWNoaWdhbiDigKIgPGEgaHJlZj0idGVsOisxMjMxODk0NDQ0NCI+KDIzMSkgODk0LTQ0NDQ8L2E+PC9mb290ZXI+CiAgICA8L2FydGljbGU+CiAgPC9tYWluPgoKICA8c2NyaXB0PgogICAgKCgpID0+IHsKICAgICAgY29uc3QgZGV0YWlsQ2FyZHMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kamotY2ItZXZlbnQgLmRldGFpbHMgLmRldGFpbCcpKTsKICAgICAgY29uc3Qgc2VlbkRldGFpbHMgPSBuZXcgU2V0KCk7CiAgICAgIGRldGFpbENhcmRzLmZvckVhY2goY2FyZCA9PiB7CiAgICAgICAgY29uc3Qga2V5ID0gY2FyZC50ZXh0Q29udGVudC5yZXBsYWNlKC9ccysvZywgJyAnKS50cmltKCkudG9Mb3dlckNhc2UoKTsKICAgICAgICBpZiAoc2VlbkRldGFpbHMuaGFzKGtleSkpIGNhcmQucmVtb3ZlKCk7CiAgICAgICAgZWxzZSBzZWVuRGV0YWlscy5hZGQoa2V5KTsKICAgICAgfSk7CgogICAgICBjb25zdCByZWR1Y2UgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSknKS5tYXRjaGVzOwogICAgICBjb25zdCBiYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2Nyb2xsLWxpbmUnKTsKICAgICAgY29uc3QgdXBkYXRlQmFyID0gKCkgPT4gewogICAgICAgIGNvbnN0IG1heCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQgLSB3aW5kb3cuaW5uZXJIZWlnaHQ7CiAgICAgICAgYmFyLnN0eWxlLndpZHRoID0gKG1heCA+IDAgPyAod2luZG93LnNjcm9sbFkgLyBtYXgpICogMTAwIDogMCkgKyAnJSc7CiAgICAgIH07CiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGVCYXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTsKICAgICAgdXBkYXRlQmFyKCk7CgogICAgICBjb25zdCBpdGVtcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZXZlYWwnKTsKICAgICAgaWYgKHJlZHVjZSB8fCAhKCdJbnRlcnNlY3Rpb25PYnNlcnZlcicgaW4gd2luZG93KSkgewogICAgICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiBpdGVtLmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGVudHJpZXMgPT4gewogICAgICAgIGVudHJpZXMuZm9yRWFjaChlbnRyeSA9PiB7CiAgICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHsKICAgICAgICAgICAgZW50cnkudGFyZ2V0LmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTsKICAgICAgICAgICAgb2JzZXJ2ZXIudW5vYnNlcnZlKGVudHJ5LnRhcmdldCk7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0sIHsgdGhyZXNob2xkOiAuMTMgfSk7CiAgICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiBvYnNlcnZlci5vYnNlcnZlKGl0ZW0pKTsKICAgIH0pKCk7CiAgPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=