{"id":263,"date":"2026-10-28T16:45:49","date_gmt":"2026-10-28T08:45:49","guid":{"rendered":"https:\/\/jennyp.xyz\/index.php\/2026\/10\/28\/learning-summary\/"},"modified":"2026-10-29T17:21:04","modified_gmt":"2026-10-29T09:21:04","slug":"learning-summary","status":"publish","type":"post","link":"https:\/\/jennyp.xyz\/index.php\/2026\/10\/28\/learning-summary\/","title":{"rendered":"Learning Summary"},"content":{"rendered":"\n<div class=\"lgs-wrap\">\n<style>\n.lgs-wrap{font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"PingFang SC\",\"Microsoft YaHei\",sans-serif;color:#1e2532;line-height:1.75}\n.lgs-intro{background:#fdf1f6;border:1px solid #f6dbe8;border-radius:12px;padding:16px 20px;margin-bottom:22px;font-size:14px;color:#8a4a68}\n.lgs-intro p{margin:0}\n.lgs-day{background:#fff;border:1px solid #e8eaf1;border-radius:14px;padding:24px 28px;margin-bottom:18px;box-shadow:0 1px 2px rgba(16,24,40,.04)}\n.lgs-day h2{font-size:1.12rem;margin:0 0 16px;padding-left:12px;border-left:3px solid #bf5e8a;line-height:1.4;color:#1e2532;font-weight:600}\n.lgs-body{font-size:15px;color:#374151}\n.lgs-body p{margin:0 0 10px}\n.lgs-body p:last-child{margin-bottom:0}\n.lgs-body ul,.lgs-body ol{margin:0 0 12px;padding-left:22px}\n.lgs-body li{margin-bottom:6px}\n.lgs-body strong{color:#bf5e8a;font-weight:600}\n.lgs-body blockquote{margin:12px 0;padding:8px 16px;border-left:3px solid #f0c3d7;background:#fdf6f9;color:#6b5561;font-size:14px}\n.lgs-body blockquote p{margin:0}\n.lgs-body a{color:#bf5e8a;text-decoration:none;border-bottom:1px solid #f0c3d7}\n.lgs-body a:hover{border-bottom-color:#bf5e8a}\n.lgs-body code{background:#f4f6fa;border:1px solid #e6e9f2;border-radius:4px;padding:1px 5px;font-size:13px;color:#a04a72}\n.lgs-tag{display:inline-block;font-size:12px;padding:2px 9px;border-radius:999px;background:#fdf1f6;color:#bf5e8a;margin-right:6px;font-weight:600}\n@media(max-width:560px){\n.lgs-day{padding:18px 16px}\n.lgs-day h2{font-size:1rem}\n.lgs-body{font-size:14px}\n}\n<\/style>\n\n<div class=\"lgs-intro\">\n<p>\u8fd9\u91cc\u6309\u65e5\u671f\u8bb0\u5f55\u6bcf\u5929\u5b66\u7684\u4e1c\u897f\u3002\u6bcf\u4e00\u6761\u90fd\u662f\u5f53\u5929\u5b66\u5b8c\u3001\u6da6\u8272\u6574\u7406\u8fc7\u7684\u8981\u70b9\uff0c\u6700\u65b0\u7684\u5728\u6700\u4e0a\u9762\u3002\u5de6\u4fa7\u5bfc\u822a\u70b9\u65e5\u671f\u53ef\u4ee5\u76f4\u63a5\u8df3\u8fc7\u53bb\u3002<\/p>\n<\/div>\n\n<section class=\"lgs-day\" id=\"lgs-day-2026-10-29\">\n<h2>2026-10-29 \u00b7 \u6570\u8bcd\u9884\u4e60<\/h2>\n<div class=\"lgs-body\">\n<p><span class=\"lgs-tag\">\u57fa\u6570 vs \u5e8f\u6570<\/span> \u987a\u5e8f\u7528\u5e8f\u6570\u8bcd\uff08the ninth month\uff09\uff0c\u6570\u91cf\u3001\u65f6\u957f\u3001\u9891\u7387\u7528\u57fa\u6570\u8bcd\uff08three days \/ twice a week\uff09<\/p>\n<p><span class=\"lgs-tag\">\u5206\u6570<\/span> \u5206\u5b50\u57fa\u3001\u5206\u6bcd\u5e8f\uff0c\u5206\u5b50\u5927\u4e8e 1 \u5206\u6bcd\u52a0 s\uff08two thirds\uff09\uff1bpercent \u6c38\u8fdc\u4e0d\u52a0 s<\/p>\n<p><span class=\"lgs-tag\">\u6982\u6570<\/span> hundreds \/ thousands \/ millions + of\uff0c\u524d\u9762\u4e0d\u80fd\u6709\u5177\u4f53\u6570\u5b57<\/p>\n<p><span class=\"lgs-tag\">\u590d\u5408\u5b9a\u8bed<\/span> a three-hour journey\uff0c\u6570\u8bcd-\u540d\u8bcd\u6c38\u8fdc\u5355\u6570\uff0c\u4e2d\u95f4\u5fc5\u6709\u8fde\u5b57\u7b26<\/p>\n<p><span class=\"lgs-tag\">\u5e8f\u6570\u8bcd\u7279\u6b8a\u7528\u6cd5<\/span> a second chance \u662f\u300c\u53c8\u4e00\u6b21\u300d\uff0cthe second largest \u662f\u300c\u7b2c\u4e8c\u5927\u300d<\/p>\n<p><span class=\"lgs-tag\">\u4ecb\u8bcd<\/span> \u5177\u4f53\u67d0\u5929\u7528 on\uff0c\u6708\u4efd\u3001\u5e74\u4ee3\u3001\u51e0\u5341\u591a\u5c81\u7528 in<\/p>\n<p>\u4e0b\u9762\u8fd9\u4e2a\u53ef\u4ee5\u62d6\u7740\u8f6c\uff0c\u70b9\u65b9\u5757\u770b\u5177\u4f53\u8003\u70b9\uff1a<\/p>\n<div class=\"num3d-wrap\">\n<style>\n.num3d-wrap{position:relative;background:#101827;border:1px solid #1f2c42;border-radius:16px;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"PingFang SC\",\"Microsoft YaHei\",sans-serif;margin:18px 0}\n.num3d-head{padding:22px 26px 6px;color:#e8f1ff}\n.num3d-head h3{margin:0 0 8px;font-size:21px;font-weight:600;color:#fff}\n.num3d-head p{margin:0;font-size:14.5px;color:#8ea4c4;line-height:1.6}\n.num3d-stage{width:100%;height:360px;position:relative;cursor:grab;touch-action:pan-y}\n.num3d-stage:active{cursor:grabbing}\n.num3d-stage canvas{display:block;outline:none}\n.num3d-info{margin:0 18px 18px;background:#182338;border-radius:12px;padding:22px 26px}\n.num3d-info-label{display:inline-block;font-size:12.5px;color:#101827;background:#7fd4ff;border-radius:4px;padding:2px 10px;font-weight:600;margin-bottom:12px}\n.num3d-info-title{font-size:18px;color:#fff;font-weight:600;margin:0 0 16px}\n.num3d-info-body{font-size:15px;line-height:1.9;color:#c4d4ea}\n.num3d-rule{margin:0 0 16px;padding-left:14px;border-left:2px solid #2f4462}\n.num3d-rule:last-child{margin-bottom:0}\n.num3d-rule-name{display:block;font-size:15px;color:#8ee6a8;font-weight:600;margin-bottom:6px}\n.num3d-rule ul{margin:0;padding-left:20px}\n.num3d-rule li{margin:0 0 5px;color:#c4d4ea}\n.num3d-rule li:last-child{margin-bottom:0}\n.num3d-rule code{background:#0f1826;border-radius:3px;padding:1px 6px;font-size:14px;color:#ffd479;font-family:ui-monospace,Consolas,monospace}\n.num3d-warn{margin-top:6px;color:#ff9b9b;font-size:14px}\n.num3d-fallback{padding:20px 24px 24px;color:#c4d4ea;font-size:14.5px;line-height:1.9}\n.num3d-fallback b{color:#7fd4ff}\n@media(max-width:680px){\n  .num3d-head{padding:18px 16px 4px}\n  .num3d-head h3{font-size:18px}\n  .num3d-stage{height:270px}\n  .num3d-info{margin:0 12px 12px;padding:16px 16px}\n  .num3d-info-title{font-size:16px}\n  .num3d-info-body{font-size:14px}\n}\n<\/style>\n\n<div class=\"num3d-head\">\n  <h3>\u6570\u8bcd\u6838\u5fc3\u642d\u914d<\/h3>\n  <p>\u62d6\u4e00\u4e0b\u53ef\u4ee5\u8f6c\uff0c\u70b9\u65b9\u5757\u770b\u5177\u4f53\u89c4\u5219<\/p>\n<\/div>\n\n<div class=\"num3d-stage\" id=\"num3dStage\"><\/div>\n\n<div class=\"num3d-info\" id=\"num3dInfo\">\n  <div class=\"num3d-info-title\">\u70b9\u4e0a\u9762\u7684\u65b9\u5757\uff0c\u4e0b\u9762\u5217\u51fa\u8be5\u8003\u70b9\u7684\u5168\u90e8\u89c4\u5219<\/div>\n  <div class=\"num3d-info-body\"><\/div>\n<\/div>\n\n<div class=\"num3d-fallback\" id=\"num3dFallback\" style=\"display:none\">\n  <p><b>3D \u573a\u666f\u52a0\u8f7d\u5931\u8d25\uff0c\u89c4\u5219\u7167\u5e38\u770b\uff1a<\/b><\/p>\n  <p><b>\u57fa\u6570 vs \u5e8f\u6570<\/b>\uff1a\u987a\u5e8f\u7528\u5e8f\u6570\uff08the ninth month \/ May 1st \/ the first day of the week \/ the twelfth lesson\uff09\uff0c\u6570\u91cf\u7528\u57fa\u6570\uff08three days \/ twice a week \/ in his thirties \/ in the 1990s\uff09\u3002<\/p>\n  <p><b>\u5206\u6570<\/b>\uff1a\u5206\u5b50\u57fa\u3001\u5206\u6bcd\u5e8f\uff0c\u5206\u5b50\u5927\u4e8e 1 \u5206\u6bcd\u52a0 s\uff08two thirds \/ three fifths\uff09\uff1bpercent \u6c38\u4e0d\u52a0 s\uff1b\u4e3b\u8c13\u770b of \u540e\u9762\u7684\u540d\u8bcd\u3002<\/p>\n  <p><b>\u6982\u6570<\/b>\uff1a\u6709\u6570\u5b57 nine hundred\uff0c\u65e0\u6570\u5b57 hundreds of\uff1b\u4e0d\u80fd\u5199 two hundreds of\u3002<\/p>\n  <p><b>\u590d\u5408\u5b9a\u8bed<\/b>\uff1aa three-hour journey \/ a seven-day holiday \/ a five-hundred-word letter\uff0c\u540d\u8bcd\u6052\u5355\u6570\u3002<\/p>\n  <p><b>\u5e8f\u6570\u8bcd\u7279\u6b8a<\/b>\uff1aa second chance \u53c8\u4e00\u6b21\uff0cthe second largest \u7b2c\u4e8c\u5927\u3002<\/p>\n  <p><b>\u4ecb\u8bcd<\/b>\uff1aon \u5177\u4f53\u67d0\u5929\uff0cin \u6708\u4efd\u5e74\u4ee3\u5e74\u9f84\u3002<\/p>\n<\/div>\n<\/div>\n\n<script src=\"https:\/\/fastly.jsdelivr.net\/npm\/three@0.128.0\/build\/three.min.js\"><\/script>\n<script>\n(function(){\n  var raw=atob(\"CihmdW5jdGlvbigpewogIGlmKHdpbmRvdy5fX251bTNkQm9vdGVkVjIpe3JldHVybjt9CiAgd2luZG93Ll9fbnVtM2RCb290ZWRWMj10cnVlOwoKICB2YXIgc3RhZ2U9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ251bTNkU3RhZ2UnKTsKICB2YXIgaW5mbz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnVtM2RJbmZvJyk7CiAgdmFyIGZhbGxiYWNrPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdudW0zZEZhbGxiYWNrJyk7CiAgaWYoIXN0YWdlKXtyZXR1cm47fQoKICB2YXIgREFUQT1bCiAgICB7CiAgICAgIGxhYmVsOifln7rmlbAgdnMg5bqP5pWwJywgbGluZXM6Wyfln7rmlbAnLCd2cyDluo\/mlbAnXSwgY29sb3I6MHg0YWEzZjAsCiAgICAgIHRpdGxlOifln7rmlbDor43kuI7luo\/mlbDor43vvJrmjInlnLrmma\/pgJDkuKrlr7knLAogICAgICBydWxlczpbCiAgICAgICAge25hbWU6J+ihqOmhuuW6j+eUqOW6j+aVsOivjScsIGl0ZW1zOlsKICAgICAgICAgICfmnIjku73vvJrkuZ3mnIjmmK\/nrKzkuZ3kuKrmnIggLT4gdGhlIDxjb2RlPm5pbnRoPC9jb2RlPiBtb250aCcsCiAgICAgICAgICAn5pel5pyf5Yeg5Y+3IC0+IDxjb2RlPk1heSAxc3Q8L2NvZGU+44CBPGNvZGU+TWFyY2ggM3JkPC9jb2RlPuOAgTxjb2RlPkp1bHkgNHRoPC9jb2RlPicsCiAgICAgICAgICAn5LiA5ZGo55qE56ys5LiA5aSpIC0+IHRoZSA8Y29kZT5maXJzdDwvY29kZT4gZGF5IG9mIHRoZSB3ZWVrJywKICAgICAgICAgICfnrKwgMTIg6K++IC0+IHRoZSA8Y29kZT50d2VsZnRoPC9jb2RlPiBsZXNzb24nXX0sCiAgICAgICAge25hbWU6J+ihqOaVsOmHj+eUqOWfuuaVsOivjScsIGl0ZW1zOlsKICAgICAgICAgICfml7bplb\/vvJo8Y29kZT50aHJlZSBkYXlzPC9jb2RlPuOAgTxjb2RlPnR3byB3ZWVrczwvY29kZT7vvIzlpKfkuo4gMSDlkI3or43liqAgcycsCiAgICAgICAgICAn6aKR546H77yaPGNvZGU+dHdpY2UgYSB3ZWVrPC9jb2RlPu+8jGEgd2VlayDlv4XpobvljZXmlbDvvIzkuI3og73lhpkgYSB3ZWVrcycsCiAgICAgICAgICAn5bm06b6E77yaaW4gaGlzIDxjb2RlPnRoaXJ0aWVzPC9jb2RlPu+8jOS4ieWNgeWkmuWygScsCiAgICAgICAgICAn5bm05Luj77yaaW4gdGhlIDxjb2RlPjE5OTBzPC9jb2RlPu+8jOS6jOWNgeS4lue6quS5neWNgeW5tOS7oyddfSwKICAgICAgICB7bmFtZTon57yW5Y+35Lik56eN5YaZ5rOV6YO9566X5a+5JywgaXRlbXM6WwogICAgICAgICAgJ+WQjeivjSArIOWfuuaVsOivje+8mjxjb2RlPkxlc3NvbiAxMjwvY29kZT7jgIE8Y29kZT5QYWdlIDU8L2NvZGU+44CBPGNvZGU+Um9vbSAyMDM8L2NvZGU+JywKICAgICAgICAgICd0aGUgKyDluo\/mlbDor40gKyDlkI3or43vvJo8Y29kZT50aGUgdHdlbGZ0aCBsZXNzb248L2NvZGU+JywKICAgICAgICAgICfor7vms5XvvJo8Y29kZT5QYWdlIDU8L2NvZGU+IOivu+S9nCBwYWdlIGZpdmUnXX0sCiAgICAgICAge25hbWU6J+eJueauiuS7o+aMhycsIGl0ZW1zOlsKICAgICAgICAgICd0aGUgPGNvZGU+Zm91cnRoPC9jb2RlPiBvbmXvvIzluo\/mlbDor43liqAgb25lIOS7o+abv+WJjemdouaPkOi\/h+eahOWQjeivjScsCiAgICAgICAgICAndGhlIDxjb2RlPnNlY29uZDwvY29kZT4gb25lIOesrOS6jOS4qiddfQogICAgICBdCiAgICB9LAogICAgewogICAgICBsYWJlbDon5YiG5pWwJywgbGluZXM6WyfliIbmlbAnXSwgY29sb3I6MHhmNWE2MjMsCiAgICAgIHRpdGxlOifliIbmlbDmgI7kuYjor7vmgI7kuYjlhpknLAogICAgICBydWxlczpbCiAgICAgICAge25hbWU6J+WPo+ivgO+8muWIhuWtkOWfuuOAgeWIhuavjeW6jycsIGl0ZW1zOlsKICAgICAgICAgICfliIblrZDnlKjln7rmlbDor43vvIzliIbmr43nlKjluo\/mlbDor40nLAogICAgICAgICAgJzxjb2RlPm9uZSB0aGlyZDwvY29kZT4g5LiJ5YiG5LmL5LiAJywKICAgICAgICAgICc8Y29kZT50d28gdGhpcmRzPC9jb2RlPiDkuInliIbkuYvkuownLAogICAgICAgICAgJzxjb2RlPnRocmVlIGZpZnRoczwvY29kZT4g5LqU5YiG5LmL5LiJJywKICAgICAgICAgICc8Y29kZT5vbmUgaGFsZjwvY29kZT4g5LiA5Y2K44CBPGNvZGU+dGhyZWUgcXVhcnRlcnM8L2NvZGU+IOWbm+WIhuS5i+S4iSddfSwKICAgICAgICB7bmFtZTon5YiG5a2Q5aSn5LqOIDHvvIzliIbmr43liqAgcycsIGl0ZW1zOlsKICAgICAgICAgICc8Y29kZT50d28gdGhpcmRzPC9jb2RlPiDkuI3og73lhpkgdHdvIHRoaXJkJywKICAgICAgICAgICc8Y29kZT50aHJlZSBlaWdodGhzPC9jb2RlPiDlhavliIbkuYvkuIknLAogICAgICAgICAgJ+WIhuWtkOaYryAxIOaXtu+8jOWIhuavjeS4jeWKoCBz77yaPGNvZGU+b25lIHRoaXJkPC9jb2RlPiddfSwKICAgICAgICB7bmFtZTon55m+5YiG5pWwJywgaXRlbXM6WwogICAgICAgICAgJzxjb2RlPjYwIHBlcmNlbnQ8L2NvZGU+44CBPGNvZGU+Zml2ZSBwZXJjZW50PC9jb2RlPicsCiAgICAgICAgICAncGVyY2VudCDmsLjov5zkuI3liqAgcycsCiAgICAgICAgICAn5Lmf5LiN6IO96K+0IDYwIHBlcmNlbnRzIG9mJ119LAogICAgICAgIHtuYW1lOifkuLvosJPkuIDoh7TnnIsgb2Yg5ZCO6Z2i55qE5ZCN6K+NJywgaXRlbXM6WwogICAgICAgICAgJzxjb2RlPlR3byB0aGlyZHMgb2YgdGhlIHdhdGVyIGlzPC9jb2RlPiDnlKggaXPvvIzmsLTkuI3lj6\/mlbAnLAogICAgICAgICAgJzxjb2RlPlR3byB0aGlyZHMgb2YgdGhlIHN0dWRlbnRzIGFyZTwvY29kZT4g55SoIGFyZe+8jOWtpueUn+WPr+aVsCddfQogICAgICBdCiAgICB9LAogICAgewogICAgICBsYWJlbDon5qaC5pWwJywgbGluZXM6WyfmpoLmlbAnXSwgY29sb3I6MHgzNWM0NmIsCiAgICAgIHRpdGxlOidodW5kcmVkIC8gdGhvdXNhbmQgLyBtaWxsaW9uIOeahOS4pOenjeW9ouaAgScsCiAgICAgIHJ1bGVzOlsKICAgICAgICB7bmFtZTon5rKh5pyJ5YW35L2T5pWw5a2X77ya5YqgIHMg5YaN5YqgIG9mJywgaXRlbXM6WwogICAgICAgICAgJzxjb2RlPmh1bmRyZWRzIG9mIHRyZWVzPC9jb2RlPiDmiJDnmb7kuIrljYPnmoTmoJEnLAogICAgICAgICAgJzxjb2RlPnRob3VzYW5kcyBvZiBwZW9wbGU8L2NvZGU+IOaIkOWNg+S4iuS4h+eahOS6uicsCiAgICAgICAgICAnPGNvZGU+bWlsbGlvbnMgb2Y8L2NvZGU+IOaVsOS7peeZvuS4h+iuoeeahCcsCiAgICAgICAgICAnPGNvZGU+ZG96ZW5zIG9mPC9jb2RlPiDlh6DljYHjgIE8Y29kZT5zY29yZXMgb2Y8L2NvZGU+IOWlveWHoOWNgSddfSwKICAgICAgICB7bmFtZTon5pyJ5YW35L2T5pWw5a2X77ya5LiN5YqgIHPjgIHkuI3liqAgb2YnLCBpdGVtczpbCiAgICAgICAgICAnPGNvZGU+bmluZSBodW5kcmVkPC9jb2RlPiDkuZ3nmb4nLAogICAgICAgICAgJzxjb2RlPnNpeCBodW5kcmVkIGFuZCBmaWZ0eS10d288L2NvZGU+IDY1MicsCiAgICAgICAgICAnPGNvZGU+dHdvIHRob3VzYW5kIHN0dWRlbnRzPC9jb2RlPiDkuKTljYPlkI3lrabnlJ8nLAogICAgICAgICAgJzxjb2RlPnRocmVlIG1pbGxpb248L2NvZGU+IOS4ieeZvuS4hyddfSwKICAgICAgICB7bmFtZTon6L+Z5Lqb5YaZ5rOV6YO95LiN5a+5JywgaXRlbXM6WwogICAgICAgICAgJzxjb2RlPnR3byBodW5kcmVkcyBvZjwvY29kZT4nLAogICAgICAgICAgJzxjb2RlPnRocmVlIHRob3VzYW5kcyBvZjwvY29kZT4nLAogICAgICAgICAgJzxjb2RlPmZpdmUgbWlsbGlvbnMgcGVvcGxlPC9jb2RlPiddLCB3YXJuOnRydWV9CiAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgIGxhYmVsOiflpI3lkIjlrpror60nLCBsaW5lczpbJ+WkjeWQiCcsJ+WumuivrSddLCBjb2xvcjoweGI1N2FlOCwKICAgICAgdGl0bGU6J+aVsOivjSArIOWQjeivjeWBmuWumuivre+8jOWQjeivjeawuOi\/nOWNleaVsCcsCiAgICAgIHJ1bGVzOlsKICAgICAgICB7bmFtZTon57uT5p6E77ya5pWw6K+NLeWQjeivjeWNleaVsC3lvaLlrrnor40nLCBpdGVtczpbCiAgICAgICAgICAnPGNvZGU+YSB0aHJlZS1ob3VyIGpvdXJuZXk8L2NvZGU+IOS4ieWwj+aXtueahOaXheeoiycsCiAgICAgICAgICAnPGNvZGU+YSBzZXZlbi1kYXkgaG9saWRheTwvY29kZT4g5LiD5aSp55qE5YGH5pyfJywKICAgICAgICAgICc8Y29kZT5hIGZpdmUtaHVuZHJlZC13b3JkIGxldHRlcjwvY29kZT4g5LqU55m+5a2X55qE5L+hJywKICAgICAgICAgICc8Y29kZT5hIHRlbi15ZWFyLW9sZCBib3k8L2NvZGU+IOWNgeWygeeahOeUt+WtqScsCiAgICAgICAgICAnPGNvZGU+YSB0d28tbWlsZSB3YWxrPC9jb2RlPiDkuKToi7Hph4znmoTmraXooYwnXX0sCiAgICAgICAge25hbWU6J+S4remXtOW\/hemhu+aciei\/nuWtl+espicsIGl0ZW1zOlsKICAgICAgICAgICfmnInov57lrZfnrKYgLT4g5Lit6Ze05ZCN6K+N55So5Y2V5pWwJywKICAgICAgICAgICfmsqHov57lrZfnrKYgLT4g55So5omA5pyJ5qC877yaPGNvZGU+dGhyZWUgZGF5c1wnIGhvbGlkYXk8L2NvZGU+JywKICAgICAgICAgICfkvZzooajor63ml7bmgaLlpI3lpI3mlbDvvJo8Y29kZT5UaGUgam91cm5leSBpcyB0aHJlZSBob3Vycy48L2NvZGU+J119LAogICAgICAgIHtuYW1lOifov5nkupvlhpnms5Xpg73kuI3lr7knLCBpdGVtczpbCiAgICAgICAgICAnPGNvZGU+YSB0aHJlZSBkYXlzIGhvbGlkYXk8L2NvZGU+JywKICAgICAgICAgICc8Y29kZT5hIGZpdmUgaHVuZHJlZCB3b3JkcyBsZXR0ZXI8L2NvZGU+JywKICAgICAgICAgICc8Y29kZT5hIHRlbi15ZWFycy1vbGQgYm95PC9jb2RlPiddLCB3YXJuOnRydWV9CiAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgIGxhYmVsOifluo\/mlbDor43nibnmroonLCBsaW5lczpbJ+W6j+aVsOivjScsJ+eJueauiiddLCBjb2xvcjoweGYyZDY0YiwKICAgICAgdGl0bGU6J+W6j+aVsOivjeWuueaYk+a8j+aOieeahOeUqOazlScsCiAgICAgIHJ1bGVzOlsKICAgICAgICB7bmFtZTonYSAvIGFuICsg5bqP5pWw6K+NID0g5Y+I5LiA5qyhJywgaXRlbXM6WwogICAgICAgICAgJzxjb2RlPmEgc2Vjb25kIGNoYW5jZTwvY29kZT4g5LiN5piv56ys5LqM5qyh5py65Lya77yM5piv5YaN57uZ5LiA5qyh5py65LyaJywKICAgICAgICAgICc8Y29kZT5hIHRoaXJkIHRpbWU8L2NvZGU+IOWGjeadpeS4gOasoScsCiAgICAgICAgICAn5Yik5pat5Y+j6K+A77ya5Yqg5LqGIGEg5bCx5LiN5piv6aG65bqP77yM55SoIHRoZSDmiY3mmK\/nnJ\/pobrluo8nXX0sCiAgICAgICAge25hbWU6J3RoZSArIOW6j+aVsOivjSArIOacgOmrmOe6pyA9IOesrOWHoOWkp+eahCcsIGl0ZW1zOlsKICAgICAgICAgICc8Y29kZT50aGUgc2Vjb25kIGxhcmdlc3QgY2l0eTwvY29kZT4g56ys5LqM5aSn5Z+O5biCJywKICAgICAgICAgICc8Y29kZT50aGUgdGhpcmQgbW9zdCBpbXBvcnRhbnQ8L2NvZGU+IOesrOS4iemHjeimgeeahCcsCiAgICAgICAgICAnPGNvZGU+dGhlIGZpZnRoIGxvbmdlc3Qgcml2ZXI8L2NvZGU+IOesrOS6lOmVv+aysyddfSwKICAgICAgICB7bmFtZTon5Luj5oyHJywgaXRlbXM6WwogICAgICAgICAgJ3RoZSA8Y29kZT5mb3VydGg8L2NvZGU+IG9uZSDnrKzlm5vkuKrvvIxvbmUg5Luj5pu\/5YmN6Z2i5o+Q6L+H55qE5ZCN6K+NJywKICAgICAgICAgICd0aGUgPGNvZGU+c2Vjb25kPC9jb2RlPiBvbmUg56ys5LqM5LiqJ119LAogICAgICAgIHtuYW1lOifluo\/mlbDor43liY3kuIDoiKzliqAgdGhlJywgaXRlbXM6WwogICAgICAgICAgJzxjb2RlPnRoZSBmaXJzdDwvY29kZT4gdGltZeOAgTxjb2RlPnRoZSBzZWNvbmQ8L2NvZGU+IGRheScsCiAgICAgICAgICAn5L2G6KGo4oCc5Y+I5LiA5qyh4oCd5pe255SoIGEnXX0KICAgICAgXQogICAgfSwKICAgIHsKICAgICAgbGFiZWw6J+S7i+ivjeaQremFjScsIGxpbmVzOlsn5LuL6K+NJywn5pCt6YWNJ10sIGNvbG9yOjB4ZWY2ZjllLAogICAgICB0aXRsZTonb24g6L+Y5pivIGlu77yM55yL5pe26Ze06aKX57KS5bqmJywKICAgICAgcnVsZXM6WwogICAgICAgIHtuYW1lOifnlKggb27vvJrlhbfkvZPliLDmn5DkuIDlpKknLCBpdGVtczpbCiAgICAgICAgICAn5pif5pyf77yaPGNvZGU+b24gTW9uZGF5PC9jb2RlPuOAgTxjb2RlPm9uIEZyaWRheTwvY29kZT4nLAogICAgICAgICAgJ+aXpeacn++8mjxjb2RlPm9uIE1heSAxc3Q8L2NvZGU+JywKICAgICAgICAgICfmn5DlpKnnmoTml7bmrrXvvJo8Y29kZT5vbiB0aGUgbW9ybmluZyBvZiBNYXkgMXN0PC9jb2RlPiddfSwKICAgICAgICB7bmFtZTon55SoIGlu77ya5LiA5q615pe26Ze0JywgaXRlbXM6WwogICAgICAgICAgJ+aciOS7ve+8mjxjb2RlPmluIE1heTwvY29kZT4nLAogICAgICAgICAgJ+W5tOS7ve+8mjxjb2RlPmluIDIwMjU8L2NvZGU+44CB5bm05LujIDxjb2RlPmluIHRoZSAxOTkwczwvY29kZT4nLAogICAgICAgICAgJ+W5tOm+hO+8mjxjb2RlPmluIGhpcyB0aGlydGllczwvY29kZT4nLAogICAgICAgICAgJ+e7huWIhu+8mjxjb2RlPmluIGhpcyBlYXJseSB0aGlydGllczwvY29kZT4g5LiJ5Y2B5Ye65aS044CBPGNvZGU+aW4gaGlzIGxhdGUgdGhpcnRpZXM8L2NvZGU+IOW\/q+Wbm+WNgSddfQogICAgICBdCiAgICB9CiAgXTsKCiAgd2luZG93Ll9fbnVtM2RTaG93PXJlbmRlckluZm87CiAgZnVuY3Rpb24gcmVuZGVySW5mbyhpZHgpewogICAgdmFyIGQ9REFUQVtpZHhdOwogICAgdmFyIGg9Jyc7CiAgICBoKz0nPHNwYW4gY2xhc3M9Im51bTNkLWluZm8tbGFiZWwiPuiAg+eCuSAnKyhpZHgrMSkrJzwvc3Bhbj4nOwogICAgaCs9JzxoNCBjbGFzcz0ibnVtM2QtaW5mby10aXRsZSI+JytkLnRpdGxlKyc8L2g0Pic7CiAgICBoKz0nPGRpdiBjbGFzcz0ibnVtM2QtaW5mby1ib2R5Ij4nOwogICAgZC5ydWxlcy5mb3JFYWNoKGZ1bmN0aW9uKHIpewogICAgICBoKz0nPGRpdiBjbGFzcz0ibnVtM2QtcnVsZSI+JzsKICAgICAgaCs9JzxzcGFuIGNsYXNzPSJudW0zZC1ydWxlLW5hbWUiPicrci5uYW1lKyc8L3NwYW4+JzsKICAgICAgaCs9Jzx1bD4nOwogICAgICByLml0ZW1zLmZvckVhY2goZnVuY3Rpb24oaXQpeyBoKz0nPGxpPicraXQrJzwvbGk+JzsgfSk7CiAgICAgIGgrPSc8L3VsPic7CiAgICAgIGlmKHIud2Fybil7IGgrPSc8ZGl2IGNsYXNzPSJudW0zZC13YXJuIj7ov5nkupvlhpnms5Xpg73mmK\/plJnnmoQ8L2Rpdj4nOyB9CiAgICAgIGgrPSc8L2Rpdj4nOwogICAgfSk7CiAgICBoKz0nPC9kaXY+JzsKICAgIGluZm8uaW5uZXJIVE1MPWg7CiAgfQoKICBpZih0eXBlb2Ygd2luZG93LlRIUkVFPT09J3VuZGVmaW5lZCcgfHwgd2luZG93LmlubmVyV2lkdGg8NTIwKXsKICAgIGlmKGZhbGxiYWNrKXtmYWxsYmFjay5zdHlsZS5kaXNwbGF5PSdibG9jayc7fQogICAgc3RhZ2Uuc3R5bGUuZGlzcGxheT0nbm9uZSc7CiAgICBpbmZvLnN0eWxlLmRpc3BsYXk9J25vbmUnOwogICAgcmV0dXJuOwogIH0KCiAgdHJ5eyBpbml0KCk7IH1jYXRjaChlKXsKICAgIGlmKGZhbGxiYWNrKXtmYWxsYmFjay5zdHlsZS5kaXNwbGF5PSdibG9jayc7fQogICAgc3RhZ2Uuc3R5bGUuZGlzcGxheT0nbm9uZSc7CiAgICBpbmZvLnN0eWxlLmRpc3BsYXk9J25vbmUnOwogIH0KCiAgZnVuY3Rpb24gaW5pdCgpewogICAgdmFyIFc9c3RhZ2UuY2xpZW50V2lkdGgsIEg9c3RhZ2UuY2xpZW50SGVpZ2h0OwogICAgdmFyIHNjZW5lPW5ldyBUSFJFRS5TY2VuZSgpOwogICAgc2NlbmUuYmFja2dyb3VuZD1uZXcgVEhSRUUuQ29sb3IoMHgxMDE4MjcpOwoKICAgIHZhciBjYW1lcmE9bmV3IFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhKDUwLCBXL0gsIDAuMSwgMTAwKTsKICAgIGNhbWVyYS5wb3NpdGlvbi5zZXQoMCwgMCwgOS4xKTsKCiAgICB2YXIgcmVuZGVyZXI9bmV3IFRIUkVFLldlYkdMUmVuZGVyZXIoe2FudGlhbGlhczp0cnVlfSk7CiAgICByZW5kZXJlci5zZXRQaXhlbFJhdGlvKE1hdGgubWluKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvfHwxLCAyKSk7CiAgICByZW5kZXJlci5zZXRTaXplKFcsIEgpOwogICAgc3RhZ2UuYXBwZW5kQ2hpbGQocmVuZGVyZXIuZG9tRWxlbWVudCk7CgogICAgc2NlbmUuYWRkKG5ldyBUSFJFRS5BbWJpZW50TGlnaHQoMHhmZmZmZmYsIDAuNjIpKTsKICAgIHZhciBrZXk9bmV3IFRIUkVFLkRpcmVjdGlvbmFsTGlnaHQoMHhmZmZmZmYsIDAuNSk7CiAgICBrZXkucG9zaXRpb24uc2V0KDQsIDYsIDgpOyBzY2VuZS5hZGQoa2V5KTsKCiAgICB2YXIgZ3JvdXA9bmV3IFRIUkVFLkdyb3VwKCk7CiAgICBzY2VuZS5hZGQoZ3JvdXApOwoKICAgIHZhciBtZXNoZXM9W107CiAgICBEQVRBLmZvckVhY2goZnVuY3Rpb24oZCxpKXsKICAgICAgdmFyIGdlbz1uZXcgVEhSRUUuQm94R2VvbWV0cnkoMS45LCAxLjksIDEuOSk7CiAgICAgIHZhciBjYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CiAgICAgIGNhbnZhcy53aWR0aD02NDA7IGNhbnZhcy5oZWlnaHQ9NjQwOwogICAgICB2YXIgY3R4PWNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOwogICAgICBjdHguZmlsbFN0eWxlPScjMGQxNjI2JzsKICAgICAgY3R4LmZpbGxSZWN0KDAsMCw2NDAsNjQwKTsKICAgICAgY3R4LnN0cm9rZVN0eWxlPScjJytkLmNvbG9yLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg2LCcwJyk7CiAgICAgIGN0eC5saW5lV2lkdGg9MTQ7CiAgICAgIGN0eC5zdHJva2VSZWN0KDcsNyw2MjYsNjI2KTsKCiAgICAgIGN0eC5maWxsU3R5bGU9JyNmZmZmZmYnOwogICAgICBjdHgudGV4dEFsaWduPSdjZW50ZXInOwogICAgICBjdHgudGV4dEJhc2VsaW5lPSdtaWRkbGUnOwogICAgICB2YXIgcm93cz1kLmxpbmVzfHxbZC5sYWJlbF07CiAgICAgIHZhciBmcz1yb3dzLmxlbmd0aD4xPzEwNDoxMjQ7CiAgICAgIGN0eC5mb250PSc2MDAgJytmcysncHggIlBpbmdGYW5nIFNDIiwiTWljcm9zb2Z0IFlhSGVpIixzYW5zLXNlcmlmJzsKICAgICAgdmFyIGxpbmVIPWZzKjEuMjsKICAgICAgdmFyIHN0YXJ0WT0zMjAtKChyb3dzLmxlbmd0aC0xKSpsaW5lSCkvMjsKICAgICAgZm9yKHZhciByaT0wO3JpPHJvd3MubGVuZ3RoO3JpKyspewogICAgICAgIGN0eC5maWxsVGV4dChyb3dzW3JpXSwzMjAsc3RhcnRZK3JpKmxpbmVIKTsKICAgICAgfQoKICAgICAgdmFyIHRleD1uZXcgVEhSRUUuQ2FudmFzVGV4dHVyZShjYW52YXMpOwogICAgICB2YXIgZmFjZU1hdD1uZXcgVEhSRUUuTWVzaFBob25nTWF0ZXJpYWwoe21hcDp0ZXgsIHNoaW5pbmVzczoxMH0pOwogICAgICB2YXIgY3ViZT1uZXcgVEhSRUUuTWVzaChnZW8sW2ZhY2VNYXQsZmFjZU1hdCxmYWNlTWF0LGZhY2VNYXQsZmFjZU1hdCxmYWNlTWF0XSk7CgogICAgICB2YXIgY29sPWklMywgcm93PU1hdGguZmxvb3IoaS8zKTsKICAgICAgY3ViZS5wb3NpdGlvbi5zZXQoKGNvbC0xKSoyLjI4LCAoMC41LXJvdykqMi4yOCwgMCk7CiAgICAgIGN1YmUudXNlckRhdGE9e2lkeDppfTsKICAgICAgZ3JvdXAuYWRkKGN1YmUpOwogICAgICBtZXNoZXMucHVzaChjdWJlKTsKICAgIH0pOwoKICAgIHZhciBkcmFnPWZhbHNlLCBweD0wLCBweT0wOwogICAgdmFyIHJvdFk9MCwgcm90WD0tMC4wNiwgcm90WVRhcmdldD0wLCByb3RYVGFyZ2V0PS0wLjA2OwoKICAgIGZ1bmN0aW9uIGRvd24oZSl7CiAgICAgIGRyYWc9dHJ1ZTsKICAgICAgdmFyIHB0PWUudG91Y2hlcz9lLnRvdWNoZXNbMF06ZTsKICAgICAgcHg9cHQuY2xpZW50WDsgcHk9cHQuY2xpZW50WTsKICAgIH0KICAgIGZ1bmN0aW9uIG1vdmUoZSl7CiAgICAgIGlmKCFkcmFnKXtyZXR1cm47fQogICAgICB2YXIgcHQ9ZS50b3VjaGVzP2UudG91Y2hlc1swXTplOwogICAgICB2YXIgZHg9cHQuY2xpZW50WC1weCwgZHk9cHQuY2xpZW50WS1weTsKICAgICAgcHg9cHQuY2xpZW50WDsgcHk9cHQuY2xpZW50WTsKICAgICAgcm90WVRhcmdldCs9ZHgqMC4wMDg7CiAgICAgIHJvdFhUYXJnZXQrPWR5KjAuMDA1OwogICAgICByb3RYVGFyZ2V0PU1hdGgubWF4KC0wLjcsIE1hdGgubWluKDAuNywgcm90WFRhcmdldCkpOwogICAgfQogICAgZnVuY3Rpb24gdXAoKXsgZHJhZz1mYWxzZTsgfQoKICAgIHJlbmRlcmVyLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZG93bik7CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW92ZSk7CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHVwKTsKICAgIHJlbmRlcmVyLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGRvd24sIHtwYXNzaXZlOnRydWV9KTsKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBtb3ZlLCB7cGFzc2l2ZTp0cnVlfSk7CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB1cCk7CgogICAgdmFyIHJheWNhc3Rlcj1uZXcgVEhSRUUuUmF5Y2FzdGVyKCk7CiAgICB2YXIgbW91c2U9bmV3IFRIUkVFLlZlY3RvcjIoKTsKCiAgICBmdW5jdGlvbiBwaWNrKGUpewogICAgICB2YXIgcj1yZW5kZXJlci5kb21FbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICB2YXIgcHQ9ZS5jaGFuZ2VkVG91Y2hlcz9lLmNoYW5nZWRUb3VjaGVzWzBdOmU7CiAgICAgIG1vdXNlLng9KChwdC5jbGllbnRYLXIubGVmdCkvci53aWR0aCkqMi0xOwogICAgICBtb3VzZS55PS0oKHB0LmNsaWVudFktci50b3ApL3IuaGVpZ2h0KSoyKzE7CiAgICAgIHJheWNhc3Rlci5zZXRGcm9tQ2FtZXJhKG1vdXNlLCBjYW1lcmEpOwogICAgICB2YXIgaGl0cz1yYXljYXN0ZXIuaW50ZXJzZWN0T2JqZWN0cyhtZXNoZXMpOwogICAgICByZXR1cm4gaGl0cy5sZW5ndGg\/aGl0c1swXS5vYmplY3Q6bnVsbDsKICAgIH0KCiAgICB2YXIgYWN0aXZlPW51bGw7CiAgICByZW5kZXJlci5kb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSl7CiAgICAgIHZhciBvYmo9cGljayhlKTsKICAgICAgaWYoIW9iail7cmV0dXJuO30KICAgICAgcmVuZGVySW5mbyhvYmoudXNlckRhdGEuaWR4KTsKICAgICAgaWYoYWN0aXZlICYmIGFjdGl2ZSE9PW9iail7CiAgICAgICAgYWN0aXZlLm1hdGVyaWFsLmZvckVhY2goZnVuY3Rpb24obSl7IGlmKG0uZW1pc3NpdmUpe20uZW1pc3NpdmUuc2V0SGV4KDB4MDAwMDAwKTt9IH0pOwogICAgICB9CiAgICAgIGFjdGl2ZT1vYmo7CiAgICAgIG9iai5tYXRlcmlhbC5mb3JFYWNoKGZ1bmN0aW9uKG0peyBpZihtLmVtaXNzaXZlKXttLmVtaXNzaXZlLnNldEhleCgweDFiMmI0NSk7fSB9KTsKICAgIH0pOwoKICAgIHJlbmRlcmVyLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZnVuY3Rpb24oZSl7CiAgICAgIGlmKGRyYWcpe3JldHVybjt9CiAgICAgIHJlbmRlcmVyLmRvbUVsZW1lbnQuc3R5bGUuY3Vyc29yID0gcGljayhlKSA\/ICdwb2ludGVyJyA6ICdncmFiJzsKICAgIH0pOwoKICAgIGZ1bmN0aW9uIGFuaW1hdGUoKXsKICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpOwogICAgICByb3RZICs9IChyb3RZVGFyZ2V0LXJvdFkpKjAuMTI7CiAgICAgIHJvdFggKz0gKHJvdFhUYXJnZXQtcm90WCkqMC4xMjsKICAgICAgZ3JvdXAucm90YXRpb24ueT1yb3RZOwogICAgICBncm91cC5yb3RhdGlvbi54PXJvdFg7CiAgICAgIHJlbmRlcmVyLnJlbmRlcihzY2VuZSwgY2FtZXJhKTsKICAgIH0KICAgIGFuaW1hdGUoKTsKCiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZnVuY3Rpb24oKXsKICAgICAgdmFyIHc9c3RhZ2UuY2xpZW50V2lkdGgsIGg9c3RhZ2UuY2xpZW50SGVpZ2h0OwogICAgICBjYW1lcmEuYXNwZWN0PXcvaDsKICAgICAgY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTsKICAgICAgcmVuZGVyZXIuc2V0U2l6ZSh3LGgpOwogICAgfSk7CiAgfQp9KSgpOwo=\");\n  var bytes=new Uint8Array(raw.length);\n  for(var i=0;i<raw.length;i++){bytes[i]=raw.charCodeAt(i);}\n  var code=new TextDecoder(\"utf-8\").decode(bytes);\n  var sc=document.createElement(\"script\");\n  sc.textContent=code;\n  document.body.appendChild(sc);\n})();\n<\/script>\n<p style=\"margin-top:22px;color:#5a6577;font-size:14.5px;\">\u4e0b\u9762\u8fd9\u4e2a\u8ddf\u65f6\u95f4\u8868\u8fbe\u914d\u5957\uff0c\u70b9\u65e5\u671f\u770b\u4ecb\u8bcd\uff0c\u70b9\u5929\u6c14\u8bcd\u770b 3D \u573a\u666f\uff1a<\/p>\n<div class=\"te-wrap\">\n<style>\n.te-wrap{--te-bg:#0f172a;--te-card:#1e293b;--te-border:#334155;--te-text:#e2e8f0;--te-muted:#94a3b8;--te-accent:#38bdf8;background:#0f172a;color:#e8eef7;border-radius:16px;padding:20px;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"PingFang SC\",\"Microsoft YaHei\",sans-serif;margin:18px 0}\n.te-wrap *{box-sizing:border-box}\n.te-wrap{container-type:inline-size}\n.te-app{display:grid;grid-template-columns:260px 1fr;gap:20px}\n@container (max-width:900px){.te-app{grid-template-columns:1fr}}\n@media(max-width:800px){.te-app{grid-template-columns:1fr}}\n\n.te-left{background:#1e293b;padding:20px;border-radius:16px;border:1px solid #334155;height:fit-content}\n.te-year{display:flex;justify-content:center;align-items:center;gap:10px;margin-bottom:20px}\n.te-year button{background:none;border:none;color:#e8eef7;cursor:pointer;font-size:20px;padding:0 6px}\n.te-year input{background:transparent;border:none;color:#38bdf8;font-size:28px;font-weight:bold;text-align:center;width:100px;outline:none;border-bottom:2px solid transparent}\n.te-year input:focus{border-bottom-color:#38bdf8}\n.te-mgrid{display:flex;flex-wrap:wrap;gap:10px}\n.te-m{flex:1 1 78px;background:#3b4a5f;color:#f1f5f9;border:1px solid transparent;color:#e8eef7;padding:12px 0;border-radius:8px;cursor:pointer;font-size:15px;transition:.2s}\n.te-m:hover{background:#475569}\n.te-m.on{background:#38bdf8;color:#0f172a;font-weight:bold}\n\n.te-right{display:flex;flex-direction:column;gap:20px;min-width:0}\n\n\/* 3D \u5929\u6c14\u573a\u666f + \u8bcd\u6c47\uff1a\u7d27\u6328\u5728\u4e00\u8d77 *\/\n.te-weather{background:#1e293b;padding:16px;border-radius:16px;border:1px solid #334155}\n.te-whead{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}\n.te-wtitle{font-size:14px;color:#9fb0c6}\n.te-wtags{display:flex;flex-wrap:wrap;gap:8px}\n.te-tag{background:#3b4a5f;color:#f1f5f9;padding:6px 12px;border-radius:20px;font-size:13px;cursor:pointer;transition:.2s;border:1px solid transparent;white-space:nowrap}\n.te-tag:hover,.te-tag.on{border-color:#38bdf8;background:#4b5c73;color:#ffffff}\n.te-tag .en{color:#38bdf8;font-weight:bold;margin-right:4px}\n.te-scene{width:100%;height:250px;border-radius:12px;overflow:hidden;position:relative;border:1px solid #334155;background:#000;cursor:grab}\n.te-scene:active{cursor:grabbing}\n.te-scene canvas{display:block}\n.te-badge{position:absolute;top:12px;padding:5px 12px;border-radius:20px;font-size:13px;background:rgba(0,0,0,.6);border:1px solid #334155;z-index:5;pointer-events:none}\n.te-badge.season{left:12px}\n.te-badge.weather{right:12px;border-color:#38bdf8;color:#38bdf8}\n.te-sent{margin-top:12px;padding:12px;background:#0b1424;border-radius:8px;font-size:14px;color:#dbe6f3;border-left:3px solid #38bdf8;min-height:50px}\n\n.te-cal{background:#1e293b;padding:20px;border-radius:16px;border:1px solid #334155}\n.te-chead{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap;gap:6px}\n.te-ctitle{font-size:22px;font-weight:bold;color:#f1f5f9}\n.te-tip{color:#9fb0c6;font-size:13px}\n.te-week span{display:inline-block;width:14.2857%;font-size:13px;box-sizing:border-box}\n.te-week{display:block;text-align:center;font-size:0}color:#9fb0c6;font-size:13px;margin-bottom:10px}\n.te-days{display:block;font-size:0}\n.te-d{display:inline-flex;width:14.2857%;vertical-align:top;box-sizing:border-box;color:#e8eef7;min-height:68px;flex-direction:column;align-items:center;justify-content:center;border-radius:8px;cursor:pointer;border:1px solid transparent;transition:.2s;padding:4px;text-align:center}\n.te-d:hover{background:#3b4a5f}\n.te-d.empty{visibility:hidden}\n.te-d.sel{background:#38bdf8;color:#0f172a;font-weight:bold}\n.te-d .n{font-size:15px;font-weight:500}\n.te-d .f{font-size:10px;color:#fbbf24;margin-top:2px;line-height:1.1}\n.te-d.sel .f{color:#0f172a;font-weight:bold}\n\n.te-cards{display:flex;flex-wrap:wrap;gap:10px}\n.te-card{flex:1 1 130px;background:#1e293b;padding:15px;border-radius:12px;border:1px solid #334155;border-top:3px solid #334155}\n.te-card.on{border-top-color:#38bdf8}\n.te-lb{font-size:12px;color:#9fb0c6;margin-bottom:5px}\n.te-val{font-size:15px;font-weight:bold;line-height:1.3;color:#f1f5f9}\n.te-en{font-size:12px;color:#38bdf8;margin-top:4px;word-break:break-word}\n\n.te-prep{margin-top:0;background:#1e293b;padding:15px;border-radius:12px;border:1px dashed #334155;display:none}\n.te-prep.on{display:block}\n.te-ph{font-size:13px;color:#9fb0c6;margin-bottom:10px}\n.te-pr{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px dashed #334155;font-size:14px;gap:8px}\n.te-pr:last-child{border:none}\n.te-pr span:first-child{color:#9fb0c6;flex:0 0 auto}\n.te-pr span:last-child{color:#38bdf8;font-family:ui-monospace,Consolas,monospace;font-weight:bold;text-align:right}\n\n@media(max-width:520px){\n  .te-wrap{padding:12px}\n  .te-scene{height:200px}\n  .te-d{min-height:52px}\n  .te-ctitle{font-size:18px}\n}\n<\/style>\n\n<div class=\"te-app\">\n  <div class=\"te-left\">\n    <div class=\"te-year\">\n      <button type=\"button\" id=\"tePrev\">&lsaquo;<\/button>\n      <input type=\"number\" id=\"teYear\" value=\"2026\">\n      <button type=\"button\" id=\"teNext\">&rsaquo;<\/button>\n    <\/div>\n    <div class=\"te-mgrid\" id=\"teMonths\"><\/div>\n  <\/div>\n\n  <div class=\"te-right\">\n    <div class=\"te-weather\">\n      <div class=\"te-whead\">\n        <div class=\"te-wtitle\">\u5929\u6c14\u8bcd\u6c47 \u00b7 \u70b9\u5355\u8bcd\uff0c\u4e0b\u9762\u7684 3D \u573a\u666f\u8ddf\u7740\u53d8<\/div>\n      <\/div>\n      <div class=\"te-wtags\" id=\"teTags\"><\/div>\n      <div class=\"te-scene\" id=\"teScene\" style=\"margin-top:12px\">\n        <div class=\"te-badge season\" id=\"teSeasonBadge\">\u51ac\u5929 \u00b7 Winter<\/div>\n        <div class=\"te-badge weather\" id=\"teWeatherBadge\">\u5929\u6c14: Snowy<\/div>\n      <\/div>\n      <div class=\"te-sent\" id=\"teSent\">It is snowy outside.<\/div>\n    <\/div>\n\n    <div class=\"te-cal\">\n      <div class=\"te-chead\">\n        <div class=\"te-ctitle\" id=\"teTitle\">2026\u5e74 1\u6708<\/div>\n        <div class=\"te-tip\">\u70b9\u51fb\u65e5\u671f\u67e5\u770b\u82f1\u8bed\u4ecb\u8bcd<\/div>\n      <\/div>\n      <div class=\"te-week\"><span>\u65e5<\/span><span>\u4e00<\/span><span>\u4e8c<\/span><span>\u4e09<\/span><span>\u56db<\/span><span>\u4e94<\/span><span>\u516d<\/span><\/div>\n      <div class=\"te-days\" id=\"teDays\"><\/div>\n    <\/div>\n\n    <div class=\"te-cards\">\n      <div class=\"te-card\" id=\"teCardSeason\"><div class=\"te-lb\">\u5b63\u8282 Season<\/div><div class=\"te-val\" id=\"teValSeason\">-<\/div><div class=\"te-en\" id=\"teEnSeason\">-<\/div><\/div>\n      <div class=\"te-card\" id=\"teCardMonth\"><div class=\"te-lb\">\u6708\u4efd Month<\/div><div class=\"te-val\" id=\"teValMonth\">-<\/div><div class=\"te-en\" id=\"teEnMonth\">-<\/div><\/div>\n      <div class=\"te-card\" id=\"teCardDay\"><div class=\"te-lb\">\u65e5\u671f Day<\/div><div class=\"te-val\" id=\"teValDay\">\u672a\u9009\u62e9<\/div><div class=\"te-en\" id=\"teEnDay\">-<\/div><\/div>\n      <div class=\"te-card\" id=\"teCardWeek\"><div class=\"te-lb\">\u661f\u671f Weekday<\/div><div class=\"te-val\" id=\"teValWeek\">\u672a\u9009\u62e9<\/div><div class=\"te-en\" id=\"teEnWeek\">-<\/div><\/div>\n      <div class=\"te-card\" id=\"teCardFest\"><div class=\"te-lb\">\u8282\u65e5 Festival<\/div><div class=\"te-val\" id=\"teValFest\">\u65e0<\/div><div class=\"te-en\" id=\"teEnFest\">-<\/div><\/div>\n    <\/div>\n\n    <div class=\"te-prep\" id=\"tePrep\">\n      <div class=\"te-ph\">\u4ecb\u8bcd\u642d\u914d<\/div>\n      <div id=\"tePrepList\"><\/div>\n    <\/div>\n  <\/div>\n<\/div>\n<\/div>\n\n<script src=\"https:\/\/fastly.jsdelivr.net\/npm\/three@0.128.0\/build\/three.min.js\"><\/script>\n<script>\n(function(){\n  var raw=atob(\"CihmdW5jdGlvbigpewogIGlmKHdpbmRvdy5fX3RlQm9vdGVkKXtyZXR1cm47fQogIHdpbmRvdy5fX3RlQm9vdGVkPXRydWU7CgogIHZhciBNT05USF9FTj1bJ0phbnVhcnknLCdGZWJydWFyeScsJ01hcmNoJywnQXByaWwnLCdNYXknLCdKdW5lJywnSnVseScsJ0F1Z3VzdCcsJ1NlcHRlbWJlcicsJ09jdG9iZXInLCdOb3ZlbWJlcicsJ0RlY2VtYmVyJ107CiAgdmFyIE1PTlRIX0NOPVsn5LiA5pyIJywn5LqM5pyIJywn5LiJ5pyIJywn5Zub5pyIJywn5LqU5pyIJywn5YWt5pyIJywn5LiD5pyIJywn5YWr5pyIJywn5Lmd5pyIJywn5Y2B5pyIJywn5Y2B5LiA5pyIJywn5Y2B5LqM5pyIJ107CiAgdmFyIFdFRUtEQVlfQ049WyfmmJ\/mnJ\/ml6UnLCfmmJ\/mnJ\/kuIAnLCfmmJ\/mnJ\/kuownLCfmmJ\/mnJ\/kuIknLCfmmJ\/mnJ\/lm5snLCfmmJ\/mnJ\/kupQnLCfmmJ\/mnJ\/lha0nXTsKICB2YXIgV0VFS0RBWV9FTj1bJ1N1bmRheScsJ01vbmRheScsJ1R1ZXNkYXknLCdXZWRuZXNkYXknLCdUaHVyc2RheScsJ0ZyaWRheScsJ1NhdHVyZGF5J107CgogIHZhciBXRUFUSEVSUz1bCiAgICB7ZW46J1N1bm55JywgY246J+aZtOacl+eahCcsIHM6J0l0IGlzIGEgYmVhdXRpZnVsIHN1bm55IGRheSEnLCBza3lUb3A6MHgyYjZmZDQsIHNreUJvdHRvbToweDllYzVlOCwgbGlnaHQ6MS4zNSwgcDonbm9uZSd9LAogICAge2VuOidDbG91ZHknLGNuOiflpJrkupHnmoQnLCBzOidUaGUgc2t5IGlzIGNsb3VkeS4nLCBza3lUb3A6MHg2YjdkOTIsIHNreUJvdHRvbToweGE5YjljYywgbGlnaHQ6MC44NSwgcDonbm9uZSd9LAogICAge2VuOidSYWlueScsIGNuOifkuIvpm6jnmoQnLCBzOiJJdCdzIHJhaW55IHRvZGF5LiBUYWtlIGFuIHVtYnJlbGxhLiIsIHNreVRvcDoweDNhNGE1Niwgc2t5Qm90dG9tOjB4NmQ3Yjg2LCBsaWdodDowLjQ1LCBwOidyYWluJ30sCiAgICB7ZW46J1Nub3d5JywgY246J+S4i+mbqueahCcsIHM6J0l0IGlzIHNub3d5IG91dHNpZGUuJywgc2t5VG9wOjB4NTM2ODhjLCBza3lCb3R0b206MHhhOGI2YzksIGxpZ2h0OjAuNjIsIHA6J3Nub3cnfSwKICAgIHtlbjonRm9nZ3knLCBjbjon5pyJ6Zu+55qEJywgczonRHJpdmUgY2FyZWZ1bGx5IG9uIGZvZ2d5IGRheXMuJywgc2t5VG9wOjB4N2Q4NThlLCBza3lCb3R0b206MHg5YWEyYWIsIGxpZ2h0OjAuNTUsIHA6J2ZvZyd9LAogICAge2VuOidXaW5keScsIGNuOifmnInpo47nmoQnLCBzOidJdCBpcyB0b28gd2luZHkgdG8gZmx5IGEga2l0ZS4nLCBza3lUb3A6MHg3ZmI4ZTAsIHNreUJvdHRvbToweGM0ZGNlYSwgbGlnaHQ6MS4xNSwgcDond2luZCd9LAogICAge2VuOidIb3QnLCAgIGNuOifng63nmoQnLCAgIHM6Ikl0J3MgaG90IGluIHN1bW1lci4iLCBza3lUb3A6MHhkOTYzMWYsIHNreUJvdHRvbToweGU4YzQ2YSwgbGlnaHQ6MS43LCBwOidub25lJ30sCiAgICB7ZW46J0NvbGQnLCAgY246J+WGt+eahCcsICAgczoiSXQncyBjb2xkIGluIHdpbnRlci4iLCBza3lUb3A6MHg0YTcxOWMsIHNreUJvdHRvbToweDlmYmRkMiwgbGlnaHQ6MC45NSwgcDonbm9uZSd9CiAgXTsKCiAgZnVuY3Rpb24gZ2V0U2Vhc29uKG0pewogICAgaWYoWzMsNCw1XS5pbmRleE9mKG0pPj0wKSByZXR1cm4ge2VuOidTcHJpbmcnLCBjbjon5pil5aSpJywga2V5OidzcHJpbmcnfTsKICAgIGlmKFs2LDcsOF0uaW5kZXhPZihtKT49MCkgcmV0dXJuIHtlbjonU3VtbWVyJywgY246J+Wkj+WkqScsIGtleTonc3VtbWVyJ307CiAgICBpZihbOSwxMCwxMV0uaW5kZXhPZihtKT49MCkgcmV0dXJuIHtlbjonQXV0dW1uJywgY246J+eni+WkqScsIGtleTonYXV0dW1uJ307CiAgICByZXR1cm4ge2VuOidXaW50ZXInLCBjbjon5Yas5aSpJywga2V5Oid3aW50ZXInfTsKICB9CgogIHZhciBGSVhFRD17CiAgICAnMS0xJzon5YWD5pemfE5ldyBZZWFyXCdzIERheScsJzItMic6J+S4lueVjOa5v+WcsOaXpXxXb3JsZCBXZXRsYW5kcyBEYXknLCcyLTE0Jzon5oOF5Lq66IqCfFZhbGVudGluZVwncyBEYXknLAogICAgJzMtOCc6J+Wmh+Wls+iKgnxXb21lblwncyBEYXknLCczLTEyJzon5qSN5qCR6IqCfEFyYm9yIERheScsJzMtMTUnOifmtojotLnogIXmnYPnm4rml6V8V29ybGQgQ29uc3VtZXIgUmlnaHRzIERheScsCiAgICAnNC0xJzon5oSa5Lq66IqCfEFwcmlsIEZvb2xzXCcgRGF5JywnNC0yMic6J+S4lueVjOWcsOeQg+aXpXxFYXJ0aCBEYXknLCc0LTIzJzon5LiW55WM6K+75Lmm5pelfFdvcmxkIEJvb2sgRGF5JywKICAgICc1LTEnOiflirPliqjoioJ8TGFib3VyIERheScsJzUtNCc6J+mdkuW5tOiKgnxZb3V0aCBEYXknLCc1LTEyJzon5oqk5aOr6IqCfE51cnNlc1wnIERheScsCiAgICAnNS0zMSc6J+S4lueVjOaXoOeDn+aXpXxXb3JsZCBObyBUb2JhY2NvIERheScsJzYtMSc6J+WEv+erpeiKgnxDaGlsZHJlblwncyBEYXknLCc2LTUnOifkuJbnlYznjq\/looPml6V8V29ybGQgRW52aXJvbm1lbnQgRGF5JywKICAgICc3LTEnOiflu7rlhZroioJ8Q1BDIEZvdW5kaW5nIERheScsJzgtMSc6J+W7uuWGm+iKgnxBcm15IERheScsJzktMTAnOifmlZnluIjoioJ8VGVhY2hlcnNcJyBEYXknLAogICAgJzktMjEnOiflm73pmYXlkozlubPml6V8SW50ZXJuYXRpb25hbCBEYXkgb2YgUGVhY2UnLCcxMC0xJzon5Zu95bqG6IqCfE5hdGlvbmFsIERheScsJzEwLTI0Jzon6IGU5ZCI5Zu95pelfFVuaXRlZCBOYXRpb25zIERheScsCiAgICAnMTAtMzEnOifkuIflnKPoioLliY3lpJx8SGFsbG93ZWVuJywnMTEtMTEnOiflhYnmo43oioJ8U2luZ2xlc1wnIERheScsJzEyLTI0Jzon5bmz5a6J5aScfENocmlzdG1hcyBFdmUnLAogICAgJzEyLTI1Jzon5Zyj6K+e6IqCfENocmlzdG1hcycsJzEyLTMxJzon6Leo5bm05aScfE5ldyBZZWFyXCdzIEV2ZScKICB9OwoKICB2YXIgTFVOQVI9ewogICAgJzEtMSc6J+aYpeiKgnxTcHJpbmcgRmVzdGl2YWwnLCcxLTE1Jzon5YWD5a616IqCfExhbnRlcm4gRmVzdGl2YWwnLCcyLTInOifpvpnmiqzlpLR8TG9uZ3RhaXRvdSBGZXN0aXZhbCcsCiAgICAnNS01Jzon56uv5Y2I6IqCfERyYWdvbiBCb2F0IEZlc3RpdmFsJywnNy03Jzon5LiD5aSVfFFpeGkgRmVzdGl2YWwnLCc3LTE1Jzon5Lit5YWD6IqCfFpob25neXVhbiBGZXN0aXZhbCcsCiAgICAnOC0xNSc6J+S4reeni+iKgnxNaWQtQXV0dW1uIEZlc3RpdmFsJywnOS05Jzon6YeN6Ziz6IqCfERvdWJsZSBOaW50aCBGZXN0aXZhbCcsJzEwLTEnOiflr5LooaPoioJ8V2ludGVyIENsb3RoaW5nIEZlc3RpdmFsJywKICAgICcxMC0xNSc6J+S4i+WFg+iKgnxYaWF5dWFuIEZlc3RpdmFsJywnMTItOCc6J+iFiuWFq+iKgnxMYWJhIEZlc3RpdmFsJywnMTItMjMnOifljJfmlrnlsI\/lubR8Tm9ydGhlcm4gWGlhb25pYW4nLAogICAgJzEyLTI0Jzon5Y2X5pa55bCP5bm0fFNvdXRoZXJuIFhpYW9uaWFuJwogIH07CgogIGZ1bmN0aW9uIHBhcnNlRmVzdChzdHIpeyBpZighc3RyKXtyZXR1cm4gbnVsbDt9IHZhciBhPXN0ci5zcGxpdCgnfCcpOyByZXR1cm4ge2NuOmFbMF0sZW46YVsxXX07IH0KCiAgZnVuY3Rpb24gZ2V0UWluZ21pbmdEYXkoeWVhcil7CiAgICBpZih5ZWFyPDIwMDB8fHllYXI+PTIxMDApeyByZXR1cm4gNDsgfQogICAgdmFyIHk9eWVhciUxMDA7CiAgICByZXR1cm4gTWF0aC5mbG9vcih5KjAuMjQyMis0LjgxKS1NYXRoLmZsb29yKHkvNCk7CiAgfQogIGZ1bmN0aW9uIGdldEVhc3RlckRhdGUoeWVhcil7CiAgICB2YXIgYT15ZWFyJTE5LGI9TWF0aC5mbG9vcih5ZWFyLzEwMCksYz15ZWFyJTEwMCxkPU1hdGguZmxvb3IoYi80KSxlPWIlNDsKICAgIHZhciBmPU1hdGguZmxvb3IoKGIrOCkvMjUpLGc9TWF0aC5mbG9vcigoYi1mKzEpLzMpLGg9KDE5KmErYi1kLWcrMTUpJTMwOwogICAgdmFyIGk9TWF0aC5mbG9vcihjLzQpLGs9YyU0LGw9KDMyKzIqZSsyKmktaC1rKSU3LG09TWF0aC5mbG9vcigoYSsxMSpoKzIyKmwpLzQ1MSk7CiAgICB2YXIgbW9udGg9TWF0aC5mbG9vcigoaCtsLTcqbSsxMTQpLzMxKSxkYXk9KChoK2wtNyptKzExNCklMzEpKzE7CiAgICByZXR1cm4ge21vbnRoOm1vbnRoLGRheTpkYXl9OwogIH0KICBmdW5jdGlvbiBnZXROdGhXZWVrZGF5KHllYXIsbW9udGgsd2Vla2RheSxuKXsKICAgIHZhciBjb3VudD0wOwogICAgZm9yKHZhciBkPTE7ZDw9MzE7ZCsrKXsKICAgICAgdmFyIGR0PW5ldyBEYXRlKHllYXIsbW9udGgtMSxkKTsKICAgICAgaWYoZHQuZ2V0TW9udGgoKSsxIT09bW9udGgpeyBicmVhazsgfQogICAgICBpZihkdC5nZXREYXkoKT09PXdlZWtkYXkpeyBjb3VudCsrOyBpZihjb3VudD09PW4peyByZXR1cm4gZDsgfSB9CiAgICB9CiAgICByZXR1cm4gbnVsbDsKICB9CiAgZnVuY3Rpb24gZ2V0RHluYW1pY0Zlc3QoeWVhcixtb250aCxkYXkpewogICAgdmFyIGxpc3Q9W107CiAgICBpZihtb250aD09PTQgJiYgZGF5PT09Z2V0UWluZ21pbmdEYXkoeWVhcikpeyBsaXN0LnB1c2goe2NuOifmuIXmmI7oioInLGVuOidUb21iLVN3ZWVwaW5nIERheSd9KTsgfQogICAgdmFyIGVhc3Rlcj1nZXRFYXN0ZXJEYXRlKHllYXIpOwogICAgaWYobW9udGg9PT1lYXN0ZXIubW9udGggJiYgZGF5PT09ZWFzdGVyLmRheSl7IGxpc3QucHVzaCh7Y246J+Wkjea0u+iKgicsZW46J0Vhc3RlciBTdW5kYXknfSk7IH0KICAgIGlmKG1vbnRoPT09NSAmJiBkYXk9PT1nZXROdGhXZWVrZGF5KHllYXIsNSwwLDIpKXsgbGlzdC5wdXNoKHtjbjon5q+N5Lqy6IqCJyxlbjoiTW90aGVyJ3MgRGF5In0pOyB9CiAgICBpZihtb250aD09PTYgJiYgZGF5PT09Z2V0TnRoV2Vla2RheSh5ZWFyLDYsMCwzKSl7IGxpc3QucHVzaCh7Y246J+eItuS6suiKgicsZW46IkZhdGhlcidzIERheSJ9KTsgfQogICAgaWYobW9udGg9PT0xMSAmJiBkYXk9PT1nZXROdGhXZWVrZGF5KHllYXIsMTEsNCw0KSl7IGxpc3QucHVzaCh7Y246J+aEn+aBqeiKgicsZW46J1RoYW5rc2dpdmluZyd9KTsgfQogICAgcmV0dXJuIGxpc3Q7CiAgfQoKICBmdW5jdGlvbiBsdW5hck9mKGRhdGUpewogICAgdHJ5ewogICAgICB2YXIgcGFydHM9bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ3poLUNOLXUtY2EtY2hpbmVzZScse21vbnRoOidudW1lcmljJyxkYXk6J251bWVyaWMnfSkuZm9ybWF0VG9QYXJ0cyhkYXRlKTsKICAgICAgdmFyIGxtPW51bGwsbGQ9bnVsbDsKICAgICAgZm9yKHZhciBpPTA7aTxwYXJ0cy5sZW5ndGg7aSsrKXsKICAgICAgICBpZihwYXJ0c1tpXS50eXBlPT09J21vbnRoJyl7IGxtPXBhcnNlSW50KHBhcnRzW2ldLnZhbHVlLDEwKTsgfQogICAgICAgIGlmKHBhcnRzW2ldLnR5cGU9PT0nZGF5Jyl7IGxkPXBhcnNlSW50KHBhcnRzW2ldLnZhbHVlLDEwKTsgfQogICAgICB9CiAgICAgIHJldHVybiB7bTpsbSxkOmxkfTsKICAgIH1jYXRjaChlKXsgcmV0dXJuIG51bGw7IH0KICB9CgogIGZ1bmN0aW9uIGdldEZlc3RpdmFscyhkYXRlLHksbSxkKXsKICAgIHZhciBmZXN0cz1bXTsKICAgIHZhciBmeD1GSVhFRFttKyctJytkXTsKICAgIGlmKGZ4KXsgZmVzdHMucHVzaChwYXJzZUZlc3QoZngpKTsgfQogICAgZmVzdHM9ZmVzdHMuY29uY2F0KGdldER5bmFtaWNGZXN0KHksbSxkKSk7CiAgICB2YXIgbD1sdW5hck9mKGRhdGUpOwogICAgaWYobCl7CiAgICAgIHZhciBsZj1MVU5BUltsLm0rJy0nK2wuZF07CiAgICAgIGlmKGxmKXsgZmVzdHMucHVzaChwYXJzZUZlc3QobGYpKTsgfQogICAgICBpZihsLm09PT0xMil7CiAgICAgICAgdmFyIG54PW5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpKzg2NDAwMDAwKTsKICAgICAgICB2YXIgbmw9bHVuYXJPZihueCk7CiAgICAgICAgaWYobmwgJiYgbmwubT09PTEgJiYgbmwuZD09PTEpeyBmZXN0cy5wdXNoKHtjbjon6Zmk5aSVJyxlbjoiQ2hpbmVzZSBOZXcgWWVhcidzIEV2ZSJ9KTsgfQogICAgICB9CiAgICB9CiAgICByZXR1cm4gZmVzdHM7CiAgfQoKICB2YXIgc3RhdGU9e3llYXI6MjAyNiwgbW9udGg6MSwgZGF5Om51bGwsIHNlYXNvbjond2ludGVyJywgd2VhdGhlcjonU25vd3knfTsKCiAgdmFyIGVsTW9udGhzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZU1vbnRocycpOwogIHZhciBlbERheXM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlRGF5cycpOwogIHZhciBlbFRhZ3M9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlVGFncycpOwogIHZhciBlbFNlbnQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlU2VudCcpOwoKICAvKiA9PT09PT09PT09PT0gM0Qg5Zy65pmvID09PT09PT09PT09PSAqLwogIHZhciBzdGFnZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVTY2VuZScpOwogIHZhciBhcGk9bnVsbDsKCiAgZnVuY3Rpb24gaW5pdDNEKCl7CiAgICBpZighc3RhZ2UgfHwgdHlwZW9mIHdpbmRvdy5USFJFRT09PSd1bmRlZmluZWQnKXsgcmV0dXJuOyB9CiAgICB2YXIgVz1zdGFnZS5jbGllbnRXaWR0aCwgSD1zdGFnZS5jbGllbnRIZWlnaHQ7CiAgICBpZighV3x8IUgpeyByZXR1cm47IH0KCiAgICB2YXIgcmVuZGVyZXI9bmV3IFRIUkVFLldlYkdMUmVuZGVyZXIoe2FudGlhbGlhczp0cnVlfSk7CiAgICByZW5kZXJlci5zZXRTaXplKFcsSCk7CiAgICByZW5kZXJlci5zZXRQaXhlbFJhdGlvKE1hdGgubWluKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvfHwxLDIpKTsKICAgIHJlbmRlcmVyLnNoYWRvd01hcC5lbmFibGVkPXRydWU7CiAgICByZW5kZXJlci50b25lTWFwcGluZz1USFJFRS5BQ0VTRmlsbWljVG9uZU1hcHBpbmc7CiAgICByZW5kZXJlci50b25lTWFwcGluZ0V4cG9zdXJlPTAuODI7CiAgICBzdGFnZS5pbnNlcnRCZWZvcmUocmVuZGVyZXIuZG9tRWxlbWVudCwgc3RhZ2UuZmlyc3RDaGlsZCk7CgogICAgdmFyIHNjZW5lPW5ldyBUSFJFRS5TY2VuZSgpOwogICAgc2NlbmUuZm9nPW5ldyBUSFJFRS5Gb2dFeHAyKDB4ZmZmZmZmLDApOwoKICAgIHZhciBjYW1lcmE9bmV3IFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhKDU1LCBXL0gsIDAuMSwgMTAwMCk7CiAgICBjYW1lcmEucG9zaXRpb24uc2V0KDAsMy4yLDEyKTsKICAgIGNhbWVyYS5sb29rQXQoMCwxLDApOwoKICAgIHZhciBza3lNYXQ9bmV3IFRIUkVFLlNoYWRlck1hdGVyaWFsKHsKICAgICAgdW5pZm9ybXM6e3RvcENvbG9yOnt2YWx1ZTpuZXcgVEhSRUUuQ29sb3IoMHgwMDc3ZmYpfSxib3R0b21Db2xvcjp7dmFsdWU6bmV3IFRIUkVFLkNvbG9yKDB4ZmZmZmZmKX0sb2Zmc2V0Ont2YWx1ZToxMH0sZXhwb25lbnQ6e3ZhbHVlOjAuNn19LAogICAgICB2ZXJ0ZXhTaGFkZXI6J3ZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjsgdm9pZCBtYWluKCl7IHZlYzQgd3A9bW9kZWxNYXRyaXgqdmVjNChwb3NpdGlvbiwxLjApOyB2V29ybGRQb3NpdGlvbj13cC54eXo7IGdsX1Bvc2l0aW9uPXByb2plY3Rpb25NYXRyaXgqbW9kZWxWaWV3TWF0cml4KnZlYzQocG9zaXRpb24sMS4wKTsgfScsCiAgICAgIGZyYWdtZW50U2hhZGVyOid1bmlmb3JtIHZlYzMgdG9wQ29sb3I7IHVuaWZvcm0gdmVjMyBib3R0b21Db2xvcjsgdW5pZm9ybSBmbG9hdCBvZmZzZXQ7IHVuaWZvcm0gZmxvYXQgZXhwb25lbnQ7IHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjsgdm9pZCBtYWluKCl7IGZsb2F0IGg9bm9ybWFsaXplKHZXb3JsZFBvc2l0aW9uK29mZnNldCkueTsgZ2xfRnJhZ0NvbG9yPXZlYzQobWl4KGJvdHRvbUNvbG9yLHRvcENvbG9yLG1heChwb3cobWF4KGgsMC4wKSxleHBvbmVudCksMC4wKSksMS4wKTsgfScsCiAgICAgIHNpZGU6VEhSRUUuQmFja1NpZGUKICAgIH0pOwogICAgc2NlbmUuYWRkKG5ldyBUSFJFRS5NZXNoKG5ldyBUSFJFRS5TcGhlcmVHZW9tZXRyeSg1MCwzMiwxNSksIHNreU1hdCkpOwoKICAgIHZhciBncm91bmRNYXQ9bmV3IFRIUkVFLk1lc2hTdGFuZGFyZE1hdGVyaWFsKHtjb2xvcjoweDNmNmIzNiwgcm91Z2huZXNzOjAuOTV9KTsKICAgIHZhciBncm91bmQ9bmV3IFRIUkVFLk1lc2gobmV3IFRIUkVFLkNpcmNsZUdlb21ldHJ5KDIwLDMyKSwgZ3JvdW5kTWF0KTsKICAgIGdyb3VuZC5yb3RhdGlvbi54PS1NYXRoLlBJLzI7CiAgICBncm91bmQucmVjZWl2ZVNoYWRvdz10cnVlOwogICAgc2NlbmUuYWRkKGdyb3VuZCk7CgogICAgdmFyIGFtYmllbnQ9bmV3IFRIUkVFLkFtYmllbnRMaWdodCgweGZmZmZmZiwwLjQyKTsKICAgIHNjZW5lLmFkZChhbWJpZW50KTsKICAgIHZhciBkaXI9bmV3IFRIUkVFLkRpcmVjdGlvbmFsTGlnaHQoMHhmZmZmZmYsMC45KTsKICAgIGRpci5wb3NpdGlvbi5zZXQoNSwxMCw3KTsKICAgIGRpci5jYXN0U2hhZG93PXRydWU7CiAgICBzY2VuZS5hZGQoZGlyKTsKCiAgICB2YXIgdHJlZUdyb3VwPW5ldyBUSFJFRS5Hcm91cCgpOwogICAgZnVuY3Rpb24gbWFrZVRyZWUoeCx6LHNjYWxlKXsKICAgICAgdmFyIHRyZWU9bmV3IFRIUkVFLkdyb3VwKCk7CiAgICAgIHZhciB0cnVuaz1uZXcgVEhSRUUuTWVzaChuZXcgVEhSRUUuQ3lsaW5kZXJHZW9tZXRyeSgwLjEsMC4xNSwxLDgpLCBuZXcgVEhSRUUuTWVzaFN0YW5kYXJkTWF0ZXJpYWwoe2NvbG9yOjB4NWM0MDMzfSkpOwogICAgICB0cnVuay5wb3NpdGlvbi55PTAuNTsgdHJ1bmsuY2FzdFNoYWRvdz10cnVlOyB0cmVlLmFkZCh0cnVuayk7CiAgICAgIHZhciBsZWFmTWF0PW5ldyBUSFJFRS5NZXNoU3RhbmRhcmRNYXRlcmlhbCh7Y29sb3I6MHgyZThiNTd9KTsKICAgICAgZm9yKHZhciBpPTA7aTwzO2krKyl7CiAgICAgICAgdmFyIGNvbmU9bmV3IFRIUkVFLk1lc2gobmV3IFRIUkVFLkNvbmVHZW9tZXRyeSgwLjgtaSowLjIsMS4yLDgpLCBsZWFmTWF0KTsKICAgICAgICBjb25lLnBvc2l0aW9uLnk9MS4yK2kqMC42OyBjb25lLmNhc3RTaGFkb3c9dHJ1ZTsgdHJlZS5hZGQoY29uZSk7CiAgICAgIH0KICAgICAgdHJlZS5wb3NpdGlvbi5zZXQoeCwwLHopOwogICAgICB0cmVlLnNjYWxlLnNldFNjYWxhcihzY2FsZSk7CiAgICAgIHJldHVybiB0cmVlOwogICAgfQogICAgZm9yKHZhciB0PTA7dDwxNTt0KyspewogICAgICB2YXIgdHg9KE1hdGgucmFuZG9tKCktMC41KSoxNTsKICAgICAgdmFyIHR6PShNYXRoLnJhbmRvbSgpLTAuNSkqMTAtMzsKICAgICAgaWYoTWF0aC5hYnModHgpPDIgJiYgTWF0aC5hYnModHopPDIpeyBjb250aW51ZTsgfQogICAgICB0cmVlR3JvdXAuYWRkKG1ha2VUcmVlKHR4LHR6LDAuNitNYXRoLnJhbmRvbSgpKjAuOCkpOwogICAgfQogICAgc2NlbmUuYWRkKHRyZWVHcm91cCk7CgogICAgdmFyIFBDT1VOVD0zMDAwOwogICAgdmFyIHBHZW89bmV3IFRIUkVFLkJ1ZmZlckdlb21ldHJ5KCk7CiAgICB2YXIgcFBvcz1uZXcgRmxvYXQzMkFycmF5KFBDT1VOVCozKTsKICAgIHZhciBwVmVsPVtdOwogICAgZm9yKHZhciBwaT0wO3BpPFBDT1VOVDtwaSsrKXsKICAgICAgcFBvc1twaSozXT0oTWF0aC5yYW5kb20oKS0wLjUpKjQwOwogICAgICBwUG9zW3BpKjMrMV09TWF0aC5yYW5kb20oKSoyMDsKICAgICAgcFBvc1twaSozKzJdPShNYXRoLnJhbmRvbSgpLTAuNSkqMzA7CiAgICAgIHBWZWwucHVzaCh7eDowLHk6LTAuMDUsejowfSk7CiAgICB9CiAgICBwR2VvLnNldEF0dHJpYnV0ZSgncG9zaXRpb24nLCBuZXcgVEhSRUUuQnVmZmVyQXR0cmlidXRlKHBQb3MsMykpOwogICAgdmFyIHBNYXQ9bmV3IFRIUkVFLlBvaW50c01hdGVyaWFsKHtjb2xvcjoweGFhYWFhYSxzaXplOjAuMDgsdHJhbnNwYXJlbnQ6dHJ1ZSxvcGFjaXR5OjB9KTsKICAgIHNjZW5lLmFkZChuZXcgVEhSRUUuUG9pbnRzKHBHZW8scE1hdCkpOwoKICAgIGZ1bmN0aW9uIHN3aXRjaFNlYXNvbihrZXkpewogICAgICBzdGF0ZS5zZWFzb249a2V5OwogICAgICB2YXIgZ2M9e3NwcmluZzoweDNmNmIzNixzdW1tZXI6MHgyNzRkMWEsYXV0dW1uOjB4Nzc1MDJhLHdpbnRlcjoweDhlOWJhZH07CiAgICAgIGdyb3VuZE1hdC5jb2xvci5zZXQoZ2Nba2V5XSk7CiAgICAgIHRyZWVHcm91cC5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKHRyZWUpewogICAgICAgIHZhciBsZWFmPXRyZWUuY2hpbGRyZW5bMV07CiAgICAgICAgaWYoIWxlYWYpeyByZXR1cm47IH0KICAgICAgICBpZihrZXk9PT0nYXV0dW1uJyl7IGxlYWYubWF0ZXJpYWwuY29sb3Iuc2V0KDB4ZmY4YzAwKTsgdHJlZS5zY2FsZS55PTE7IH0KICAgICAgICBlbHNlIGlmKGtleT09PSd3aW50ZXInKXsgbGVhZi5tYXRlcmlhbC5jb2xvci5zZXQoMHhjM2NlZGUpOyB0cmVlLnNjYWxlLnk9MC44OyB9CiAgICAgICAgZWxzZSB7IGxlYWYubWF0ZXJpYWwuY29sb3Iuc2V0KDB4MmU4YjU3KTsgdHJlZS5zY2FsZS55PTE7IH0KICAgICAgfSk7CiAgICAgIHZhciBzPWdldFNlYXNvbihzdGF0ZS5tb250aCk7CiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZVNlYXNvbkJhZGdlJykudGV4dENvbnRlbnQ9cy5jbisnIMK3ICcrcy5lbjsKICAgICAgdmFyIGRlZj17c3ByaW5nOidTdW5ueScsc3VtbWVyOidIb3QnLGF1dHVtbjonQ2xvdWR5Jyx3aW50ZXI6J1Nub3d5J31ba2V5XTsKICAgICAgYXBwbHlXZWF0aGVyKGRlZik7CiAgICB9CgogICAgZnVuY3Rpb24gYXBwbHlXZWF0aGVyKG5hbWUpewogICAgICB2YXIgdz1udWxsOwogICAgICBmb3IodmFyIGk9MDtpPFdFQVRIRVJTLmxlbmd0aDtpKyspeyBpZihXRUFUSEVSU1tpXS5lbj09PW5hbWUpeyB3PVdFQVRIRVJTW2ldOyBicmVhazsgfSB9CiAgICAgIGlmKCF3KXsgcmV0dXJuOyB9CiAgICAgIHN0YXRlLndlYXRoZXI9bmFtZTsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlV2VhdGhlckJhZGdlJykudGV4dENvbnRlbnQ9J+WkqeawlDogJytuYW1lOwogICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGVsVGFncy5jaGlsZHJlbiwgZnVuY3Rpb24odGFnKXsKICAgICAgICB0YWcuY2xhc3NMaXN0LnRvZ2dsZSgnb24nLCB0YWcuZ2V0QXR0cmlidXRlKCdkYXRhLWVuJyk9PT1uYW1lKTsKICAgICAgfSk7CiAgICAgIHNreU1hdC51bmlmb3Jtcy50b3BDb2xvci52YWx1ZS5zZXQody5za3lUb3ApOwogICAgICBza3lNYXQudW5pZm9ybXMuYm90dG9tQ29sb3IudmFsdWUuc2V0KHcuc2t5Qm90dG9tKTsKICAgICAgZGlyLmludGVuc2l0eT13LmxpZ2h0OwogICAgICBhbWJpZW50LmludGVuc2l0eT0wLjMrdy5saWdodCowLjMyOwoKICAgICAgaWYody5wPT09J3JhaW4nKXsKICAgICAgICBwTWF0LmNvbG9yLnNldCgweDg3Y2VlYik7IHBNYXQuc2l6ZT0wLjA2OyBwTWF0Lm9wYWNpdHk9MC44OwogICAgICAgIHBWZWwuZm9yRWFjaChmdW5jdGlvbih2KXsgdi55PS0wLjItTWF0aC5yYW5kb20oKSowLjI7IHYueD0oTWF0aC5yYW5kb20oKS0wLjUpKjAuMDI7IH0pOwogICAgICAgIHNjZW5lLmZvZy5kZW5zaXR5PTAuMDA1OwogICAgICB9IGVsc2UgaWYody5wPT09J3Nub3cnKXsKICAgICAgICBwTWF0LmNvbG9yLnNldCgweGZmZmZmZik7IHBNYXQuc2l6ZT0wLjE1OyBwTWF0Lm9wYWNpdHk9MC45OwogICAgICAgIHBWZWwuZm9yRWFjaChmdW5jdGlvbih2KXsgdi55PS0wLjAzLU1hdGgucmFuZG9tKCkqMC4wNTsgdi54PShNYXRoLnJhbmRvbSgpLTAuNSkqMC4xOyB9KTsKICAgICAgICBzY2VuZS5mb2cuZGVuc2l0eT0wLjAxOwogICAgICB9IGVsc2UgaWYody5wPT09J2ZvZycpewogICAgICAgIHBNYXQub3BhY2l0eT0wOyBzY2VuZS5mb2cuZGVuc2l0eT0wLjA1OwogICAgICB9IGVsc2UgaWYody5wPT09J3dpbmQnKXsKICAgICAgICBwTWF0Lm9wYWNpdHk9MC4yOyBwTWF0LmNvbG9yLnNldCgweGNjY2NjYyk7CiAgICAgICAgcFZlbC5mb3JFYWNoKGZ1bmN0aW9uKHYpeyB2Lnk9LTAuMDE7IHYueD0tMC4yLU1hdGgucmFuZG9tKCkqMC4xOyB9KTsKICAgICAgICBzY2VuZS5mb2cuZGVuc2l0eT0wOwogICAgICB9IGVsc2UgewogICAgICAgIHBNYXQub3BhY2l0eT0wOyBzY2VuZS5mb2cuZGVuc2l0eT0wOwogICAgICB9CiAgICAgIGVsU2VudC50ZXh0Q29udGVudD13LnM7CiAgICB9CgogICAgdmFyIGNsb2NrPW5ldyBUSFJFRS5DbG9jaygpOwogICAgZnVuY3Rpb24gYW5pbWF0ZSgpewogICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7CiAgICAgIHZhciBwb3M9cEdlby5hdHRyaWJ1dGVzLnBvc2l0aW9uLmFycmF5OwogICAgICBmb3IodmFyIGk9MDtpPFBDT1VOVDtpKyspewogICAgICAgIHBvc1tpKjNdKz1wVmVsW2ldLng7CiAgICAgICAgcG9zW2kqMysxXSs9cFZlbFtpXS55OwogICAgICAgIHBvc1tpKjMrMl0rPXBWZWxbaV0uejsKICAgICAgICBpZihwb3NbaSozKzFdPDAgfHwgcG9zW2kqM108LTI1IHx8IHBvc1tpKjNdPjI1KXsKICAgICAgICAgIHBvc1tpKjMrMV09MjArTWF0aC5yYW5kb20oKSoxMDsKICAgICAgICAgIHBvc1tpKjNdPShNYXRoLnJhbmRvbSgpLTAuNSkqNDA7CiAgICAgICAgICBwb3NbaSozKzJdPShNYXRoLnJhbmRvbSgpLTAuNSkqMzA7CiAgICAgICAgfQogICAgICB9CiAgICAgIHBHZW8uYXR0cmlidXRlcy5wb3NpdGlvbi5uZWVkc1VwZGF0ZT10cnVlOwogICAgICByZW5kZXJlci5yZW5kZXIoc2NlbmUsY2FtZXJhKTsKICAgIH0KICAgIGFuaW1hdGUoKTsKCiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJyxmdW5jdGlvbigpewogICAgICB2YXIgdz1zdGFnZS5jbGllbnRXaWR0aCxoPXN0YWdlLmNsaWVudEhlaWdodDsKICAgICAgaWYoIXd8fCFoKXsgcmV0dXJuOyB9CiAgICAgIGNhbWVyYS5hc3BlY3Q9dy9oOwogICAgICBjYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpOwogICAgICByZW5kZXJlci5zZXRTaXplKHcsaCk7CiAgICB9KTsKCiAgICBhcGk9e3N3aXRjaFNlYXNvbjpzd2l0Y2hTZWFzb24sIGFwcGx5V2VhdGhlcjphcHBseVdlYXRoZXJ9OwogICAgc3dpdGNoU2Vhc29uKGdldFNlYXNvbihzdGF0ZS5tb250aCkua2V5KTsKICB9CgogIC8qID09PT09PT09PT09PSDml6XljoYgVUkgPT09PT09PT09PT09ICovCiAgZnVuY3Rpb24gcmVuZGVyTW9udGhzKCl7CiAgICBlbE1vbnRocy5pbm5lckhUTUw9Jyc7CiAgICBmb3IodmFyIG09MTttPD0xMjttKyspewogICAgICAoZnVuY3Rpb24obW0pewogICAgICAgIHZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogICAgICAgIGIudHlwZT0nYnV0dG9uJzsKICAgICAgICBiLmNsYXNzTmFtZT0ndGUtbScrKG1tPT09c3RhdGUubW9udGg\/JyBvbic6JycpOwogICAgICAgIGIudGV4dENvbnRlbnQ9TU9OVEhfQ05bbW0tMV07CiAgICAgICAgYi5vbmNsaWNrPWZ1bmN0aW9uKCl7CiAgICAgICAgICBzdGF0ZS5tb250aD1tbTsgc3RhdGUuZGF5PW51bGw7CiAgICAgICAgICByZW5kZXJNb250aHMoKTsgdXBkYXRlVmlldygpOwogICAgICAgICAgaWYoYXBpKXsgYXBpLnN3aXRjaFNlYXNvbihnZXRTZWFzb24obW0pLmtleSk7IH0KICAgICAgICB9OwogICAgICAgIGVsTW9udGhzLmFwcGVuZENoaWxkKGIpOwogICAgICB9KShtKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHJlbmRlclRhZ3MoKXsKICAgIGVsVGFncy5pbm5lckhUTUw9Jyc7CiAgICBXRUFUSEVSUy5mb3JFYWNoKGZ1bmN0aW9uKHcpewogICAgICB2YXIgdGFnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICAgdGFnLmNsYXNzTmFtZT0ndGUtdGFnJzsKICAgICAgdGFnLnNldEF0dHJpYnV0ZSgnZGF0YS1lbicsIHcuZW4pOwogICAgICB0YWcuaW5uZXJIVE1MPSc8c3BhbiBjbGFzcz0iZW4iPicrdy5lbisnPC9zcGFuPicrdy5jbjsKICAgICAgdGFnLm9uY2xpY2s9ZnVuY3Rpb24oKXsgaWYoYXBpKXsgYXBpLmFwcGx5V2VhdGhlcih3LmVuKTsgfSB9OwogICAgICBlbFRhZ3MuYXBwZW5kQ2hpbGQodGFnKTsKICAgIH0pOwogIH0KCiAgZnVuY3Rpb24gdXBkYXRlVmlldygpewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlVGl0bGUnKS50ZXh0Q29udGVudD1zdGF0ZS55ZWFyKyflubQgJytzdGF0ZS5tb250aCsn5pyIJzsKICAgIHZhciBzZWFzb249Z2V0U2Vhc29uKHN0YXRlLm1vbnRoKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZVZhbFNlYXNvbicpLnRleHRDb250ZW50PXNlYXNvbi5jbjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZUVuU2Vhc29uJykudGV4dENvbnRlbnQ9J2luICcrc2Vhc29uLmVuLnRvTG93ZXJDYXNlKCk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVWYWxNb250aCcpLnRleHRDb250ZW50PU1PTlRIX0NOW3N0YXRlLm1vbnRoLTFdOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlRW5Nb250aCcpLnRleHRDb250ZW50PSdpbiAnK01PTlRIX0VOW3N0YXRlLm1vbnRoLTFdOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlQ2FyZFNlYXNvbicpLmNsYXNzTGlzdC5hZGQoJ29uJyk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVDYXJkTW9udGgnKS5jbGFzc0xpc3QuYWRkKCdvbicpOwoKICAgIGVsRGF5cy5pbm5lckhUTUw9Jyc7CiAgICB2YXIgZmlyc3Q9bmV3IERhdGUoc3RhdGUueWVhcixzdGF0ZS5tb250aC0xLDEpLmdldERheSgpOwogICAgdmFyIHRvdGFsPW5ldyBEYXRlKHN0YXRlLnllYXIsc3RhdGUubW9udGgsMCkuZ2V0RGF0ZSgpOwogICAgdmFyIGksZDsKICAgIGZvcihpPTA7aTxmaXJzdDtpKyspewogICAgICB2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgZS5jbGFzc05hbWU9J3RlLWQgZW1wdHknOyBlbERheXMuYXBwZW5kQ2hpbGQoZSk7CiAgICB9CiAgICBmb3IoZD0xO2Q8PXRvdGFsO2QrKyl7CiAgICAgIChmdW5jdGlvbihkZCl7CiAgICAgICAgdmFyIGNlbGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgY2VsbC5jbGFzc05hbWU9J3RlLWQnKyhkZD09PXN0YXRlLmRheT8nIHNlbCc6JycpOwogICAgICAgIHZhciBkYXRlT2JqPW5ldyBEYXRlKHN0YXRlLnllYXIsc3RhdGUubW9udGgtMSxkZCk7CiAgICAgICAgdmFyIGZlc3RzPWdldEZlc3RpdmFscyhkYXRlT2JqLHN0YXRlLnllYXIsc3RhdGUubW9udGgsZGQpOwogICAgICAgIHZhciBodG1sPSc8ZGl2IGNsYXNzPSJuIj4nK2RkKyc8L2Rpdj4nOwogICAgICAgIGlmKGZlc3RzLmxlbmd0aCl7CiAgICAgICAgICB2YXIgdHh0PWZlc3RzWzBdLmNuOwogICAgICAgICAgaWYoZmVzdHMubGVuZ3RoPjEpeyB0eHQrPScgKycrKGZlc3RzLmxlbmd0aC0xKTsgfQogICAgICAgICAgaHRtbCs9JzxkaXYgY2xhc3M9ImYiPicrdHh0Kyc8L2Rpdj4nOwogICAgICAgIH0KICAgICAgICBjZWxsLmlubmVySFRNTD1odG1sOwogICAgICAgIGNlbGwub25jbGljaz1mdW5jdGlvbigpewogICAgICAgICAgc3RhdGUuZGF5PWRkOwogICAgICAgICAgdXBkYXRlVmlldygpOwogICAgICAgICAgc2hvd0RldGFpbChkZCxmZXN0cyxkYXRlT2JqKTsKICAgICAgICB9OwogICAgICAgIGVsRGF5cy5hcHBlbmRDaGlsZChjZWxsKTsKICAgICAgfSkoZCk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBzaG93RGV0YWlsKGRheSxmZXN0cyxkYXRlT2JqKXsKICAgIHZhciB3aT1kYXRlT2JqLmdldERheSgpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlQ2FyZERheScpLmNsYXNzTGlzdC5hZGQoJ29uJyk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVWYWxEYXknKS50ZXh0Q29udGVudD1zdGF0ZS5tb250aCsn5pyIJytkYXkrJ+aXpSc7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVFbkRheScpLnRleHRDb250ZW50PSdvbiAnK01PTlRIX0VOW3N0YXRlLm1vbnRoLTFdKycgJytkYXk7CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlQ2FyZFdlZWsnKS5jbGFzc0xpc3QuYWRkKCdvbicpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlVmFsV2VlaycpLnRleHRDb250ZW50PVdFRUtEQVlfQ05bd2ldOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlRW5XZWVrJykudGV4dENvbnRlbnQ9J29uICcrV0VFS0RBWV9FTlt3aV07CgogICAgdmFyIGNmPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZUNhcmRGZXN0Jyk7CiAgICBpZihmZXN0cy5sZW5ndGgpewogICAgICBjZi5jbGFzc0xpc3QuYWRkKCdvbicpOwogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVWYWxGZXN0JykudGV4dENvbnRlbnQ9ZmVzdHMubWFwKGZ1bmN0aW9uKGYpe3JldHVybiBmLmNuO30pLmpvaW4oJ+OAgScpOwogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVFbkZlc3QnKS50ZXh0Q29udGVudD1mZXN0cy5tYXAoZnVuY3Rpb24oZil7cmV0dXJuIGYuZW47fSkuam9pbignIC8gJyk7CiAgICB9ZWxzZXsKICAgICAgY2YuY2xhc3NMaXN0LnJlbW92ZSgnb24nKTsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlVmFsRmVzdCcpLnRleHRDb250ZW50PSfml6AnOwogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVFbkZlc3QnKS50ZXh0Q29udGVudD0nLSc7CiAgICB9CgogICAgdmFyIHNlYXNvbj1nZXRTZWFzb24oc3RhdGUubW9udGgpOwogICAgdmFyIHJvd3M9WwogICAgICBbJ+W5tOS7vScsJ2luICcrc3RhdGUueWVhcl0sCiAgICAgIFsn5a2j6IqCJywnaW4gJytzZWFzb24uZW4udG9Mb3dlckNhc2UoKV0sCiAgICAgIFsn5pyI5Lu9JywnaW4gJytNT05USF9FTltzdGF0ZS5tb250aC0xXV0sCiAgICAgIFsn5YW35L2T5p+Q5aSpJywnb24gJytNT05USF9FTltzdGF0ZS5tb250aC0xXSsnICcrZGF5XSwKICAgICAgWyfmmJ\/mnJ\/lh6AnLCdvbiAnK1dFRUtEQVlfRU5bd2ldXQogICAgXTsKICAgIGlmKGZlc3RzLmxlbmd0aCl7CiAgICAgIHJvd3MucHVzaChbJ+iKguaXpe+8iOW9k+Wkqe+8iScsJ29uICcrZmVzdHMubWFwKGZ1bmN0aW9uKGYpe3JldHVybiBmLmVuO30pLmpvaW4oJyAvICcpXSk7CiAgICAgIHJvd3MucHVzaChbJ+iKguaXpe+8iOacn+mXtO+8iScsJ2F0ICcrZmVzdHMubWFwKGZ1bmN0aW9uKGYpe3JldHVybiBmLmVuO30pLmpvaW4oJyAvICcpXSk7CiAgICB9CiAgICB2YXIgaD0nJzsKICAgIHJvd3MuZm9yRWFjaChmdW5jdGlvbihyKXsgaCs9JzxkaXYgY2xhc3M9InRlLXByIj48c3Bhbj4nK3JbMF0rJzwvc3Bhbj48c3Bhbj4nK3JbMV0rJzwvc3Bhbj48L2Rpdj4nOyB9KTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZVByZXBMaXN0JykuaW5uZXJIVE1MPWg7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVQcmVwJykuY2xhc3NMaXN0LmFkZCgnb24nKTsKICB9CgogIHJlbmRlck1vbnRocygpOwogIHJlbmRlclRhZ3MoKTsKICB1cGRhdGVWaWV3KCk7CgogIHZhciBlbFllYXI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlWWVhcicpOwogIGVsWWVhci5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLGZ1bmN0aW9uKCl7CiAgICB2YXIgdj1wYXJzZUludChlbFllYXIudmFsdWUsMTApOwogICAgaWYodiAmJiB2PjE5MDAgJiYgdjwyMTAwKXsgc3RhdGUueWVhcj12OyB9IGVsc2UgeyBlbFllYXIudmFsdWU9c3RhdGUueWVhcjsgcmV0dXJuOyB9CiAgICBzdGF0ZS5kYXk9bnVsbDsgdXBkYXRlVmlldygpOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZVByZXYnKS5vbmNsaWNrPWZ1bmN0aW9uKCl7IHN0YXRlLnllYXItLTsgZWxZZWFyLnZhbHVlPXN0YXRlLnllYXI7IHN0YXRlLmRheT1udWxsOyB1cGRhdGVWaWV3KCk7IH07CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlTmV4dCcpLm9uY2xpY2s9ZnVuY3Rpb24oKXsgc3RhdGUueWVhcisrOyBlbFllYXIudmFsdWU9c3RhdGUueWVhcjsgc3RhdGUuZGF5PW51bGw7IHVwZGF0ZVZpZXcoKTsgfTsKCiAgaWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSdsb2FkaW5nJyl7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgaW5pdDNEKTsKICB9IGVsc2UgewogICAgc2V0VGltZW91dChpbml0M0QsIDYwKTsKICB9Cn0pKCk7Cg==\");\n  var bytes=new Uint8Array(raw.length);\n  for(var i=0;i<raw.length;i++){bytes[i]=raw.charCodeAt(i);}\n  var code=new TextDecoder(\"utf-8\").decode(bytes);\n  var sc=document.createElement(\"script\");\n  sc.textContent=code;\n  document.body.appendChild(sc);\n})();\n<\/script>\n<\/div>\n<\/section>\n\n<section class=\"lgs-day\" id=\"lgs-day-2026-10-28\">\n<h2>2026-10-28 \u00b7 \u4ee3\u8bcd\u8fa8\u6790<\/h2>\n<div class=\"lgs-body\">\n<p>\u4eca\u5929\u628a\u4e24\u7ec4\u9ad8\u9891\u4ee3\u8bcd\u7684\u8fb9\u754c\u7406\u6e05\u695a\u4e86\uff0c\u987a\u624b\u505a\u4e86\u4e2a\u80fd\u70b9\u51fb\u5207\u6362\u7684\u6f14\u793a\u9875\u3002<\/p>\n<p><span class=\"lgs-tag\">Other \u5bb6\u65cf<\/span><\/p>\n<ul>\n<li><strong>another<\/strong> = an + other\uff0c\u6cdb\u6307\u4e0d\u7279\u5b9a\u7684\"\u53e6\u4e00\u4e2a\/\u518d\u4e00\u4e2a\"\uff0c\u540e\u9762\u4e0d\u63a5\u540d\u8bcd<\/li>\n<li><strong>other<\/strong> \u662f\u5f62\u5bb9\u8bcd\uff0c\u540e\u9762\u5fc5\u987b\u63a5\u540d\u8bcd\uff08\u590d\u6570\u6216\u4e0d\u53ef\u6570\uff09<\/li>\n<li><strong>others<\/strong> \u662f\u4ee3\u8bcd\uff0c\u7b49\u4e8e other + \u590d\u6570\u540d\u8bcd\uff0c\u6cdb\u6307\"\u5176\u4ed6\u4eba\/\u7269\"<\/li>\n<li><strong>the other<\/strong> \u7279\u6307\u4e24\u8005\u4e2d\u7684\u53e6\u4e00\u4e2a\uff0c\u5e38\u914d one... the other...<\/li>\n<li><strong>the others<\/strong> \u7279\u6307\u67d0\u4e00\u8303\u56f4\u5185\u5269\u4e0b\u7684\u5168\u90e8\uff0c\u662f the other \u7684\u590d\u6570<\/li>\n<\/ul>\n<p><span class=\"lgs-tag\">Both \/ Either \/ Neither \/ None<\/span><\/p>\n<ul>\n<li><strong>Both<\/strong> \u53ea\u80fd\u7528\u4e8e\u4e24\u8005\uff0c\"\u4e24\u4e2a\u90fd\u2026\u2026\"\uff08\u4e09\u8005\u4ee5\u4e0a\u7528 all\uff09<\/li>\n<li><strong>Either<\/strong> \u4e24\u8005\u4e2d\u4efb\u610f\u4e00\u4e2a\uff08\u4e09\u8005\u4ee5\u4e0a\"\u4efb\u610f\"\u7528 any\uff09<\/li>\n<li><strong>Neither<\/strong> \u4e24\u8005\u90fd\u4e0d\uff08\u4e09\u8005\u4ee5\u4e0a\"\u90fd\u4e0d\"\u7528 none\uff09<\/li>\n<li><strong>None<\/strong> \u4e09\u8005\u6216\u4ee5\u4e0a\u90fd\u4e0d<\/li>\n<\/ul>\n<blockquote><p>\u4e00\u53e5\u8bdd\u8bb0\u6cd5\uff1aboth \/ either \/ neither \u5929\u751f\u53ea\u7ba1\u4e24\u4e2a\uff0c\u8d85\u8fc7\u4e24\u4e2a\u5c31\u5f97\u6362\u6210 all \/ any \/ none\u3002<\/p><\/blockquote>\n<p style=\"margin-top:16px;color:#8a4a68;font-size:13px;\">\u4e0b\u9762\u76f4\u63a5\u70b9\u6309\u94ae\u8bd5\uff0c\u4e0d\u7528\u8df3\u9875\u9762\uff1a<\/p><div class=\"pro-wrap\">\n<style>\n\n    \/* \u5168\u5c40\u6837\u5f0f *\/\n    .pro-wrap * {\n      box-sizing: border-box;\n      margin: 0;\n      padding: 0;\n    }\n    .pro-wrap {\n      font-family: 'Segoe UI', 'PingFang SC', Roboto, system-ui, sans-serif;\n      background: linear-gradient(145deg, #f5f7fc 0%, #e9edf5 100%);\n      min-height: auto;\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      padding: 2rem 1rem;\n      color: #1e293b;\n    }\n    .pro-wrap h1 {\n      font-size: 1.8rem;\n      font-weight: 600;\n      letter-spacing: 1px;\n      color: #0b3b5c;\n      margin-bottom: 0.5rem;\n      text-align: center;\n    }\n    .pro-wrap .subhead {\n      font-size: 0.95rem;\n      color: #4a5b6e;\n      margin-bottom: 2.5rem;\n      text-align: center;\n      border-bottom: 1px dashed #cbd5e1;\n      padding-bottom: 0.8rem;\n      max-width: 600px;\n    }\n    .pro-wrap .container {\n      display: flex;\n      flex-direction: column;\n      gap: 2.5rem;\n      max-width: 1000px;\n      width: 100%;\n    }\n\n    \/* \u5361\u7247\u901a\u7528 *\/\n    .pro-wrap .card {\n      background: rgba(255, 255, 255, 0.8);\n      backdrop-filter: blur(8px);\n      border-radius: 28px;\n      padding: 1.8rem 1.5rem;\n      box-shadow: 0 20px 35px -8px rgba(0, 0, 0, 0.1), 0 4px 8px -2px rgba(0, 0, 0, 0.02);\n      border: 1px solid rgba(255, 255, 255, 0.6);\n      transition: box-shadow 0.3s;\n    }\n    .pro-wrap .card:hover {\n      box-shadow: 0 30px 45px -12px rgba(0, 0, 0, 0.15);\n    }\n    .pro-wrap .card-title {\n      font-size: 1.2rem;\n      font-weight: 600;\n      color: #1e4a6b;\n      margin-bottom: 1.2rem;\n      display: flex;\n      align-items: center;\n      gap: 8px;\n    }\n    .pro-wrap .card-title span {\n      background: #1e4a6b;\n      color: white;\n      font-size: 0.8rem;\n      padding: 2px 12px;\n      border-radius: 20px;\n    }\n\n    \/* \u6309\u94ae\u7ec4 *\/\n    .pro-wrap .btn-group {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 10px;\n      margin-bottom: 1.5rem;\n    }\n    .pro-wrap .btn {\n      padding: 0.6rem 1.2rem;\n      border-radius: 40px;\n      border: 1.5px solid #cbd5e1;\n      background: white;\n      font-weight: 500;\n      font-size: 0.9rem;\n      cursor: pointer;\n      transition: all 0.2s;\n      color: #334155;\n      flex: 1 0 auto;\n    }\n    .pro-wrap .btn:hover {\n      border-color: #3b82f6;\n      background: #f0f7ff;\n    }\n    .pro-wrap .btn.active {\n      background: #1e4a6b;\n      border-color: #1e4a6b;\n      color: white;\n      box-shadow: 0 8px 14px -6px #1e4a6b80;\n    }\n\n    \/* Other \u5bb6\u65cf\u6f14\u793a\u533a *\/\n    .pro-wrap .other-demo {\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      gap: 1.2rem;\n    }\n    .pro-wrap .circle-pool {\n      display: flex;\n      flex-wrap: wrap;\n      justify-content: center;\n      gap: 15px;\n      min-height: 80px;\n      align-items: center;\n      padding: 0.5rem;\n    }\n    .pro-wrap .circle {\n      width: 60px;\n      height: 60px;\n      border-radius: 50%;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      font-weight: 600;\n      font-size: 1.1rem;\n      transition: all 0.3s ease;\n      box-shadow: 0 4px 10px rgba(0, 0, 0, 0.08);\n      border: 2px solid transparent;\n    }\n    .pro-wrap .circle.default {\n      background: #e2e8f0;\n      color: #475569;\n    }\n    .pro-wrap .circle.highlight {\n      background: #3b82f6;\n      color: white;\n      border-color: #1e4a6b;\n      transform: scale(1.08);\n    }\n    .pro-wrap .circle.locked {\n      background: #94a3b8;\n      color: white;\n      opacity: 0.7;\n    }\n    .pro-wrap .circle.special {\n      background: #f59e0b;\n      color: white;\n      border-color: #b45309;\n    }\n    .pro-wrap .explain-box {\n      background: #f1f5f9;\n      border-radius: 20px;\n      padding: 1rem 1.5rem;\n      width: 100%;\n      text-align: center;\n      font-size: 1rem;\n      line-height: 1.7;\n      color: #1e293b;\n      border-left: 8px solid #3b82f6;\n    }\n    .pro-wrap .explain-box strong {\n      color: #1e4a6b;\n      font-size: 1.15rem;\n    }\n    .pro-wrap .badge {\n      display: inline-block;\n      background: #dbeafe;\n      color: #1e4a6b;\n      padding: 0.2rem 0.8rem;\n      border-radius: 30px;\n      font-size: 0.8rem;\n      font-weight: 500;\n      margin-bottom: 0.3rem;\n    }\n\n    \/* Both\/Either\/Neither\/None \u6f14\u793a\u533a *\/\n    .pro-wrap .quant-demo {\n      display: flex;\n      flex-direction: column;\n      gap: 1.2rem;\n    }\n    .pro-wrap .scope-selector {\n      display: flex;\n      gap: 12px;\n      justify-content: center;\n    }\n    .pro-wrap .scope-btn {\n      padding: 0.5rem 1.8rem;\n      border-radius: 30px;\n      border: 2px solid #cbd5e1;\n      background: white;\n      font-weight: 600;\n      cursor: pointer;\n      transition: all 0.2s;\n      font-size: 0.95rem;\n    }\n    .pro-wrap .scope-btn.active {\n      background: #1e4a6b;\n      color: white;\n      border-color: #1e4a6b;\n    }\n    .pro-wrap .quant-visual {\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      gap: 20px;\n      flex-wrap: wrap;\n      padding: 0.5rem;\n      min-height: 120px;\n    }\n    .pro-wrap .quant-item {\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      gap: 6px;\n      transition: all 0.3s;\n    }\n    .pro-wrap .quant-icon {\n      width: 60px;\n      height: 60px;\n      border-radius: 16px;\n      background: #e2e8f0;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      font-size: 1.8rem;\n      transition: all 0.3s;\n      border: 2px solid transparent;\n    }\n    .pro-wrap .quant-item.selected .quant-icon {\n      background: #f59e0b;\n      border-color: #b45309;\n      transform: translateY(-4px);\n      box-shadow: 0 12px 18px -8px #f59e0b80;\n    }\n    .pro-wrap .quant-item.dimmed .quant-icon {\n      opacity: 0.35;\n      background: #cbd5e1;\n    }\n    .pro-wrap .quant-label {\n      font-size: 0.85rem;\n      font-weight: 500;\n      color: #475569;\n    }\n    .pro-wrap .quant-result {\n      background: #f1f5f9;\n      border-radius: 20px;\n      padding: 1.2rem 1.5rem;\n      text-align: center;\n      border-left: 8px solid #f59e0b;\n      min-height: 90px;\n      display: flex;\n      flex-direction: column;\n      justify-content: center;\n    }\n    .pro-wrap .quant-word {\n      font-size: 1.6rem;\n      font-weight: 700;\n      color: #0b3b5c;\n      letter-spacing: 1px;\n    }\n    .pro-wrap .quant-desc {\n      font-size: 0.95rem;\n      color: #334155;\n      margin-top: 4px;\n    }\n\n    \/* \u54cd\u5e94\u5f0f *\/\n    @media (max-width: 600px) {\n      .pro-wrap .card { padding: 1.2rem 1rem; }\n      .pro-wrap .circle { width: 48px; height: 48px; font-size: 0.95rem; }\n      .pro-wrap .quant-icon { width: 48px; height: 48px; font-size: 1.4rem; }\n      .pro-wrap .btn { font-size: 0.8rem; padding: 0.5rem 0.8rem; }\n      .pro-wrap .explain-box { font-size: 0.9rem; padding: 0.8rem 1rem; }\n      .pro-wrap .quant-word { font-size: 1.3rem; }\n    }\n  \n<\/style>\n\n\n<div class=\"pro-wrap\">\n  <h1>\u82f1\u8bed\u4ee3\u8bcd\u52a8\u6001\u8fa8\u6790<\/h1>\n  <p class=\"subhead\">Other \u5bb6\u65cf \u00b7 Both \/ Either \/ Neither \/ None \u6307\u4ee3\u8303\u56f4\u5bf9\u6bd4<\/p>\n\n  <div class=\"container\">\n    <!-- ========= \u7b2c\u4e00\u90e8\u5206\uff1aOther \u5bb6\u65cf ========= -->\n    <div class=\"card\">\n      <div class=\"card-title\">\n        Other \u5bb6\u65cf <span>\u70b9\u51fb\u5207\u6362\u8bed\u5883<\/span>\n      <\/div>\n      <div class=\"btn-group\" id=\"proOtherBtns\">\n        <button class=\"btn active\" data-scenario=\"another\">another<\/button>\n        <button class=\"btn\" data-scenario=\"other\">other<\/button>\n        <button class=\"btn\" data-scenario=\"others\">others<\/button>\n        <button class=\"btn\" data-scenario=\"theOther\">the other<\/button>\n        <button class=\"btn\" data-scenario=\"theOthers\">the others<\/button>\n      <\/div>\n\n      <div class=\"other-demo\">\n        <div class=\"circle-pool\" id=\"proCirclePool\"><\/div>\n\n        <div class=\"explain-box\" id=\"proOtherExplain\">\n          <div class=\"badge\" id=\"proOtherBadge\">\u6cdb\u6307 \u00b7 \u5355\u6570<\/div>\n          <div id=\"proOtherText\">\n            <strong>another<\/strong> = an + other\uff0c\u6307\u4ee3\u4e0d\u7279\u5b9a\u8303\u56f4\u5185\u7684\u201c\u53e6\u4e00\u4e2a\/\u518d\u4e00\u4e2a\u201d\u3002\n          <\/div>\n          <div style=\"font-size:0.9rem; color:#64748b; margin-top:6px;\" id=\"proOtherExample\">\n            \u4f8b\u53e5\uff1aThis glass is broken. Give me <strong>another<\/strong>.\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- ========= \u7b2c\u4e8c\u90e8\u5206\uff1aBoth\/Either\/Neither\/None ========= -->\n    <div class=\"card\">\n      <div class=\"card-title\">\n        Both \/ Either \/ Neither \/ None <span>\u5207\u6362\u6570\u91cf\u8303\u56f4<\/span>\n      <\/div>\n\n      <div class=\"quant-demo\">\n        <div class=\"scope-selector\">\n          <button class=\"scope-btn active\" data-scope=\"2\">\u4e24\u8005\uff082\u4e2a\uff09<\/button>\n          <button class=\"scope-btn\" data-scope=\"3\">\u4e09\u8005\u53ca\u4ee5\u4e0a\uff083\u4e2a\u4ee5\u4e0a\uff09<\/button>\n        <\/div>\n\n        <div class=\"quant-visual\" id=\"proQuantVisual\"><\/div>\n\n        <div class=\"quant-result\" id=\"proQuantResult\">\n          <div class=\"quant-word\" id=\"proQuantWord\">Both<\/div>\n          <div class=\"quant-desc\" id=\"proQuantDesc\">\u4e24\u8005\u90fd\u2026\u2026\uff08\u80af\u5b9a\uff09<\/div>\n        <\/div>\n\n        <div class=\"btn-group\" id=\"proQuantBtns\" style=\"margin-bottom:0;\">\n          <button class=\"btn active\" data-quant=\"both\">Both<\/button>\n          <button class=\"btn\" data-quant=\"either\">Either<\/button>\n          <button class=\"btn\" data-quant=\"neither\">Neither<\/button>\n          <button class=\"btn\" data-quant=\"none\">None<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<\/div>\n<script>\n\n(function(){\n  if(window.__proTimer){clearInterval(window.__proTimer);}\n  function init(root){\n    \/* ===================== \u7b2c\u4e00\u90e8\u5206\uff1aOther \u5bb6\u65cf\u903b\u8f91 ===================== *\/\n    (function(){\n      var circlePool = root.querySelector('#proCirclePool');\n      var otherBtns = root.querySelectorAll('#proOtherBtns .btn');\n      var otherBadge = root.querySelector('#proOtherBadge');\n      var otherText = root.querySelector('#proOtherText');\n      var otherExample = root.querySelector('#proOtherExample');\n      if(!circlePool || !otherBadge){return;}\n\n      var scenarios = {\n        another: {\n          badge: '\u6cdb\u6307 \u00b7 \u5355\u6570',\n          text: '<strong>another<\/strong> = an + other\uff0c\u6307\u4ee3\u4e0d\u7279\u5b9a\u8303\u56f4\u5185\u7684\u201c\u53e6\u4e00\u4e2a\/\u518d\u4e00\u4e2a\u201d\u3002',\n          example: '\u4f8b\u53e5\uff1aThis glass is broken. Give me <strong>another<\/strong>.',\n          total: 4,\n          special: [2],\n          locked: [0,1,3]\n        },\n        other: {\n          badge: '\u5f62\u5bb9\u8bcd \u00b7 \u590d\u6570\/\u4e0d\u53ef\u6570',\n          text: '<strong>other<\/strong> \u662f\u5f62\u5bb9\u8bcd\uff0c\u540e\u9762\u5fc5\u987b\u63a5\u540d\u8bcd\uff08\u590d\u6570\u6216\u4e0d\u53ef\u6570\uff09\uff0c\u8868\u793a\u201c\u5176\u4ed6\u7684\u2026\u2026\u201d\u3002',\n          example: '\u4f8b\u53e5\uff1aI need to check <strong>other<\/strong> options.',\n          total: 4,\n          special: [2,3],\n          locked: [0,1]\n        },\n        others: {\n          badge: '\u4ee3\u8bcd \u00b7 \u6cdb\u6307',\n          text: '<strong>others<\/strong> \u662f\u4ee3\u8bcd\uff0c\u76f8\u5f53\u4e8e \u201cother + \u590d\u6570\u540d\u8bcd\u201d\uff0c\u6cdb\u6307\u201c\u5176\u4ed6\u4eba\/\u7269\u201d\u3002',\n          example: '\u4f8b\u53e5\uff1aSome students like math; <strong>others<\/strong> prefer English.',\n          total: 4,\n          special: [2,3],\n          locked: [0,1]\n        },\n        theOther: {\n          badge: '\u7279\u6307 \u00b7 \u4e24\u8005\u4e4b\u4e00',\n          text: '<strong>the other<\/strong> \u7279\u6307\u4e24\u8005\u4e2d\u7684\u201c\u53e6\u4e00\u4e2a\u201d\uff0c\u5e38\u4e0e one \u642d\u914d\uff1aone... the other...',\n          example: '\u4f8b\u53e5\uff1aShe has two sweaters; one is red and <strong>the other<\/strong> is white.',\n          total: 2,\n          special: [1],\n          locked: [0]\n        },\n        theOthers: {\n          badge: '\u7279\u6307 \u00b7 \u5176\u4f59\u5168\u90e8',\n          text: '<strong>the others<\/strong> \u7279\u6307\u67d0\u4e00\u8303\u56f4\u5185\u201c\u5269\u4e0b\u7684\u5168\u90e8\u201d\uff0c\u662f the other \u7684\u590d\u6570\u5f62\u5f0f\u3002',\n          example: '\u4f8b\u53e5\uff1aFive students are here; <strong>the others<\/strong> are absent.',\n          total: 5,\n          special: [2,3,4],\n          locked: [0,1]\n        }\n      };\n\n      function renderCircles(key){\n        var data = scenarios[key];\n        circlePool.innerHTML = '';\n        for(var i=0;i<data.total;i++){\n          var c = document.createElement('div');\n          c.className = 'circle';\n          c.textContent = i + 1;\n          if(data.special.indexOf(i) >= 0){ c.classList.add('special'); }\n          else if(data.locked.indexOf(i) >= 0){ c.classList.add('locked'); }\n          else { c.classList.add('default'); }\n          circlePool.appendChild(c);\n        }\n      }\n\n      function updateOtherUI(key){\n        var data = scenarios[key];\n        otherBadge.textContent = data.badge;\n        otherText.innerHTML = data.text;\n        otherExample.innerHTML = data.example;\n        renderCircles(key);\n        for(var i=0;i<otherBtns.length;i++){\n          otherBtns[i].classList.toggle('active', otherBtns[i].getAttribute('data-scenario') === key);\n        }\n      }\n\n      for(var i=0;i<otherBtns.length;i++){\n        (function(btn){\n          btn.addEventListener('click', function(){\n            updateOtherUI(btn.getAttribute('data-scenario'));\n          });\n        })(otherBtns[i]);\n      }\n\n      updateOtherUI('another');\n    })();\n\n    \/* ===================== \u7b2c\u4e8c\u90e8\u5206\uff1aBoth\/Either\/Neither\/None \u903b\u8f91 ===================== *\/\n    (function(){\n      var scopeBtns = root.querySelectorAll('.scope-btn');\n      var quantBtns = root.querySelectorAll('#proQuantBtns .btn');\n      var quantVisual = root.querySelector('#proQuantVisual');\n      var quantWord = root.querySelector('#proQuantWord');\n      var quantDesc = root.querySelector('#proQuantDesc');\n      if(!quantVisual || !quantWord){return;}\n\n      var currentScope = 2;\n      var currentQuant = 'both';\n\n      function getVisualData(scope, quant){\n        var total = scope === 2 ? 2 : 4;\n        var items = [];\n        for(var i=0;i<total;i++){\n          items.push({ id: i, label: String.fromCharCode(65 + i) });\n        }\n        var selectedIds = [];\n        var dimmedIds = [];\n\n        if(quant === 'both'){\n          if(scope === 2){ selectedIds = [0,1]; }\n          else { selectedIds = items.map(function(x){return x.id;}); }\n        } else if(quant === 'either'){\n          if(scope === 2){ selectedIds = [0]; dimmedIds = [1]; }\n          else { selectedIds = [0]; dimmedIds = [1,2,3]; }\n        } else if(quant === 'neither'){\n          if(scope === 2){ dimmedIds = [0,1]; }\n          else { dimmedIds = items.map(function(x){return x.id;}); }\n        } else if(quant === 'none'){\n          dimmedIds = items.map(function(x){return x.id;});\n        }\n        return { items: items, selectedIds: selectedIds, dimmedIds: dimmedIds };\n      }\n\n      function getText(scope, quant){\n        if(quant === 'both'){\n          if(scope === 2){ return { word:'Both', desc:'\u4e24\u8005\u90fd\u2026\u2026\uff08\u80af\u5b9a\uff09' }; }\n          return { word:'Both', desc:'\u6ce8\u610f\uff1aBoth \u4ec5\u7528\u4e8e\u4e24\u8005\uff0c\u4e0d\u80fd\u7528\u4e8e\u4e09\u8005\u53ca\u4ee5\u4e0a\uff08\u4e09\u8005\u4ee5\u4e0a\u7528 all\uff09\u3002' };\n        } else if(quant === 'either'){\n          if(scope === 2){ return { word:'Either', desc:'\u4e24\u8005\u4e2d\u7684\u4efb\u610f\u4e00\u4e2a\uff08\u80af\u5b9a\uff09' }; }\n          return { word:'Either', desc:'\u6ce8\u610f\uff1aEither \u901a\u5e38\u6307\u4e24\u8005\u4e2d\u4efb\u4e00\u4e2a\uff1b\u4e09\u8005\u4ee5\u4e0a\u201c\u4efb\u610f\u4e00\u4e2a\u201d\u5e38\u7528 any\u3002' };\n        } else if(quant === 'neither'){\n          if(scope === 2){ return { word:'Neither', desc:'\u4e24\u8005\u90fd\u4e0d\u2026\u2026\uff08\u5426\u5b9a\uff09' }; }\n          return { word:'Neither', desc:'\u6ce8\u610f\uff1aNeither \u4ec5\u7528\u4e8e\u4e24\u8005\u201c\u90fd\u4e0d\u201d\uff1b\u4e09\u8005\u4ee5\u4e0a\u201c\u90fd\u4e0d\u201d\u7528 none\u3002' };\n        } else if(quant === 'none'){\n          if(scope === 2){ return { word:'None', desc:'\u6ce8\u610f\uff1aNone \u901a\u5e38\u7528\u4e8e\u4e09\u8005\u6216\u4e09\u8005\u4ee5\u4e0a\u201c\u90fd\u4e0d\u201d\uff1b\u4e24\u8005\u201c\u90fd\u4e0d\u201d\u7528 neither\u3002' }; }\n          return { word:'None', desc:'\u4e09\u8005\u6216\u4e09\u8005\u4ee5\u4e0a\u201c\u90fd\u4e0d\u2026\u2026\uff08\u5426\u5b9a\uff09\u201d' };\n        }\n        return { word:'', desc:'' };\n      }\n\n      function render(){\n        var data = getVisualData(currentScope, currentQuant);\n        quantVisual.innerHTML = '';\n        data.items.forEach(function(item){\n          var div = document.createElement('div');\n          div.className = 'quant-item';\n          if(data.selectedIds.indexOf(item.id) >= 0){ div.classList.add('selected'); }\n          else if(data.dimmedIds.indexOf(item.id) >= 0){ div.classList.add('dimmed'); }\n\n          var icon = document.createElement('div');\n          icon.className = 'quant-icon';\n          icon.textContent = item.label;\n\n          var label = document.createElement('div');\n          label.className = 'quant-label';\n          label.textContent = '\u9879\u76ee ' + item.label;\n\n          div.appendChild(icon);\n          div.appendChild(label);\n          quantVisual.appendChild(div);\n        });\n\n        var td = getText(currentScope, currentQuant);\n        quantWord.textContent = td.word;\n        quantDesc.textContent = td.desc;\n\n        quantBtns.forEach(function(btn){\n          btn.classList.toggle('active', btn.getAttribute('data-quant') === currentQuant);\n        });\n        scopeBtns.forEach(function(btn){\n          btn.classList.toggle('active', parseInt(btn.getAttribute('data-scope'),10) === currentScope);\n        });\n      }\n\n      scopeBtns.forEach(function(btn){\n        btn.addEventListener('click', function(){\n          currentScope = parseInt(btn.getAttribute('data-scope'),10);\n          render();\n        });\n      });\n\n      quantBtns.forEach(function(btn){\n        btn.addEventListener('click', function(){\n          currentQuant = btn.getAttribute('data-quant');\n          render();\n        });\n      });\n\n      render();\n    })();\n  }\n\n  function boot(){\n    var r=document.querySelector('.pro-wrap:not([data-pro-ready=\"1\"])');\n    if(r){r.setAttribute('data-pro-ready','1');init(r);}\n  }\n  boot();\n  window.__proTimer=setInterval(boot,1000);\n})();\n\n<\/script>\n<\/div>\n<\/section>\n\n<section class=\"lgs-day\" id=\"lgs-day-start\">\n<h2>\u4ece\u8fd9\u91cc\u5f00\u59cb<\/h2>\n<div class=\"lgs-body\">\n<p>\u8fd9\u662f Learning Summary \u7684\u8d77\u70b9\u3002\u4e4b\u540e\u6bcf\u5929\u7684\u5b66\u4e60\u8bb0\u5f55\u4f1a\u63d2\u5230\u5b83\u4e0a\u9762\uff0c\u6700\u65b0\u7684\u5728\u6700\u524d\u3002<\/p>\n<\/div>\n<\/section>\n\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u6bcf\u5929\u5b66\u4e60\u5185\u5bb9\u7684\u8bb0\u5f55\uff0c\u6309\u65e5\u671f\u6574\u7406\uff0c\u542b\u6613\u9519\u70b9\u548c\u6b21\u65e5\u8ba1\u5212\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-263","post","type-post","status-publish","format-standard","hentry","category-4"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/jennyp.xyz\/index.php\/wp-json\/wp\/v2\/posts\/263","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jennyp.xyz\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jennyp.xyz\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jennyp.xyz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jennyp.xyz\/index.php\/wp-json\/wp\/v2\/comments?post=263"}],"version-history":[{"count":19,"href":"https:\/\/jennyp.xyz\/index.php\/wp-json\/wp\/v2\/posts\/263\/revisions"}],"predecessor-version":[{"id":284,"href":"https:\/\/jennyp.xyz\/index.php\/wp-json\/wp\/v2\/posts\/263\/revisions\/284"}],"wp:attachment":[{"href":"https:\/\/jennyp.xyz\/index.php\/wp-json\/wp\/v2\/media?parent=263"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jennyp.xyz\/index.php\/wp-json\/wp\/v2\/categories?post=263"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jennyp.xyz\/index.php\/wp-json\/wp\/v2\/tags?post=263"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}