diff --git a/index.html b/index.html index 78bb417..2bd1a23 100644 --- a/index.html +++ b/index.html @@ -4,10 +4,7 @@ - + 台灣百家珍釀造食品股份有限公司 @@ -20,7 +17,7 @@
- + diff --git a/public/autodesk/extensions/BimWalk/BimWalk.min.js b/public/autodesk/extensions/BimWalk/BimWalk.min.js new file mode 100644 index 0000000..3ce7127 --- /dev/null +++ b/public/autodesk/extensions/BimWalk/BimWalk.min.js @@ -0,0 +1,18 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var A={1759:(A,t,i)=>{"use strict";i.d(t,{A:()=>s});var e=i(1354),o=i.n(e),n=i(6314),a=i.n(n)()(o());a.push([A.id,'.adsk-viewing-viewer .mobile-joystick.visible{display:block}.adsk-viewing-viewer .mobile-joystick{pointer-events:none;display:none;position:fixed;z-index:10}.adsk-viewing-viewer .mobile-joystick-handle.transition{transition:.2s}.adsk-viewing-viewer .dark-theme .mobile-joystick-handle{border-color:rgba(0,0,0,.4)}.adsk-viewing-viewer .mobile-joystick-handle{pointer-events:all;border-radius:100%;border-radius:100%;border:20px solid;border-color:rgba(180,180,180,.55);box-sizing:border-box;display:inherit;position:fixed;z-index:12}.adsk-viewing-viewer .dark-theme .mobile-joystick-inner-circle{background-color:#3c3c3c}.adsk-viewing-viewer .mobile-joystick-inner-circle{width:100%;height:100%;display:block;position:absolute;background-color:rgba(255,255,255,.5);border-radius:100%}.adsk-viewing-viewer .dark-theme .mobile-joystick-back-circle{background:rgba(0,0,0,.7)}.adsk-viewing-viewer .mobile-joystick-back-circle{display:block;width:100%;height:100%;position:absolute;border-radius:100%;background:rgba(255,255,255,.8);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.adsk-viewing-viewer .mobile-joystick-arrow.active{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxNiAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE1LjE1NjEgOS4xNDk3TDE1LjE0OTUgOS4xNTYyN0wxNS4xNDMzIDkuMTYzMDdDMTUuMDQxMiA5LjI3MzgzIDE0LjkxOSA5LjM2MDI2IDE0Ljc4NDkgOS40MTc4MkMxNC42NTA4IDkuNDc1MzcgMTQuNTA3MyA5LjUwMzA5IDE0LjM2MzQgOS40OTk3M0wxNC4zNjM0IDkuNDk5NTNMMTQuMzQ5MyA5LjQ5OTZDMTQuMjAyNyA5LjUwMDMxIDE0LjA1NzEgOS40NzA3OCAxMy45MjA4IDkuNDEyMjVDMTMuNzg0NCA5LjM1MzcgMTMuNjU5NSA5LjI2NzA4IDEzLjU1NCA5LjE1NjU4TDEzLjU1MjkgOS4xNTU0M0wxMC4wMDIxIDUuNDYwMzhMMTAuMDAwOSA1LjQ1ODkyTDkuOTU5NTEgNS40MDg0QzkuOTIzOTQgNS4zNjUyOCA5Ljg3Mjk4IDUuMzA0MTEgOS44MTA2MiA1LjIzMDg4QzkuNjg2MzEgNS4wODQ5MSA5LjUxNDc2IDQuODg4NzIgOS4zMjgyMyA0LjY5MTE3QzkuMTQzODQgNC40OTU4OSA4LjkzNDk4IDQuMjg4NzUgOC43MzcxMiA0LjEyNjg1QzguNjM4NyA0LjA0NjMyIDguNTMxNiAzLjk2NzUyIDguNDIzMDIgMy45MDY0NkM4LjMyNzU0IDMuODUyNzYgOC4xNzAyNSAzLjc3NzE5IDcuOTg2NTcgMy43NzcxOUM3LjgwMjg5IDMuNzc3MTkgNy42NDU2IDMuODUyNzYgNy41NTAxMiAzLjkwNjQ2QzcuNDQxNTQgMy45Njc1MiA3LjMzNDQ0IDQuMDQ2MzIgNy4yMzYwMiA0LjEyNjg1QzcuMDM4MTYgNC4yODg3NSA2LjgyOTMgNC40OTU4OSA2LjY0NDkxIDQuNjkxMTdDNi40NTgzOCA0Ljg4ODcyIDYuMjg2ODMgNS4wODQ5MSA2LjE2MjUzIDUuMjMwODhDNi4xMDAxNyA1LjMwNDExIDYuMDQ5MjEgNS4zNjUyOCA2LjAxMzYzIDUuNDA4NEw1Ljk3MjIgNS40NTg5Mkw1Ljk3MTQ5IDUuNDU5NzhMMi40MDYwNyA5LjE0NzQzQzIuMTg5NTkgOS4zNTMyMSAxLjkwODE3IDkuNDYyMzMgMS42MjA2OCA5LjQ1NzA5QzEuMzMwNTYgOS40NTE3OSAxLjA1MDI5IDkuMzMwMzEgMC44Mzk5NSA5LjExMjc2QzAuNjI5MTAyIDguODk0NjkgMC41MDU1NiA4LjU5NzEzIDAuNTAwMTgzIDguMjgxOTRDMC40OTQ4NTMgNy45Njk1IDAuNjA2MTU3IDcuNjY5ODQgMC44MDY0MTIgNy40NDQ0OUw3LjE4NDU4IDAuODQ3NjYxQzcuMjkyMTQgMC43MzkzODcgNy40MTczNiAwLjY1MzQ4NCA3LjU1MzUzIDAuNTkzNjA1TDcuNTUzNTMgMC41OTM2MTVMNy41NTY1NiAwLjU5MjI1N0M3LjY5MjkgMC41MzEyMTYgNy44MzkxOSAwLjUgNy45ODY1NyAwLjVDOC4xMzM5NSAwLjUgOC4yODAyNCAwLjUzMTIxNiA4LjQxNjU4IDAuNTkyMjU2TDguNDE2NTcgMC41OTIyNjdMOC40MTk2MiAwLjU5MzYwNUM4LjU1NTY1IDAuNjUzNDI4IDguNjgwNzYgMC43MzkyMjQgOC43ODgyNSAwLjg0NzM1NEwxNS4xNTA5IDcuNDUwNzZMMTUuMTUwOSA3LjQ1MDhMMTUuMTU2MSA3LjQ1NjAxQzE1LjI2MzggNy41NjQ2MSAxNS4zNTA0IDcuNjk1MzYgMTUuNDA5OCA3Ljg0MTAxQzE1LjQ2OTIgNy45ODY2OSAxNS41IDguMTQzNzcgMTUuNSA4LjMwMjg2QzE1LjUgOC40NjE5NCAxNS40NjkyIDguNjE5MDMgMTUuNDA5OCA4Ljc2NDdDMTUuMzUwNCA4LjkxMDM1IDE1LjI2MzggOS4wNDExIDE1LjE1NjEgOS4xNDk3WiIgZmlsbD0iIzA2OTZENyIvPgo8L3N2Zz4K")}.adsk-viewing-viewer .mobile-joystick-arrow{position:absolute;background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxNiAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE1LjE1NjEgOS4xNDk3TDE1LjE0OTUgOS4xNTYyN0wxNS4xNDMzIDkuMTYzMDdDMTUuMDQxMiA5LjI3MzgzIDE0LjkxOSA5LjM2MDI2IDE0Ljc4NDkgOS40MTc4MkMxNC42NTA4IDkuNDc1MzcgMTQuNTA3MyA5LjUwMzA5IDE0LjM2MzQgOS40OTk3M0wxNC4zNjM0IDkuNDk5NTNMMTQuMzQ5MyA5LjQ5OTZDMTQuMjAyNyA5LjUwMDMxIDE0LjA1NzEgOS40NzA3OCAxMy45MjA4IDkuNDEyMjVDMTMuNzg0NCA5LjM1MzcgMTMuNjU5NSA5LjI2NzA4IDEzLjU1NCA5LjE1NjU4TDEzLjU1MjkgOS4xNTU0M0wxMC4wMDIxIDUuNDYwMzhMMTAuMDAwOSA1LjQ1ODkyTDkuOTU5NTEgNS40MDg0QzkuOTIzOTQgNS4zNjUyOCA5Ljg3Mjk4IDUuMzA0MTEgOS44MTA2MiA1LjIzMDg4QzkuNjg2MzEgNS4wODQ5MSA5LjUxNDc2IDQuODg4NzIgOS4zMjgyMyA0LjY5MTE3QzkuMTQzODQgNC40OTU4OSA4LjkzNDk4IDQuMjg4NzUgOC43MzcxMiA0LjEyNjg1QzguNjM4NyA0LjA0NjMyIDguNTMxNiAzLjk2NzUyIDguNDIzMDIgMy45MDY0NkM4LjMyNzU0IDMuODUyNzYgOC4xNzAyNSAzLjc3NzE5IDcuOTg2NTcgMy43NzcxOUM3LjgwMjg5IDMuNzc3MTkgNy42NDU2IDMuODUyNzYgNy41NTAxMiAzLjkwNjQ2QzcuNDQxNTQgMy45Njc1MiA3LjMzNDQ0IDQuMDQ2MzIgNy4yMzYwMiA0LjEyNjg1QzcuMDM4MTYgNC4yODg3NSA2LjgyOTMgNC40OTU4OSA2LjY0NDkxIDQuNjkxMTdDNi40NTgzOCA0Ljg4ODcyIDYuMjg2ODMgNS4wODQ5MSA2LjE2MjUzIDUuMjMwODhDNi4xMDAxNyA1LjMwNDExIDYuMDQ5MjEgNS4zNjUyOCA2LjAxMzYzIDUuNDA4NEw1Ljk3MjIgNS40NTg5Mkw1Ljk3MTQ5IDUuNDU5NzhMMi40MDYwNyA5LjE0NzQzQzIuMTg5NTkgOS4zNTMyMSAxLjkwODE3IDkuNDYyMzMgMS42MjA2OCA5LjQ1NzA5QzEuMzMwNTYgOS40NTE3OSAxLjA1MDI5IDkuMzMwMzEgMC44Mzk5NSA5LjExMjc2QzAuNjI5MTAyIDguODk0NjkgMC41MDU1NiA4LjU5NzEzIDAuNTAwMTgzIDguMjgxOTRDMC40OTQ4NTMgNy45Njk1IDAuNjA2MTU3IDcuNjY5ODQgMC44MDY0MTIgNy40NDQ0OUw3LjE4NDU4IDAuODQ3NjYxQzcuMjkyMTQgMC43MzkzODcgNy40MTczNiAwLjY1MzQ4NCA3LjU1MzUzIDAuNTkzNjA1TDcuNTUzNTMgMC41OTM2MTVMNy41NTY1NiAwLjU5MjI1N0M3LjY5MjkgMC41MzEyMTYgNy44MzkxOSAwLjUgNy45ODY1NyAwLjVDOC4xMzM5NSAwLjUgOC4yODAyNCAwLjUzMTIxNiA4LjQxNjU4IDAuNTkyMjU2TDguNDE2NTcgMC41OTIyNjdMOC40MTk2MiAwLjU5MzYwNUM4LjU1NTY1IDAuNjUzNDI4IDguNjgwNzYgMC43MzkyMjQgOC43ODgyNSAwLjg0NzM1NEwxNS4xNTA5IDcuNDUwNzZMMTUuMTUwOSA3LjQ1MDhMMTUuMTU2MSA3LjQ1NjAxQzE1LjI2MzggNy41NjQ2MSAxNS4zNTA0IDcuNjk1MzYgMTUuNDA5OCA3Ljg0MTAxQzE1LjQ2OTIgNy45ODY2OSAxNS41IDguMTQzNzcgMTUuNSA4LjMwMjg2QzE1LjUgOC40NjE5NCAxNS40NjkyIDguNjE5MDMgMTUuNDA5OCA4Ljc2NDdDMTUuMzUwNCA4LjkxMDM1IDE1LjI2MzggOS4wNDExIDE1LjE1NjEgOS4xNDk3WiIgZmlsbD0iI0JCQkJCQiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-size:contain;z-index:11;width:20px;height:20px}.adsk-viewing-viewer .mobile-joystick-arrow.arrow-up{left:50%;transform:translate(-50%, 50%)}.adsk-viewing-viewer .mobile-joystick-arrow.arrow-right{left:100%;top:50%;transform:translate(-150%, -50%) rotate(90deg)}.adsk-viewing-viewer .mobile-joystick-arrow.arrow-down{left:50%;top:100%;transform:translate(-50%, -150%) rotate(180deg)}.adsk-viewing-viewer .mobile-joystick-arrow.arrow-left{top:50%;transform:translate(50%, -50%) rotate(270deg)}',"",{version:3,sources:["webpack://./extensions/BimWalk/UI/NavigatorMobileJoystick.css"],names:[],mappings:"AAAA,8CAA8C,aAAa,CAAC,sCAAsC,mBAAmB,CAAC,YAAY,CAAC,cAAc,CAAC,UAAU,CAAC,wDAAwD,cAAc,CAAC,yDAAyD,2BAA2B,CAAC,6CAA6C,kBAAkB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,kCAAkC,CAAC,qBAAqB,CAAC,eAAe,CAAC,cAAc,CAAC,UAAU,CAAC,+DAA+D,wBAAwB,CAAC,mDAAmD,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,qCAAqC,CAAC,kBAAkB,CAAC,8DAA8D,yBAAyB,CAAC,kDAAkD,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,+BAA+B,CAAC,0BAA0B,CAAC,kCAAkC,CAAC,mDAAmD,kvEAAkvE,CAAC,4CAA4C,iBAAiB,CAAC,kvEAAkvE,CAAC,2BAA2B,CAAC,uBAAuB,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,qDAAqD,QAAQ,CAAC,8BAA8B,CAAC,wDAAwD,SAAS,CAAC,OAAO,CAAC,8CAA8C,CAAC,uDAAuD,QAAQ,CAAC,QAAQ,CAAC,+CAA+C,CAAC,uDAAuD,OAAO,CAAC,6CAA6C",sourcesContent:['.adsk-viewing-viewer .mobile-joystick.visible{display:block}.adsk-viewing-viewer .mobile-joystick{pointer-events:none;display:none;position:fixed;z-index:10}.adsk-viewing-viewer .mobile-joystick-handle.transition{transition:.2s}.adsk-viewing-viewer .dark-theme .mobile-joystick-handle{border-color:rgba(0,0,0,.4)}.adsk-viewing-viewer .mobile-joystick-handle{pointer-events:all;border-radius:100%;border-radius:100%;border:20px solid;border-color:rgba(180,180,180,.55);box-sizing:border-box;display:inherit;position:fixed;z-index:12}.adsk-viewing-viewer .dark-theme .mobile-joystick-inner-circle{background-color:#3c3c3c}.adsk-viewing-viewer .mobile-joystick-inner-circle{width:100%;height:100%;display:block;position:absolute;background-color:rgba(255,255,255,.5);border-radius:100%}.adsk-viewing-viewer .dark-theme .mobile-joystick-back-circle{background:rgba(0,0,0,.7)}.adsk-viewing-viewer .mobile-joystick-back-circle{display:block;width:100%;height:100%;position:absolute;border-radius:100%;background:rgba(255,255,255,.8);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.adsk-viewing-viewer .mobile-joystick-arrow.active{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxNiAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE1LjE1NjEgOS4xNDk3TDE1LjE0OTUgOS4xNTYyN0wxNS4xNDMzIDkuMTYzMDdDMTUuMDQxMiA5LjI3MzgzIDE0LjkxOSA5LjM2MDI2IDE0Ljc4NDkgOS40MTc4MkMxNC42NTA4IDkuNDc1MzcgMTQuNTA3MyA5LjUwMzA5IDE0LjM2MzQgOS40OTk3M0wxNC4zNjM0IDkuNDk5NTNMMTQuMzQ5MyA5LjQ5OTZDMTQuMjAyNyA5LjUwMDMxIDE0LjA1NzEgOS40NzA3OCAxMy45MjA4IDkuNDEyMjVDMTMuNzg0NCA5LjM1MzcgMTMuNjU5NSA5LjI2NzA4IDEzLjU1NCA5LjE1NjU4TDEzLjU1MjkgOS4xNTU0M0wxMC4wMDIxIDUuNDYwMzhMMTAuMDAwOSA1LjQ1ODkyTDkuOTU5NTEgNS40MDg0QzkuOTIzOTQgNS4zNjUyOCA5Ljg3Mjk4IDUuMzA0MTEgOS44MTA2MiA1LjIzMDg4QzkuNjg2MzEgNS4wODQ5MSA5LjUxNDc2IDQuODg4NzIgOS4zMjgyMyA0LjY5MTE3QzkuMTQzODQgNC40OTU4OSA4LjkzNDk4IDQuMjg4NzUgOC43MzcxMiA0LjEyNjg1QzguNjM4NyA0LjA0NjMyIDguNTMxNiAzLjk2NzUyIDguNDIzMDIgMy45MDY0NkM4LjMyNzU0IDMuODUyNzYgOC4xNzAyNSAzLjc3NzE5IDcuOTg2NTcgMy43NzcxOUM3LjgwMjg5IDMuNzc3MTkgNy42NDU2IDMuODUyNzYgNy41NTAxMiAzLjkwNjQ2QzcuNDQxNTQgMy45Njc1MiA3LjMzNDQ0IDQuMDQ2MzIgNy4yMzYwMiA0LjEyNjg1QzcuMDM4MTYgNC4yODg3NSA2LjgyOTMgNC40OTU4OSA2LjY0NDkxIDQuNjkxMTdDNi40NTgzOCA0Ljg4ODcyIDYuMjg2ODMgNS4wODQ5MSA2LjE2MjUzIDUuMjMwODhDNi4xMDAxNyA1LjMwNDExIDYuMDQ5MjEgNS4zNjUyOCA2LjAxMzYzIDUuNDA4NEw1Ljk3MjIgNS40NTg5Mkw1Ljk3MTQ5IDUuNDU5NzhMMi40MDYwNyA5LjE0NzQzQzIuMTg5NTkgOS4zNTMyMSAxLjkwODE3IDkuNDYyMzMgMS42MjA2OCA5LjQ1NzA5QzEuMzMwNTYgOS40NTE3OSAxLjA1MDI5IDkuMzMwMzEgMC44Mzk5NSA5LjExMjc2QzAuNjI5MTAyIDguODk0NjkgMC41MDU1NiA4LjU5NzEzIDAuNTAwMTgzIDguMjgxOTRDMC40OTQ4NTMgNy45Njk1IDAuNjA2MTU3IDcuNjY5ODQgMC44MDY0MTIgNy40NDQ0OUw3LjE4NDU4IDAuODQ3NjYxQzcuMjkyMTQgMC43MzkzODcgNy40MTczNiAwLjY1MzQ4NCA3LjU1MzUzIDAuNTkzNjA1TDcuNTUzNTMgMC41OTM2MTVMNy41NTY1NiAwLjU5MjI1N0M3LjY5MjkgMC41MzEyMTYgNy44MzkxOSAwLjUgNy45ODY1NyAwLjVDOC4xMzM5NSAwLjUgOC4yODAyNCAwLjUzMTIxNiA4LjQxNjU4IDAuNTkyMjU2TDguNDE2NTcgMC41OTIyNjdMOC40MTk2MiAwLjU5MzYwNUM4LjU1NTY1IDAuNjUzNDI4IDguNjgwNzYgMC43MzkyMjQgOC43ODgyNSAwLjg0NzM1NEwxNS4xNTA5IDcuNDUwNzZMMTUuMTUwOSA3LjQ1MDhMMTUuMTU2MSA3LjQ1NjAxQzE1LjI2MzggNy41NjQ2MSAxNS4zNTA0IDcuNjk1MzYgMTUuNDA5OCA3Ljg0MTAxQzE1LjQ2OTIgNy45ODY2OSAxNS41IDguMTQzNzcgMTUuNSA4LjMwMjg2QzE1LjUgOC40NjE5NCAxNS40NjkyIDguNjE5MDMgMTUuNDA5OCA4Ljc2NDdDMTUuMzUwNCA4LjkxMDM1IDE1LjI2MzggOS4wNDExIDE1LjE1NjEgOS4xNDk3WiIgZmlsbD0iIzA2OTZENyIvPgo8L3N2Zz4K")}.adsk-viewing-viewer .mobile-joystick-arrow{position:absolute;background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTAiIHZpZXdCb3g9IjAgMCAxNiAxMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE1LjE1NjEgOS4xNDk3TDE1LjE0OTUgOS4xNTYyN0wxNS4xNDMzIDkuMTYzMDdDMTUuMDQxMiA5LjI3MzgzIDE0LjkxOSA5LjM2MDI2IDE0Ljc4NDkgOS40MTc4MkMxNC42NTA4IDkuNDc1MzcgMTQuNTA3MyA5LjUwMzA5IDE0LjM2MzQgOS40OTk3M0wxNC4zNjM0IDkuNDk5NTNMMTQuMzQ5MyA5LjQ5OTZDMTQuMjAyNyA5LjUwMDMxIDE0LjA1NzEgOS40NzA3OCAxMy45MjA4IDkuNDEyMjVDMTMuNzg0NCA5LjM1MzcgMTMuNjU5NSA5LjI2NzA4IDEzLjU1NCA5LjE1NjU4TDEzLjU1MjkgOS4xNTU0M0wxMC4wMDIxIDUuNDYwMzhMMTAuMDAwOSA1LjQ1ODkyTDkuOTU5NTEgNS40MDg0QzkuOTIzOTQgNS4zNjUyOCA5Ljg3Mjk4IDUuMzA0MTEgOS44MTA2MiA1LjIzMDg4QzkuNjg2MzEgNS4wODQ5MSA5LjUxNDc2IDQuODg4NzIgOS4zMjgyMyA0LjY5MTE3QzkuMTQzODQgNC40OTU4OSA4LjkzNDk4IDQuMjg4NzUgOC43MzcxMiA0LjEyNjg1QzguNjM4NyA0LjA0NjMyIDguNTMxNiAzLjk2NzUyIDguNDIzMDIgMy45MDY0NkM4LjMyNzU0IDMuODUyNzYgOC4xNzAyNSAzLjc3NzE5IDcuOTg2NTcgMy43NzcxOUM3LjgwMjg5IDMuNzc3MTkgNy42NDU2IDMuODUyNzYgNy41NTAxMiAzLjkwNjQ2QzcuNDQxNTQgMy45Njc1MiA3LjMzNDQ0IDQuMDQ2MzIgNy4yMzYwMiA0LjEyNjg1QzcuMDM4MTYgNC4yODg3NSA2LjgyOTMgNC40OTU4OSA2LjY0NDkxIDQuNjkxMTdDNi40NTgzOCA0Ljg4ODcyIDYuMjg2ODMgNS4wODQ5MSA2LjE2MjUzIDUuMjMwODhDNi4xMDAxNyA1LjMwNDExIDYuMDQ5MjEgNS4zNjUyOCA2LjAxMzYzIDUuNDA4NEw1Ljk3MjIgNS40NTg5Mkw1Ljk3MTQ5IDUuNDU5NzhMMi40MDYwNyA5LjE0NzQzQzIuMTg5NTkgOS4zNTMyMSAxLjkwODE3IDkuNDYyMzMgMS42MjA2OCA5LjQ1NzA5QzEuMzMwNTYgOS40NTE3OSAxLjA1MDI5IDkuMzMwMzEgMC44Mzk5NSA5LjExMjc2QzAuNjI5MTAyIDguODk0NjkgMC41MDU1NiA4LjU5NzEzIDAuNTAwMTgzIDguMjgxOTRDMC40OTQ4NTMgNy45Njk1IDAuNjA2MTU3IDcuNjY5ODQgMC44MDY0MTIgNy40NDQ0OUw3LjE4NDU4IDAuODQ3NjYxQzcuMjkyMTQgMC43MzkzODcgNy40MTczNiAwLjY1MzQ4NCA3LjU1MzUzIDAuNTkzNjA1TDcuNTUzNTMgMC41OTM2MTVMNy41NTY1NiAwLjU5MjI1N0M3LjY5MjkgMC41MzEyMTYgNy44MzkxOSAwLjUgNy45ODY1NyAwLjVDOC4xMzM5NSAwLjUgOC4yODAyNCAwLjUzMTIxNiA4LjQxNjU4IDAuNTkyMjU2TDguNDE2NTcgMC41OTIyNjdMOC40MTk2MiAwLjU5MzYwNUM4LjU1NTY1IDAuNjUzNDI4IDguNjgwNzYgMC43MzkyMjQgOC43ODgyNSAwLjg0NzM1NEwxNS4xNTA5IDcuNDUwNzZMMTUuMTUwOSA3LjQ1MDhMMTUuMTU2MSA3LjQ1NjAxQzE1LjI2MzggNy41NjQ2MSAxNS4zNTA0IDcuNjk1MzYgMTUuNDA5OCA3Ljg0MTAxQzE1LjQ2OTIgNy45ODY2OSAxNS41IDguMTQzNzcgMTUuNSA4LjMwMjg2QzE1LjUgOC40NjE5NCAxNS40NjkyIDguNjE5MDMgMTUuNDA5OCA4Ljc2NDdDMTUuMzUwNCA4LjkxMDM1IDE1LjI2MzggOS4wNDExIDE1LjE1NjEgOS4xNDk3WiIgZmlsbD0iI0JCQkJCQiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-size:contain;z-index:11;width:20px;height:20px}.adsk-viewing-viewer .mobile-joystick-arrow.arrow-up{left:50%;transform:translate(-50%, 50%)}.adsk-viewing-viewer .mobile-joystick-arrow.arrow-right{left:100%;top:50%;transform:translate(-150%, -50%) rotate(90deg)}.adsk-viewing-viewer .mobile-joystick-arrow.arrow-down{left:50%;top:100%;transform:translate(-50%, -150%) rotate(180deg)}.adsk-viewing-viewer .mobile-joystick-arrow.arrow-left{top:50%;transform:translate(50%, -50%) rotate(270deg)}'],sourceRoot:""}]);const s=a},4529:(A,t,i)=>{"use strict";i.d(t,{A:()=>s});var e=i(1354),o=i.n(e),n=i(6314),a=i.n(n)()(o());a.push([A.id,'.adsk-viewing-viewer .bimwalk .speed{min-width:0;min-height:0;display:block;position:absolute;left:calc(50% - 83px);top:30px;width:160px;height:34px;opacity:0;transform:translate(0, 10px);pointer-events:none;webkit-transition:opacity .5s ease-in-out,transform .5s ease-in-out;-moz-transition:opacity .5s ease-in-out,transform .5s ease-in-out;-ms-transition:opacity .5 ease-in-out,transform .5s ease-in-out;-o-transition:opacity .5s ease-in-out,transform .5s ease-in-out;transition:opacity .5s ease-in-out,transform .5s ease-in-out}.adsk-viewing-viewer .bimwalk .speed-text{padding-top:8px}.adsk-viewing-viewer .bimwalk .speed.open{opacity:1;pointer-events:all;transform:translate(0, 0)}.adsk-viewing-viewer .bimwalk .tooltip-info{display:block;position:absolute;right:12px;cursor:pointer;top:10px;opacity:0;width:30px;height:30px;background-color:rgba(34,34,34,.4);box-shadow:0 1px 2px 0 rgba(0,0,0,.2);border-radius:50%;transition:opacity .2s ease;z-index:1;pointer-events:none}.adsk-viewing-viewer .bimwalk .info-icon{display:block;width:24px;height:24px;margin:2.5px 2.5px 2.5px 2.5px;background:url("data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22 standalone%3D%22no%22%3F%3E%3Csvg width%3D%2224px%22 height%3D%2224px%22 viewBox%3D%220 0 24 24%22 version%3D%221.1%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E %3Ctitle%3Eicon-information%3C%2Ftitle%3E %3Cdesc%3ECreated with Sketch.%3C%2Fdesc%3E %3Cdefs%3E%3C%2Fdefs%3E %3Cg id%3D%22Symbols%22 stroke%3D%22none%22 stroke-width%3D%221%22 fill%3D%22none%22 fill-rule%3D%22evenodd%22%3E %3Cg id%3D%22icon-information%22 fill%3D%22%23ffffff%22%3E %3Cpath d%3D%22M13.75%2C11.1484375 C13.75%2C10.796875 13.6328125%2C10.5625 13.515625%2C10.2109375 C13.28125%2C9.625 12.6953125%2C9.2734375 11.875%2C9.2734375 C11.171875%2C9.2734375 10.5859375%2C9.625 10.234375%2C10.2109375 C10.1171875%2C10.5625 10%2C10.796875 10%2C11.1484375 L10%2C18.296875 L10.234375%2C19.234375 C10.5859375%2C19.8203125 11.0546875%2C20.171875 11.875%2C20.171875 C12.6953125%2C20.171875 13.1640625%2C19.8203125 13.515625%2C19.234375 L13.75%2C18.296875 L13.75%2C11.1484375 L13.75%2C11.1484375 Z M13.75%2C5.7578125 C13.75%2C5.2890625 13.515625%2C4.8203125 13.1640625%2C4.46875 C12.8125%2C4.1171875 12.4609375%2C4 11.9921875%2C4 C11.5234375%2C4 11.0546875%2C4.1171875 10.703125%2C4.46875 C10.3515625%2C4.8203125 10.234375%2C5.2890625 10.234375%2C5.7578125 C10.234375%2C6.2265625 10.3515625%2C6.6953125 10.703125%2C7.046875 C11.0546875%2C7.3984375 11.5234375%2C7.515625 11.9921875%2C7.515625 C12.4609375%2C7.515625 12.9296875%2C7.3984375 13.1640625%2C7.046875 C13.6328125%2C6.6953125 13.75%2C6.2265625 13.75%2C5.7578125 Z%22 id%3D%22Shape%22%3E%3C%2Fpath%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E");background-size:contain}.adsk-viewing-viewer .bimwalk .tooltip-info.open{opacity:.7;pointer-events:all}.adsk-viewing-viewer .bimwalk .tooltip-info:hover{opacity:1}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip{position:absolute;top:0;bottom:0;left:0;right:0;opacity:0;pointer-events:none;overflow:auto;z-index:6}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip--open{opacity:1;pointer-events:all}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip *{box-sizing:border-box !important}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__content{position:absolute;top:50%;left:50%;width:620px;height:520px;transform:translate(-50%, -50%)}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__title{font-size:16px;font-weight:bold;display:block;text-align:center;margin-bottom:20px;line-height:19px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__close{position:absolute;top:5px;right:-30px;cursor:pointer}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__row{clear:left;height:135px;margin-bottom:5px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip{border-radius:5px;padding:28px 0;width:100%;position:relative;text-align:center;font-size:0;height:135px;display:block;float:left}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip+.c-bimwalk-tooltip__tip{margin-left:5px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__subtitle{position:absolute;left:14px;top:12px;font-size:14px;font-weight:bold}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__instruction{position:absolute;height:31px;left:14px;bottom:6px;font-size:12px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--walk{padding:26px 14px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--walk svg{height:79px;display:inline-block;margin:0 26px}.adsk-viewing-viewer .bimwalk .bimwalk-tooltip-or{font-size:12px;font-weight:bold;position:absolute;bottom:27px;left:50%;transform:translateX(-50%)}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--updown{padding:53px 0 45px;width:307px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--updown svg{height:37px;display:block;margin:0 auto}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--run{padding:53px 0 45px;width:308px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__shift{height:37px;display:inline-block;margin:0;vertical-align:middle}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__plus{width:11px;display:inline-block;margin:0 16px 0 19px;vertical-align:middle}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__direction{font-size:12px;font-weight:bold;display:inline-block;position:relative;top:4px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--teleport{width:203px;padding:45px 0 44px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--teleport svg{height:46px;display:block;margin:0 auto}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--look{width:204px;padding:37px 0}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--look svg{height:56px;display:block;margin:0 auto}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--speed{width:203px;padding:55px 0 45px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--speed svg{height:36px;display:block;margin:0 auto}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__actions{text-align:center;margin-top:35px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__action{display:inline-block;width:240px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__action+.c-bimwalk-tooltip__action{margin-left:1px}',"",{version:3,sources:["webpack://./extensions/BimWalk/UI/NavigatorSimple.css"],names:[],mappings:"AAAA,qCAAqC,WAAW,CAAC,YAAY,CAAC,aAAa,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,4BAA4B,CAAC,mBAAmB,CAAC,mEAAmE,CAAC,iEAAiE,CAAC,+DAA+D,CAAC,+DAA+D,CAAC,4DAA4D,CAAC,0CAA0C,eAAe,CAAC,0CAA0C,SAAS,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,4CAA4C,aAAa,CAAC,iBAAiB,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,kCAAkC,CAAC,qCAAqC,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,SAAS,CAAC,mBAAmB,CAAC,yCAAyC,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,8BAA8B,CAAC,ytDAAsC,CAAC,uBAAuB,CAAC,iDAAiD,UAAU,CAAC,kBAAkB,CAAC,kDAAkD,SAAS,CAAC,iDAAiD,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,uDAAuD,SAAS,CAAC,kBAAkB,CAAC,mDAAmD,gCAAgC,CAAC,0DAA0D,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,+BAA+B,CAAC,wDAAwD,cAAc,CAAC,gBAAgB,CAAC,aAAa,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,wDAAwD,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,sDAAsD,UAAU,CAAC,YAAY,CAAC,iBAAiB,CAAC,sDAAsD,iBAAiB,CAAC,cAAc,CAAC,UAAU,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,WAAW,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,8EAA8E,eAAe,CAAC,2DAA2D,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,8DAA8D,iBAAiB,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,4DAA4D,iBAAiB,CAAC,gEAAgE,WAAW,CAAC,oBAAoB,CAAC,aAAa,CAAC,kDAAkD,cAAc,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,WAAW,CAAC,QAAQ,CAAC,0BAA0B,CAAC,8DAA8D,mBAAmB,CAAC,WAAW,CAAC,kEAAkE,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,2DAA2D,mBAAmB,CAAC,WAAW,CAAC,wDAAwD,WAAW,CAAC,oBAAoB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,uDAAuD,UAAU,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,4DAA4D,cAAc,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,OAAO,CAAC,gEAAgE,WAAW,CAAC,mBAAmB,CAAC,oEAAoE,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,4DAA4D,WAAW,CAAC,cAAc,CAAC,gEAAgE,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,6DAA6D,WAAW,CAAC,mBAAmB,CAAC,iEAAiE,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,0DAA0D,iBAAiB,CAAC,eAAe,CAAC,yDAAyD,oBAAoB,CAAC,WAAW,CAAC,oFAAoF,eAAe",sourcesContent:['.adsk-viewing-viewer .bimwalk .speed{min-width:0;min-height:0;display:block;position:absolute;left:calc(50% - 83px);top:30px;width:160px;height:34px;opacity:0;transform:translate(0, 10px);pointer-events:none;webkit-transition:opacity .5s ease-in-out,transform .5s ease-in-out;-moz-transition:opacity .5s ease-in-out,transform .5s ease-in-out;-ms-transition:opacity .5 ease-in-out,transform .5s ease-in-out;-o-transition:opacity .5s ease-in-out,transform .5s ease-in-out;transition:opacity .5s ease-in-out,transform .5s ease-in-out}.adsk-viewing-viewer .bimwalk .speed-text{padding-top:8px}.adsk-viewing-viewer .bimwalk .speed.open{opacity:1;pointer-events:all;transform:translate(0, 0)}.adsk-viewing-viewer .bimwalk .tooltip-info{display:block;position:absolute;right:12px;cursor:pointer;top:10px;opacity:0;width:30px;height:30px;background-color:rgba(34,34,34,.4);box-shadow:0 1px 2px 0 rgba(0,0,0,.2);border-radius:50%;transition:opacity .2s ease;z-index:1;pointer-events:none}.adsk-viewing-viewer .bimwalk .info-icon{display:block;width:24px;height:24px;margin:2.5px 2.5px 2.5px 2.5px;background:url("icon-information.svg");background-size:contain}.adsk-viewing-viewer .bimwalk .tooltip-info.open{opacity:.7;pointer-events:all}.adsk-viewing-viewer .bimwalk .tooltip-info:hover{opacity:1}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip{position:absolute;top:0;bottom:0;left:0;right:0;opacity:0;pointer-events:none;overflow:auto;z-index:6}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip--open{opacity:1;pointer-events:all}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip *{box-sizing:border-box !important}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__content{position:absolute;top:50%;left:50%;width:620px;height:520px;transform:translate(-50%, -50%)}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__title{font-size:16px;font-weight:bold;display:block;text-align:center;margin-bottom:20px;line-height:19px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__close{position:absolute;top:5px;right:-30px;cursor:pointer}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__row{clear:left;height:135px;margin-bottom:5px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip{border-radius:5px;padding:28px 0;width:100%;position:relative;text-align:center;font-size:0;height:135px;display:block;float:left}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip+.c-bimwalk-tooltip__tip{margin-left:5px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__subtitle{position:absolute;left:14px;top:12px;font-size:14px;font-weight:bold}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__instruction{position:absolute;height:31px;left:14px;bottom:6px;font-size:12px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--walk{padding:26px 14px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--walk svg{height:79px;display:inline-block;margin:0 26px}.adsk-viewing-viewer .bimwalk .bimwalk-tooltip-or{font-size:12px;font-weight:bold;position:absolute;bottom:27px;left:50%;transform:translateX(-50%)}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--updown{padding:53px 0 45px;width:307px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--updown svg{height:37px;display:block;margin:0 auto}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--run{padding:53px 0 45px;width:308px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__shift{height:37px;display:inline-block;margin:0;vertical-align:middle}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__plus{width:11px;display:inline-block;margin:0 16px 0 19px;vertical-align:middle}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__direction{font-size:12px;font-weight:bold;display:inline-block;position:relative;top:4px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--teleport{width:203px;padding:45px 0 44px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--teleport svg{height:46px;display:block;margin:0 auto}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--look{width:204px;padding:37px 0}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--look svg{height:56px;display:block;margin:0 auto}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--speed{width:203px;padding:55px 0 45px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__tip--speed svg{height:36px;display:block;margin:0 auto}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__actions{text-align:center;margin-top:35px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__action{display:inline-block;width:240px}.adsk-viewing-viewer .bimwalk .c-bimwalk-tooltip__action+.c-bimwalk-tooltip__action{margin-left:1px}'],sourceRoot:""}]);const s=a},6314:A=>{"use strict";A.exports=function(A){var t=[];return t.toString=function(){return this.map((function(t){var i="",e=void 0!==t[5];return t[4]&&(i+="@supports (".concat(t[4],") {")),t[2]&&(i+="@media ".concat(t[2]," {")),e&&(i+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),i+=A(t),e&&(i+="}"),t[2]&&(i+="}"),t[4]&&(i+="}"),i})).join("")},t.i=function(A,i,e,o,n){"string"==typeof A&&(A=[[null,A,void 0]]);var a={};if(e)for(var s=0;s0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=n),i&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=i):c[2]=i),o&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=o):c[4]="".concat(o)),t.push(c))}},t}},1354:A=>{"use strict";A.exports=function(A){var t=A[1],i=A[3];if(!i)return t;if("function"==typeof btoa){var e=btoa(unescape(encodeURIComponent(JSON.stringify(i)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(e),n="/*# ".concat(o," */");return[t].concat([n]).join("\n")}return[t].join("\n")}},5072:A=>{"use strict";var t=[];function i(A){for(var i=-1,e=0;e{"use strict";var t={};A.exports=function(A,i){var e=function(A){if(void 0===t[A]){var i=document.querySelector(A);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(A){i=null}t[A]=i}return t[A]}(A);if(!e)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");e.appendChild(i)}},540:A=>{"use strict";A.exports=function(A){var t=document.createElement("style");return A.setAttributes(t,A.attributes),A.insert(t,A.options),t}},5056:(A,t,i)=>{"use strict";A.exports=function(A){var t=i.nc;t&&A.setAttribute("nonce",t)}},7825:A=>{"use strict";A.exports=function(A){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=A.insertStyleElement(A);return{update:function(i){!function(A,t,i){var e="";i.supports&&(e+="@supports (".concat(i.supports,") {")),i.media&&(e+="@media ".concat(i.media," {"));var o=void 0!==i.layer;o&&(e+="@layer".concat(i.layer.length>0?" ".concat(i.layer):""," {")),e+=i.css,o&&(e+="}"),i.media&&(e+="}"),i.supports&&(e+="}");var n=i.sourceMap;n&&"undefined"!=typeof btoa&&(e+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(n))))," */")),t.styleTagTransform(e,A,t.options)}(t,A,i)},remove:function(){!function(A){if(null===A.parentNode)return!1;A.parentNode.removeChild(A)}(t)}}}},1113:A=>{"use strict";A.exports=function(A,t){if(t.styleSheet)t.styleSheet.cssText=A;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(A))}}}},t={};function i(e){var o=t[e];if(void 0!==o)return o.exports;var n=t[e]={id:e,exports:{}};return A[e](n,n.exports,i),n.exports}i.n=A=>{var t=A&&A.__esModule?()=>A.default:()=>A;return i.d(t,{a:t}),t},i.d=(A,t)=>{for(var e in t)i.o(t,e)&&!i.o(A,e)&&Object.defineProperty(A,e,{enumerable:!0,get:t[e]})},i.o=(A,t)=>Object.prototype.hasOwnProperty.call(A,t),i.r=A=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})},i.nc=void 0;var e={};(()=>{"use strict";i.r(e),i.d(e,{BimWalkExtension:()=>vA});var A=128,t=[],o=0,n={x:0,y:0,z:0};function a(i){for(var e=t.length;eA.worldup.z?t.y:t.z}function w(A,t,i){var e=0,o=0;return i.getNodeBox(A.dbId,r),t.worldup.y>t.worldup.z?(e=Math.abs(r[0]-r[3]),o=Math.abs(r[2]-r[5])):(e=Math.abs(r[0]-r[3]),o=Math.abs(r[1]-r[4])),Math.min(e,o)}function v(A,t){var i,e;if(null!==(i=A.face)&&void 0!==i&&i.normal)return g.copy(A.face.normal),A.model&&A.fragId?(A.model.getFragmentList().getWorldMatrix(A.fragId,c),d.getNormalMatrix(c),g.applyMatrix3(d)):null!==(e=A.object)&&void 0!==e&&e.matrixWorld&&(d.getNormalMatrix(A.object.matrixWorld),g.applyMatrix3(d)),Math.abs(1-g.lengthSq())>l&&g.normalize(),t.worldup.dot(g)}function m(A,t){return v(A,t)>=.5}function y(A,t){const i=v(A,t);return i>=0&&i<=.1}function C(A,t,i,e,o,n,s,r,l,c){var d=s.impl.camera,g=a(d.worldup),p=a(A).add(g.multiplyScalar(i)),h=a(g).multiplyScalar(-1),v=i+t;const C={skipLines:!0,skipPoints:!0};c&&(C.maxDistance=v),s.impl.rayIntersect(new THREE.Ray(p,h),!1,!1,!1,r,C);var k=r.length;if(0===k)return-1;if(1===k){if(!m(r[0],d))return-1;var M=i*i;return r[0].point.distanceToSquared(A)i&&E.distancen&&(L=f);else L=f;if(!(E.distancej&&(b=j,N=T)}}}return N}function k(A,t,i){var e=t.lengthSq();if(e>0){var o=a();o.copy(t).normalize().multiplyScalar(-1),o.multiplyScalar(A*A),i.add(o)}return e>0}function M(A,t,i,e,o,n){var s=a(n);s.add(t.multiplyScalar(A)),e&&s.lengthSq()>i*i&&(s.normalize(),s.multiplyScalar(i)),o&&(s.lengthSq()\n \n \n \n\n',T=Autodesk.Viewing,E=T.Private;function L(A){this.viewer=A.viewer,this.setGlobalManager(this.viewer),this.tool=A.tool,this.onTemplate=this.onTemplate.bind(this);const t=this.getDocument();this.div=t.createElement("div"),this.opened=!1,this.onTemplate(null,x)}var j=L.prototype;T.GlobalManagerMixin.call(j),j.showToolTipUI=function(A){this.viewer.container.appendChild(this.div),this.div.querySelector("#dontRemind").style.display=A?"none":"",this.div.querySelector("#tooltipPanel").classList.add("c-bimwalk-tooltip--open"),this.opened=!0},j.hideToolTipUI=function(){this.div.querySelector("#tooltipPanel").classList.remove("c-bimwalk-tooltip--open"),this.opened=!1},j.onTemplate=function(A,t){if(A)return void E.logger.error("Failed to show BimWalk guide.");var i=this.getDocument().createElement("div");i.innerHTML=t,this.div.appendChild(i.childNodes[0]),this.div.querySelector("#tooltipOk").addEventListener("click",this.hideToolTipUI.bind(this)),this.div.querySelector("#dontRemind").addEventListener("click",function(){this.viewer.setBimWalkToolPopup(!1),this.hideToolTipUI.bind(this)}.bind(this)),this.div.addEventListener("click",function(){this.hideToolTipUI()}.bind(this)),Autodesk.Viewing.i18n.localize(this.div)};var z=i(5072),I=i.n(z),S=i(7825),_=i.n(S),O=i(7659),B=i.n(O),U=i(5056),F=i.n(U),Q=i(540),P=i.n(Q),R=i(1113),V=i.n(R),G=i(4529),W={};W.styleTagTransform=V(),W.setAttributes=F(),W.insert=B().bind(null,"head"),W.domAPI=_(),W.insertStyleElement=P();I()(G.A,W);G.A&&G.A.locals&&G.A.locals;var Y=Autodesk.Viewing;function H(A){this.viewer=A.viewer,this.setGlobalManager(this.viewer.globalManager),this.tool=A.tool,this.opened=!1,this.hideTimeoutID,this.dontRemindAgain_Message=!1,this.tooltip=new L(this);var t='
'+(0,Autodesk.Viewing.i18n.translate)("Walk Speed")+'
';var i=this.getDocument().createElement("div");i.innerHTML=t,this.div=i.childNodes[0],this.infoIcon=this.div.childNodes[0],this.onSpeedChange=this.onSpeedChange.bind(this),this.tool.options.disableBimWalkInfoIcon&&(this.infoIcon.style.visibility="hidden")}var Z=H.prototype;Y.GlobalManagerMixin.call(Z),Z.activate=function(){if(this.viewer.container.appendChild(this.div),this.viewer.addEventListener(Y.EVENT_BIMWALK_CONFIG_CHANGED,this.onSpeedChange),this.viewer.getExtension("Autodesk.ViewCubeUi",(function(A){A.displayViewCube(!1),A.displayHomeButton(!1)})),!Y.isMobileDevice()){var A=this.div.querySelector("#tooltip-info");A.classList.add("open");var t=this;A.addEventListener("click",(function(){t.tooltip.showToolTipUI(!0)}))}this.viewer.getBimWalkToolPopup()&&this.tooltip.showToolTipUI(!1)},Z.deactivate=function(){(this.viewer.removeEventListener(Y.EVENT_BIMWALK_CONFIG_CHANGED,this.onSpeedChange),this.speedHide(),this.div.querySelector("#speed").classList.remove("open"),Y.isMobileDevice())||(this.div.querySelector("#tooltip-info").classList.remove("open"),this.tooltip.hideToolTipUI());this.viewer.getExtension("Autodesk.ViewCubeUi",(function(A){A.displayViewCube(!0),A.displayHomeButton(!0)}))},Z.isDialogOpen=function(){return this.tooltip.opened},Z.onKeyDown=function(){return!!this.tooltip.opened&&(this.tooltip.hideToolTipUI(),!0)},Z.onSpeedChange=function(A){if("topWalkSpeed"===A.data.configuration){var t=this;this.div.querySelector("#speed").classList.add("open"),this.div.querySelector(".value").textContent=A.data.value,this.hideTimeoutID=setTimeout((function(){t.speedHide()}),5e3),t.opened=!0}},Z.speedHide=function(){this.opened&&(this.div.querySelector("#speed").classList.remove("open"),this.opened=!1,clearTimeout(this.hideTimeoutID))},Z.showInfoIcon=function(A){const t=A?"":"hidden";this.infoIcon.style.visibility=t};var K={x:0,y:0},J=Autodesk.Viewing.Private;function q(A){N.call(this,A),this.configuration={minWalkSpeed:2,maxWalkSpeed:6,topWalkSpeed:4,minRunSpeed:4,maxRunSpeed:12,runMultiplier:2,mouseWalkMaxTargetDistance:2,mouseWalkStopDuration:.5,topVerticalSpeed:2,topVerticalSpeedMultiplier:1.5,allowVerticalSuspension:!1,panDistanceMultiplier:150,pinchDistanceMultiplier:250,keyboardTopTurnSpeed:1.5,keyboardTurnStopDuration:.75,mouseTurnInverted:!1,mouseTurnStopDuration:.2,mouseTurnMinPitchLimit:THREE.Math.degToRad(20),mouseTurnMaxPitchLimit:THREE.Math.degToRad(160),teleportDuration:.5,teleportWallDistance:1,cameraDistanceFromFloor:1.8,minAllowedRoofDistance:.6,smallAllowedVerticalStep:.3,bigAllowedVerticalStep:.6,minFloorSidesLengthForBigVerticalStep:5,gravityUpdatesBeforeFalling:10,gravityAcceleration:9.8,gravityTopFallSpeed:10},this.modelToMeters=1,this.metersToModel=1,this.keys=Autodesk.Viewing.KeyCode,this.mousePosition=new THREE.Vector2(0,0),this.moveForward=0,this.moveBackward=0,this.moveLeft=0,this.moveRight=0,this.moveKeyboardVelocity=new THREE.Vector3,this.moveMouseTargetDistance=0,this.moveMouseLastWheelDelta=0,this.moveMouseVelocity=new THREE.Vector3,this.moveMouseLastVelocity=new THREE.Vector3,this.mouseForwardDirection=new THREE.Ray,this.turningWithMouse=!1,this.turnMouseDelta=new THREE.Vector3,this.turnMouseLastVelocity=new THREE.Vector3,this.turnLeft=0,this.turnRight=0,this.angularKeyboardVelocity=new THREE.Vector3,this.angularMouseVelocity=new THREE.Vector3,this.moveUp=0,this.moveDown=0,this.moveUpDownKeyboardVelocity=new THREE.Vector3,this.gravityEnabled=this.viewer.prefs.get(J.Prefs3D.BIM_WALK_GRAVITY),this.movingUpOrDown=!1,this.userOverFloor=!1,this.fallingToCandidate=null,this.gravityVelocity=new THREE.Vector3,this.updatesToStartFalling=0,this.teleporting=!1,this.teleportInitial=new THREE.Vector3,this.teleportTarget=new THREE.Vector3,this.teleportTime=0,this.teleportVelocity=new THREE.Vector3,this.teleportedDistance=0,this.ui=new H(this),this.modelAddedCb=this.updateUnits.bind(this),this.lastPanPosition=new THREE.Vector2,this.lastPinchDistance=new THREE.Vector2,this.isPinching=!1,this.isDragging=!1,this.immediateDisplacement=!1,this.enableGravity=this.enableGravity.bind(this)}q.prototype=Object.create(N.prototype),q.prototype.constructor=q;var X=q.prototype;function $(A,t){var i=A.impl.getCanvasBoundingClientRect(),e=(t.pointers[1].clientX-t.pointers[0].clientX)/i.width,o=(t.pointers[1].clientY-t.pointers[0].clientY)/i.height;return Math.sqrt(e*e+o*o)}X.set=function(A,t){var i=N.prototype.set.call(this,A,t),e=this.get("minWalkSpeed"),o=this.get("maxWalkSpeed");return this.configuration.topWalkSpeed=Math.min(Math.max(this.configuration.topWalkSpeed,e),o),i},X.getTopRunSpeed=function(){var A=this.get("minRunSpeed"),t=this.get("maxRunSpeed"),i=this.get("topWalkSpeed")*this.get("runMultiplier");return Math.min(Math.max(i,A,t))},X.getMinPitchLimit=function(){return this.get("mouseTurnMinPitchLimit")},X.getMaxPitchLimit=function(){return this.get("mouseTurnMaxPitchLimit")},X.activate=function(){this.updateUnits(),this.userOverFloor=!1,this.fallingToCandidate=null,this.ui.activate(),this.viewer.addEventListener(Autodesk.Viewing.MODEL_ADDED_EVENT,this.modelAddedCb),this.viewer.prefs.addListeners(J.Prefs3D.BIM_WALK_GRAVITY,this.enableGravity)},X.deactivate=function(){this.viewer.removeEventListener(Autodesk.Viewing.MODEL_ADDED_EVENT,this.modelAddedCb),this.viewer.prefs.removeListeners(J.Prefs3D.BIM_WALK_GRAVITY,this.enableGravity),this.moveForward=this.moveBackward=0,this.moveLeft=this.moveRight=0,this.moveUp=this.moveDown=0,this.moveKeyboardVelocity.set(0,0,0),this.moveUpDownKeyboardVelocity.set(0,0,0),this.ui.deactivate()},X.updateUnits=function(){this.viewer.impl.model&&(this.metersToModel=p(1,this.viewer),this.modelToMeters=1/this.metersToModel)},X.enableGravity=function(A){this.gravityEnabled!==A&&(this.gravityEnabled=A,this.resetGravity())},X.resetGravity=function(){this.gravityVelocity.set(0,0,0),this.userOverFloor=!1,this.fallingToCandidate=null,this.updatesToStartFalling=Number.MAX_VALUE},X.update=function(A,t,i,e){if(this.velocity.set(0,0,0),this.angularVelocity.set(0,0,0),!this.ui.isDialogOpen||!this.ui.isDialogOpen())return this.viewer.autocam.currentlyAnimating?(this.userOverFloor=!1,this.fallingToCandidate=null,void(this.updatesToStartFalling=this.get("gravityUpdatesBeforeFalling"))):void(this.teleporting?(this.updateTeleportDisplacement(A),this.velocity.add(this.teleportVelocity)):(this.immediateDisplacement||(this.updateKeyboardUpDownDisplacement(A),this.updateGravityDisplacement(A,t,i,e),this.updateKeyboardDisplacement(A),this.updateMouseDisplacement(A)),this.velocity.add(this.gravityVelocity),this.velocity.add(this.moveUpDownKeyboardVelocity),this.velocity.add(this.moveKeyboardVelocity),this.velocity.add(this.moveMouseVelocity),this.updateKeyboardAngularVelocity(A),this.updateGyroscopeVelocity(),this.updateMouseAngularVelocity(A),this.angularVelocity.add(this.angularKeyboardVelocity),this.angularVelocity.add(this.angularMouseVelocity)))},X.updateTeleportDisplacement=function(A){var t=this.teleportInitial,i=this.teleportTarget,e=this.get("teleportDuration"),o=this.teleportVelocity;this.teleportTime=Math.min(e,this.teleportTime+A);var n,a,s,r=(n=this.teleportTime,a=0,s=1,(n/=e/2)<1?s/2*n*n+a:-s/2*(--n*(n-2)-1)+a),l=t.distanceTo(i)*r,c=this.teleportedDistance;this.teleportedDistance=l,1===r&&(this.teleporting=!1,this.fallingToCandidate=null,this.teleportTime=0,this.teleportedDistance=0),o.copy(i),o.sub(t).normalize(),o.multiplyScalar((l-c)*this.modelToMeters/A)},X.updateGravityDisplacement=function(A,t,i,e){if(this.ignoreGravity)return void this.resetGravity();var o=this.viewer,n=a(t.worldup).multiplyScalar(-1),s=this.gravityVelocity;if(this.userOverFloor=this.userOverFloor&&0===this.moveMouseVelocity.lengthSq()&&0===this.moveKeyboardVelocity.lengthSq()&&0===this.moveUpDownKeyboardVelocity.lengthSq(),!this.gravityEnabled||this.movingUpOrDown)return;if(this.userOverFloor)return void s.set(0,0,0);0!==this.moveKeyboardVelocity.lengthSq()&&(this.fallingToCandidate=null);var r=[],l=[],c=this.metersToModel,d=this.get("cameraDistanceFromFloor"),g=this.get("minAllowedRoofDistance"),p=this.get("smallAllowedVerticalStep"),h=this.get("bigAllowedVerticalStep"),u=this.get("minFloorSidesLengthForBigVerticalStep");const w=A=>C(t.position,d*c,g*c,p*c,h*c,u*c,o,r,l,A);var v=w(!0);let m;if(-1===v?null!==this.fallingToCandidate?m=this.fallingToCandidate:-1!==(v=w(!1))&&(m=r[v]):m=r[v],!m||l.length>0)s.set(0,0,0);else{var y=m.point.distanceTo(t.position)*this.modelToMeters-d;if(y<1e-4||Math.abs(y)0;if(c&&!d){var g=t.camera.worldup,p=s.length(),h=a(g),u=a(g).multiplyScalar(-1);r.add(h.multiplyScalar(e)),r.add(u.multiplyScalar(o)),r.normalize(),s.copy(r).multiplyScalar(p),r.multiplyScalar(l)}else s.set(0,0,0);this.gravityEnabled&&c!==this.movingUpOrDown&&this.resetGravity(),this.movingUpOrDown=c;var w=a();!i&&s.lengthSq()>n*n&&(w.copy(s).normalize(),w.multiplyScalar(-this.getTopRunSpeed()/1),r.copy(w));M(A,r,n,0===w.lengthSq(),!1,s)},X.updateKeyboardDisplacement=function(A){var t=this.running,i=this.moveForward,e=this.moveBackward,o=this.moveLeft,n=this.moveRight,s=t?this.getTopRunSpeed():this.get("topWalkSpeed"),r=this.moveKeyboardVelocity,l=a(),c=s/1,d=0!==i||0!==e||0!==o||0!==n;if(d){var g=this.tool.camera,p=g.worldup,h=r.length(),u=D(g),w=a(u);w.sub(a(p).multiplyScalar(p.dot(u))),w.normalize();var v=a(u).cross(p).normalize(),m=a(v);m.sub(a(p).multiplyScalar(p.dot(v))),m.normalize();var y=a(w).multiplyScalar(-1),C=a(v).multiplyScalar(-1);l.add(w.multiplyScalar(i)),l.add(y.multiplyScalar(e)),l.add(m.multiplyScalar(n)),l.add(C.multiplyScalar(o)),l.normalize(),r.copy(l).multiplyScalar(h),l.multiplyScalar(c)}var f=a();!t&&r.lengthSq()>s*s&&(f.copy(r).normalize(),f.multiplyScalar(-this.getTopRunSpeed()/1),l.copy(f));var N=!d&&k(c,r,l);M(A,l,s,0===f.lengthSq(),N,r)},X.calculateMouseDisplacementSpeed=function(A,t,i){return t.length()+i*A},X.updateMoveMouseTargetDistance=function(A,t,i){var e=t.length()*A;this.moveMouseTargetDistance+=i<0?e:-e,this.moveMouseTargetDistance*i<0&&(this.moveMouseTargetDistance=0)},X.updateMouseDisplacement=function(A){var t=this.getTopRunSpeed(),i=this.moveMouseTargetDistance,e=this.moveMouseVelocity,o=a(),n=0!==this.moveMouseTargetDistance,s=(n?t:this.moveMouseLastVelocity.length())/this.get("mouseWalkStopDuration");if(n){var r=this.tool.camera.worldup,l=this.mouseForwardDirection,c=this.viewer.impl.clientToViewport(this.mousePosition.x,this.mousePosition.y);this.viewer.impl.viewportToRay(c,l);var d=l.direction;d.sub(a(r).multiplyScalar(r.dot(d))),d.normalize(),i>0&&d.multiplyScalar(-1);var g=this.calculateMouseDisplacementSpeed(A,e,s);e.copy(d.multiplyScalar(g)),this.moveMouseLastVelocity.copy(e),this.fallingToCandidate=null}M(A,o,t,!0,!n&&k(s,e,o),e),n&&this.updateMoveMouseTargetDistance(A,e,i)},X.updateKeyboardAngularVelocity=function(A){var t=this.get("keyboardTopTurnSpeed"),i=this.get("keyboardTurnStopDuration"),e=this.angularKeyboardVelocity,o=a(),n=t/i,s=0!==this.turnLeft||0!==this.turnRight;if(s){var r=Math.min(t,e.length()+n*A);e.y=0,e.y-=this.turnLeft,e.y+=this.turnRight,e.normalize().multiplyScalar(r)}M(A,o,t,!0,!s&&k(n,e,o),e)},X.updateMouseAngularVelocity=function(A){if(!this.isGyroEnabled){var t=this.get("mouseTurnStopDuration"),i=this.angularMouseVelocity,e=a(),o=this.turnMouseLastVelocity.length()/t,n=this.turnMouseDelta,s=n.lengthSq()>0;if(s){var r=.005*-n.y,l=.005*-n.x;n.set(0,0,0),i.add(a().set(r/A,l/A,0)),i.multiplyScalar(.5),this.turnMouseLastVelocity.copy(i)}M(A,e,0,!1,!s&&k(o,i,e),i)}},X.updateGyroscopeVelocity=function(){},X.addDeviceOrientationInputListener=function(){},X.removeDeviceOrientationInputListener=function(){},X.jumpToFloor=function(A){const t=this.viewer.getExtension("Autodesk.AEC.LevelsExtension");if(!t)return void console.warn('BimWalk.jumpToFloor can be used only when "Autodesk.AEC.LevelsExtension" is loaded.');const i=t.floorSelector.floorData;if(!i.length)return void console.warn("BimWalk.jumpToFloor - No floor data available");const e=i[A];if(e){const A=this.viewer.impl.camera;let t=e.zMin+this.get("cameraDistanceFromFloor")*this.metersToModel;t>=e.zMax&&(t=(e.zMin+e.zMax)/2);const i=A.position.clone().setZ(t);this.teleportInitial.copy(A.position),this.teleportTarget.copy(i),this.teleporting=!0,this.teleportTime=0}else console.warn("BimWalk.jumpToFloor - the given floor index is not available.")},X.getCursor=function(){return this.get("mouseTurnInverted")?this.turningWithMouse?"url(data:image/x-icon;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAcAAAAHgAAABwAAAAJAAAAAQAAABQAAAAbAQEBBwEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8ACAgIfD4+PuVbW1vkUFBQ4hkZGY4BAQFRNTU1yiUlJdMAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMlJSWxwMDA//b29v/u7u7/fn5+9j09PejDw8P/ZmZm6gAAAC8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQGBgYlI+Pj/r5+fn/+/v7///////v7+//5OTk//v7+/+Ghob2AAAAXiUlJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRISEoWHh4f59/f3//b29v+dnZ3/4eHh/5+fn//j4+P/oKCg/8PDw/9AQEDPAAAALAMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQAAFBQVecXFx8vLy8v//////8PDw/2hoaP/Pz8//ampq/9TU1P9paWn/4uLi/7Kysv8dHR2cAAAABwEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEAAAAADi8vL7jV1dX////////////w8PD/aGho/83Nzf9qamr/19fX/2lpaf/i4uL/9fX1/1tbW+MAAAAqAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQAAAAAbUlJS3/Dw8P/39/f/9vb2//X19f+enp7/3t7e/56env/m5ub/np6e/+zs7P//////gICA8gAAAEgBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAAAAABM1NTXGpqam/3V1df+wsLD///////r6+v/9/f3/+vr6//7+/v/6+vr//v7+//////+IiIj0AAAAUgQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQUFBT0RERGQJSUl5tLS0v/29vb//Pz8///////////////////////09PT//////4mJifQAAABTBQUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVgYGDo6Ojo/3l5ef/c3Nz/+Pj4/6Wlpf/r6+v/+Pj4/3x8fP+4uLj/eHh48gAAAEoCAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEAAAAAWktLS/OEhIT7JSUl9sTExP/g4OD/Ozs7/7q6uv/b29v/MzMz4CQkJMIgICClAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOCQkJWAgICGUICAhxTk5O3lhYWOQLCwujOjo6ykdHR9sMDAxoAAAAEQAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACMAAAAmAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAApAAAALwAAAAkAAAAVAAAAGgAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATBQUFvg0NDdEAAABFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwdHR3jgoKC/xsbG9cAAABFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCAgIOPg4OD/o6Oj/xoaGtYAAABFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHBwc48jIyP/i4uL/goKC/wsLC9EAAAAjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4FBQWmHBwc5CAgIOMdHR3kBQUFvQAAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAcAAAAHAAAABwAAAATAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////wB///8Af//+AH///AB///gAP//4AB//8AAf//AAH//wAB//8AAf//wAH//8AB///AA//h+A//4f///+D////gf///4D///+A////wP///////////////////////////////////////8=), auto":"url(data:image/x-icon;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAABQAAAAcAAAAHgAAABoAAAAHAAAAAgAAABYAAAAaAQEBBQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALDQ0Nn0xMTOVbW1vkS0tL3hISEn0GBgZaODg40h8fH8wAAAAhAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAAAAACg6OjrR3Nzc//X19f/o6Oj/bGxs80hISOnHx8f/U1NT4wAAAB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfJycns62trf7+/v7/+/v7//7+/v/s7Oz/5ubm//f39/90dHTxAAAASgwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADyAgIKSlpaX+/v7+//X19f+dnZ3/4eHh/5+fn//j4+P/oKCg/7e3t/8zMzPBAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGNjYwAFBQVkgICA9/v7+///////8PDw/2hoaP/Pz8//ampq/9TU1P9paWn/4eHh/6Ghof4TExOIAAAAAwEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKD8/P9Dd3d3////////////w8PD/aGho/83Nzf9qamr/19fX/2lpaf/i4uL/7e3t/01NTdkAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYjIyOrsLCw///////9/f3///////X19f+enp7/3t7e/56env/m5ub/nZ2d/+vr6///////f39/8gAAAEoEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqKioACwsLaoqKivz+/v7/6+vr/5mZmf/w8PD///////r6+v/9/f3/+/v7//7+/v/w8PD/29vb//////+cnJz9CgoKbCAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJiYmAAVFRWHoqKi/93d3f9qamr9V1dX/vT09P/+/v7////////////+/v7//////+7u7v+ampr/9fX1/76+vv8cHByTAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgoKAAMDAzcmJiazLy8vuQkJCcaSkpL+9fX1/5ubm/7u7u7/9/f3/6Kiov/s7Oz/8fHx/2JiYv/MzMz/5ubm/zo6OsYAAAATAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAwAAAAhNDQ0v9ra2v/e3t7/Pz8//ePj4//y8vL/YGBg/9jY2P/09PT/SUlJ/3d3d//z8/P/YWFh5wAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgoKAAAAAEt3d3fy/////6enp/8sLCz95ubm/vLy8v9eXl7/zs7O//Pz8/9NTU3uISEhy5eXl/9LS0vgAAAAJwEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGhoajrm5uf/7+/v/X19f+CUlJe7o6Oj/8vLy/1lZWf+/v7//8vLy/1BQUN0AAABCERERhAoKClsAAAAGAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQbGxuXrKys/6ioqP8aGhqtJycnvuHh4f/w8PD/RERE/HJycvysrKz/KysrtAAAAA0DAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAjAAAAJgAAAAEAAAAADg4OAAUFBTcdHR2jGRkZmQAAACYXFxeGmJiY/7Gxsf8lJSW7DAwMfRkZGZMFBQU4FhYWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwUFBb4NDQ3RAAAARQAAAAAAAAAAAAAAAAAAAAgAAAAHBAQEAAEBASIXFxeKHBwclgUFBTUAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHR0d44KCgv8bGxvXAAAARQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwgICDj4ODg/6Ojo/8aGhrWAAAARQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBwcHOPIyMj/4uLi/4KCgv8LCwvRAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOBQUFphwcHOQgICDjHR0d5AUFBb0AAAAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAHAAAABwAAAAcAAAAEwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////////////8AP///AD///wA///4AP//8AB///AAP//gAD//wAA//8AAP//AAB//wAAf/8AAH//wAB//4AAf/+AA//wwAf/8OQv//B+f//wP///8B////Af///4H//////////////////////////////////8=), auto":"url(data:image/x-icon;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAP//////////////////////////////////////////////////////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////////////////////////8AAAD/AAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////+P////j////4////+P////j////4////+P////j////4////+P////j////4////////AA+ABwAPgAcAD4AH///////4////+P////j////4////+P////j////4////+P////j////4////+P////j////////////8=) 16 16, auto"},X.ignoreInput=function(){return this.teleporting},X.handleButtonDown=function(A,t){return this.viewer.navigation.getIsLocked()||(h(A,this.viewer,this.mousePosition),0===t&&(this.turningWithMouse=!0,this.turnMouseDelta.set(0,0,0))),!0},X.handleButtonUp=function(A,t){return h(A,this.viewer,this.mousePosition),0===t&&(this.turningWithMouse=!1),!0},X.handleMouseClick=function(A,t){return h(A,this.viewer,this.mousePosition),!1},X.handleMouseDoubleClick=function(A,t){if(this.tool.options.disableBimWalkFlyTo)return!0;var i=function(A){this.teleporting=!0,this.teleportTime=0;var t=this.viewer.impl.camera;this.teleportInitial.copy(t.position);var i=a(t.worldup);i.multiplyScalar(this.get("cameraDistanceFromFloor")*this.metersToModel),this.teleportTarget.copy(A.intersectPoint).add(i),this.teleportVelocity.set(0,0,0)}.bind(this),e=function(A){var t=this.viewer,i=this.viewer.impl.camera,e=this.metersToModel,o=this.get("cameraDistanceFromFloor"),n=a(i.worldup).multiplyScalar(o*e),s=a(i.position),r=a(A.intersectPoint);r.sub(i.position),function(A,t,i){return A.worldup.y>A.worldup.z?t.y=i:t.z=i,t}(i,r,0).normalize();var l=a(A.intersectPoint);l.add(r.multiplyScalar(this.get("teleportWallDistance")*e)),l.add(n);var c=[],d=C(l,o*e,this.get("minAllowedRoofDistance")*e,0,this.get("bigAllowedVerticalStep")*e,this.get("minFloorSidesLengthForBigVerticalStep")*e,t,c);-1!==d&&(l.copy(c[d].point).add(n),this.teleporting=!0,this.teleportTime=0,this.teleportInitial.copy(s),this.teleportTarget.copy(l))}.bind(this);if(this.teleporting)return!0;var o=this.viewer;h(A,0,this.mousePosition);var n=this.mousePosition,s=o.impl.clientToViewport(n.x,n.y),r=o.impl.camera,l=o.impl.castRayViewport(s,!1,!1,!1);return l&&l.face&&(m(l,r)&&i(l),y(l,r)&&e(l)),!0},X.handleMouseMove=function(A){var t=this.mousePosition,i=K;return h(A,this.viewer,i),this.turningWithMouse&&(this.get("mouseTurnInverted")?(this.turnMouseDelta.x+=i.x-t.x,this.turnMouseDelta.y+=i.y-t.y):(this.turnMouseDelta.x-=i.x-t.x,this.turnMouseDelta.y-=i.y-t.y)),this.mousePosition.copy(i),this.turningWithMouse},X.shouldOrbit=function(){if(!this.getBestFloorCandidate())return!0;const A=this.viewer.impl.getVisibleBounds(),t=this.viewer.getCamera().position;return!A.containsPoint(t)},X.handleGesture=function(A){A.pointers&&A.pointers.length>0&&(A.pageX=A.pointers[0].pageX,A.pageY=A.pointers[0].pageY);var t=!1;switch(A.type){case"dragstart":if(this.ignoreGravity=!0,this.shouldOrbit())return!1;this.isDragging=!0,t=this.handleButtonDown(A,0);break;case"dragmove":if(!this.isDragging)return!1;t=this.handleMouseMove(A);break;case"dragend":if(!this.isDragging)return!1;this.isDragging=!1,t=this.handleButtonUp(A,0);break;case"panstart":case"pinchstart":return this.ignoreGravity=!0,this.shouldOrbit()?!1:(this.isPinching=!0,this.lastPinchDistance=$(this.viewer,A),h(A,this.viewer,this.mousePosition),this.lastPanPosition.copy(this.mousePosition),!0);case"panmove":case"pinchmove":{if(!this.isPinching)return!1;const t=this.viewer.impl.getCanvasBoundingClientRect(),i=this.tool.camera.worldup,e=a(D(this.tool.camera)).cross(i).normalize(),o=$(this.viewer,A),n=o-this.lastPinchDistance,s=this.viewer.impl.clientToViewport(this.mousePosition.x,this.mousePosition.y);this.viewer.impl.viewportToRay(s,this.mouseForwardDirection);const r=this.mouseForwardDirection.direction;r.sub(a(i).multiplyScalar(i.dot(r))),r.normalize(),this.moveMouseVelocity.copy(r.multiplyScalar(n*this.get("pinchDistanceMultiplier"))),h(A,this.viewer,K);let l=(K.y-this.lastPanPosition.y)/t.height;return this.moveUpDownKeyboardVelocity.copy(i).multiplyScalar(l*this.get("panDistanceMultiplier")),l=(K.x-this.lastPanPosition.x)/t.width,this.moveKeyboardVelocity.copy(e).multiplyScalar(-l*this.get("panDistanceMultiplier")),this.immediateDisplacement=!0,this.tool.update(),this.immediateDisplacement=!1,this.lastPinchDistance=o,this.lastPanPosition.copy(K),this.moveUpDownKeyboardVelocity.set(0,0,0),this.moveMouseVelocity.set(0,0,0),this.moveKeyboardVelocity.set(0,0,0),!0}case"panend":case"pinchend":return!!this.isPinching&&(this.isPinching=!1,!0);case"rotatestart":case"rotatemove":case"rotateend":return this.ignoreGravity=!0,!0}return t},X.handleKeyDown=function(A,t){var i=!0;switch(t){case this.keys.SHIFT:this.running=!0;break;case this.keys.DASH:{const A=this.get("topWalkSpeed")-1;this.tool.set("topWalkSpeed",A);break}case this.keys.EQUALS:case this.keys.PLUS:case this.keys.PLUSMOZ:{const A=this.get("topWalkSpeed")+1;this.tool.set("topWalkSpeed",A);break}case this.keys.CONTROL:case this.keys.ALT:break;case this.keys.SPACE:this.enableGravity(!this.gravityEnabled);break;case this.keys.UP:case this.keys.w:this.moveForward=1;break;case this.keys.LEFT:this.turnLeft=1;break;case this.keys.RIGHT:this.turnRight=1;break;case this.keys.DOWN:case this.keys.s:this.moveBackward=1;break;case this.keys.a:this.moveLeft=1;break;case this.keys.d:this.moveRight=1;break;case this.keys.e:this.moveUp=1;break;case this.keys.q:this.moveDown=1;break;default:i=!1}return this.running=A.shiftKey,this.ui.onKeyDown&&(i|=this.ui.onKeyDown(A,t)),i},X.getBestFloorCandidate=function(){var A=this.viewer,t=this.viewer.impl.camera,i=this.metersToModel,e=this.get("cameraDistanceFromFloor"),o=a(t.position);o.add(a(t.worldup).multiplyScalar(1.5*i));var n=[],s=this.get("minFloorSidesLengthForBigVerticalStep"),r=C(o,e*i,Number.MAX_SAFE_INTEGER,0,0,s*i,A,n);return-1===r?null:n[r]},X.handleKeyUp=function(A,t){var i=function(){var A=this.viewer.impl.camera,t=this.metersToModel,i=this.get("cameraDistanceFromFloor"),e=a(A.worldup).multiplyScalar(i*t),o=a(A.position),n=a(A.position);n.add(a(A.worldup).multiplyScalar(1.5*t));var s=this.getBestFloorCandidate();s&&(n.copy(s.point).add(e),this.teleporting=!0,this.teleportTime=0,this.teleportInitial.copy(o),this.teleportTarget.copy(n))}.bind(this),e=!0,o=this.moveUp,n=this.moveDown;switch(t){case this.keys.SHIFT:this.running=!1;break;case this.keys.CONTROL:case this.keys.ALT:case this.keys.SPACE:break;case this.keys.UP:case this.keys.w:this.moveForward=0;break;case this.keys.LEFT:this.turnLeft=0;break;case this.keys.RIGHT:this.turnRight=0;break;case this.keys.DOWN:case this.keys.s:this.moveBackward=0;break;case this.keys.a:this.moveLeft=0;break;case this.keys.d:this.moveRight=0;break;case this.keys.e:this.moveUp=0;break;case this.keys.q:this.moveDown=0;break;default:e=!1}return 0!==this.moveUp||0!==this.moveDown||this.moveUp===o&&this.moveDown===n||this.gravityEnabled&&i(),this.running=A.shiftKey,e},X.applyDeltaToMouseTargetDistance=function(A){var t=this.moveMouseTargetDistance,i=this.get("mouseWalkMaxTargetDistance"),e=Math.min(i,Math.abs(t+.5*A))*(A>0?1:-1);return this.moveMouseTargetDistance=e,!0},X.handleWheelInput=function(A){return!!this.viewer.navigation.getIsLocked()||(this.tool.navapi.getReverseZoomDirection()&&(A*=-1),this.applyDeltaToMouseTargetDistance(A))},X.handleSingleClick=function(A,t){return!1},X.handleSingleTap=function(A){return!1},X.handleDoubleTap=function(A){return!0},X.handleBlur=function(A){return this.moveForward=this.moveBackward=0,this.moveLeft=this.moveRight=0,this.moveUp=this.moveDown=0,!1};var AA=i(1759),tA={};tA.styleTagTransform=V(),tA.setAttributes=F(),tA.insert=B().bind(null,"head"),tA.domAPI=_(),tA.insertStyleElement=P();I()(AA.A,tA);AA.A&&AA.A.locals&&AA.A.locals;function iA(A,t,i){var e=A;this.setGlobalManager(A.globalManager);var o=t,n=i||{},a=null,s=null,r=null,l=null,c=null,d=null,g=null,p=n.backCircleRadius||75,h=n.frontCircleRadius||37.5,u=n.xOffsetFromCorner||100,w=n.yOffsetFromCorner||100,v=n.threshold||.1,m=null,y=!1;o.reverseDrag=-1,this.updateJoystickHandlePosition=function(A,t){var i=new THREE.Vector2(A-m.x,t-m.y),e=Math.min(i.length(),h);return i.normalize(),i.multiplyScalar(e),i.add(m),s.style.left=i.x-h+"px",s.style.top=i.y-h+"px",i},this.changeJoystickColor=function(A){A?(s.classList.toggle("focus",!0),r.classList.toggle("focus",!0),s.classList.remove("transition")):(s.classList.remove("focus"),r.classList.remove("focus"),s.classList.toggle("transition",!0))},this.updateNavigator=function(A){if(A){var t=(m.x-A.x)/p,i=(m.y-A.y)/p;o.moveForward=0,o.moveBackward=0,o.moveLeft=0,o.moveRight=0,o.turningWithKeyboard=!1,i>v?o.moveForward=i:i<-v&&(o.moveBackward=-i),t>v?(o.moveLeft=t,o.turningWithKeyboard=!0):t<-v&&(o.moveRight=-t,o.turningWithKeyboard=!0),this.updateArrowColor(l,0!==o.moveForward),this.updateArrowColor(c,0!==o.moveBackward),this.updateArrowColor(d,0!==o.moveLeft),this.updateArrowColor(g,0!==o.moveRight)}},this.handleGesture=function(A){var t=null;switch(A.type){case"dragstart":y=!0,this.changeJoystickColor(!0),t=this.updateJoystickHandlePosition(A.center.x,A.center.y),o.ignoreGravity=!1;break;case"dragmove":y&&(this.changeJoystickColor(!0),t=this.updateJoystickHandlePosition(A.center.x,A.center.y));break;case"dragend":y&&(this.changeJoystickColor(!1),t=this.updateJoystickHandlePosition(m.x,m.y),y=!1)}this.updateNavigator(t),A.preventDefault()},this.setJoystickPosition=function(A,t){s.classList.remove("transition");var i=e.impl.getCanvasBoundingClientRect();A+=i.left,t+=i.top,m=new THREE.Vector2(A,t),s.style.left=m.x-h+"px",s.style.top=m.y-h+"px",a.style.left=m.x-p+"px",a.style.top=m.y-p+"px"},this.setJoystickRelativePosition=function(){u=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u,w=arguments.length>1&&void 0!==arguments[1]?arguments[1]:w;var A=e.container.clientWidth-p-u,t=e.container.clientHeight-p-w;this.setJoystickPosition(A,t)},this.setJoystickPositionRelativeToCorner=function(){this.setJoystickRelativePosition()},this.setJoystickSize=function(A,t){p=A,a.style.width=2*p+"px",a.style.height=2*p+"px",h=t,s.style.width=2*h+"px",s.style.height=2*h+"px",m&&this.setJoystickPosition(m.x,m.y)},this.updateArrowColor=function(A,t){t&&!A.classList.contains("active")?A.classList.add("active"):!t&&A.classList.contains("active")&&A.classList.remove("active")},this.init=function(){if(!a){const t=this.getDocument();(a=t.createElement("div")).className="mobile-joystick",e.container.appendChild(a),a.classList.add(e.theme),(r=t.createElement("div")).className="mobile-joystick mobile-joystick-back-circle",a.appendChild(r),(s=t.createElement("div")).className="mobile-joystick mobile-joystick-handle",this.changeJoystickColor(!1),a.appendChild(s);const i=t.createElement("div");i.className="mobile-joystick mobile-joystick-inner-circle",s.appendChild(i),(l=t.createElement("div")).className="mobile-joystick-arrow arrow-up",a.appendChild(l),(g=t.createElement("div")).className="mobile-joystick-arrow arrow-right",a.appendChild(g),(c=t.createElement("div")).className="mobile-joystick-arrow arrow-down",a.appendChild(c),(d=t.createElement("div")).className="mobile-joystick-arrow arrow-left",a.appendChild(d),this.setJoystickSize(p,h),this.setJoystickPositionRelativeToCorner();var A=Autodesk.Viewing;this.hammer=new A.Hammer.Manager(s,{recognizers:[A.GestureRecognizers.drag],handlePointerEventMouse:!1,inputClass:A.Hammer.TouchInput}),this.hammer.on("dragstart dragmove dragend",this.handleGesture.bind(this)),this.onOrientationChanged=this.setJoystickPositionRelativeToCorner.bind(this)}},this.init(),this.activate=function(){this.updateJoystickHandlePosition(m.x,m.y),a.classList.toggle("visible",!0),e.addEventListener(Autodesk.Viewing.VIEWER_RESIZE_EVENT,this.onOrientationChanged)},this.deactivate=function(){a.classList.remove("visible"),y=!1,e.removeEventListener(Autodesk.Viewing.VIEWER_RESIZE_EVENT,this.onOrientationChanged)}}Autodesk.Viewing.GlobalManagerMixin.call(iA.prototype);const eA=125e-7;function oA(A){q.call(this,A),this.viewer.setGlobalManager(A.viewer.globalManager),this.configuration.keyboardTopTurnSpeed=.5,this.configuration.keyboardTurnStopDuration=.4,this.configuration.mouseTurnInverted=!0,this.ui=new iA(this.viewer,this,A.options.joystickOptions)}let nA;oA.prototype=Object.create(q.prototype),oA.prototype.constructor=oA;const aA=new THREE.Quaternion;let sA=new THREE.Matrix4;const rA=new THREE.Quaternion(0,0,-Math.sqrt(.5),Math.sqrt(.5));var lA=oA.prototype;lA.activate=function(){q.prototype.activate.call(this),this.ignoreGravity=!0;const A=this.viewer.getCamera().worldup;this.worldUpAxis=Object.keys(A).find((t=>1===A[t]))},lA.deactivate=function(){q.prototype.deactivate.call(this),this.deactivateGyroNavigation()},lA.updateKeyboardDisplacement=function(A){var t=this.running,i=this.moveForward,e=this.moveBackward,o=t?this.getTopRunSpeed():this.get("topWalkSpeed"),n=this.moveKeyboardVelocity,s=a(),r=15*o,l=0!==i||0!==e;if(l){var c=this.tool.camera,d=c.worldup,g=Math.max(this.moveForward,this.moveBackward),p=D(c),h=a(p);h.sub(a(d).multiplyScalar(d.dot(p))),h.normalize();var u=a(h).multiplyScalar(-1);s.add(h.multiplyScalar(i)),s.add(u.multiplyScalar(e)),s.normalize(),n.copy(s).multiplyScalar(g),s.multiplyScalar(r*Math.max(this.moveForward,this.moveBackward))}var w=a();!t&&n.lengthSq()>o*o&&(w.copy(n).normalize(),w.multiplyScalar(-this.getTopRunSpeed()/1),s.copy(w));var v=!l&&k(r,n,s);M(A,s,o,0===w.lengthSq(),v,n)},lA.updateKeyboardAngularVelocity=function(A){var t=this.get("keyboardTopTurnSpeed"),i=this.get("keyboardTurnStopDuration"),e=this.angularKeyboardVelocity,o=a(),n=t/i,s=this.turningWithKeyboard;if(s){var r=Math.min(t,Math.max(this.moveLeft,this.moveRight)+n*A);e.y=0,e.y-=this.moveLeft,e.y+=this.moveRight,e.normalize().multiplyScalar(r)}M(A,o,t,!0,!s&&k(n,e,o),e)},lA.updateGyroscopeVelocity=function(){if(!this.isGyroEnabled)return;var A;this.minimap3dExt||(this.minimap3dExt=this.viewer.getExtension("Autodesk.AEC.Minimap3DExtension"),null===(A=this.minimap3dExt)||void 0===A||A.setLockDragDirection(!0));const t=this.tool,i=new THREE.Euler,e=new THREE.Vector3(0,0,-1),o=t.camera.position;if(aA.set(this.x,this.y,this.z,this.w),nA){if(!(1-nA.dot(aA)>eA))return;nA=aA.clone(),aA.multiply(rA),i.setFromQuaternion(aA);const A=e.applyEuler(i);A.applyMatrix4(sA);const n=A.add(o);t.navapi.setView(o,n),t.navapi.orientCameraUp()}else{nA=aA.clone(),i.setFromQuaternion(aA);const A=e.applyEuler(i);A[this.worldUpAxis]=0;const n=t.camera.target.clone().sub(o);if(n[this.worldUpAxis]=0,A.lengthSq().5?A:0}updateMoveMouseTargetDistance(){this.moveMouseTargetDistance=0}handleMouseMove(A){var t=this.mousePosition,i={x:0,y:0,z:0};return h(A,this.viewer,i),this.turningWithMouse&&(this.get("mouseTurnInverted")?(this.turnMouseDelta.x+=i.x-t.x,this.turnMouseDelta.y+=i.y-t.y):(this.turnMouseDelta.x-=i.x-t.x,this.turnMouseDelta.y-=i.y-t.y),!this.lookingEnabled&&this.onClickMousePosition&&(this.walkDelta=i.y-this.onClickMousePosition.y)),this.mousePosition.copy(i),!0}handleButtonDown(A,t){return q.prototype.handleButtonDown.call(this,A,t),0===t&&h(A,this.viewer,this.onClickMousePosition),!0}handleButtonUp(A,t){return q.prototype.handleButtonUp.call(this,A,t),0===t&&(this.onClickMousePosition=new THREE.Vector2(0,0),this.walkDelta=0),!0}getCursor(){return this.lookingEnabled?"url(data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAQAAADYBBcfAAAACXBIWXMAABYlAAAWJQFJUiTwAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEtSURBVHja7JQxTkJBFEXPQ/xQEDG0ljRYSU1iLN2AtSWlC7Gw04QtGF2ApQVLIDY2hlgIDagJwWCOhf74JXxRYumbaib3ZO7c9zIhq1WBfzAfjJViDWPdYBq/w0pKITjhd7eGJwQkDu2I8rOFHYcmkqgDz4wfoeGZA01BHXtsbSla89ixZsH3an2LtpRUOQde28xFm17PgyPvVK1bl5yYEOtuq3rnyMQCXNJgiiTchuHCnhrGbYBMaXAJULGqlJz54O43bcFdH5xZUqpWJJWW7duza/tDmTWJbbv27Fs2PS2m1iZRNeGcI/aAEevOgCKnbAI7DNjjhUmk1ouf7xgHbLgF3MSzT7wCaxxSiW3hnsf4OngLotj3ILO74CoWTWzOIGcTXab4/6z+CnwbAGjXSZC++vLvAAAAAElFTkSuQmCC), auto":"url(data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAQdJREFUeNq0k0GOgzAMRZ+jHI4VO4410qzam0aCjbsoaS1PUgfoWIqAEPnZ3z8AN0DNWoFfVeUbC0BtrOtaISNhC3tvGkC2P7ZtY1kWgHul90JEtCYTkVqo7O844LPyeZ51RJ5atQ3biZeolFJ0miYd1d4nd5A/gB+g7E++AFB7VqzWIkKkfdW/d27P8RpE4p8jRy7Z9ZBOpSEgRRb0MAv0lmxZNEXJj0IACTvwrfeksJBW9a0Z6NEh+vl4UI6qHzHBJ4nyFQv6YoaG3Ls80X7vTIqS1W+vdWvArfuSG/pplPzTBRy6ybaLkSSHAFcThoCe/c6C81n7jUY6a78rHQigftBnQY8BAEubfpuApyq2AAAAAElFTkSuQmCC), auto"}_onContextMenu(A,t){const i=t.event,e=this.viewer.impl.hitTest(t.canvasX,t.canvasY);if(!e)return;const o=e.dbId;A.push({title:"Select",target:()=>{const A=i.shiftKey?this.viewer.getSelection():[];A.push(o),this.viewer.impl.disableSelection(!1),this.viewer.select(A),this.viewer.impl.disableSelection(!0)}})}}var dA=Autodesk.Viewing;const gA=Autodesk.Viewing.Private;function pA(A,t,i){this.viewer=A,this.options=t||{},this.names=["bimwalk"],this.navapi=A.navigation,this.camera=this.navapi.getCamera(),this.active=!1,this.clock=new THREE.Clock(!0),this.bimWalkExtension=i,this.setNavigator(A.prefs.get(gA.Prefs3D.BIM_WALK_NAVIGATOR_TYPE))}dA.EVENT_BIMWALK_CONFIG_CHANGED="EVENT_BIMWALK_CONFIG_CHANGED";var hA=pA.prototype;hA.setNavigator=function(A){if(dA.isMobileDevice())this.navigator=this.navigator||new oA(this);else if("aec"===A)this.navigator=new cA(this);else this.navigator=new q(this)},hA.set=function(A,t){if(!this.navigator.set(A,t))return!1;t=this.navigator.get(A);var i={type:dA.EVENT_BIMWALK_CONFIG_CHANGED,data:{configuration:A,value:t}};return this.viewer.dispatchEvent(i),!0},hA.get=function(A){return A?this.navigator.get(A):this.navigator.configuration},hA.isActive=function(){return this.active},hA.activate=function(A){this.active=!0,this.clock.start(),this.viewer.impl.pauseHighlight(!0),this.navapi.toPerspective(),this.navapi.setVerticalFov(this.camera.fov);var t=this.camera,i=(new THREE.Vector3).copy(t.target).sub(t.position).normalize().dot(t.worldup);if(Math.abs(i)>=.9999){var e=this.navigator,o=t.position,n=t.target,a=i<0?e.getMinPitchLimit():e.getMaxPitchLimit()-Math.PI,s=n.clone().sub(o),r=new THREE.Vector3(1,0,0);r.applyQuaternion(t.quaternion),s.applyAxisAngle(r,a),this.navapi.setRequestTransition(!0,o,s.add(o),t.fov)}dA.isMobileDevice()||this.viewer.canvas.focus(),this.navigator.activate()},hA.deactivate=function(A){this.active=!1,this.clock.stop(),this.viewer.impl.pauseHighlight(!1),this.navigator.deactivate(),this.bimWalkExtension.deactivate()},hA.update=function(){if(!this.active||!this.navapi.isActionEnabled("walk")||!this.viewer.model)return!1;for(var A=this.clock.getDelta(),t=1/30,i=0,e=Math.min(0|Math.ceil(A/t),15),o=this.navigator,n=p(1,this.viewer),r=this.camera.clone(),l=0,c=0,d=0;dx;N1&&void 0!==arguments[1]?arguments[1]:{};Autodesk.Viewing.Extension.call(this,A,t),this.options=t,this.name="bimwalk",this._updateButtonState=this._updateButtonState.bind(this),this._updateToolNavigator=this._updateToolNavigator.bind(this),this._createRaycastIterator=this._createRaycastIterator.bind(this),this._setAsDefault=this._setAsDefault.bind(this),this._onEscape=this._onEscape.bind(this),this._onFitToView=this._onFitToView.bind(this),this._isDefault=!1,this._enableGravityCheckBoxID=null}vA.prototype=Object.create(Autodesk.Viewing.Extension.prototype),vA.prototype.constructor=vA;var mA=vA.prototype;mA.load=function(){var A=this.viewer;this.tool=new pA(A,this.options,this),A.toolController.registerTool(this.tool,this.setActive.bind(this)),A.prefs.addListeners(uA.Prefs3D.DEFAULT_NAVIGATION_TOOL_3D,this._setAsDefault),A.addEventListener(Autodesk.Viewing.AGGREGATE_FIT_TO_VIEW_EVENT,this._onFitToView),A.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT,this._createRaycastIterator),A.addEventListener(Autodesk.Viewing.MODEL_ADDED_EVENT,this._createRaycastIterator);const t=this.viewer.impl.get3DModels();for(let A=0;Athis.tool.navigator.enableGravity(A)),uA.Prefs3D.BIM_WALK_GRAVITY),t.addEventListener(Autodesk.Viewing.TOOL_CHANGE_EVENT,this._updateButtonState),t.addEventListener(Autodesk.Viewing.MODEL_REMOVED_EVENT,this._updateButtonState),t.addEventListener(Autodesk.Viewing.MODEL_ADDED_EVENT,this._updateButtonState),t.addEventListener(Autodesk.Viewing.ESCAPE_EVENT,this._onEscape),t.prefs.addListeners(uA.Prefs3D.BIM_WALK_NAVIGATOR_TYPE,this._updateToolNavigator),this._setAsDefault(t.prefs.get(uA.Prefs3D.DEFAULT_NAVIGATION_TOOL_3D))},mA._makeBVHInWorker=function(A){const t=this,i={frags_per_leaf_node:16,frags_per_inner_node:0,frags_per_leaf_node_transparent:16,frags_per_inner_node_transparent:0,max_polys_per_node:1/0};if(!t._bvhWorker){t._rayCastComputations=new Set,t._bvhWorker=uA.createWorker("BvhWorker");const A=function(A){var e;const o=A.data.bvh,n=null===(e=t.viewer.impl)||void 0===e?void 0:e.findModel(A.data.modelId);if(n){const A=new uA.ModelIteratorBVH;A.initialize(n,new uA.NodeArray(o.nodes,o.useLeanNodes),o.primitives,i),n.setRaycastIterator(A)}t._rayCastComputations.delete(n),0===t._rayCastComputations.size&&(t._bvhWorker.terminate(),t._bvhWorker=null)};t._bvhWorker.addEventListener("message",A)}if(t._rayCastComputations.has(A))return;const e=A.getFragmentList().fragments,o={operation:"COMPUTE_BVH",raiseError:null,onFailureCallback:null,onLoaderEvent:null,onOperationComplete:null,bvhOptions:i,modelId:A.id,fragments:{boxes:e.boxes,polygonCounts:e.polygonCounts,length:e.length,wantSort:!(A.isOTG()||A.isSVF2())}};t._rayCastComputations.add(A),t._bvhWorker.doOperation(o)},mA._createRaycastIterator=function(A){if(A.model&&(A=A.model),!A.getRaycastIterator()&&!A.is2d()&&!A.isSceneBuilder()){const t=A.getFragmentList().fragments;A.isLoadDone()||t.boxesLoaded?this._makeBVHInWorker(A):A.hasEventListener(Autodesk.Viewing.MODEL_FRAGMENT_BOUNDING_BOXES_SET_EVENT,this._createRaycastIterator)||A.addEventListener(Autodesk.Viewing.MODEL_FRAGMENT_BOUNDING_BOXES_SET_EVENT,this._createRaycastIterator,{once:!0})}},mA._updateButtonState=function(){var A=!!this.viewer.model,t=this,i=Autodesk.Viewing.UI;if(t.bimWalkToolButton){var e=A&&t.tool&&t.tool.isActive()?i.Button.State.ACTIVE:A?i.Button.State.INACTIVE:i.Button.State.DISABLED;t.bimWalkToolButton.setState(e)}t.activeStatus&&!A&&t.deactivate(),t.activeStatus&&!A&&t.deactivate()},mA._updateToolNavigator=function(A){this.deactivate(),this.tool.setNavigator(A)},mA._setAsDefault=function(A){switch(A){case"extractor_defined":var t=this.viewer.model.getMetadata("navigation hint","value",null);if(!t||"walk"!==t.toLowerCase())break;case"bimwalk":this.viewer.getDefaultNavigationToolName()!==this.tool.getName()&&(this.viewer.setDefaultNavigationTool(this.tool.getName()),this.activeStatus=!0,this._isDefault=!0);break;default:this._isDefault&&this.viewer.activateDefaultNavigationTools(this.viewer.model.is2d()),this._isDefault=!1}},mA._onEscape=function(){this._setAsDefault(this.viewer.prefs.get(uA.Prefs3D.DEFAULT_NAVIGATION_TOOL_3D))},mA._onFitToView=async function(){this.disableGravityUntilNextMove()},mA.disableGravityUntilNextMove=async function(){var A;await Autodesk.Viewing.EventUtils.waitUntilTransitionEnded(this.viewer);const t=null===(A=this.tool)||void 0===A?void 0:A.navigator;t&&(t.userOverFloor=!0)},mA.getInfoButton=function(){var A=this.tool&&this.tool.navigator,t=A&&A.ui;return t&&t.infoIcon},mA.jumpToFloor=function(A){this.tool.navigator.jumpToFloor(A)},Autodesk.Viewing.theExtensionManager.registerExtension("Autodesk.BimWalk",vA)})(),Autodesk.Extensions.BimWalk=e})(); +//# sourceMappingURL=BimWalk.min.js.map \ No newline at end of file diff --git a/public/autodesk/extensions/BoxSelection/BoxSelection.min.js b/public/autodesk/extensions/BoxSelection/BoxSelection.min.js new file mode 100644 index 0000000..1092bf8 --- /dev/null +++ b/public/autodesk/extensions/BoxSelection/BoxSelection.min.js @@ -0,0 +1,18 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var e={3600:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),s=o(6314),r=o.n(s)()(i());r.push([e.id,".icon-box-selection{fill:none;stroke:currentColor;stroke-width:1;stroke-dasharray:4 2}.box-selection-contains{border:1px solid gray;background-color:rgba(75,160,255,.3);position:fixed}.box-selection-intersects{border:1px dotted gray;background-color:rgba(75,255,160,.3);position:fixed}","",{version:3,sources:["webpack://./extensions/BoxSelection/BoxSelection.css"],names:[],mappings:"AAAA,oBAAoB,SAAS,CAAC,mBAAmB,CAAC,cAAc,CAAC,oBAAoB,CAAC,wBAAwB,qBAAqB,CAAC,oCAAoC,CAAC,cAAc,CAAC,0BAA0B,sBAAsB,CAAC,oCAAoC,CAAC,cAAc",sourcesContent:[".icon-box-selection{fill:none;stroke:currentColor;stroke-width:1;stroke-dasharray:4 2}.box-selection-contains{border:1px solid gray;background-color:rgba(75,160,255,.3);position:fixed}.box-selection-intersects{border:1px dotted gray;background-color:rgba(75,255,160,.3);position:fixed}"],sourceRoot:""}]);const a=r},6314:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var o="",n=void 0!==t[5];return t[4]&&(o+="@supports (".concat(t[4],") {")),t[2]&&(o+="@media ".concat(t[2]," {")),n&&(o+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),o+=e(t),n&&(o+="}"),t[2]&&(o+="}"),t[4]&&(o+="}"),o})).join("")},t.i=function(e,o,n,i,s){"string"==typeof e&&(e=[[null,e,void 0]]);var r={};if(n)for(var a=0;a0?" ".concat(h[5]):""," {").concat(h[1],"}")),h[5]=s),o&&(h[2]?(h[1]="@media ".concat(h[2]," {").concat(h[1],"}"),h[2]=o):h[2]=o),i&&(h[4]?(h[1]="@supports (".concat(h[4],") {").concat(h[1],"}"),h[4]=i):h[4]="".concat(i)),t.push(h))}},t}},1354:e=>{"use strict";e.exports=function(e){var t=e[1],o=e[3];if(!o)return t;if("function"==typeof btoa){var n=btoa(unescape(encodeURIComponent(JSON.stringify(o)))),i="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(n),s="/*# ".concat(i," */");return[t].concat([s]).join("\n")}return[t].join("\n")}},5072:e=>{"use strict";var t=[];function o(e){for(var o=-1,n=0;n{"use strict";var t={};e.exports=function(e,o){var n=function(e){if(void 0===t[e]){var o=document.querySelector(e);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement)try{o=o.contentDocument.head}catch(e){o=null}t[e]=o}return t[e]}(e);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");n.appendChild(o)}},540:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},5056:(e,t,o)=>{"use strict";e.exports=function(e){var t=o.nc;t&&e.setAttribute("nonce",t)}},7825:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(o){!function(e,t,o){var n="";o.supports&&(n+="@supports (".concat(o.supports,") {")),o.media&&(n+="@media ".concat(o.media," {"));var i=void 0!==o.layer;i&&(n+="@layer".concat(o.layer.length>0?" ".concat(o.layer):""," {")),n+=o.css,i&&(n+="}"),o.media&&(n+="}"),o.supports&&(n+="}");var s=o.sourceMap;s&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(s))))," */")),t.styleTagTransform(n,e,t.options)}(t,e,o)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},1113:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}}},t={};function o(n){var i=t[n];if(void 0!==i)return i.exports;var s=t[n]={id:n,exports:{}};return e[n](s,s.exports,o),s.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nc=void 0;var n={};(()=>{"use strict";o.r(n),o.d(n,{BoxSelectionExtension:()=>ie});const e=THREE.Vector4,t=0,i=1,s=2;function r(e,t){switch(t){case 0:return e.x;case 1:return e.y;case 2:return e.z}return 0}function a(o,n,s,a,l,c){return function(t,o,n,i,s){var a,l,c,h,u;o.length=0,l=t.length&&t[t.length-1],h=i*r(l,n)-l.w*s;for(var d=0;do.max.x*x.w&&r++,x.yo.max.y*x.w&&c++,x.zo.max.z*x.w&&u++}if(n+r+l+c+h+u===0)return s;if(n===d||r===d||l===d||c===d||h===d||u===d)return e.length=0,t;var m=[],v=[e],S=[m],y=[null];return n&&a(0,-1,o.min.x,v,S,y)===t||r&&a(0,1,o.max.x,v,S,y)===t||l&&a(1,-1,o.min.y,v,S,y)===t||c&&a(1,1,o.max.y,v,S,y)===t||h&&a(2,-1,o.min.z,v,S,y)===t||u&&a(2,1,o.max.z,v,S,y)===t?(e.length=0,t):(v[0]===m&&(e.length=0,e.push(...m)),i)}const{enumMeshLines:c,enumMeshTriangles:h}=Autodesk.Viewing.Private.VertexEnumerator,u=THREE.Frustum,d=THREE.Vector3,p=THREE.Vector4,x=THREE.Box3,m=THREE.Matrix4;var v=new u,S=new m,y=new m,g=new THREE.Box3;g.min.x=-1,g.min.y=-1,g.min.z=-1,g.max.x=1,g.max.y=1,g.max.z=1;var f=new x,w=new d,A=new d,b=new d,T=new d,C=new d,P=new d,B=new d,E=new d,N=new d,M=new d,O=new p,I=new p,k=new p;function z(e,t){for(var o=N,n=M,i=e.planes,s=0,r=0;r<6;r++){var a=i[r];o.x=a.normal.x>0?t.min.x:t.max.x,n.x=a.normal.x>0?t.max.x:t.min.x,o.y=a.normal.y>0?t.min.y:t.max.y,n.y=a.normal.y>0?t.max.y:t.min.y,o.z=a.normal.z>0?t.min.z:t.max.z,n.z=a.normal.z>0?t.max.z:t.min.z;var l=a.distanceToPoint(o),c=a.distanceToPoint(n);if(l<0&&c<0)return 0;l>0&&c>0&&s++}return 6===s?2:1}function V(e,t,o){let n=e.x,i=e.y,s=e.z,r=t.elements;o.x=r[0]*n+r[4]*i+r[8]*s+r[12],o.y=r[1]*n+r[5]*i+r[9]*s+r[13],o.z=r[2]*n+r[6]*i+r[10]*s+r[14],o.w=r[3]*n+r[7]*i+r[11]*s+r[15]}function R(e,o,n,i){let r=!0,a=!1;return e.isLine?c(e,((e,i)=>{V(e,o,O),V(i,o,I);let c=l([O,I,k],n);c!==s&&(r=!1),c!==t&&(a=!0)})):h(e,((e,i,c)=>{V(e,o,O),V(i,o,I),V(c,o,k);let h=l([O,I,k],n);h!==s&&(r=!1),h!==t&&(a=!0)})),r?2:a?1:0}function H(e,t){this.camera=e,this.scene=t,this.startPoint=new d,this.endPoint=new d,this.result=[]}H.prototype.select=function(e,t,o){return this.startPoint=e||this.startPoint,this.endPoint=t||this.endPoint,this.result=[],this.updateFrustum(this.startPoint,this.endPoint),this.searchChildInRenderScene(v,o),this.result},H.prototype.updateFrustum=function(e,t){e=e||this.startPoint,t=t||this.endPoint,e.x===t.x&&(t.x+=Number.EPSILON),e.y===t.y&&(t.y+=Number.EPSILON),this.camera.updateProjectionMatrix(),this.camera.updateMatrixWorld(),S.multiplyMatrices(this.camera.projectionMatrix,S.copy(this.camera.matrixWorld).invert());var o=Math.min(e.x,t.x),n=Math.max(e.y,t.y),i=Math.max(e.x,t.x),s=Math.min(e.y,t.y);w.set(o,n,-1),A.set(i,n,-1),b.set(i,s,-1),T.set(o,s,-1),C.set(o,n,1),P.set(i,n,1),B.set(i,s,1),E.set(o,s,1),g.min.x=o,g.min.y=s,g.min.z=-1,g.max.x=i,g.max.y=n,g.max.z=1,y.copy(S).invert(),w.applyProjection(y),A.applyProjection(y),b.applyProjection(y),T.applyProjection(y),C.applyProjection(y),P.applyProjection(y),B.applyProjection(y),E.applyProjection(y);var r=v.planes;r[0].setFromCoplanarPoints(w,C,P),r[1].setFromCoplanarPoints(A,P,B),r[2].setFromCoplanarPoints(B,E,T),r[3].setFromCoplanarPoints(E,C,w),r[4].setFromCoplanarPoints(A,b,T),r[5].setFromCoplanarPoints(B,P,C)},H.prototype.searchChildInRenderScene=function(e,t){let o=this.scene.getModels(),n={intersectsBox:function(t){return z(e,t)}};for(let i of o){let o=i.getFragmentList(),s=new Map;if(i.getIterator().intersectFrustum(n,((t,n)=>{let i;if(n?i=2:(o.getWorldBounds(t,f),i=z(e,f)),0===i)return;if(2!==i){o.getWorldMatrix(t,y),y.multiplyMatrices(S,y),i=R(o.getGeometry(t),y,g)}if(0===i)return;let r=o.getDbIds(t),a=s.get(r);(void 0===a||2===a&&2!==i)&&s.set(r,i)})),t){let e={model:i,ids:[]};s.forEach(((t,o)=>{2===t&&e.ids.push(o)})),this.result.push(e)}else this.result.push({model:i,ids:Array.from(s.keys())})}};class L{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.viewer=e,this.options=t,this.isDown=!1,this.element=document.createElement("div"),this.styleContains=this.options.styleContains||this.options.cssClassName||"box-selection-contains",this.styleIntersects=this.options.styleIntersects||this.options.cssClassName||"box-selection-intersects",this.element.classList.add(this.styleContains),this.element.style.pointerEvents="none",this.startPoint=new THREE.Vector2,this.endPoint=new THREE.Vector2,this.useGeometricIntersection=this.options.useGeometricIntersection||Autodesk.Viewing.isMobileDevice(),this.boxIntersection=new H(this.viewer.getCamera(),this.viewer.impl.modelQueue())}getName(){return"box-selection"}getNames(){return["box-selection"]}activate(){this.active=!0}deactivate(){this.onSelectOver(),this.active=!1}isActive(){return this.active}getCursor(){return"crosshair"}register(){}handleGesture(e){switch(e.type){case"dragstart":return this.handleButtonDown(e,0);case"dragmove":return this.handleMouseMove(e);case"dragend":return this.handleButtonUp(e,0)}return!1}handleButtonDown(e,t){return 0===t&&(this.viewer.impl.selector.clearSelection(),this.isDown=!0,this.onSelectStart(e),!0)}handleMouseMove(e){return!!this.isDown&&(this.onSelectMove(e),!0)}handleButtonUp(e,t){if(0!==t)return!1;this.isDown=!1,this.onSelectOver(e);const o=this.getSelection();return o.forEach((e=>{e.selectionType=this.options.selectionType})),this.viewer.impl.selector.setAggregateSelection(o),!0}getSelection(){const e=this.viewer.impl.getCanvasBoundingClientRect(),t=this.viewer.impl.clientToViewport(Math.min(this.startPoint.x,this.endPoint.x)-e.left,Math.max(this.startPoint.y,this.endPoint.y)-e.top),o=this.viewer.impl.clientToViewport(Math.max(this.startPoint.x,this.endPoint.x)-e.left,Math.min(this.startPoint.y,this.endPoint.y)-e.top);if(this.useGeometricIntersection)return this.boxIntersection.select(t,o,this.endPoint.x>this.startPoint.x);{const e=this.viewer.impl.hitBoxTestViewport(t,Math.abs(this.startPoint.x-this.endPoint.x)/this.viewer.impl.canvas.clientWidth,Math.abs(this.startPoint.y-this.endPoint.y)/this.viewer.impl.canvas.clientHeight),o=[],n={},i={};for(let t=0;t=this.startPoint.x?this.element.classList.replace(this.styleIntersects,this.styleContains):this.element.classList.replace(this.styleContains,this.styleIntersects)}onSelectOver(){this.element.parentElement&&this.element.parentElement.removeChild(this.element)}}const J={en:JSON.parse('{"@@locale":"en","@@context":"BoxSelection Extension","Select":"Select"}'),"en-GB":JSON.parse('{"@@locale":"en","@@context":"BoxSelection Extension","Select":"Select"}'),cs:JSON.parse('{"@@locale":"cs","@@context":"Rozšíření BoxSelection","Select":"Vybrat"}'),de:JSON.parse('{"@@locale":"de","@@context":"Erweiterung BoxSelection","Select":"Auswählen"}'),es:JSON.parse('{"@@locale":"es","@@context":"BoxSelection Extension","Select":"Seleccionar"}'),fr:JSON.parse('{"@@locale":"fr","@@context":"Extension BoxSelection","Select":"Sélectionner"}'),"fr-CA":JSON.parse('{"@@locale":"fr-CA","@@context":"Extension BoxSelection","Select":"Sélectionner"}'),it:JSON.parse('{"@@locale":"it","@@context":"Estensione BoxSelection","Select":"Seleziona"}'),ja:JSON.parse('{"@@locale":"ja","@@context":"BoxSelection Extension","Select":"選択"}'),ko:JSON.parse('{"@@locale":"ko","@@context":"BoxSelection 확장","Select":"선택"}'),pl:JSON.parse('{"@@locale":"pl","@@context":"Rozszerzenie BoxSelection","Select":"Wybierz"}'),"pt-BR":JSON.parse('{"@@locale":"pt","@@context":"Extensão BoxSelection","Select":"Selecionar"}'),ru:JSON.parse('{"@@locale":"ru","@@context":"Расширение BoxSelection","Select":"Выбрать"}'),tr:JSON.parse('{"@@locale":"tr","@@context":"BoxSelection Uzantısı","Select":"Seç"}'),"zh-Hans":JSON.parse('{"@@locale":"zh-Hans","@@context":"BoxSelection 扩展","Select":"选择"}'),"zh-Hant":JSON.parse('{"@@locale":"zh-Hant","@@context":"BoxSelection 延伸","Select":"選取"}'),"zh-HK":JSON.parse('{"@@locale":"zh-hk","@@context":"BoxSelection 擴充程式","Select":"選取"}'),nl:JSON.parse('{"@@locale":"nl","@@context":"BoxSelection-extensie","Select":"Selecteren"}'),sv:JSON.parse('{"@@locale":"sv","@@context":"BoxSelection-tillägg","Select":"Välj"}'),da:JSON.parse('{"@@locale":"da","@@context":"BoxSelection-udvidelse","Select":"Vælg"}'),no:JSON.parse('{"@@locale":"no","@@context":"BoxSelection-utvidelse","Select":"Velg"}')};var _=o(5072),j=o.n(_),F=o(7825),U=o.n(F),D=o(7659),G=o.n(D),W=o(5056),K=o.n(W),X=o(540),Y=o.n(X),q=o(1113),Q=o.n(q),Z=o(3600),$={};$.styleTagTransform=Q(),$.setAttributes=K(),$.insert=G().bind(null,"head"),$.domAPI=U(),$.insertStyleElement=Y();j()(Z.A,$);Z.A&&Z.A.locals&&Z.A.locals;const ee=Autodesk.Viewing,te=ee.UI.Button.State,oe="box-selection",ne=oe;class ie extends ee.Extension{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(e,t),this.name=oe,this._onToolChanged=this._onToolChanged.bind(this),this.options.selectionType=t.selectionType||(t.useGeometricIntersection?ee.SelectionType.REGULAR:ee.SelectionType.MIXED)}load(){return this.extendLocalization(J),this.boxSelectionTool=new L(this.viewer,this.options),this.viewer.toolController.registerTool(this.boxSelectionTool,((e,t)=>{this.setActive(e,t)})),this.registerHotkeys(),!0}unload(){if(this.viewer.getActiveNavigationTool()===ne&&this.viewer.setActiveNavigationTool(),this.boxSelectionToolButton){const e=this.viewer.getToolbar().getControl(Autodesk.Viewing.TOOLBAR.NAVTOOLSID);e&&(e.removeControl(this.boxSelectionToolButton.getId()),this.boxSelectionToolButton=null)}return this.viewer.toolController.deregisterTool(this.boxSelectionTool),this.viewer.removeEventListener(Autodesk.Viewing.TOOL_CHANGE_EVENT,this._onToolChanged),this.viewer.getHotkeyManager().popHotkeys("Autodesk.BoxSelection"),!0}createToolbarButton(){const e=new Autodesk.Viewing.UI.Button("toolbar-box-selection");e.setIcon("adsk-icon-selection"),e.setToolTip("Select"),e.onClick=()=>{const t=e.getState();t===Autodesk.Viewing.UI.Button.State.INACTIVE?this.activate(oe):t===Autodesk.Viewing.UI.Button.State.ACTIVE&&this.deactivate()},this.boxSelectionToolButton=e}addToolbarButton(e){var t,o;if(!this.boxSelectionToolButton)return;const n=null===(t=(o=this.viewer).getToolbar)||void 0===t?void 0:t.call(o),i=null==n?void 0:n.getControl(Autodesk.Viewing.TOOLBAR.NAVTOOLSID);if(!i)return;const s=i.getControl(this.boxSelectionToolButton.getId());e&&!s?i.addControl(this.boxSelectionToolButton,{index:0}):!e&&s&&i.removeControl(this.boxSelectionToolButton)}onToolbarCreated(e){this.viewer.addEventListener(Autodesk.Viewing.TOOL_CHANGE_EVENT,this._onToolChanged),this.createToolbarButton(),this.addToolbarButton(!1)}registerHotkeys(){this.viewer.getHotkeyManager().pushHotkeys("Autodesk.BoxSelection",[{keycodes:[Autodesk.Viewing.KeyCode.CONTROL],onPress:()=>(this.boxSelectionTool.isActive()||(this.viewer.toolController.activateTool(this.boxSelectionTool.getName()),this.boxSelectionTool.__hotKey=!0),!0),onRelease:()=>(this.boxSelectionTool.__hotKey&&(this.viewer.toolController.deactivateTool(this.boxSelectionTool.getName()),this.boxSelectionTool.__hotKey=!1),!0)}])}activate(e){return e===oe&&(this._updateActiveState(!0),this.viewer.setActiveNavigationTool(oe)),!0}deactivate(){return this.viewer.setActiveNavigationTool(),this._updateActiveState(!1),!0}setSelectionType(e){this.options.selectionType=e||ee.SelectionType.REGULAR}_updateActiveState(e){this.activeStatus=e,this.mode=e?oe:""}_onToolChanged(e){if(e.toolName===ne&&this.boxSelectionToolButton){const t=e.active?te.ACTIVE:te.INACTIVE;this.boxSelectionToolButton.setState(t),this._updateActiveState(!t)}}}ee.theExtensionManager.registerExtension("Autodesk.BoxSelection",ie)})(),Autodesk.Extensions.BoxSelection=n})(); +//# sourceMappingURL=BoxSelection.min.js.map \ No newline at end of file diff --git a/public/autodesk/extensions/CompGeom/CompGeom.min.js b/public/autodesk/extensions/CompGeom/CompGeom.min.js new file mode 100644 index 0000000..4fac531 --- /dev/null +++ b/public/autodesk/extensions/CompGeom/CompGeom.min.js @@ -0,0 +1,18 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var t={6986:(t,e,i)=>{"use strict";i.r(e),i.d(e,{LmvCanvasContext:()=>x,hijackContextAPI:()=>l});var n=i(8917),s=Autodesk.Viewing,r=s.Private;const o=r.VertexBufferBuilder;function l(t,e){["fillRect","strokeRect","clearRect","beginPath","closePath","moveTo","lineTo","arc","arcTo","quadraticCurveTo","bezierCurveTo","rect","fill","stroke","clip","strokeText","fillText","drawImage","save","restore","setLineDash","createPattern","beginMarkedContent","beginMarkedContentProps","endMarkedContent","setCurrentOperatorIndex","isLMVCanvasContext","beginChildGroup","endChildGroup"].forEach((i=>{t["_original"+i]=t[i],t[i]=e[i].bind(e)}))}let h=new Array(6),a=new THREE.Vector2,p=new THREE.Box2;var u=new THREE.Vector3,d=new THREE.Quaternion,c=new THREE.Vector3,f=new THREE.Vector3,y=new THREE.Matrix4;class x{static getLayerKey(t){let e;return t&&"object"==typeof t?(e=t.ocgId,void 0===e&&(e=t.name)):e=t,e}static isRef(t){return null!=t&&"number"==typeof t.num&&"number"==typeof t.gen}static refKey(t){return`${t.num}-${t.gen}`}static applyTransform(t,e){return[t[0]*e[0]+t[1]*e[2]+e[4],t[0]*e[1]+t[1]*e[3]+e[5]]}static inverseTransform(t){const e=t[0]*t[3]-t[1]*t[2];return[t[3]/e,-t[1]/e,-t[2]/e,t[0]/e,(t[2]*t[5]-t[4]*t[3])/e,(t[4]*t[1]-t[5]*t[0])/e]}constructor(t,e,i,n,r,h,a){var p=s.getGlobal().document.createElement("canvas"),u=p.getContext("2d");if(p.height=t.height,p.width=t.width,u.imageSmoothingEnabled=!1,this.canvasContext=u,this.viewport=t,this.toPageUnits=e,this.meshCallback=i,1==t.clipToViewport){let i=t.offsetX||0,n=t.offsetY||0;this.bounds=new THREE.Vector4(i*e,n*e,(t.width+i)*e,(t.height+n)*e)}this.currentMeshIndex=0,this.imageNumber=0,this.currentVbb=new o(!1),this._curPath=null,this._curClip=null,this.first=!0,this.states=[],this.glyphCache={},this.usingTextLayer=r,this.precisionTolerance=.1,this.dbId=-1,this.maxDbId=0,this.consecutiveIds=!1,s.isMobileDevice()&&Autodesk.Extensions.CompGeom.SetTesselationParams(void 0,.1),this.fontEngine=n,this.lineStyle=0,this.isScreenSpace=!1,l(u,this),this.layers={},this.defaultLayerId=0,this.currentLayerId=this.defaultLayerId,this.sequencedDbId=-1,this.taggedId=null,this.defaultVPId=0,this.viewportCounter=1,this.currentVpId=this.defaultVPId,this.viewports=[this.createViewPortData((new THREE.Matrix4).makeScale(t.scale,t.scale,t.scale).elements)],this.viewportMap={},this.ocgStack=[],this.msdfRender=!0,this.fontAtlas=h,this.pdfRefMap=a||{},this.smallImageSequenceToCheck=-1,this.inSmallImageRendering=!1,this.inChildGroup=!1,this.overrideCompositeOperation="source-over",this.overrideAlpha=1}destroy(){this.canvasContext=null,this.meshCallback=null}updateDBId(){null!=this.taggedId?this.dbId=this.taggedId:this.consecutiveIds&&(this.sequencedDbId++,this.dbId=this.sequencedDbId),this.maxDbId=Math.max(this.maxDbId,this.dbId)}snapToPixel(t,e){const i=this.canvasContext.mozCurrentTransformInverse,n=this.canvasContext.mozCurrentTransform;let s=x.applyTransform([t,e],n);return s[0]=Math.round(s[0]),s[1]=Math.round(s[1]),x.applyTransform(s,i)}save(){this.states.push({clip:this._curClip,consecutiveIds:this.consecutiveIds,lineDashedDef:this.lineDashedDef,lineStyle:this.lineStyle,overrideCompositeOperation:this.overrideCompositeOperation,overrideAlpha:this.overrideAlpha,inChildGroup:this.inChildGroup}),this.canvasContext._originalsave()}restore(){let t=this.states.pop();t&&(this._curClip=t.clip,this.consecutiveIds=t.consecutiveIds,this.lineDashedDef=t.lineDashedDef,this.lineStyle=t.lineStyle,this.overrideCompositeOperation=t.overrideCompositeOperation,this.overrideAlpha=t.overrideAlpha,this.inChildGroup=t.inChildGroup),this.canvasContext._originalrestore()}flushBuffer(t,e,i){if(!this.currentVbb.vcount&&!e)return;let n="source-over";const s="source-over"!=this.overrideCompositeOperation?this.overrideCompositeOperation:this.canvasContext.globalCompositeOperation;"multiply"!==s&&"min"!==s&&"darken"!==s&&"lighten"!==s||(n=s);const r=this.currentCompositeOperation!==n;if((e||this.currentVbb.isFull(t)||r)&&this.currentVbb.vcount){const t=this.currentVbb.toMesh();t.material={skipEllipticals:!this.currentVbb.numEllipticals,skipCircles:!this.currentVbb.numCirculars,skipTriangleGeoms:!this.currentVbb.numTriangleGeoms,skipMiterLines:!this.currentVbb.numMiterLines,useInstancing:this.currentVbb.useInstancing,isScreenSpace:!this.currentImage,hasLineStyles:this.currentVbb.hasLineStyles,msdfFontTexture:!!this.hasMSDFContent,viewportBounds:this.bounds,imageUVTexture:2===i},this.currentImage&&(t.material.image=this.currentImage,t.material.image.name=this.currentImage.cacheKey||this.imageNumber++,t.material.compositeCanvasColor="#ffffff",t.material.opacity=this.canvasContext.globalAlpha,this.currentImage=null),t.material.compositeOperation=this.currentCompositeOperation,this.inChildGroup&&t.material.opacity!==this.overrideAlpha&&(t.material.hasOpacity=!!this.overrideAlpha,t.material.opacity=this.overrideAlpha),this.meshCallback(t,this.currentMeshIndex++),this.currentVbb.reset(0),this.hasMSDFContent=!1}this.currentCompositeOperation=n}addPolyTriangle(t,e,i,n,s,r){var o=this,l=null,h=this.currentVpId;function a(t,e){if(t>e){var i=t;t=e,e=i}if(l[t]){var n=l[t],s=n.lastIndexOf(e);-1==s?n.push(e):n[s]=-1}else l[t]=[e]}function p(e,r){if(e>r){var a=e;e=r,r=a}var p=l[e];p&&(-1!=p.indexOf(r)&&(o.flushBuffer(4),o.currentVbb.addSegment(t[2*e],t[2*e+1],t[2*r],t[2*r+1],o.currentLayerId,-.5,i,n,s,h,o.lineStyle)))}if(r){l=new Array(t.length/2);for(var u=0,d=e.length;u{const e=t.startPoint.slice(),i=t.endPoint.slice(),n=this.getCurrentTransform(),s=e[0],r=i[0];e[0]=this.tx(s,e[1],n),e[1]=this.ty(s,e[1],n),i[0]=this.tx(r,i[1],n),i[1]=this.ty(r,i[1],n);const o=this.viewport.scale||1;let l=1/this.toPageUnits/o,h=(this._curPath.bbox.max.x-this._curPath.bbox.min.x)*l,a=(this._curPath.bbox.max.y-this._curPath.bbox.min.y)*l;const p=Math.max(h,a,1);p>2048&&(l*=2048/p,h=(this._curPath.bbox.max.x-this._curPath.bbox.min.x)*l,a=(this._curPath.bbox.max.y-this._curPath.bbox.min.y)*l);const u=this._curPath.bbox.min.x,d=this._curPath.bbox.min.y;e[0]-=u,e[1]-=d,i[0]-=u,i[1]-=d,e[0]*=l,e[1]*=l,i[0]*=l,i[1]*=l;const c=document.createElement("canvas");c.width=Math.max(h,1),c.height=Math.max(a,1);const f=c.getContext("2d"),y=t.generateCanvasGradient(f,e,i);f.fillStyle=y,f.fillRect(0,0,c.width,c.height);const x=this.createPattern(c,"no-repeat");return x.isGradient=!0,x},e=this.canvasContext.fillStyle;if(e&&!0===e.isPattern)return e;if(e instanceof CanvasGradient){return t(new g(e))}if("string"!=typeof e)return console.warn("Unsupported fill style."),0;var i=parseInt(e.slice(1),16);return 255*this.canvasContext.globalAlpha<<24|(255&i)<<16|65280&i|i>>16&255}getStrokeColor(){let t=this.canvasContext;if(this.lastStrokeStyle===t.strokeStyle&&t.globalAlpha===this.lastAlpha)return this.lastRgb;{let i;"string"!=typeof t.strokeStyle?(console.warn("Unsupported stroke style."),i=parseInt(0,16)):i=parseInt(t.strokeStyle.slice(1),16);var e=255*t.globalAlpha<<24|(255&i)<<16|65280&i|i>>16&255;return this.lastRgb=e,this.lastStrokeStyle=t.strokeStyle,this.lastAlpha=t.globalAlpha,e}}getCurrentTransform(){let t=this.canvasContext.mozCurrentTransform;if(this.isFontChar){let e=this.invXform,i=t[0],n=t[1],s=t[2],r=t[3],o=t[4],l=t[5];return h[0]=e[0]*i+e[2]*n,h[1]=e[1]*i+e[3]*n,h[2]=e[0]*s+e[2]*r,h[3]=e[1]*s+e[3]*r,h[4]=e[0]*o+e[2]*l+e[4],h[5]=e[1]*o+e[3]*l+e[5],h}return t}getCurrentInverseTransform(){return this.canvasContext.mozCurrentTransformInverse}tx(t,e,i){return(t*(i=i||this.getCurrentTransform())[0]+e*i[2]+i[4])*(this.isFontChar?1:this.toPageUnits)}ty(t,e,i){return(t*(i=i||this.getCurrentTransform())[1]+e*i[3]+i[5])*(this.isFontChar?1:this.toPageUnits)}scaleValue(t,e){return e=e||this.getCurrentTransform(),this.toPageUnits*Math.sqrt(Math.abs(e[0]*e[3]-e[1]*e[2]))*t}transformBox(t,e,i){return e=e||this.getCurrentTransform(),p.makeEmpty(),a.set(this.tx(t.min.x,t.min.y,e),this.ty(t.min.x,t.min.y,e)),p.expandByPoint(a),a.set(this.tx(t.max.x,t.min.y,e),this.ty(t.max.x,t.min.y,e)),p.expandByPoint(a),a.set(this.tx(t.max.x,t.max.y,e),this.ty(t.max.x,t.max.y,e)),p.expandByPoint(a),a.set(this.tx(t.min.x,t.max.y,e),this.ty(t.min.x,t.max.y,e)),p.expandByPoint(a),i?(i.copy(p),i):p.clone()}fillRect(t,e,i,n){if(this.inSmallImageRendering){const s=this.snapToPixel(t,e),r=this.snapToPixel(t+i,e+n),o=r[0]-s[0],l=r[1]-s[1];this.canvasContext._originalfillRect(s[0],s[1],o,l)}else this.updateDBId(),this.rect(t,e,i,n),this.dbId=this.first?-1:this.dbId,this.first=!1,this.fill(),this.beginPath()}strokeRect(t,e,i,n){console.log("strokeRect")}clearRect(t,e,i,n){console.log("clearRect")}_beginTextChar(t,e,i,n,s){this.isFontChar=!0,this.invXform=this.canvasContext.mozCurrentTransformInverse,this.hashKey=t.codePointAt(0)+"/"+n.loadedName+"/"+s,this.cachedGlyph=this.glyphCache[this.hashKey],this.cachedGlyph?this.skipPath=!0:this.skipPath=!1}drawMSDFText(t,e,i,s,r){var o=s.name;function l(t,e,i,n,s,r){return Math.abs((r-n)*t-(s-i)*e+s*n-r*i)/Math.sqrt((r-n)*(r-n)+(s-i)*(s-i))}if(this.fontAtlas&&this.fontAtlas.charsMap&&this.fontAtlas.charsMap[o]){var h=this.fontAtlas.charsMap[o][t.charCodeAt(0)];if(null==h)return!1;{this.currentVbb.isFull(4)&&this.flushBuffer(0,!0),this.hasMSDFContent=!0;var a=this.fontAtlas.chars[h];if(a.page>0)return!1;var p=this.fontAtlas.common[a.common],u=r/this.fontAtlas.info[a.info].size,d=a.width*(u+0);let t=a.inverseYAxis?-1:1;var c=a.height*(u+i)*t,f=a.txoffset*(u+0),y=a.tyoffset*(u+i)*-t,x=[f,y,f,y+c,f+d,y+c,f+d,y],g=[];for(let t=0;t0&&"string"==typeof(arguments.length<=0?void 0:arguments[0])?this.canvasContext._originalfill(arguments.length<=0?void 0:arguments[0]):this.canvasContext._originalfill());let t=!1;if(arguments.length){var e;let i=(e=arguments.length-1)<0||arguments.length<=e?void 0:arguments[e];"boolean"==typeof i&&(t=i)}this.isFontChar&&!this.cachedGlyph&&(this.glyphCache[this.hashKey]=this._curPath,this.cachedGlyph=this._curPath,this.cachedGlyph.isFontChar=!0),this.isFontChar=!1,this.cachedGlyph?this.cachedGlyph.fill(this,this.getFillColor(),this.dbId,this.currentLayerId,this._curClip,!0):this._curPath&&this._curPath.fill(this,this.getFillColor(),this.dbId,this.currentLayerId,this._curClip,!1,t),this.skipPath=!1}stroke(){if(this.inSmallImageRendering)return void this.canvasContext._originalstroke();this.isFontChar&&!this.cachedGlyph&&(this.glyphCache[this.hashKey]=this._curPath,this.cachedGlyph=this._curPath,this.cachedGlyph.isFontChar=!0),this.updateLineDashStyle(),this.isFontChar=!1;const t=this.isScreenSpace?-1:1;this.cachedGlyph?this.cachedGlyph.stroke(this,t*this.scaleValue(this.canvasContext.lineWidth),this.getStrokeColor(),this.dbId,this.currentLayerId,this._curClip,!0,this.lineStyle,this.canvasContext.lineCap):this._curPath&&this._curPath.stroke(this,t*this.scaleValue(this.canvasContext.lineWidth),this.getStrokeColor(),this.dbId,this.currentLayerId,this._curClip,!1,this.lineStyle,this.canvasContext.lineCap),this.skipPath=!1}clip(t,e){this.inSmallImageRendering?this.canvasContext._originalclip(t):void 0!==e&&void 0!==t?(this._curClip=t,console.log("Probably unsupported use case")):(this._curClip?this._curClip=this._curClip.clip(this._curPath,t):this._curClip=this._curPath,this._curPath=null)}strokeText(t,e,i,n,s,r){let o=this.canvasContext;o.save(),o.translate(e,i),this.fontEngine.drawText(this,t,0,0,s,r),this.stroke(),o.restore()}fillText(t,e,i,n,s,r){let o=this.canvasContext;o.save(),o.translate(e,i),this.fontEngine.drawText(this,t,0,0,s,r),this.fill(),o.restore()}getRotationAndScale(t){y.elements[0]=t[0],y.elements[1]=t[1],y.elements[4]=t[2],y.elements[5]=t[3],y.elements[12]=t[4],y.elements[13]=t[5],y.decompose(u,d,c);let e=Math.sqrt(1-d.w*d.w);f.set(d.x/e,d.y/e,d.z/e);let i=2*Math.acos(Math.max(Math.min(1,d.w),-1));return d.z<0&&(i=-i),i<0&&(i+=2*Math.PI),{angle:i,scale:c}}drawImage(t,e,i,s,r,o,l,h,a){if(this.inSmallImageRendering){let n=!1;void 0===o&&(o=e,l=i,h=s,a=r,n=!0),void 0===h&&(o=e,l=i,h=t.width,a=t.height,n=!0);const p=this.snapToPixel(o,l),u=this.snapToPixel(o+h,l+a),d=u[0]-p[0],c=u[1]-p[1];return void(n?this.canvasContext._originaldrawImage(t,p[0],p[1],d,c):this.canvasContext._originaldrawImage(t,e,i,s,r,p[0],p[1],d,c))}let p=this._curClip;if(0===t.width||0===t.height)return void console.warn("Zero size image, skipping");const u=this.getCurrentTransform(),{angle:d,scale:c}=this.getRotationAndScale(u);if(void 0===o&&(o=e,l=i,h=s,a=r),void 0===h&&(h=t.width,a=t.height),h)if(p){const e=this.tx(o,l),i=this.ty(o,l),s=this.tx(o+h,l),r=this.ty(o+h,l),u=this.tx(o+h,l+a),d=this.ty(o+h,l+a),c=this.tx(o,l+a),f=this.ty(o,l+a),y=[u-c,d-f,e-c,i-f,c,f];let g={image:t,imageTransform:x.inverseTransform(y)},P=new n.Path2D(this.precisionTolerance);P.moveTo(e,i),P.lineTo(s,r),P.lineTo(u,d),P.lineTo(c,f),P.closePath(),p.fill(this,g,this.dbId,this.currentLayerId,P,!1,!1)}else{let e=this.tx(o+h/2,l+a/2),i=this.ty(o+h/2,l+a/2),n=h*c.x*this.toPageUnits,s=-a*c.y*this.toPageUnits;this.flushBuffer(0,!0),this.currentVbb.addTexturedQuad(e,i,n,s,d,4294902015,0,this.currentLayerId,0),this.currentImage=t,this.flushBuffer(0,!0,1)}else console.warn("Zero size image, skipping")}_processProperties(t){x.isRef(t)&&(t=this.pdfRefMap[x.refKey(t)]);for(let e in t)x.isRef(t[e])&&(t[e]=this.pdfRefMap[x.refKey(t[e])]);return t}beginMarkedContent(t){t&&(t=this._processProperties(t));let e=t.name||t.DBID;isNaN(e)?this.taggedId=null:this.taggedId=parseInt(e),null!==this.taggedId&&this.dbId!==this.taggedId&&this.updateDBId(),t.VP&&(this.currentVpId=this.viewportCounter++),this.ocgStack.push({taggedId:this.taggedId,viewPortId:this.currentVpId})}beginMarkedContentProps(t,e){if(e&&(e=this._processProperties(e)),"OC"===t){var i=this.layers[x.getLayerKey(e)];void 0===i&&(i=this.currentLayerId),this.currentLayerId=i,this.ocgStack.push({layerId:this.currentLayerId})}else isNaN(t)||(this.taggedId=parseInt(t),this.dbId!==this.taggedId&&this.updateDBId()),e?(e.VP&&(this.currentVpId=this.viewportCounter++),this.ocgStack.push({viewPortId:this.currentVpId,taggedId:this.taggedId})):this.ocgStack.push({})}endMarkedContent(){this.ocgStack.length>0&&this.ocgStack.pop();const t=t=>{for(let e=this.ocgStack.length-1;e>=0;--e)if(t in this.ocgStack[e])return this.ocgStack[e][t];return null};let e=t("layerId"),i=t("viewPortId"),n=t("taggedId");this.currentLayerId=null!==e?e:this.defaultLayerId,this.currentVpId=null!==i?i:this.defaultVPId;let s=n!==this.taggedId;this.taggedId=n,s&&this.updateDBId()}setLineStyleParam(t){if(!this.lineStyleInitialized){let i=r.LineStyleDefs.length,n=1;for(var e=0;e0){let i=this.getCurrentTransform(),n=[];for(var e=0;e=0){const e=this.smallImageSequences[this.smallImageSequenceToCheck];if(e.start==t){this.inSmallImageRendering=!0;const t=i(e.bbox,this.viewport.transform),n=Math.floor(t[0])-1,s=Math.floor(t[1])-1,r=Math.ceil(t[2]-t[0])+2,o=Math.ceil(t[3]-t[1])+2;this.canvasContext.save(),this.canvasContext.setTransform(1,0,0,1,0,0),this.canvasContext._originalclearRect(n,s,r,o),this.canvasContext.fillStyle="rgba(255, 255, 255, 0.005)",this.canvasContext._originalfillRect(n,s,r,o),this.canvasContext.restore()}else if(e.end==t){this.inSmallImageRendering=!1;const t=i(e.bbox,this.viewport.transform),n=Math.floor(t[0])-1,s=Math.floor(t[1])-1,r=Math.ceil(t[2]-t[0])+2,o=Math.ceil(t[3]-t[1])+2;let l=document.createElement("canvas");l.width=r,l.height=o;l.getContext("2d").drawImage(this.canvasContext.canvas,n,s,r,o,0,0,r,o),this.canvasContext.save(),this.canvasContext.setTransform(1,0,0,1,0,0),this.canvasContext.drawImage(l,n,s,r,o),this.canvasContext.restore(),this.smallImageSequenceToCheck++,this.smallImageSequenceToCheck>=this.smallImageSequences.length&&(this.smallImageSequenceToCheck=-1)}}}setSmallImageSequences(t){t&&t.length>0&&(this.smallImageSequences=t,this.smallImageSequenceToCheck=0)}setTessParams(t){this.tessParams=t}finish(){this.flushBuffer(0,!0),this.fontAtlas=null}createViewPortData(t,e,i){return{units:e||"feet and inches",transform:t,geom_metrics:this.initGeomMetrics(),precision:i}}isLMVCanvasContext(){return!0}initGeomMetrics(){return{arcs:0,circles:0,circ_arcs:0,viewports:0,clips:0,colors:0,db_ids:0,dots:0,fills:0,layers:0,line_caps:0,line_joins:0,line_patterns:0,line_pat_refs:0,plines:0,pline_points:0,line_weights:0,links:0,miters:0,ptris:0,ptri_indices:0,ptri_points:0,rasters:0,texts:0,strings:[]}}addContextCurrentTransform(){const t=this.canvasContext;t.mozCurrentTransform||(t._originalSave=t.save,t._originalRestore=t.restore,t._originalRotate=t.rotate,t._originalScale=t.scale,t._originalTranslate=t.translate,t._originalTransform=t.transform,t._originalSetTransform=t.setTransform,t._transformMatrix=t._transformMatrix||[1,0,0,1,0,0],t._transformStack=[],Object.defineProperty(t,"mozCurrentTransform",{get:function(){return this._transformMatrix}}),Object.defineProperty(t,"mozCurrentTransformInverse",{get:function(){var t=this._transformMatrix,e=t[0],i=t[1],n=t[2],s=t[3],r=t[4],o=t[5],l=e*s-i*n,h=i*n-e*s;return[s/l,i/h,n/h,e/l,(s*r-n*o)/h,(i*r-e*o)/l]}}),t.save=function(){var t=this._transformMatrix;this._transformStack.push(t),this._transformMatrix=t.slice(0,6),this._originalSave()},t.restore=function(){var t=this._transformStack.pop();t&&(this._transformMatrix=t,this._originalRestore())},t.translate=function(t,e){var i=this._transformMatrix;i[4]=i[0]*t+i[2]*e+i[4],i[5]=i[1]*t+i[3]*e+i[5],this._originalTranslate(t,e)},t.scale=function(t,e){var i=this._transformMatrix;i[0]=i[0]*t,i[1]=i[1]*t,i[2]=i[2]*e,i[3]=i[3]*e,this._originalScale(t,e)},t.transform=function(e,i,n,s,r,o){var l=this._transformMatrix;this._transformMatrix=[l[0]*e+l[2]*i,l[1]*e+l[3]*i,l[0]*n+l[2]*s,l[1]*n+l[3]*s,l[0]*r+l[2]*o+l[4],l[1]*r+l[3]*o+l[5]],t._originalTransform(e,i,n,s,r,o)},t.setTransform=function(e,i,n,s,r,o){this._transformMatrix=[e,i,n,s,r,o],t._originalSetTransform(e,i,n,s,r,o)},t.rotate=function(t){var e=Math.cos(t),i=Math.sin(t),n=this._transformMatrix;this._transformMatrix=[n[0]*e+n[2]*i,n[1]*e+n[3]*i,n[0]*-i+n[2]*e,n[1]*-i+n[3]*e,n[4],n[5]],this._originalRotate(t)})}beginChildGroup(t){return t.smask?(this.inChildGroup=!1,!1):(this.flushBuffer(0,!0),this.overrideCompositeOperation=this.canvasContext.globalCompositeOperation,this.overrideAlpha*=this.canvasContext.globalAlpha,this.inChildGroup=!0,!0)}endChildGroup(t){return!!this.inChildGroup&&(this.flushBuffer(0,!0),!0)}_getModelToViewportMatrix(t,e){let i="string"==typeof t?JSON.parse(t):t;if(e){const t=new Autodesk.Viewing.Private.LmvMatrix4(!0).fromArray(i),e=new Autodesk.Viewing.Private.LmvMatrix4(!0).makeScale(this.viewport.scale,this.viewport.scale,1);e.multiply(t),i=e.elements}return i}}class g{constructor(t){if(Object.prototype.hasOwnProperty.call(t,"rawData")){const e=t.rawData;this.type=e[1],this.colorStops=e[3],this.startPoint=e[4],this.endPoint=e[5],this.startRadius=e[6],this.endRadius=e[7]}else Object.assign(this,t)}isValid(){return!!(this.type&&this.startPoint&&this.endPoint&&this.colorStops)&&("radial"!==this.type||void 0!==this.startRadius&&void 0!==this.endRadius)}getFillStyle(t){if(!this.isValid())return;const e=t.createLinearGradient(0,0,1,1);return Object.assign(e,this),e}generateCanvasGradient(t,e,i){if(!this.isValid())return;const n=this.type,s=this.colorStops,r=e||this.startPoint,o=i||this.endPoint,l=this.startRadius,h=this.endRadius;let a=null;"axial"===n||"linear"===n?a=t.createLinearGradient(r[0],r[1],o[0],o[1]):"radial"===n&&(a=t.createRadialGradient(r[0],r[1],l,o[0],o[1],h));for(let t=0,e=s.length;t{var n=i(4813),s=function(t,e){if(this.p=t,this.q=e,t.y>e.y)this.q=t,this.p=e;else if(t.y===e.y)if(t.x>e.x)this.q=t,this.p=e;else if(t.x===e.x)throw new Error("poly2tri Invalid Edge constructor: repeated points!",[t]);this.q._p2t_edge_list||(this.q._p2t_edge_list=[]),this.q._p2t_edge_list.push(this)};n.SweepContext.prototype.initEdges=function(t,e){var i,n=t.length,r=e?t.length-1:t.length;for(i=0;i{"use strict";i.r(e),i.d(e,{DefaultTessParams:()=>n,SetTesselationParams:()=>s,TesselateCubic:()=>l,TesselateQuad:()=>h,getCubeBezierPoint:()=>a});const n={numIterations:100,minSegLenFraction:.05};function s(t,e){t&&(n.numIterations=t),e&&(n.minSegLenFraction=e)}function r(t,e,i,n){return Math.sqrt((t-i)*(t-i)+(e-n)*(e-n))}function o(t,e){if(t>4*e&&e>0){var i=Math.sqrt(t/e);t=e*(i=Math.min(4,i))}return t}function l(t,e,i,s,l,h,a,p,u,d,c,f){c=c||n;var y=r(e,i,s,l)+r(s,l,h,a)+r(h,a,p,u);f||(d=o(d,y));for(var x=(d=d||1/c.minSegLenFraction)*c.minSegLenFraction,g=1/c.numIterations,P=g*g*g,m=3*g,v=m*g,C=v+v,_=6*P,I=e-2*s+h,E=i-2*l+a,T=3*(s-h)-e+p,b=3*(l-a)-i+u,L=e,S=i,A=(s-e)*m+I*v+T*P,N=(l-i)*m+E*v+b*P,O=I*C+T*_,w=E*C+b*_,X=T*_,M=b*_,F=0,Y=0|1/g-.5,B=0;B=x&&(t.lineTo(L,S),F=0);t.lineTo(p,u)}function h(t,e,i,s,l,h,a,p,u,d){u=u||n;var c=r(e,i,s,l)+r(s,l,h,a);d||(p=o(p,c));for(var f=(p=p||1/u.minSegLenFraction)*u.minSegLenFraction,y=1/u.numIterations,x=y*y,g=e-2*s+h,P=i-2*l+a,m=e,v=i,C=2*(s-e)*y+g*x,_=2*(l-i)*y+P*x,I=2*g*x,E=2*P*x,T=0,b=0|1/y-.5,L=0;L=f&&(t.lineTo(m,v),T=0);t.lineTo(h,a)}function a(t,e,i,n,s,r,o,l,h,a){var p=a||{x:void 0,y:void 0};let u=1-t,d=u*u*u,c=3*u*u*t,f=3*u*t*t,y=t*t*t;return p.x=d*e+c*n+f*r+y*l,p.y=d*i+c*s+f*o+y*h,p}},8597:(t,e,i)=>{"use strict";i.r(e),i.d(e,{ComplexPolygon:()=>h});var n=i(6435),s=i.n(n),r=i(9318),o=i(1272),l=i(299);class h{constructor(t,e,i){this.pts=t,this.contours=[],this.customInsideChecker=e,this.bbox=i,this._tmpVec=i instanceof THREE.Box3?new THREE.Vector3:new THREE.Vector2}addContour(t){this.contours.push(t)}pointInContour(t,e,i){var n,s,r,o,l,h,a=!1,p=this.pts;r=p[i[i.length-1]].x,n=(o=p[i[i.length-1]].y)>=e;for(var u=0,d=i.length;u=e)&&(h-e)*(r-l)>=(l-t)*(o-h)==s&&(a=!a),n=s,r=l,o=h;return a}pointInPolygon(t,e){for(var i=!1,n=0;n1&&void 0!==arguments[1]?arguments[1]:{}};if(!this.contours.length)return this.triangulationFailed=!0,void(this.indices=null);this.indices=[];var i=function(t,e){let i=e.getSize(e instanceof THREE.Box3?new THREE.Vector3:new THREE.Vector2),n=e.min.x+.5*i.x,s=e.min.y+.5*i.y,r=2/i.length(),o=[];for(let e=0,i=t.length;e10&&!this.customInsideChecker&&this.createPointInPolygonChecker();let e=t.map_;for(var i=0;i0?this.indices.push(t,e,i):this.indices.push(t,i,e)}}findSegmentIntersections(t,e,i,n){if(!this.cachedEdges){this.cachedEdges=[];for(let t=0;tt.d-e.d)),l[0].d{"use strict";i.r(e),i.d(e,{ContourSet:()=>o,polygonArea:()=>s});var n=i(8597);function s(t){if(t.length<3)return 0;let e=!1;t[0]!==t[t.length-1]&&(e=!0);let i=0;for(let e=0,n=t.length-1;e{let i=t.id;void 0===i&&(i=this.contours.length+":"+e);let s=this.allPointsMap[i];void 0===s&&(s=this.allPoints.length,this.allPoints.push(t),this.allPointsMap[i]=s,r.set(t.x,t.y),this.bbox.expandByPoint(r)),n.push(s)})),0===i&&e||(this.contours.push(n),this.areas.push(i))}addContourSet(t){let e=t.contours[0],i=t.allPoints,n=e.map((t=>i[t]));this.addContour(n)}triangulate(t){if(this.polygon)return;let e=this.allPoints,i=new n.ComplexPolygon(e,t,this.bbox);i.contours=this.contours,i.triangulate(),this.polygon=i,this.triangulationFailed=this.polygon.triangulationFailed}area(){return this.areas[0]}areaNet(){let t=this.areas[0];for(let e=1;e{let i=e.map((t=>this.allPoints[t].id));i[0]===i[i.length-1]&&i.pop(),i.sort(),t.push(i)})),JSON.stringify(t)}stitchContours(){this.areas=[];let t=[];for(var e=0;e0){let i=-s[0]-1,n=s[1];e[n].pop(),Array.prototype.push.apply(e[n],e[i]),t=i}if(s[0]>0&&s[1]<0){let i=s[0],n=-s[1]-1;e[i].pop(),Array.prototype.push.apply(e[i],e[n]),t=n}if(s[0]>0&&s[1]>0){let i=s[0],n=s[1];e[i].pop(),Array.prototype.push.apply(e[i],e[n].reverse()),t=n}void 0!==t&&(e.splice(t,1),i=!0);break}}}}containsPointFrom(t){if(!t.polygon.indices||t.polygon.indices.length<3)return!1;let e=t.allPoints[t.polygon.indices[0]],i=t.allPoints[t.polygon.indices[1]],n=t.allPoints[t.polygon.indices[2]],s=(e.x+i.x+n.x)/3,r=(e.y+i.y+n.y)/3;return this.polygon&&this.polygon.pointInPolygon(s,r)}toPolygonMesh(t){return this.polygon.toPolygonMesh(t)}toExtrudedMesh(t){return this.polygon.toExtrudedMesh(t)}}},4136:(t,e,i)=>{"use strict";i.r(e),i.d(e,{DCEL:()=>u});var n=i(1272),s=i(5229),r=i(7201),o=i(5420),l=i(299);const h=Autodesk.Viewing.Private.logger;class a{constructor(t,e){this.x=t,this.y=e,this.edges=[],this.dbIds=[],this.dbIdsChanged=!1}isDegenerate(){return this.edges.length<2}addEdge(t){for(let e=0;e=0?this.edges.splice(e,1):h.warn("Failed to find edge in vertex list")}findEdgeTo(t){for(let e=0;e{let i=t.angle;t.v1!==this&&(i-=Math.PI);let n=e.angle;return e.v1!==this&&(n-=Math.PI),i-n}))}_canTraverse(t){return t.v1!==this||t.flagFwd?t.v2===this&&!t.flagRev&&(t.flagRev=1,!0):(t.flagFwd=1,!0)}findUntraversedEdge(){for(let t=0;tt.u-e.u)),this.removeDirectedEdge(t);for(let t=1;t{let e=(0,n.segmentsIntersect)(t,a,this.precisionTolerance);e&&(e.e1&&e.e1.length&&(c[t.id]=e.e1),e.e2&&e.e2.length&&d.push.apply(d,e.e2))}));for(let t in c)this.splitEdge(this.edges[parseInt(t)],c[t]);return d.length&&this.splitEdge(a,d),this.dirty=!0,u}removeDirectedEdge(t){t.v1.removeEdge(t),t.v2.removeEdge(t),this.edges[t.id]=void 0,this.quadTreeEdges.deleteItem(t)}removeDanglingPolyline(t){for(;1===t.edges.length;){let e=t.edges[0],i=e.getOppositeVertex(t);this.removeDirectedEdge(e),t=i}}cleanupFlatEdges(){let t=[];this.verts.forEach((e=>{if(!e)return;if(2!==e.edges.length)return;let i=e.edges[0],n=e.edges[1],s=Math.abs(i.angle-n.angle);(s<.002||Math.abs(s-Math.PI)<.002)&&t.push(e);let r=i.getOppositeVertex(e),o=n.getOppositeVertex(e);if(r.findEdgeTo(o)){.5*Math.abs(i.dx*n.dy-n.dx*i.dy)<.001&&t.push(e)}}));for(let e=0;e=0;t--){let e=this.closedAreas[t];if(i.containsPointFrom(e)){if(!e.isHole){i.isHole=!0,this.holes.push(i);break}i.addContourSet(e)}}i.isHole||i.triangulate(t)}for(let e=0,i=this.holes.length;e=0;t--){let e=this.holes[t];e.holeProcessFlag||i.containsPointFrom(e)&&(i.addContourSet(e),i.isHole=!1,e.holeProcessFlag=!0)}i.isHole||i.triangulate(t)}let e=[];for(let t=0;tt.sortEdges()));let i=[],n=[];this.verts.forEach((t=>{let e=t.findUntraversedEdge();if(!e)return;let s=[t],r=e.getOppositeVertex(t);do{if(s.push(r),e=r.findNextCCWEdge(e),!e)break;r=e.getOppositeVertex(r)}while(r&&r!==t);r===t?(s.push(t),i.push(s)):n.push(s)})),this.closedAreas=[];for(let t=0,e=i.length;tt.area()-e.area())),t?this._detectHolesEvenOdd(e):this._detectHolesNonZero(e),this.openAreas=[],n.length){let t=[],e=new r.ContourSet;for(let t=0,i=n.length;t{let e=(0,n.segmentsIntersect)(t,l,this.precisionTolerance);e&&e.e1&&e.e1.length&&(h[t.id]=e.e1)}));for(let t in h){let e=parseInt(t),i=this.edges[e];this.removeDirectedEdge(i),this.removeDanglingPolyline(i.v1),this.removeDanglingPolyline(i.v2)}this.dirty=!0}deleteEdgesInRectangle(t,e,i,n){let s=Math.min(t,i),r=Math.min(e,n),o=Math.max(t,i),l=Math.max(e,n),h={};this.quadTreeEdges.enumInBox(s,r,o,l,(t=>{h[t.id]=t}));for(let t in h){let e=parseInt(t),i=this.edges[e];i&&(this.removeDirectedEdge(i),this.removeDanglingPolyline(i.v1),this.removeDanglingPolyline(i.v2))}this.dirty=!0}findNearestVertex(t,e,i){"number"!=typeof i&&(i=this.precisionTolerance);let n=1/0,s=null;return this.verts.enumInBox(t-i,e-i,t+i,e+i,(i=>{let r=(i.x-t)*(i.x-t)+(i.y-e)*(i.y-e);r{(0,n.pointOnLine)(t,e,o,!0,i,s)&&s.d{"use strict";i.r(e),i.d(e,{EdgeSet:()=>d});var n,s=i(9318),r=i(299),o=i(8597);function l(t){return t[t.LMV_APP_NAMESPACE]=t[t.LMV_APP_NAMESPACE]||{}}function h(){const t="undefined"!=typeof window&&null!==window?window:"undefined"!=typeof self&&null!==self?self:i.g;return t.USE_LMV_APP_NAMESPACES?(t.globalProxy||(t.globalProxy=new Proxy({},{get(e,i){let n=t[i];return"function"==typeof n?function(t,e){return new Proxy(e,{get:(t,e)=>t[e],apply:(e,i,n)=>e.call(t||i,...n)})}(t,n):n},set:(e,i,n)=>(Object.prototype.hasOwnProperty.call(t,i)?t[i]!==n&&(t[i]=n):(l(t)[i]=n,Object.defineProperty(t,i,{get:()=>l(t)[i],set:e=>{l(t)[i]=e}})),!0)})),t.globalProxy):t}const a=h(),p=(a&&a.document,"undefined"!=typeof navigator);p&&navigator.userAgent.match(/Edge|Trident\/7\./),p&&navigator.userAgent.match(/Trident\/7\./);p&&(/ip(ad|hone|od)/.test(navigator.userAgent.toLowerCase())||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1||/^ip(ad|hone|od)$/.test(null===(n=navigator.platform)||void 0===n?void 0:n.toLowerCase()));p&&navigator.userAgent.toLowerCase().indexOf("android");const u=h();class d{constructor(t,e,i){this.edges=t,this.bbox=e,this.verts=new r.UniquePointList(e,i),this.polygon=null}getPointIndex(t,e){return this.verts.findOrAddPoint(t,e).id}snapEdges(){for(var t=0;t1){o=e;break}if(!o)for(let e in t)if(t[e].length>0){o=e;break}if(!o)break;var l=-1,h=parseInt(o),a=t[o];for(n.push(h);a&&a.length;){var p=a.shift();if(p===l&&(p=a.shift()),void 0===p){delete t[h];break}n.push(p),(0==a.length||a[0]===l)&&delete t[h],l=h,h=p,a=t[p]}n.length&&(this.contours.push(n),n=[])}var d=[];for(let t=0;t0){const t=-m[0]-1,e=m[1];x[e].pop(),Array.prototype.push.apply(x[e],x[t]),v=t}if(m[0]>0&&m[1]<0){const t=m[0],e=-m[1]-1;x[t].pop(),Array.prototype.push.apply(x[t],x[e]),v=e}if(m[0]>0&&m[1]>0){const t=m[0],e=m[1];x[t].pop(),Array.prototype.push.apply(x[t],x[e].reverse()),v=e}void 0!==v&&(x.splice(v,1),f=!0);break}}}}cleanupFlatEdges(){let t=this.verts.pts,e=this.verts.precisionTolerance;for(let i=0;i0&&void 0!==arguments[0]?arguments[0]:{},e=new s.IntervalTree(this.verts.pts,this.edges,this.bbox);e.build();let i=new o.ComplexPolygon(this.verts.pts,e,this.bbox);return i.contours=this.contours,i.triangulate(t),i}}},2324:(t,e,i)=>{"use strict";i.r(e),i.d(e,{EllipseArc:()=>u,angleInsideArc:()=>h,angleInsideArcCCW:()=>l,getAngleDelta:()=>o,getEllipseArcPoint:()=>s,getEllipsePoint:()=>n,normalizeAngle:()=>r});const n=function(t,e,i,n,s){let r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;const o=(arguments.length>6&&void 0!==arguments[6]?arguments[6]:null)||new THREE.Vector2;let l=e+n*Math.cos(t),h=i+s*Math.sin(t);if(0!==r){const t=Math.cos(r),n=Math.sin(r),s=l-e,o=h-i;l=s*t-o*n+e,h=s*n+o*t+i}return o.set(l,h)},s=function(t,e,i,s,o,l,h){let a=arguments.length>7&&void 0!==arguments[7]?arguments[7]:0,p=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,u=h-l;if(Math.abs(u)(t/=2*Math.PI,(t-=Math.trunc(t))<0&&(t+=1),2*t*Math.PI),o=(t,e,i)=>{let n=e-t;return n=r(n),i?n:2*Math.PI-n},l=(t,e,i)=>(t=r(t),(e=r(e))<(i=r(i))?t>=e&&t<=i:t>=e||t<=i),h=function(t,e,i){let n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];const s=l(t,e,i);return n?s:!s},a=(t,e,i,n)=>{var s=t*i+e*n,r=Math.sqrt(t*t+e*e)*Math.sqrt(i*i+n*n),o=Math.acos(Math.max(-1,Math.min(1,s/r)));return t*n-e*i<0&&(o=-o),o},p=new THREE.Vector2;class u{constructor(t,e,i,n,s,r,o,l){this.set(t,e,i,n,s,r,o,l)}set(t,e,i,n,s,r,o,l){return this.cx=t,this.cy=e,this.rx=i,this.ry=n,this.startAngle=r,this.endAngle=o,this.ccw=l,this.rotation=s,this}setFromSvgArc(t,e,i,n,s,r,o){const l=i*Math.PI/180;if(t=Math.abs(t),e=Math.abs(e),0==t||0==e){const i=.01,n=360*p.copy(r).distanceTo(o)/i/(2*Math.PI);t=n,e=n}const h=(r.x-o.x)/2,u=(r.y-o.y)/2,d=Math.cos(l)*h+Math.sin(l)*u,c=-Math.sin(l)*h+Math.cos(l)*u;let f=t*t,y=e*e;const x=d*d,g=c*c,P=x/f+g/y;if(P>1){const i=Math.sqrt(P);f=(t*=i)*t,y=(e*=i)*e}const m=f*g+y*x,v=(f*y-m)/m;let C=Math.sqrt(Math.max(0,v));n===s&&(C=-C);const _=C*t*c/e,I=-C*e*d/t,E=Math.cos(l)*_-Math.sin(l)*I+(r.x+o.x)/2,T=Math.sin(l)*_+Math.cos(l)*I+(r.y+o.y)/2,b=a(1,0,(d-_)/t,(c-I)/e),L=a((d-_)/t,(c-I)/e,(-d-_)/t,(-c-I)/e)%(2*Math.PI);return this.cx=E,this.cy=T,this.rx=t,this.ry=e,this.rotation=l,this.startAngle=b,this.endAngle=b+L,this.ccw=s,this}getPoint(t,e){let i=this.startAngle,n=this.endAngle;return this.ccw||(i=this.endAngle,n=this.startAngle,t=1-t),s(t,this.cx,this.cy,this.rx,this.ry,i,n,this.rotation,e)}isValid(){return isFinite(this.cx)&&isFinite(this.cy)&&isFinite(this.rx)&&isFinite(this.ry)&&isFinite(this.rotation)&&isFinite(this.startAngle)&&isFinite(this.endAngle)}computeBBox(t){const e=Math.tan(this.rotation),i=-Math.atan(this.ry*e/this.rx),s=Math.PI-Math.atan(this.ry*e/this.rx),r=Math.atan(this.ry/(e*this.rx)),o=Math.PI+Math.atan(this.ry/(e*this.rx)),l=t?t.makeEmpty():new THREE.Box2,a=t=>{const e=n(t,this.cx,this.cy,this.rx,this.ry,this.rotation);l.expandByPoint(e)};return a(this.startAngle),a(this.endAngle),h(i,this.startAngle,this.endAngle,this.ccw)&&a(i),h(s,this.startAngle,this.endAngle,this.ccw)&&a(s),h(r,this.startAngle,this.endAngle,this.ccw)&&a(r),h(o,this.startAngle,this.endAngle,this.ccw)&&a(o),l}tesselate(t,e,i){const n=this.getPoint(0);for(var s=1;s{"use strict";i.r(e),i.d(e,{TOL:()=>n,isEqual:()=>r,isZero:()=>s});const n=1e-6;function s(t){return Math.abs(t){var n=Autodesk.Viewing,s=AutodeskNamespace("Autodesk.Viewing.Extensions.CompGeom");function r(e,i){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t.exports[n]=e[n],i[n]=e[n])}r(i(7201),s),r(i(2302),s),r(i(4136),s),r(i(5229),s),r(i(5420),s),r(i(2554),s),r(i(3965),s),r(i(2601),s),r(i(1272),s),r(i(6353),s),r(i(8189),s),r(i(908),s),r(i(9318),s),r(i(8597),s),r(i(299),s),r(i(6435),s),r(i(2324),s),r(i(8831),s),r(i(6986),s),r(i(8917),s);class o extends n.Extension{constructor(t,e){super(t,e)}load(){return!0}unload(){return!0}activate(){return!0}deactivate(){return!1}}n.theExtensionManager.registerExtension("Autodesk.CompGeom",o)},9318:(t,e,i)=>{"use strict";function n(){this.bbox=new THREE.Box2,this.left=null,this.right=null,this.node_edges=[]}function s(t,e,i){this.pts=t,this.edges=e,this.bbox=i,this.pipResult=!1}i.r(e),i.d(e,{IntervalTree:()=>s}),s.prototype.splitNode=function(t){if(!(t.bbox.min.y>=t.bbox.max.y||t.node_edges.length<3)){var e=.5*(t.bbox.min.y+t.bbox.max.y);t.left=new n,t.right=new n;for(var i=this.pts,s=t.node_edges,r=[],o=new THREE.Vector2,l=0;lp){var u=a;a=p,p=u}var d=null;pe?(t.right.node_edges.push(s[l]),d=t.right.bbox):r.push(s[l]),d&&(o.set(i[h.p1].x,i[h.p1].y),d.expandByPoint(o),o.set(i[h.p2].x,i[h.p2].y),d.expandByPoint(o))}t.node_edges=r,t.left.node_edges.length&&this.splitNode(t.left),t.right.node_edges.length&&this.splitNode(t.right)}},s.prototype.build=function(){this.root=new n;for(var t=this.root.node_edges,e=0;e=i)for(var n=this.pts,s=t.node_edges,r=0,o=s.length;r=i,d=n[l.p2],c=d.x,f=d.y,y=f>=i;u!=y&&(f-i)*(a-c)>=(c-e)*(p-f)==y&&(this.pipResult=!this.pipResult)}var x=t.left;x&&x.bbox.min.y<=i&&x.bbox.max.y>=i&&this.pointInPolygonRec(x,e,i);var g=t.right;g&&g.bbox.min.y<=i&&g.bbox.max.y>=i&&this.pointInPolygonRec(g,e,i)},s.prototype.pointInPolygon=function(t,e){return this.pipResult=!1,this.pointInPolygonRec(this.root,t,e),this.pipResult}},2641:t=>{!function(){"use strict";var e={version:"6.4.2.2",use_lines:!0,use_xyz:!1},i=!1;if(t.exports?(t.exports=e,i=!0):"undefined"!=typeof document?window.ClipperLib=e:self.ClipperLib=e,i){n="chrome";"Netscape"}else{var n=navigator.userAgent.toString().toLowerCase();navigator.appName}var s={};-1!=n.indexOf("chrome")&&-1==n.indexOf("chromium")?s.chrome=1:s.chrome=0,-1!=n.indexOf("chromium")?s.chromium=1:s.chromium=0,-1!=n.indexOf("safari")&&-1==n.indexOf("chrome")&&-1==n.indexOf("chromium")?s.safari=1:s.safari=0,-1!=n.indexOf("firefox")?s.firefox=1:s.firefox=0,-1!=n.indexOf("firefox/17")?s.firefox17=1:s.firefox17=0,-1!=n.indexOf("firefox/15")?s.firefox15=1:s.firefox15=0,-1!=n.indexOf("firefox/3")?s.firefox3=1:s.firefox3=0,-1!=n.indexOf("opera")?s.opera=1:s.opera=0,-1!=n.indexOf("msie 10")?s.msie10=1:s.msie10=0,-1!=n.indexOf("msie 9")?s.msie9=1:s.msie9=0,-1!=n.indexOf("msie 8")?s.msie8=1:s.msie8=0,-1!=n.indexOf("msie 7")?s.msie7=1:s.msie7=0,-1!=n.indexOf("msie ")?s.msie=1:s.msie=0;var r=function(t,e){var i;if(void 0===Object.getOwnPropertyNames){for(i in e.prototype)void 0!==t.prototype[i]&&t.prototype[i]!==Object.prototype[i]||(t.prototype[i]=e.prototype[i]);for(i in e)void 0===t[i]&&(t[i]=e[i]);t.$baseCtor=e}else{for(var n=Object.getOwnPropertyNames(e.prototype),s=0;s0?this.m_Childs[0]:this.GetNextSiblingUp()},e.PolyNode.prototype.GetNextSiblingUp=function(){return null===this.m_Parent?null:this.m_Index===this.m_Parent.m_Childs.length-1?this.m_Parent.GetNextSiblingUp():this.m_Parent.m_Childs[this.m_Index+1]},e.PolyNode.prototype.Childs=function(){return this.m_Childs},e.PolyNode.prototype.Parent=function(){return this.m_Parent},e.PolyNode.prototype.IsHole=function(){return this.IsHoleNode()},e.PolyTree=function(){this.m_AllPolys=[],e.PolyNode.call(this)},e.PolyTree.prototype.Clear=function(){for(var t=0,e=this.m_AllPolys.length;t0?this.m_Childs[0]:null},e.PolyTree.prototype.Total=function(){var t=this.m_AllPolys.length;return t>0&&this.m_Childs[0]!==this.m_AllPolys[0]&&t--,t},r(e.PolyTree,e.PolyNode),e.Clear=function(t){t.length=0},e.PI=3.141592653589793,e.PI2=6.283185307179586,e.FPoint=function(){var t=arguments,i=t.length;if(this.X=0,this.Y=0,e.use_xyz)if(this.Z=0,3===i)this.X=t[0],this.Y=t[1],this.Z=t[2];else if(2===i)this.X=t[0],this.Y=t[1],this.Z=0;else if(1===i)if(t[0]instanceof e.FPoint){var n=t[0];this.X=n.X,this.Y=n.Y,this.Z=0}else{void 0===(s=t[0]).Z&&(s.Z=0),this.X=s.X,this.Y=s.Y,this.Z=s.Z}else this.X=0,this.Y=0,this.Z=0;else if(2===i)this.X=t[0],this.Y=t[1];else if(1===i)if(t[0]instanceof e.FPoint){n=t[0];this.X=n.X,this.Y=n.Y}else{var s=t[0];this.X=s.X,this.Y=s.Y}else this.X=0,this.Y=0},e.FPoint.op_Equality=function(t,e){return t.X===e.X&&t.Y===e.Y},e.FPoint.op_Inequality=function(t,e){return t.X!==e.X||t.Y!==e.Y},e.FPoint0=function(){this.X=0,this.Y=0,e.use_xyz&&(this.Z=0)},e.FPoint0.prototype=e.FPoint.prototype,e.FPoint1=function(t){this.X=t.X,this.Y=t.Y,e.use_xyz&&(void 0===t.Z?this.Z=0:this.Z=t.Z)},e.FPoint1.prototype=e.FPoint.prototype,e.FPoint1dp=function(t){this.X=t.X,this.Y=t.Y,e.use_xyz&&(this.Z=0)},e.FPoint1dp.prototype=e.FPoint.prototype,e.FPoint2=function(t,i,n){this.X=t,this.Y=i,e.use_xyz&&(this.Z=void 0===n?0:n)},e.FPoint2.prototype=e.FPoint.prototype,e.FRect=function(){var t=arguments,e=t.length;if(4===e)this.left=t[0],this.top=t[1],this.right=t[2],this.bottom=t[3];else if(1===e){var i=t[0];this.left=i.left,this.top=i.top,this.right=i.right,this.bottom=i.bottom}else this.left=0,this.top=0,this.right=0,this.bottom=0},e.FRect0=function(){this.left=0,this.top=0,this.right=0,this.bottom=0},e.FRect0.prototype=e.FRect.prototype,e.FRect1=function(t){this.left=t.left,this.top=t.top,this.right=t.right,this.bottom=t.bottom},e.FRect1.prototype=e.FRect.prototype,e.FRect4=function(t,e,i,n){this.left=t,this.top=e,this.right=i,this.bottom=n},e.FRect4.prototype=e.FRect.prototype,e.ClipType={ctIntersection:0,ctUnion:1,ctDifference:2,ctXor:3},e.PolyType={ptSubject:0,ptClip:1},e.PolyFillType={pftEvenOdd:0,pftNonZero:1,pftPositive:2,pftNegative:3},e.JoinType={jtSquare:0,jtRound:1,jtMiter:2},e.EndType={etOpenSquare:0,etOpenRound:1,etOpenButt:2,etClosedLine:3,etClosedPolygon:4},e.EdgeSide={esLeft:0,esRight:1},e.Direction={dRightToLeft:0,dLeftToRight:1},e.TEdge=function(){this.Bot=new e.FPoint0,this.Curr=new e.FPoint0,this.Top=new e.FPoint0,this.Delta=new e.FPoint0,this.Dx=0,this.PolyTyp=e.PolyType.ptSubject,this.Side=e.EdgeSide.esLeft,this.WindDelta=0,this.WindCnt=0,this.WindCnt2=0,this.OutIdx=0,this.Next=null,this.Prev=null,this.NextInLML=null,this.NextInAEL=null,this.PrevInAEL=null,this.NextInSEL=null,this.PrevInSEL=null},e.IntersectNode=function(){this.Edge1=null,this.Edge2=null,this.Pt=new e.FPoint0},e.MyIntersectNodeSort=function(){},e.MyIntersectNodeSort.Compare=function(t,e){var i=e.Pt.Y-t.Pt.Y;return i>0?1:i<0?-1:0},e.LocalMinima=function(){this.Y=0,this.LeftBound=null,this.RightBound=null,this.Next=null},e.Scanbeam=function(){this.Y=0,this.Next=null},e.Maxima=function(){this.X=0,this.Next=null,this.Prev=null},e.OutRec=function(){this.Idx=0,this.IsHole=!1,this.IsOpen=!1,this.FirstLeft=null,this.Pts=null,this.BottomPt=null,this.PolyNode=null},e.OutPt=function(){this.Idx=0,this.Pt=new e.FPoint0,this.Next=null,this.Prev=null},e.Join=function(){this.OutPt1=null,this.OutPt2=null,this.OffPt=new e.FPoint0},e.ClipperBase=function(){this.m_MinimaList=null,this.m_CurrentLM=null,this.m_edges=new Array,this.m_HasOpenPaths=!1,this.PreserveCollinear=!1,this.m_Scanbeam=null,this.m_PolyOuts=null,this.m_ActiveEdges=null},e.ClipperBase.horizontal=-34e37,e.ClipperBase.Skip=-2,e.ClipperBase.Unassigned=-1,e.ClipperBase.tolerance=1e-20,e.ClipperBase.maxValue=Math.sqrt(Number.MAX_VALUE),e.ClipperBase.minValue=Math.sqrt(Number.MIN_VALUE),e.ClipperBase.near_zero=function(t){return t>-e.ClipperBase.tolerance&&te.X==t.Xe.Y==t.Ye.ClipperBase.maxValue||t.X<-e.ClipperBase.maxValue||t.Y>e.ClipperBase.maxValue||t.Y<-e.ClipperBase.maxValue||t.X>0&&t.X0&&t.Y-e.ClipperBase.minValue||t.Y<0&&t.Y>-e.ClipperBase.minValue)&&e.Error("Coordinate outside allowed range in RangeTest().")},e.ClipperBase.prototype.InitEdge=function(t,i,n,s){t.Next=i,t.Prev=n,t.Curr.X=s.X,t.Curr.Y=s.Y,e.use_xyz&&(t.Curr.Z=s.Z),t.OutIdx=-1},e.ClipperBase.prototype.InitEdge2=function(t,i){t.Curr.Y>=t.Next.Curr.Y?(t.Bot.X=t.Curr.X,t.Bot.Y=t.Curr.Y,e.use_xyz&&(t.Bot.Z=t.Curr.Z),t.Top.X=t.Next.Curr.X,t.Top.Y=t.Next.Curr.Y,e.use_xyz&&(t.Top.Z=t.Next.Curr.Z)):(t.Top.X=t.Curr.X,t.Top.Y=t.Curr.Y,e.use_xyz&&(t.Top.Z=t.Curr.Z),t.Bot.X=t.Next.Curr.X,t.Bot.Y=t.Next.Curr.Y,e.use_xyz&&(t.Bot.Z=t.Next.Curr.Z)),this.SetDx(t),t.PolyTyp=i},e.ClipperBase.prototype.FindNextLocMin=function(t){for(var i;;){for(;e.FPoint.op_Inequality(t.Bot,t.Prev.Bot)||e.FPoint.op_Equality(t.Curr,t.Top);)t=t.Next;if(t.Dx!==e.ClipperBase.horizontal&&t.Prev.Dx!==e.ClipperBase.horizontal)break;for(;t.Prev.Dx===e.ClipperBase.horizontal;)t=t.Prev;for(i=t;t.Dx===e.ClipperBase.horizontal;)t=t.Next;if(t.Top.Y!==t.Prev.Bot.Y){i.Prev.Bot.Xr.Next.Top.X&&(r=s.Prev)}for(;t!==r;)t.NextInLML=t.Next,t.Dx===e.ClipperBase.horizontal&&t!==n&&t.Bot.X!==t.Prev.Top.X&&this.ReverseHorizontal(t),t=t.Next;t.Dx===e.ClipperBase.horizontal&&t!==n&&t.Bot.X!==t.Prev.Top.X&&this.ReverseHorizontal(t),r=r.Next}else{for(;r.Top.Y===r.Prev.Bot.Y&&r.Prev.OutIdx!==e.ClipperBase.Skip;)r=r.Prev;if(r.Dx===e.ClipperBase.horizontal&&r.Prev.OutIdx!==e.ClipperBase.Skip){for(s=r;s.Next.Dx===e.ClipperBase.horizontal;)s=s.Next;(s.Next.Top.X===r.Prev.Top.X||s.Next.Top.X>r.Prev.Top.X)&&(r=s.Next)}for(;t!==r;)t.NextInLML=t.Prev,t.Dx===e.ClipperBase.horizontal&&t!==n&&t.Bot.X!==t.Next.Top.X&&this.ReverseHorizontal(t),t=t.Prev;t.Dx===e.ClipperBase.horizontal&&t!==n&&t.Bot.X!==t.Next.Top.X&&this.ReverseHorizontal(t),r=r.Prev}return r},e.ClipperBase.prototype.AddPath=function(t,i,n){e.use_lines?n||i!==e.PolyType.ptClip||e.Error("AddPath: Open paths must be subject."):n||e.Error("AddPath: Open paths have been disabled.");var s=t.length-1;if(n)for(;s>0&&e.FPoint.op_Equality(t[s],t[0]);)--s;for(;s>0&&e.FPoint.op_Equality(t[s],t[s-1]);)--s;if(n&&s<2||!n&&s<1)return!1;for(var r=new Array,o=0;o<=s;o++)r.push(new e.TEdge);var l=!0;r[1].Curr.X=t[1].X,r[1].Curr.Y=t[1].Y,e.use_xyz&&(r[1].Curr.Z=t[1].Z),this.RangeTest(t[0]),this.RangeTest(t[s]),this.InitEdge(r[0],r[1],r[s],t[0]),this.InitEdge(r[s],r[0],r[s-1],t[s]);for(o=s-1;o>=1;--o)this.RangeTest(t[o]),this.InitEdge(r[o],r[o+1],r[o-1],t[o]);for(var h,a=r[0],p=a,u=a;;)if(p.Curr!==p.Next.Curr||!n&&p.Next===a){if(p.Prev===p.Next)break;if(!n||!e.ClipperBase.SlopesEqual4(p.Prev.Curr,p.Curr,p.Next.Curr)||this.PreserveCollinear&&this.Pt2IsBetweenPt1AndPt3(p.Prev.Curr,p.Curr,p.Next.Curr)){if((p=p.Next)===u||!n&&p.Next===a)break}else p===a&&(a=p.Next),u=p=(p=this.RemoveEdge(p)).Prev}else{if(p===p.Next)break;p===a&&(a=p.Next),u=p=this.RemoveEdge(p)}if(!n&&p===p.Next||n&&p.Prev===p.Next)return!1;n||(this.m_HasOpenPaths=!0,a.Prev.OutIdx=e.ClipperBase.Skip),p=a;do{this.InitEdge2(p,i),p=p.Next,l&&p.Curr.Y!==a.Curr.Y&&(l=!1)}while(p!==a);if(l){if(n)return!1;for(p.Prev.OutIdx=e.ClipperBase.Skip,(c=new e.LocalMinima).Next=null,c.Y=p.Bot.Y,c.LeftBound=null,c.RightBound=p,c.RightBound.Side=e.EdgeSide.esRight,c.RightBound.WindDelta=0;p.Bot.X!==p.Prev.Top.X&&this.ReverseHorizontal(p),p.Next.OutIdx!==e.ClipperBase.Skip;)p.NextInLML=p.Next,p=p.Next;return this.InsertLocalMinima(c),this.m_edges.push(r),!0}this.m_edges.push(r);var d=null;for(e.FPoint.op_Equality(p.Prev.Bot,p.Prev.Top)&&(p=p.Next);(p=this.FindNextLocMin(p))!==d;){var c;null===d&&(d=p),(c=new e.LocalMinima).Next=null,c.Y=p.Bot.Y,p.Dxt.X==i.Xt.Y==i.Y=this.m_MinimaList.Y)t.Next=this.m_MinimaList,this.m_MinimaList=t;else{for(var e=this.m_MinimaList;null!==e.Next&&t.Ythis.m_Scanbeam.Y){var i=new e.Scanbeam;i.Y=t,i.Next=this.m_Scanbeam,this.m_Scanbeam=i}else{for(var n=this.m_Scanbeam;null!==n.Next&&t<=n.Next.Y;)n=n.Next;if(t===n.Y)return;var s=new e.Scanbeam;s.Y=t,s.Next=n.Next,n.Next=s}},e.ClipperBase.prototype.PopScanbeam=function(t){return null===this.m_Scanbeam?(t.v=0,!1):(t.v=this.m_Scanbeam.Y,this.m_Scanbeam=this.m_Scanbeam.Next,!0)},e.ClipperBase.prototype.LocalMinimaPending=function(){return null!==this.m_CurrentLM},e.ClipperBase.prototype.CreateOutRec=function(){var t=new e.OutRec;return t.Idx=e.ClipperBase.Unassigned,t.IsHole=!1,t.IsOpen=!1,t.FirstLeft=null,t.Pts=null,t.BottomPt=null,t.PolyNode=null,this.m_PolyOuts.push(t),t.Idx=this.m_PolyOuts.length-1,t},e.ClipperBase.prototype.DisposeOutRec=function(t){var e=this.m_PolyOuts[t];e.Pts=null,e=null,this.m_PolyOuts[t]=null},e.ClipperBase.prototype.UpdateEdgeIntoAEL=function(t){null===t.NextInLML&&e.Error("UpdateEdgeIntoAEL: invalid call");var i=t.PrevInAEL,n=t.NextInAEL;return t.NextInLML.OutIdx=t.OutIdx,null!==i?i.NextInAEL=t.NextInLML:this.m_ActiveEdges=t.NextInLML,null!==n&&(n.PrevInAEL=t.NextInLML),t.NextInLML.Side=t.Side,t.NextInLML.WindDelta=t.WindDelta,t.NextInLML.WindCnt=t.WindCnt,t.NextInLML.WindCnt2=t.WindCnt2,(t=t.NextInLML).Curr.X=t.Bot.X,t.Curr.Y=t.Bot.Y,t.PrevInAEL=i,t.NextInAEL=n,e.ClipperBase.IsHorizontal(t)||this.InsertScanbeam(t.Top.Y),t},e.ClipperBase.prototype.SwapPositionsInAEL=function(t,e){if(t.NextInAEL!==t.PrevInAEL&&e.NextInAEL!==e.PrevInAEL){if(t.NextInAEL===e){var i=e.NextInAEL;null!==i&&(i.PrevInAEL=t);var n=t.PrevInAEL;null!==n&&(n.NextInAEL=e),e.PrevInAEL=n,e.NextInAEL=t,t.PrevInAEL=e,t.NextInAEL=i}else if(e.NextInAEL===t){var s=t.NextInAEL;null!==s&&(s.PrevInAEL=e);var r=e.PrevInAEL;null!==r&&(r.NextInAEL=t),t.PrevInAEL=r,t.NextInAEL=e,e.PrevInAEL=t,e.NextInAEL=s}else{var o=t.NextInAEL,l=t.PrevInAEL;t.NextInAEL=e.NextInAEL,null!==t.NextInAEL&&(t.NextInAEL.PrevInAEL=t),t.PrevInAEL=e.PrevInAEL,null!==t.PrevInAEL&&(t.PrevInAEL.NextInAEL=t),e.NextInAEL=o,null!==e.NextInAEL&&(e.NextInAEL.PrevInAEL=e),e.PrevInAEL=l,null!==e.PrevInAEL&&(e.PrevInAEL.NextInAEL=e)}null===t.PrevInAEL?this.m_ActiveEdges=t:null===e.PrevInAEL&&(this.m_ActiveEdges=e)}},e.ClipperBase.prototype.DeleteFromAEL=function(t){var e=t.PrevInAEL,i=t.NextInAEL;null===e&&null===i&&t!==this.m_ActiveEdges||(null!==e?e.NextInAEL=i:this.m_ActiveEdges=i,null!==i&&(i.PrevInAEL=e),t.NextInAEL=null,t.PrevInAEL=null)},e.Clipper=function(t){void 0===t&&(t=0),this.m_PolyOuts=null,this.m_ClipType=e.ClipType.ctIntersection,this.m_Scanbeam=null,this.m_Maxima=null,this.m_ActiveEdges=null,this.m_SortedEdges=null,this.m_IntersectList=null,this.m_IntersectNodeComparer=null,this.m_ExecuteLocked=!1,this.m_ClipFillType=e.PolyFillType.pftEvenOdd,this.m_SubjFillType=e.PolyFillType.pftEvenOdd,this.m_Joins=null,this.m_GhostJoins=null,this.m_UsingPolyTree=!1,this.ReverseSolution=!1,this.StrictlySimple=!1,e.ClipperBase.call(this),this.m_Scanbeam=null,this.m_Maxima=null,this.m_ActiveEdges=null,this.m_SortedEdges=null,this.m_IntersectList=new Array,this.m_IntersectNodeComparer=e.MyIntersectNodeSort.Compare,this.m_ExecuteLocked=!1,this.m_UsingPolyTree=!1,this.m_PolyOuts=new Array,this.m_Joins=new Array,this.m_GhostJoins=new Array,this.ReverseSolution=!!(1&t),this.StrictlySimple=!!(2&t),this.PreserveCollinear=!!(4&t),e.use_xyz&&(this.ZFillFunction=null)},e.Clipper.ioReverseSolution=1,e.Clipper.ioStrictlySimple=2,e.Clipper.ioPreserveCollinear=4,e.Clipper.prototype.Clear=function(){0!==this.m_edges.length&&(this.DisposeAllPolyPts(),e.ClipperBase.prototype.Clear.call(this))},e.Clipper.prototype.InsertMaxima=function(t){var i=new e.Maxima;if(i.X=t,null===this.m_Maxima)this.m_Maxima=i,this.m_Maxima.Next=null,this.m_Maxima.Prev=null;else if(t=n.Next.X;)n=n.Next;if(t===n.X)return;i.Next=n.Next,i.Prev=n,null!==n.Next&&(n.Next.Prev=i),n.Next=i}},e.Clipper.prototype.Execute=function(){var t=arguments,i=t.length,n=t[1]instanceof e.PolyTree;if(4===i&&!n){var s=t[0],r=t[1],o=t[2],l=t[3];if(this.m_ExecuteLocked)return!1;this.m_HasOpenPaths&&e.Error("Error: PolyTree struct is needed for open path clipping."),this.m_ExecuteLocked=!0,e.Clear(r),this.m_SubjFillType=o,this.m_ClipFillType=l,this.m_ClipType=s,this.m_UsingPolyTree=!1;try{(a=this.ExecuteInternal())&&this.BuildResult(r)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return a}if(4===i&&n){s=t[0];var h=t[1];o=t[2],l=t[3];if(this.m_ExecuteLocked)return!1;this.m_ExecuteLocked=!0,this.m_SubjFillType=o,this.m_ClipFillType=l,this.m_ClipType=s,this.m_UsingPolyTree=!0;try{var a;(a=this.ExecuteInternal())&&this.BuildResult2(h)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return a}if(2===i&&!n){s=t[0],r=t[1];return this.Execute(s,r,e.PolyFillType.pftEvenOdd,e.PolyFillType.pftEvenOdd)}if(2===i&&n){s=t[0],h=t[1];return this.Execute(s,h,e.PolyFillType.pftEvenOdd,e.PolyFillType.pftEvenOdd)}},e.Clipper.prototype.FixHoleLinkage=function(t){if(null!==t.FirstLeft&&(t.IsHole===t.FirstLeft.IsHole||null===t.FirstLeft.Pts)){for(var e=t.FirstLeft;null!==e&&(e.IsHole===t.IsHole||null===e.Pts);)e=e.FirstLeft;t.FirstLeft=e}},e.Clipper.prototype.ExecuteInternal=function(){try{this.Reset(),this.m_SortedEdges=null,this.m_Maxima=null;var t,e,i,n={},s={};if(!this.PopScanbeam(n))return!1;for(this.InsertLocalMinimaIntoAEL(n.v);this.PopScanbeam(s)||this.LocalMinimaPending();){if(this.ProcessHorizontals(),this.m_GhostJoins.length=0,!this.ProcessIntersections(s.v))return!1;this.ProcessEdgesAtTopOfScanbeam(s.v),n.v=s.v,this.InsertLocalMinimaIntoAEL(n.v)}for(e=0,i=this.m_PolyOuts.length;e0&&this.ReversePolyPtLinks(t.Pts);for(this.JoinCommonEdges(),e=0,i=this.m_PolyOuts.length;e0&&0!==n.WindDelta)for(var o=0,l=this.m_GhostJoins.length;o=0&&null!==i.PrevInAEL&&i.PrevInAEL.Curr.X===i.Bot.X&&i.PrevInAEL.OutIdx>=0&&e.ClipperBase.SlopesEqual5(i.PrevInAEL.Curr,i.PrevInAEL.Top,i.Curr,i.Top)&&0!==i.WindDelta&&0!==i.PrevInAEL.WindDelta){var a=this.AddOutPt(i.PrevInAEL,i.Bot);this.AddJoin(r,a,i.Top)}if(i.NextInAEL!==n){if(n.OutIdx>=0&&n.PrevInAEL.OutIdx>=0&&e.ClipperBase.SlopesEqual5(n.PrevInAEL.Curr,n.PrevInAEL.Top,n.Curr,n.Top)&&0!==n.WindDelta&&0!==n.PrevInAEL.WindDelta){a=this.AddOutPt(n.PrevInAEL,n.Bot);this.AddJoin(r,a,n.Top)}var p=i.NextInAEL;if(null!==p)for(;p!==n;)this.IntersectEdges(n,p,i.Curr),p=p.NextInAEL}}}},e.Clipper.prototype.InsertEdgeIntoAEL=function(t,e){if(null===this.m_ActiveEdges)t.PrevInAEL=null,t.NextInAEL=null,this.m_ActiveEdges=t;else if(null===e&&this.E2InsertsBeforeE1(this.m_ActiveEdges,t))t.PrevInAEL=null,t.NextInAEL=this.m_ActiveEdges,this.m_ActiveEdges.PrevInAEL=t,this.m_ActiveEdges=t;else{for(null===e&&(e=this.m_ActiveEdges);null!==e.NextInAEL&&!this.E2InsertsBeforeE1(e.NextInAEL,t);)e=e.NextInAEL;t.NextInAEL=e.NextInAEL,null!==e.NextInAEL&&(e.NextInAEL.PrevInAEL=t),t.PrevInAEL=e,e.NextInAEL=t}},e.Clipper.prototype.E2InsertsBeforeE1=function(t,i){return i.Curr.X===t.Curr.X?i.Top.Y>t.Top.Y?i.Top.Xe.Clipper.TopX(i,t.Top.Y):i.Curr.X0;default:return t.WindCnt2<0}case e.ClipType.ctUnion:switch(n){case e.PolyFillType.pftEvenOdd:case e.PolyFillType.pftNonZero:return 0===t.WindCnt2;case e.PolyFillType.pftPositive:return t.WindCnt2<=0;default:return t.WindCnt2>=0}case e.ClipType.ctDifference:if(t.PolyTyp===e.PolyType.ptSubject)switch(n){case e.PolyFillType.pftEvenOdd:case e.PolyFillType.pftNonZero:return 0===t.WindCnt2;case e.PolyFillType.pftPositive:return t.WindCnt2<=0;default:return t.WindCnt2>=0}else switch(n){case e.PolyFillType.pftEvenOdd:case e.PolyFillType.pftNonZero:return 0!==t.WindCnt2;case e.PolyFillType.pftPositive:return t.WindCnt2>0;default:return t.WindCnt2<0}case e.ClipType.ctXor:if(0!==t.WindDelta)return!0;switch(n){case e.PolyFillType.pftEvenOdd:case e.PolyFillType.pftNonZero:return 0===t.WindCnt2;case e.PolyFillType.pftPositive:return t.WindCnt2<=0;default:return t.WindCnt2>=0}}return!0},e.Clipper.prototype.SetWindingCount=function(t){for(var i=t.PrevInAEL;null!==i&&(i.PolyTyp!==t.PolyTyp||0===i.WindDelta);)i=i.PrevInAEL;if(null===i){var n=t.PolyTyp===e.PolyType.ptSubject?this.m_SubjFillType:this.m_ClipFillType;0===t.WindDelta?t.WindCnt=n===e.PolyFillType.pftNegative?-1:1:t.WindCnt=t.WindDelta,t.WindCnt2=0,i=this.m_ActiveEdges}else if(0===t.WindDelta&&this.m_ClipType!==e.ClipType.ctUnion)t.WindCnt=1,t.WindCnt2=i.WindCnt2,i=i.NextInAEL;else if(this.IsEvenOddFillType(t)){if(0===t.WindDelta){for(var s=!0,r=i.PrevInAEL;null!==r;)r.PolyTyp===i.PolyTyp&&0!==r.WindDelta&&(s=!s),r=r.PrevInAEL;t.WindCnt=s?0:1}else t.WindCnt=t.WindDelta;t.WindCnt2=i.WindCnt2,i=i.NextInAEL}else i.WindCnt*i.WindDelta<0?Math.abs(i.WindCnt)>1?i.WindDelta*t.WindDelta<0?t.WindCnt=i.WindCnt:t.WindCnt=i.WindCnt+t.WindDelta:t.WindCnt=0===t.WindDelta?1:t.WindDelta:0===t.WindDelta?t.WindCnt=i.WindCnt<0?i.WindCnt-1:i.WindCnt+1:i.WindDelta*t.WindDelta<0?t.WindCnt=i.WindCnt:t.WindCnt=i.WindCnt+t.WindDelta,t.WindCnt2=i.WindCnt2,i=i.NextInAEL;if(this.IsEvenOddAltFillType(t))for(;i!==t;)0!==i.WindDelta&&(t.WindCnt2=0===t.WindCnt2?1:0),i=i.NextInAEL;else for(;i!==t;)t.WindCnt2+=i.WindDelta,i=i.NextInAEL},e.Clipper.prototype.AddEdgeToSEL=function(t){null===this.m_SortedEdges?(this.m_SortedEdges=t,t.PrevInSEL=null,t.NextInSEL=null):(t.NextInSEL=this.m_SortedEdges,t.PrevInSEL=null,this.m_SortedEdges.PrevInSEL=t,this.m_SortedEdges=t)},e.Clipper.prototype.PopEdgeFromSEL=function(t){if(t.v=this.m_SortedEdges,null===t.v)return!1;var e=t.v;return this.m_SortedEdges=t.v.NextInSEL,null!==this.m_SortedEdges&&(this.m_SortedEdges.PrevInSEL=null),e.NextInSEL=null,e.PrevInSEL=null,!0},e.Clipper.prototype.CopyAELToSEL=function(){var t=this.m_ActiveEdges;for(this.m_SortedEdges=t;null!==t;)t.PrevInSEL=t.PrevInAEL,t.NextInSEL=t.NextInAEL,t=t.NextInAEL},e.Clipper.prototype.SwapPositionsInSEL=function(t,e){if(!(null===t.NextInSEL&&null===t.PrevInSEL||null===e.NextInSEL&&null===e.PrevInSEL)){if(t.NextInSEL===e)null!==(i=e.NextInSEL)&&(i.PrevInSEL=t),null!==(n=t.PrevInSEL)&&(n.NextInSEL=e),e.PrevInSEL=n,e.NextInSEL=t,t.PrevInSEL=e,t.NextInSEL=i;else if(e.NextInSEL===t){null!==(i=t.NextInSEL)&&(i.PrevInSEL=e),null!==(n=e.PrevInSEL)&&(n.NextInSEL=t),t.PrevInSEL=n,t.NextInSEL=e,e.PrevInSEL=t,e.NextInSEL=i}else{var i=t.NextInSEL,n=t.PrevInSEL;t.NextInSEL=e.NextInSEL,null!==t.NextInSEL&&(t.NextInSEL.PrevInSEL=t),t.PrevInSEL=e.PrevInSEL,null!==t.PrevInSEL&&(t.PrevInSEL.NextInSEL=t),e.NextInSEL=i,null!==e.NextInSEL&&(e.NextInSEL.PrevInSEL=e),e.PrevInSEL=n,null!==e.PrevInSEL&&(e.PrevInSEL.NextInSEL=e)}null===t.PrevInSEL?this.m_SortedEdges=t:null===e.PrevInSEL&&(this.m_SortedEdges=e)}},e.Clipper.prototype.AddLocalMaxPoly=function(t,e,i){this.AddOutPt(t,i),0===e.WindDelta&&this.AddOutPt(e,i),t.OutIdx===e.OutIdx?(t.OutIdx=-1,e.OutIdx=-1):t.OutIdxi.Dx?(s=this.AddOutPt(t,n),i.OutIdx=t.OutIdx,t.Side=e.EdgeSide.esLeft,i.Side=e.EdgeSide.esRight,o=(r=t).PrevInAEL===i?i.PrevInAEL:r.PrevInAEL):(s=this.AddOutPt(i,n),t.OutIdx=i.OutIdx,t.Side=e.EdgeSide.esRight,i.Side=e.EdgeSide.esLeft,o=(r=i).PrevInAEL===t?t.PrevInAEL:r.PrevInAEL),null!==o&&o.OutIdx>=0&&o.Top.Ye&&(s=t,t=e,e=s),i>n&&(s=i,i=n,n=s),t=0&&0!==i.WindDelta&&(null===n?n=i:n.OutIdx===i.OutIdx&&(n=null)),i=i.PrevInAEL;null===n?(e.FirstLeft=null,e.IsHole=!1):(e.FirstLeft=this.m_PolyOuts[n.OutIdx],e.IsHole=!e.FirstLeft.IsHole)},e.Clipper.prototype.GetDx=function(t,i){return t.Y===i.Y?e.ClipperBase.horizontal:(i.X-t.X)/(i.Y-t.Y)},e.Clipper.prototype.FirstIsBottomPt=function(t,i){for(var n=t.Prev;e.FPoint.op_Equality(n.Pt,t.Pt)&&n!==t;)n=n.Prev;var s=Math.abs(this.GetDx(t.Pt,n.Pt));for(n=t.Next;e.FPoint.op_Equality(n.Pt,t.Pt)&&n!==t;)n=n.Next;var r=Math.abs(this.GetDx(t.Pt,n.Pt));for(n=i.Prev;e.FPoint.op_Equality(n.Pt,i.Pt)&&n!==i;)n=n.Prev;var o=Math.abs(this.GetDx(i.Pt,n.Pt));for(n=i.Next;e.FPoint.op_Equality(n.Pt,i.Pt)&&n!==i;)n=n.Next;var l=Math.abs(this.GetDx(i.Pt,n.Pt));return Math.max(s,r)===Math.max(o,l)&&Math.min(s,r)===Math.min(o,l)?this.Area(t)>0:s>=o&&s>=l||r>=o&&r>=l},e.Clipper.prototype.GetBottomPt=function(t){for(var i=null,n=t.Next;n!==t;)n.Pt.Y>t.Pt.Y?(t=n,i=null):n.Pt.Y===t.Pt.Y&&n.Pt.X<=t.Pt.X&&(n.Pt.Xn.Pt.Y?t:i.Pt.Yn.Pt.X||i.Next===i?e:n.Next===n||this.FirstIsBottomPt(i,n)?t:e},e.Clipper.prototype.OutRec1RightOfOutRec2=function(t,e){do{if((t=t.FirstLeft)===e)return!0}while(null!==t);return!1},e.Clipper.prototype.GetOutRec=function(t){for(var e=this.m_PolyOuts[t];e!==this.m_PolyOuts[e.Idx];)e=this.m_PolyOuts[e.Idx];return e},e.Clipper.prototype.AppendPolygon=function(t,i){var n,s=this.m_PolyOuts[t.OutIdx],r=this.m_PolyOuts[i.OutIdx];n=this.OutRec1RightOfOutRec2(s,r)?r:this.OutRec1RightOfOutRec2(r,s)?s:this.GetLowermostRec(s,r);var o=s.Pts,l=o.Prev,h=r.Pts,a=h.Prev;t.Side===e.EdgeSide.esLeft?i.Side===e.EdgeSide.esLeft?(this.ReversePolyPtLinks(h),h.Next=o,o.Prev=h,l.Next=a,a.Prev=l,s.Pts=a):(a.Next=o,o.Prev=a,h.Prev=l,l.Next=h,s.Pts=h):i.Side===e.EdgeSide.esRight?(this.ReversePolyPtLinks(h),l.Next=a,a.Prev=l,h.Next=o,o.Prev=h):(l.Next=h,h.Prev=l,o.Prev=a,a.Next=o),s.BottomPt=null,n===r&&(r.FirstLeft!==s&&(s.FirstLeft=r.FirstLeft),s.IsHole=r.IsHole),r.Pts=null,r.BottomPt=null,r.FirstLeft=s;var p=t.OutIdx,u=i.OutIdx;t.OutIdx=-1,i.OutIdx=-1;for(var d=this.m_ActiveEdges;null!==d;){if(d.OutIdx===u){d.OutIdx=p,d.Side=t.Side;break}d=d.NextInAEL}r.Idx=s.Idx},e.Clipper.prototype.ReversePolyPtLinks=function(t){if(null!==t){var e,i;e=t;do{i=e.Next,e.Next=e.Prev,e.Prev=i,e=i}while(e!==t)}},e.Clipper.SwapSides=function(t,e){var i=t.Side;t.Side=e.Side,e.Side=i},e.Clipper.SwapPolyIndexes=function(t,e){var i=t.OutIdx;t.OutIdx=e.OutIdx,e.OutIdx=i},e.Clipper.prototype.IntersectEdges=function(t,i,n){var s=t.OutIdx>=0,r=i.OutIdx>=0;if(e.use_xyz&&this.SetZ(n,t,i),!e.use_lines||0!==t.WindDelta&&0!==i.WindDelta){if(t.PolyTyp===i.PolyTyp)if(this.IsEvenOddFillType(t)){var o=t.WindCnt;t.WindCnt=i.WindCnt,i.WindCnt=o}else t.WindCnt+i.WindDelta===0?t.WindCnt=-t.WindCnt:t.WindCnt+=i.WindDelta,i.WindCnt-t.WindDelta==0?i.WindCnt=-i.WindCnt:i.WindCnt-=t.WindDelta;else this.IsEvenOddFillType(i)?t.WindCnt2=0===t.WindCnt2?1:0:t.WindCnt2+=i.WindDelta,this.IsEvenOddFillType(t)?i.WindCnt2=0===i.WindCnt2?1:0:i.WindCnt2-=t.WindDelta;var l,h,a,p,u,d;switch(t.PolyTyp===e.PolyType.ptSubject?(l=this.m_SubjFillType,a=this.m_ClipFillType):(l=this.m_ClipFillType,a=this.m_SubjFillType),i.PolyTyp===e.PolyType.ptSubject?(h=this.m_SubjFillType,p=this.m_ClipFillType):(h=this.m_ClipFillType,p=this.m_SubjFillType),l){case e.PolyFillType.pftPositive:u=t.WindCnt;break;case e.PolyFillType.pftNegative:u=-t.WindCnt;break;default:u=Math.abs(t.WindCnt)}switch(h){case e.PolyFillType.pftPositive:d=i.WindCnt;break;case e.PolyFillType.pftNegative:d=-i.WindCnt;break;default:d=Math.abs(i.WindCnt)}if(s&&r)0!==u&&1!==u||0!==d&&1!==d||t.PolyTyp!==i.PolyTyp&&this.m_ClipType!==e.ClipType.ctXor?this.AddLocalMaxPoly(t,i,n):(this.AddOutPt(t,n),this.AddOutPt(i,n),e.Clipper.SwapSides(t,i),e.Clipper.SwapPolyIndexes(t,i));else if(s)0!==d&&1!==d||(this.AddOutPt(t,n),e.Clipper.SwapSides(t,i),e.Clipper.SwapPolyIndexes(t,i));else if(r)0!==u&&1!==u||(this.AddOutPt(i,n),e.Clipper.SwapSides(t,i),e.Clipper.SwapPolyIndexes(t,i));else if(!(0!==u&&1!==u||0!==d&&1!==d)){var c,f;switch(a){case e.PolyFillType.pftPositive:c=t.WindCnt2;break;case e.PolyFillType.pftNegative:c=-t.WindCnt2;break;default:c=Math.abs(t.WindCnt2)}switch(p){case e.PolyFillType.pftPositive:f=i.WindCnt2;break;case e.PolyFillType.pftNegative:f=-i.WindCnt2;break;default:f=Math.abs(i.WindCnt2)}if(t.PolyTyp!==i.PolyTyp)this.AddLocalMinPoly(t,i,n);else if(1===u&&1===d)switch(this.m_ClipType){case e.ClipType.ctIntersection:c>0&&f>0&&this.AddLocalMinPoly(t,i,n);break;case e.ClipType.ctUnion:c<=0&&f<=0&&this.AddLocalMinPoly(t,i,n);break;case e.ClipType.ctDifference:(t.PolyTyp===e.PolyType.ptClip&&c>0&&f>0||t.PolyTyp===e.PolyType.ptSubject&&c<=0&&f<=0)&&this.AddLocalMinPoly(t,i,n);break;case e.ClipType.ctXor:this.AddLocalMinPoly(t,i,n)}else e.Clipper.SwapSides(t,i)}}else{if(0===t.WindDelta&&0===i.WindDelta)return;t.PolyTyp===i.PolyTyp&&t.WindDelta!==i.WindDelta&&this.m_ClipType===e.ClipType.ctUnion?0===t.WindDelta?r&&(this.AddOutPt(t,n),s&&(t.OutIdx=-1)):s&&(this.AddOutPt(i,n),r&&(i.OutIdx=-1)):t.PolyTyp!==i.PolyTyp&&(0!==t.WindDelta||1!==Math.abs(i.WindCnt)||this.m_ClipType===e.ClipType.ctUnion&&0!==i.WindCnt2?0!==i.WindDelta||1!==Math.abs(t.WindCnt)||this.m_ClipType===e.ClipType.ctUnion&&0!==t.WindCnt2||(this.AddOutPt(i,n),r&&(i.OutIdx=-1)):(this.AddOutPt(t,n),s&&(t.OutIdx=-1)))}},e.Clipper.prototype.DeleteFromSEL=function(t){var e=t.PrevInSEL,i=t.NextInSEL;null===e&&null===i&&t!==this.m_SortedEdges||(null!==e?e.NextInSEL=i:this.m_SortedEdges=i,null!==i&&(i.PrevInSEL=e),t.NextInSEL=null,t.PrevInSEL=null)},e.Clipper.prototype.ProcessHorizontals=function(){for(var t={};this.PopEdgeFromSEL(t);)this.ProcessHorizontal(t.v)},e.Clipper.prototype.GetHorzDirection=function(t,i){t.Bot.X=l.Top.X&&(a=null)}else{for(;null!==a.Next&&a.Next.X=0&&!o&&this.AddOutPt(t,new e.FPoint2(a.X,t.Bot.Y)),a=a.Next;else for(;null!==a&&a.X>d.Curr.X;)t.OutIdx>=0&&!o&&this.AddOutPt(t,new e.FPoint2(a.X,t.Bot.Y)),a=a.Prev;if(n===e.Direction.dLeftToRight&&d.Curr.X>r||n===e.Direction.dRightToLeft&&d.Curr.X=0&&!o){e.use_xyz&&(n===e.Direction.dLeftToRight?this.SetZ(d.Curr,t,d):this.SetZ(d.Curr,d,t)),p=this.AddOutPt(t,d.Curr);for(var c=this.m_SortedEdges;null!==c;){if(c.OutIdx>=0&&this.HorzSegmentsOverlap(t.Bot.X,t.Top.X,c.Bot.X,c.Top.X)){var f=this.GetLastOutPt(c);this.AddJoin(f,p,c.Top)}c=c.NextInSEL}this.AddGhostJoin(p,t.Bot)}if(d===h&&u)return t.OutIdx>=0&&this.AddLocalMaxPoly(t,h,t.Top),this.DeleteFromAEL(t),void this.DeleteFromAEL(h);if(n===e.Direction.dLeftToRight){var y=new e.FPoint2(d.Curr.X,t.Curr.Y);this.IntersectEdges(t,d,y)}else{y=new e.FPoint2(d.Curr.X,t.Curr.Y);this.IntersectEdges(d,t,y)}var x=this.GetNextInAEL(d,n);this.SwapPositionsInAEL(t,d),d=x}if(null===t.NextInLML||!e.ClipperBase.IsHorizontal(t.NextInLML))break;(t=this.UpdateEdgeIntoAEL(t)).OutIdx>=0&&this.AddOutPt(t,t.Bot),i={Dir:n,Left:s,Right:r},this.GetHorzDirection(t,i),n=i.Dir,s=i.Left,r=i.Right}if(t.OutIdx>=0&&null===p){p=this.GetLastOutPt(t);for(c=this.m_SortedEdges;null!==c;){if(c.OutIdx>=0&&this.HorzSegmentsOverlap(t.Bot.X,t.Top.X,c.Bot.X,c.Top.X)){f=this.GetLastOutPt(c);this.AddJoin(f,p,c.Top)}c=c.NextInSEL}this.AddGhostJoin(p,t.Top)}if(null!==t.NextInLML)if(t.OutIdx>=0){if(p=this.AddOutPt(t,t.Top),0===(t=this.UpdateEdgeIntoAEL(t)).WindDelta)return;var g=t.PrevInAEL;x=t.NextInAEL;if(null!==g&&g.Curr.X===t.Bot.X&&g.Curr.Y===t.Bot.Y&&0===g.WindDelta&&g.OutIdx>=0&&g.Curr.Y>g.Top.Y&&e.ClipperBase.SlopesEqual3(t,g)){f=this.AddOutPt(g,t.Bot);this.AddJoin(p,f,t.Top)}else if(null!==x&&x.Curr.X===t.Bot.X&&x.Curr.Y===t.Bot.Y&&0!==x.WindDelta&&x.OutIdx>=0&&x.Curr.Y>x.Top.Y&&e.ClipperBase.SlopesEqual3(t,x)){f=this.AddOutPt(x,t.Bot);this.AddJoin(p,f,t.Top)}}else t=this.UpdateEdgeIntoAEL(t);else t.OutIdx>=0&&this.AddOutPt(t,t.Top),this.DeleteFromAEL(t)},e.Clipper.prototype.GetNextInAEL=function(t,i){return i===e.Direction.dLeftToRight?t.NextInAEL:t.PrevInAEL},e.Clipper.prototype.IsMinima=function(t){return null!==t&&t.Prev.NextInLML!==t&&t.Next.NextInLML!==t},e.Clipper.prototype.IsMaxima=function(t,e){return null!==t&&t.Top.Y===e&&null===t.NextInLML},e.Clipper.prototype.IsIntermediate=function(t,e){return t.Top.Y===e&&null!==t.NextInLML},e.Clipper.prototype.GetMaximaPair=function(t){return e.FPoint.op_Equality(t.Next.Top,t.Top)&&null===t.Next.NextInLML?t.Next:e.FPoint.op_Equality(t.Prev.Top,t.Top)&&null===t.Prev.NextInLML?t.Prev:null},e.Clipper.prototype.GetMaximaPairEx=function(t){var i=this.GetMaximaPair(t);return null===i||i.OutIdx===e.ClipperBase.Skip||i.NextInAEL===i.PrevInAEL&&!e.ClipperBase.IsHorizontal(i)?null:i},e.Clipper.prototype.ProcessIntersections=function(t){if(null===this.m_ActiveEdges)return!0;try{if(this.BuildIntersectList(t),0===this.m_IntersectList.length)return!0;if(1!==this.m_IntersectList.length&&!this.FixupIntersectionOrder())return!1;this.ProcessIntersectList()}catch(t){this.m_SortedEdges=null,this.m_IntersectList.length=0,e.Error("ProcessIntersections error")}return this.m_SortedEdges=null,!0},e.Clipper.prototype.BuildIntersectList=function(t){if(null!==this.m_ActiveEdges){var i=this.m_ActiveEdges;for(this.m_SortedEdges=i;null!==i;)i.PrevInSEL=i.PrevInAEL,i.NextInSEL=i.NextInAEL,i.Curr.X=e.Clipper.TopX(i,t),i=i.NextInAEL;for(var n=!0;n&&null!==this.m_SortedEdges;){for(n=!1,i=this.m_SortedEdges;null!==i.NextInSEL;){var s=i.NextInSEL,r=new e.FPoint0;if(i.Curr.X>s.Curr.X){this.IntersectPoint(i,s,r),r.Yi.Top.Y)return n.Y=t.Top.Y,n.X=e.Clipper.TopX(i,t.Top.Y),n.Xt.Curr.Y&&(n.Y=t.Curr.Y,Math.abs(t.Dx)>Math.abs(i.Dx)?n.X=e.Clipper.TopX(i,n.Y):n.X=e.Clipper.TopX(t,n.Y))},e.Clipper.prototype.ProcessEdgesAtTopOfScanbeam=function(t){for(var i=this.m_ActiveEdges;null!==i;){var n=this.IsMaxima(i,t);if(n){var s=this.GetMaximaPairEx(i);n=null===s||!e.ClipperBase.IsHorizontal(s)}if(n){this.StrictlySimple&&this.InsertMaxima(i.Top.X);var r=i.PrevInAEL;this.DoMaxima(i),i=null===r?this.m_ActiveEdges:r.NextInAEL}else{if(this.IsIntermediate(i,t)&&e.ClipperBase.IsHorizontal(i.NextInLML)?((i=this.UpdateEdgeIntoAEL(i)).OutIdx>=0&&this.AddOutPt(i,i.Bot),this.AddEdgeToSEL(i)):(i.Curr.X=e.Clipper.TopX(i,t),i.Curr.Y=t),e.use_xyz&&(i.Top.Y===t?i.Curr.Z=i.Top.Z:i.Bot.Y===t?i.Curr.Z=i.Bot.Z:i.Curr.Z=0),this.StrictlySimple){r=i.PrevInAEL;if(i.OutIdx>=0&&0!==i.WindDelta&&null!==r&&r.OutIdx>=0&&r.Curr.X===i.Curr.X&&0!==r.WindDelta){var o=new e.FPoint1(i.Curr);e.use_xyz&&this.SetZ(o,r,i);var l=this.AddOutPt(r,o),h=this.AddOutPt(i,o);this.AddJoin(l,h,o)}}i=i.NextInAEL}}for(this.ProcessHorizontals(),this.m_Maxima=null,i=this.m_ActiveEdges;null!==i;){if(this.IsIntermediate(i,t)){l=null;i.OutIdx>=0&&(l=this.AddOutPt(i,i.Top));r=(i=this.UpdateEdgeIntoAEL(i)).PrevInAEL;var a=i.NextInAEL;if(null!==r&&r.Curr.X===i.Bot.X&&r.Curr.Y===i.Bot.Y&&null!==l&&r.OutIdx>=0&&r.Curr.Y===r.Top.Y&&e.ClipperBase.SlopesEqual5(i.Curr,i.Top,r.Curr,r.Top)&&0!==i.WindDelta&&0!==r.WindDelta){h=this.AddOutPt(ePrev2,i.Bot);this.AddJoin(l,h,i.Top)}else if(null!==a&&a.Curr.X===i.Bot.X&&a.Curr.Y===i.Bot.Y&&null!==l&&a.OutIdx>=0&&a.Curr.Y===a.Top.Y&&e.ClipperBase.SlopesEqual5(i.Curr,i.Top,a.Curr,a.Top)&&0!==i.WindDelta&&0!==a.WindDelta){h=this.AddOutPt(a,i.Bot);this.AddJoin(l,h,i.Top)}}i=i.NextInAEL}},e.Clipper.prototype.DoMaxima=function(t){var i=this.GetMaximaPairEx(t);if(null===i)return t.OutIdx>=0&&this.AddOutPt(t,t.Top),void this.DeleteFromAEL(t);for(var n=t.NextInAEL;null!==n&&n!==i;)this.IntersectEdges(t,n,t.Top),this.SwapPositionsInAEL(t,n),n=t.NextInAEL;-1===t.OutIdx&&-1===i.OutIdx?(this.DeleteFromAEL(t),this.DeleteFromAEL(i)):t.OutIdx>=0&&i.OutIdx>=0?(t.OutIdx>=0&&this.AddLocalMaxPoly(t,i,t.Top),this.DeleteFromAEL(t),this.DeleteFromAEL(i)):e.use_lines&&0===t.WindDelta?(t.OutIdx>=0&&(this.AddOutPt(t,t.Top),t.OutIdx=e.ClipperBase.Unassigned),this.DeleteFromAEL(t),i.OutIdx>=0&&(this.AddOutPt(i,t.Top),i.OutIdx=e.ClipperBase.Unassigned),this.DeleteFromAEL(i)):e.Error("DoMaxima error")},e.Clipper.ReversePaths=function(t){for(var e=0,i=t.length;e=0},e.Clipper.prototype.PointCount=function(t){if(null===t)return 0;var e=0,i=t;do{e++,i=i.Next}while(i!==t);return e},e.Clipper.prototype.BuildResult=function(t){e.Clear(t);for(var i=0,n=this.m_PolyOuts.length;ii.Pt.X?e.Direction.dRightToLeft:e.Direction.dLeftToRight,h=n.Pt.X>s.Pt.X?e.Direction.dRightToLeft:e.Direction.dLeftToRight;if(l===h)return!1;if(l===e.Direction.dLeftToRight){for(;t.Next.Pt.X<=r.X&&t.Next.Pt.X>=t.Pt.X&&t.Next.Pt.Y===r.Y;)t=t.Next;o&&t.Pt.X!==r.X&&(t=t.Next),i=this.DupOutPt(t,!o),e.FPoint.op_Inequality(i.Pt,r)&&((t=i).Pt.X=r.X,t.Pt.Y=r.Y,e.use_xyz&&(t.Pt.Z=r.Z),i=this.DupOutPt(t,!o))}else{for(;t.Next.Pt.X>=r.X&&t.Next.Pt.X<=t.Pt.X&&t.Next.Pt.Y===r.Y;)t=t.Next;o||t.Pt.X===r.X||(t=t.Next),i=this.DupOutPt(t,o),e.FPoint.op_Inequality(i.Pt,r)&&((t=i).Pt.X=r.X,t.Pt.Y=r.Y,e.use_xyz&&(t.Pt.Z=r.Z),i=this.DupOutPt(t,o))}if(h===e.Direction.dLeftToRight){for(;n.Next.Pt.X<=r.X&&n.Next.Pt.X>=n.Pt.X&&n.Next.Pt.Y===r.Y;)n=n.Next;o&&n.Pt.X!==r.X&&(n=n.Next),s=this.DupOutPt(n,!o),e.FPoint.op_Inequality(s.Pt,r)&&((n=s).Pt.X=r.X,n.Pt.Y=r.Y,e.use_xyz&&(n.Pt.Z=r.Z),s=this.DupOutPt(n,!o))}else{for(;n.Next.Pt.X>=r.X&&n.Next.Pt.X<=n.Pt.X&&n.Next.Pt.Y===r.Y;)n=n.Next;o||n.Pt.X===r.X||(n=n.Next),s=this.DupOutPt(n,o),e.FPoint.op_Inequality(s.Pt,r)&&((n=s).Pt.X=r.X,n.Pt.Y=r.Y,e.use_xyz&&(n.Pt.Z=r.Z),s=this.DupOutPt(n,o))}return l===e.Direction.dLeftToRight===o?(t.Prev=n,n.Next=t,i.Next=s,s.Prev=i):(t.Next=n,n.Prev=t,i.Prev=s,s.Next=i),!0},e.Clipper.prototype.JoinPoints=function(t,i,n){var s=t.OutPt1,r=new e.OutPt,o=t.OutPt2,l=new e.OutPt,h=t.OutPt1.Pt.Y===t.OffPt.Y;if(h&&e.FPoint.op_Equality(t.OffPt,t.OutPt1.Pt)&&e.FPoint.op_Equality(t.OffPt,t.OutPt2.Pt)){if(i!==n)return!1;for(r=t.OutPt1.Next;r!==s&&e.FPoint.op_Equality(r.Pt,t.OffPt);)r=r.Next;var a=r.Pt.Y>t.OffPt.Y;for(l=t.OutPt2.Next;l!==o&&e.FPoint.op_Equality(l.Pt,t.OffPt);)l=l.Next;return a!==l.Pt.Y>t.OffPt.Y&&(a?(r=this.DupOutPt(s,!1),l=this.DupOutPt(o,!0),s.Prev=o,o.Next=s,r.Next=l,l.Prev=r,t.OutPt1=s,t.OutPt2=r,!0):(r=this.DupOutPt(s,!0),l=this.DupOutPt(o,!1),s.Next=o,o.Prev=s,r.Prev=l,l.Next=r,t.OutPt1=s,t.OutPt2=r,!0))}if(h){for(r=s;s.Prev.Pt.Y===s.Pt.Y&&s.Prev!==r&&s.Prev!==o;)s=s.Prev;for(;r.Next.Pt.Y===r.Pt.Y&&r.Next!==s&&r.Next!==o;)r=r.Next;if(r.Next===s||r.Next===o)return!1;for(l=o;o.Prev.Pt.Y===o.Pt.Y&&o.Prev!==l&&o.Prev!==r;)o=o.Prev;for(;l.Next.Pt.Y===l.Pt.Y&&l.Next!==o&&l.Next!==s;)l=l.Next;if(l.Next===o||l.Next===s)return!1;var p={Left:null,Right:null};if(!this.GetOverlap(s.Pt.X,r.Pt.X,o.Pt.X,l.Pt.X,p))return!1;var u,d=p.Left,c=p.Right,f=new e.FPoint0;return s.Pt.X>=d&&s.Pt.X<=c?(f.X=s.Pt.X,f.Y=s.Pt.Y,e.use_xyz&&(f.Z=s.Pt.Z),u=s.Pt.X>r.Pt.X):o.Pt.X>=d&&o.Pt.X<=c?(f.X=o.Pt.X,f.Y=o.Pt.Y,e.use_xyz&&(f.Z=o.Pt.Z),u=o.Pt.X>l.Pt.X):r.Pt.X>=d&&r.Pt.X<=c?(f.X=r.Pt.X,f.Y=r.Pt.Y,e.use_xyz&&(f.Z=r.Pt.Z),u=r.Pt.X>s.Pt.X):(f.X=l.Pt.X,f.Y=l.Pt.Y,e.use_xyz&&(f.Z=l.Pt.Z),u=l.Pt.X>o.Pt.X),t.OutPt1=s,t.OutPt2=o,this.JoinHorz(s,r,o,l,f,u)}for(r=s.Next;e.FPoint.op_Equality(r.Pt,s.Pt)&&r!==s;)r=r.Next;var y=r.Pt.Y>s.Pt.Y||!e.ClipperBase.SlopesEqual4(s.Pt,r.Pt,t.OffPt);if(y){for(r=s.Prev;e.FPoint.op_Equality(r.Pt,s.Pt)&&r!==s;)r=r.Prev;if(r.Pt.Y>s.Pt.Y||!e.ClipperBase.SlopesEqual4(s.Pt,r.Pt,t.OffPt))return!1}for(l=o.Next;e.FPoint.op_Equality(l.Pt,o.Pt)&&l!==o;)l=l.Next;var x=l.Pt.Y>o.Pt.Y||!e.ClipperBase.SlopesEqual4(o.Pt,l.Pt,t.OffPt);if(x){for(l=o.Prev;e.FPoint.op_Equality(l.Pt,o.Pt)&&l!==o;)l=l.Prev;if(l.Pt.Y>o.Pt.Y||!e.ClipperBase.SlopesEqual4(o.Pt,l.Pt,t.OffPt))return!1}return r!==s&&l!==o&&r!==l&&(i!==n||y!==x)&&(y?(r=this.DupOutPt(s,!1),l=this.DupOutPt(o,!0),s.Prev=o,o.Next=s,r.Next=l,l.Prev=r,t.OutPt1=s,t.OutPt2=r,!0):(r=this.DupOutPt(s,!0),l=this.DupOutPt(o,!1),s.Next=o,o.Prev=s,r.Prev=l,l.Next=r,t.OutPt1=s,t.OutPt2=r,!0))},e.Clipper.GetBounds=function(t){for(var i=0,n=t.length;is.right&&(s.right=t[i][r].X),t[i][r].Ys.bottom&&(s.bottom=t[i][r].Y);return s},e.Clipper.prototype.GetBounds2=function(t){var i=t,n=new e.FRect;for(n.left=t.Pt.X,n.right=t.Pt.X,n.top=t.Pt.Y,n.bottom=t.Pt.Y,t=t.Next;t!==i;)t.Pt.Xn.right&&(n.right=t.Pt.X),t.Pt.Yn.bottom&&(n.bottom=t.Pt.Y),t=t.Next;return n},e.Clipper.PointInPolygon=function(t,e){var i=0,n=e.length;if(n<3)return 0;for(var s=e[0],r=1;r<=n;++r){var o=r===n?e[0]:e[r];if(o.Y===t.Y&&(o.X===t.X||s.Y===t.Y&&o.X>t.X==s.X=t.X)if(o.X>t.X)i=1-i;else{if(0===(l=(s.X-t.X)*(o.Y-t.Y)-(o.X-t.X)*(s.Y-t.Y)))return-1;l>0==o.Y>s.Y&&(i=1-i)}else if(o.X>t.X){var l;if(0===(l=(s.X-t.X)*(o.Y-t.Y)-(o.X-t.X)*(s.Y-t.Y)))return-1;l>0==o.Y>s.Y&&(i=1-i)}s=o}return i},e.Clipper.prototype.PointInPolygon=function(t,e){var i=0,n=e,s=t.X,r=t.Y,o=e.Pt.X,l=e.Pt.Y;do{var h=(e=e.Next).Pt.X,a=e.Pt.Y;if(a===r&&(h===s||l===r&&h>s==o=s)if(h>s)i=1-i;else{if(0===(p=(o-s)*(a-r)-(h-s)*(l-r)))return-1;p>0==a>l&&(i=1-i)}else if(h>s){var p;if(0===(p=(o-s)*(a-r)-(h-s)*(l-r)))return-1;p>0==a>l&&(i=1-i)}o=h,l=a}while(n!==e);return i},e.Clipper.prototype.Poly2ContainsPoly1=function(t,e){var i=t;do{var n=this.PointInPolygon(i.Pt,e);if(n>=0)return n>0;i=i.Next}while(i!==t);return!0},e.Clipper.prototype.FixupFirstLefts1=function(t,i){for(var n,s,r=0,o=this.m_PolyOuts.length;r0&&this.ReversePolyPtLinks(r.Pts)):this.Poly2ContainsPoly1(s.Pts,r.Pts)?(r.IsHole=s.IsHole,s.IsHole=!r.IsHole,r.FirstLeft=s.FirstLeft,s.FirstLeft=r,this.m_UsingPolyTree&&this.FixupFirstLefts2(s,r),(s.IsHole^this.ReverseSolution)==this.Area$1(s)>0&&this.ReversePolyPtLinks(s.Pts)):(r.IsHole=s.IsHole,r.FirstLeft=s.FirstLeft,this.m_UsingPolyTree&&this.FixupFirstLefts1(s,r))):(r.Pts=null,r.BottomPt=null,r.Idx=s.Idx,s.IsHole=i.IsHole,i===r&&(s.FirstLeft=r.FirstLeft),r.FirstLeft=s,this.m_UsingPolyTree&&this.FixupFirstLefts3(r,s)))}},e.Clipper.prototype.UpdateOutPtIdxs=function(t){var e=t.Pts;do{e.Idx=t.Idx,e=e.Prev}while(e!==t.Pts)},e.Clipper.prototype.DoSimplePolygons=function(){for(var t=0;tMath.abs(t.Y-i.Y)?t.X>i.X==t.Xt.X==i.Xi.Y==t.Yt.Y==i.Y0&&s&&n.push(t.m_polygon);for(var r=0,o=t.Childs(),l=o.length,h=o[r];r0&&e.FPoint.op_Equality(t[0],t[s]);)s--;r.m_polygon.push(t[0]);for(var o=0,l=0,h=1;h<=s;h++)e.FPoint.op_Inequality(r.m_polygon[o],t[h])&&(o++,r.m_polygon.push(t[h]),(t[h].Y>r.m_polygon[l].Y||t[h].Y===r.m_polygon[l].Y&&t[h].Xa.Y||r.m_polygon[l].Y===a.Y&&r.m_polygon[l].X=0&&!e.Clipper.Orientation(this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon))for(var t=0;t2?this.m_miterLim=2/(this.MiterLimit*this.MiterLimit):this.m_miterLim=.5,n=this.ArcTolerance<=0?e.ClipperOffset.def_arc_tolerance:this.ArcTolerance>Math.abs(t)*e.ClipperOffset.def_arc_tolerance?Math.abs(t)*e.ClipperOffset.def_arc_tolerance:this.ArcTolerance;var s=3.14159265358979/Math.acos(1-n/Math.abs(t));this.m_sin=Math.sin(e.ClipperOffset.two_pi/s),this.m_cos=Math.cos(e.ClipperOffset.two_pi/s),this.m_StepsPerRad=s/e.ClipperOffset.two_pi,t<0&&(this.m_sin=-this.m_sin);for(i=0;i0;d--)this.m_normals[d]=new e.FPoint2(-this.m_normals[d-1].X,-this.m_normals[d-1].Y);this.m_normals[0]=new e.FPoint2(-h.X,-h.Y),l=0;for(d=o-1;d>=0;d--)l=this.OffsetPoint(d,l,r.m_jointype);this.m_destPolys.push(this.m_destPoly)}else{var a;for(l=0,d=1;d0;d--)this.m_normals[d]=new e.FPoint2(-this.m_normals[d-1].X,-this.m_normals[d-1].Y);this.m_normals[0]=new e.FPoint2(-this.m_normals[1].X,-this.m_normals[1].Y);for(d=(l=o-1)-1;d>0;--d)l=this.OffsetPoint(d,l,r.m_jointype);r.m_endtype===e.EndType.etOpenButt?(a=new e.FPoint2(this.m_srcPoly[0].X-this.m_normals[0].X*t,this.m_srcPoly[0].Y-this.m_normals[0].Y*t),this.m_destPoly.push(a),a=new e.FPoint2(this.m_srcPoly[0].X+this.m_normals[0].X*t,this.m_srcPoly[0].Y+this.m_normals[0].Y*t),this.m_destPoly.push(a)):(l=1,this.m_sinA=0,r.m_endtype===e.EndType.etOpenSquare?this.DoSquare(0,1):this.DoRound(0,1)),this.m_destPolys.push(this.m_destPoly)}}else{if(r.m_jointype===e.JoinType.jtRound)for(var p=1,u=0,d=1;d<=s;d++){this.m_destPoly.push(new e.FPoint2(this.m_srcPoly[0].X+p*t,this.m_srcPoly[0].Y+u*t));var c=p;p=p*this.m_cos-this.m_sin*u,u=c*this.m_sin+u*this.m_cos}else{p=-1,u=-1;for(var d=0;d<4;++d)this.m_destPoly.push(new e.FPoint2(this.m_srcPoly[0].X+p*t,this.m_srcPoly[0].Y+u*t)),p<0?p=1:u<0?u=1:p=-1}this.m_destPolys.push(this.m_destPoly)}}}},e.ClipperOffset.prototype.Execute=function(){var t=arguments;if(t[0]instanceof e.PolyTree){o=t[1];if((r=t[0]).Clear(),this.FixOrientations(),this.DoOffset(o),(s=new e.Clipper(0)).AddPaths(this.m_destPolys,e.PolyType.ptSubject,!0),o>0)s.Execute(e.ClipType.ctUnion,r,e.PolyFillType.pftPositive,e.PolyFillType.pftPositive);else{h=e.Clipper.GetBounds(this.m_destPolys);if((l=new e.Path).push(new e.FPoint2(h.left-10,h.bottom+10)),l.push(new e.FPoint2(h.right+10,h.bottom+10)),l.push(new e.FPoint2(h.right+10,h.top-10)),l.push(new e.FPoint2(h.left-10,h.top-10)),s.AddPath(l,e.PolyType.ptSubject,!0),s.ReverseSolution=!0,s.Execute(e.ClipType.ctUnion,r,e.PolyFillType.pftNegative,e.PolyFillType.pftNegative),1===r.ChildCount()&&r.Childs()[0].ChildCount()>0){var i=r.Childs()[0];r.Childs()[0]=i.Childs()[0],r.Childs()[0].m_Parent=r;for(var n=1;n0)s.Execute(e.ClipType.ctUnion,r,e.PolyFillType.pftPositive,e.PolyFillType.pftPositive);else{var l,h=e.Clipper.GetBounds(this.m_destPolys);(l=new e.Path).push(new e.FPoint2(h.left-10,h.bottom+10)),l.push(new e.FPoint2(h.right+10,h.bottom+10)),l.push(new e.FPoint2(h.right+10,h.top-10)),l.push(new e.FPoint2(h.left-10,h.top-10)),s.AddPath(l,e.PolyType.ptSubject,!0),s.ReverseSolution=!0,s.Execute(e.ClipType.ctUnion,r,e.PolyFillType.pftNegative,e.PolyFillType.pftNegative),r.length>0&&r.splice(0,1)}}},e.ClipperOffset.prototype.OffsetPoint=function(t,i,n){if(this.m_sinA=this.m_normals[i].X*this.m_normals[t].Y-this.m_normals[t].X*this.m_normals[i].Y,0===this.m_sinA)return i;if(this.m_sinA>1?this.m_sinA=1:this.m_sinA<-1&&(this.m_sinA=-1),this.m_sinA*this.m_delta<0)this.m_destPoly.push(new e.FPoint2(this.m_srcPoly[t].X+this.m_normals[i].X*this.m_delta,this.m_srcPoly[t].Y+this.m_normals[i].Y*this.m_delta)),this.m_destPoly.push(new e.FPoint1(this.m_srcPoly[t])),this.m_destPoly.push(new e.FPoint2(this.m_srcPoly[t].X+this.m_normals[t].X*this.m_delta,this.m_srcPoly[t].Y+this.m_normals[t].Y*this.m_delta));else switch(n){case e.JoinType.jtMiter:var s=this.m_normals[t].X*this.m_normals[i].X+this.m_normals[t].Y*this.m_normals[i].Y+1;s>=this.m_miterLim?this.DoMiter(t,i,s):this.DoSquare(t,i);break;case e.JoinType.jtSquare:this.DoSquare(t,i);break;case e.JoinType.jtRound:this.DoRound(t,i)}return i=t},e.ClipperOffset.prototype.DoSquare=function(t,i){var n=Math.tan(Math.atan2(this.m_sinA,this.m_normals[i].X*this.m_normals[t].X+this.m_normals[i].Y*this.m_normals[t].Y)/4);this.m_destPoly.push(new e.FPoint2(this.m_srcPoly[t].X+this.m_delta*(this.m_normals[i].X-this.m_normals[i].Y*n),this.m_srcPoly[t].Y+this.m_delta*(this.m_normals[i].Y+this.m_normals[i].X*n))),this.m_destPoly.push(new e.FPoint2(this.m_srcPoly[t].X+this.m_delta*(this.m_normals[t].X+this.m_normals[t].Y*n),this.m_srcPoly[t].Y+this.m_delta*(this.m_normals[t].Y-this.m_normals[t].X*n)))},e.ClipperOffset.prototype.DoMiter=function(t,i,n){var s=this.m_delta/n;this.m_destPoly.push(new e.FPoint2(this.m_srcPoly[t].X+(this.m_normals[i].X+this.m_normals[t].X)*s,this.m_srcPoly[t].Y+(this.m_normals[i].Y+this.m_normals[t].Y)*s))},e.ClipperOffset.prototype.DoRound=function(t,i){for(var n,s=Math.atan2(this.m_sinA,this.m_normals[i].X*this.m_normals[t].X+this.m_normals[i].Y*this.m_normals[t].Y),r=Math.max(Math.round(this.m_StepsPerRad*Math.abs(s)),1),o=this.m_normals[i].X,l=this.m_normals[i].Y,h=0;h1?(g=p.X,P=p.Y):x>0&&(g+=f*x,P+=y*x)),(f=u.X-g)*f+(y=u.Y-P)*y<=C&&(d[s+1]=1,s++);for(l.push({X:r[0].X,Y:r[0].Y}),s=1;s2&&_.push(l)}return m||(_=_[0]),void 0===_&&(_=[]),_},e.JS.PerimeterOfPath=function(t,e){if(void 0===t)return 0;var i,n,s=Math.sqrt,r=0,o=0,l=0,h=0,a=0,p=t.length;if(p<2)return 0;for(e&&(t[p]=t[0],p++);--p;)o=(i=t[p]).X,l=i.Y,r+=s((o-(h=(n=t[p-1]).X))*(o-h)+(l-(a=n.Y))*(l-a));return e&&t.pop(),r},e.JS.PerimeterOfPaths=function(t,i){for(var n=0,s=0;s{"use strict";function e(t,e,r){r=r||2;var o,l,h,u,d,f,y,x=e&&e.length,g=x?e[0]*r:t.length,P=i(t,0,g,r,!0),m=[];if(!P||P.next===P.prev)return m;if(x&&(P=function(t,e,s,r){var o,l,h,u=[];for(o=0,l=e.length;o80*r){o=h=t[0],l=u=t[1];for(var v=r;vh&&(h=d),f>u&&(u=f);y=0!==(y=Math.max(h-o,u-l))?1/y:0}return s(P,m,r,o,l,y),m}function i(t,e,i,n,s){var r,o;if(s===b(t,e,i,n)>0)for(r=e;r=e;r-=n)o=I(r,t[r],t[r+1],o);return o&&g(o,o.next)&&(E(o),o=o.next),o}function n(t,e){if(!t)return t;e||(e=t);var i,n=t;do{if(i=!1,n.steiner||!g(n,n.next)&&0!==x(n.prev,n,n.next))n=n.next;else{if(E(n),(n=e=n.prev)===n.next)break;i=!0}}while(i||n!==e);return e}function s(t,e,i,a,p,u,c){if(t){!c&&u&&function(t,e,i,n){var s=t;do{null===s.z&&(s.z=d(s.x,s.y,e,i,n)),s.prevZ=s.prev,s.nextZ=s.next,s=s.next}while(s!==t);s.prevZ.nextZ=null,s.prevZ=null,function(t){var e,i,n,s,r,o,l,h,a=1;do{for(i=t,t=null,r=null,o=0;i;){for(o++,n=i,l=0,e=0;e0||h>0&&n;)0!==l&&(0===h||!n||i.z<=n.z)?(s=i,i=i.nextZ,l--):(s=n,n=n.nextZ,h--),r?r.nextZ=s:t=s,s.prevZ=r,r=s;i=n}r.nextZ=null,a*=2}while(o>1)}(s)}(t,a,p,u);for(var f,y,x=t;t.prev!==t.next;)if(f=t.prev,y=t.next,u?o(t,a,p,u):r(t))e.push(f.i/i),e.push(t.i/i),e.push(y.i/i),E(t),t=y.next,x=y.next;else if((t=y)===x){c?1===c?s(t=l(n(t),e,i),e,i,a,p,u,2):2===c&&h(t,e,i,a,p,u):s(n(t),e,i,a,p,u,1);break}}}function r(t){var e=t.prev,i=t,n=t.next;if(x(e,i,n)>=0)return!1;for(var s=t.next.next;s!==t.prev;){if(f(e.x,e.y,i.x,i.y,n.x,n.y,s.x,s.y)&&x(s.prev,s,s.next)>=0)return!1;s=s.next}return!0}function o(t,e,i,n){var s=t.prev,r=t,o=t.next;if(x(s,r,o)>=0)return!1;for(var l=s.xr.x?s.x>o.x?s.x:o.x:r.x>o.x?r.x:o.x,p=s.y>r.y?s.y>o.y?s.y:o.y:r.y>o.y?r.y:o.y,u=d(l,h,e,i,n),c=d(a,p,e,i,n),y=t.prevZ,g=t.nextZ;y&&y.z>=u&&g&&g.z<=c;){if(y!==t.prev&&y!==t.next&&f(s.x,s.y,r.x,r.y,o.x,o.y,y.x,y.y)&&x(y.prev,y,y.next)>=0)return!1;if(y=y.prevZ,g!==t.prev&&g!==t.next&&f(s.x,s.y,r.x,r.y,o.x,o.y,g.x,g.y)&&x(g.prev,g,g.next)>=0)return!1;g=g.nextZ}for(;y&&y.z>=u;){if(y!==t.prev&&y!==t.next&&f(s.x,s.y,r.x,r.y,o.x,o.y,y.x,y.y)&&x(y.prev,y,y.next)>=0)return!1;y=y.prevZ}for(;g&&g.z<=c;){if(g!==t.prev&&g!==t.next&&f(s.x,s.y,r.x,r.y,o.x,o.y,g.x,g.y)&&x(g.prev,g,g.next)>=0)return!1;g=g.nextZ}return!0}function l(t,e,i){var s=t;do{var r=s.prev,o=s.next.next;!g(r,o)&&P(r,s,s.next,o)&&C(r,o)&&C(o,r)&&(e.push(r.i/i),e.push(s.i/i),e.push(o.i/i),E(s),E(s.next),s=t=o),s=s.next}while(s!==t);return n(s)}function h(t,e,i,r,o,l){var h=t;do{for(var a=h.next.next;a!==h.prev;){if(h.i!==a.i&&y(h,a)){var p=_(h,a);return h=n(h,h.next),p=n(p,p.next),s(h,e,i,r,o,l),void s(p,e,i,r,o,l)}a=a.next}h=h.next}while(h!==t)}function a(t,e){return t.x-e.x}function p(t,e){var i=function(t,e){var i,n=e,s=t.x,r=t.y,o=-1/0;do{if(r<=n.y&&r>=n.next.y&&n.next.y!==n.y){var l=n.x+(r-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(l<=s&&l>o){if(o=l,l===s){if(r===n.y)return n;if(r===n.next.y)return n.next}i=n.x=n.x&&n.x>=p&&s!==n.x&&f(ri.x||n.x===i.x&&u(i,n)))&&(i=n,c=h)),n=n.next}while(n!==a);return i}(t,e);if(!i)return e;var s=_(i,t),r=n(i,i.next);return n(s,s.next),e===i?r:e}function u(t,e){return x(t.prev,t,e.prev)<0&&x(e.next,t,t.next)<0}function d(t,e,i,n,s){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-i)*s)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*s)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function c(t){var e=t,i=t;do{(e.x=0&&(t-o)*(n-l)-(i-o)*(e-l)>=0&&(i-o)*(r-l)-(s-o)*(n-l)>=0}function y(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var i=t;do{if(i.i!==t.i&&i.next.i!==t.i&&i.i!==e.i&&i.next.i!==e.i&&P(i,i.next,t,e))return!0;i=i.next}while(i!==t);return!1}(t,e)&&(C(t,e)&&C(e,t)&&function(t,e){var i=t,n=!1,s=(t.x+e.x)/2,r=(t.y+e.y)/2;do{i.y>r!=i.next.y>r&&i.next.y!==i.y&&s<(i.next.x-i.x)*(r-i.y)/(i.next.y-i.y)+i.x&&(n=!n),i=i.next}while(i!==t);return n}(t,e)&&(x(t.prev,t,e.prev)||x(t,e.prev,e))||g(t,e)&&x(t.prev,t,t.next)>0&&x(e.prev,e,e.next)>0)}function x(t,e,i){return(e.y-t.y)*(i.x-e.x)-(e.x-t.x)*(i.y-e.y)}function g(t,e){return t.x===e.x&&t.y===e.y}function P(t,e,i,n){var s=v(x(t,e,i)),r=v(x(t,e,n)),o=v(x(i,n,t)),l=v(x(i,n,e));return s!==r&&o!==l||(!(0!==s||!m(t,i,e))||(!(0!==r||!m(t,n,e))||(!(0!==o||!m(i,t,n))||!(0!==l||!m(i,e,n)))))}function m(t,e,i){return e.x<=Math.max(t.x,i.x)&&e.x>=Math.min(t.x,i.x)&&e.y<=Math.max(t.y,i.y)&&e.y>=Math.min(t.y,i.y)}function v(t){return t>0?1:t<0?-1:0}function C(t,e){return x(t.prev,t,t.next)<0?x(t,e,t.next)>=0&&x(t,t.prev,e)>=0:x(t,e,t.prev)<0||x(t,t.next,e)<0}function _(t,e){var i=new T(t.i,t.x,t.y),n=new T(e.i,e.x,e.y),s=t.next,r=e.prev;return t.next=e,e.prev=t,i.next=s,s.prev=i,n.next=i,i.prev=n,r.next=n,n.prev=r,n}function I(t,e,i,n){var s=new T(t,e,i);return n?(s.next=n.next,s.prev=n,n.next.prev=s,n.next=s):(s.prev=s,s.next=s),s}function E(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function T(t,e,i){this.i=t,this.x=e,this.y=i,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function b(t,e,i,n){for(var s=0,r=e,o=i-n;r0&&(n+=t[s-1].length,i.holes.push(n))}return i}},2752:t=>{"use strict";var e=function(t,e){this.head_=t,this.tail_=e,this.search_node_=t};e.prototype.head=function(){return this.head_},e.prototype.setHead=function(t){this.head_=t},e.prototype.tail=function(){return this.tail_},e.prototype.setTail=function(t){this.tail_=t},e.prototype.search=function(){return this.search_node_},e.prototype.setSearch=function(t){this.search_node_=t},e.prototype.findSearchNode=function(){return this.search_node_},e.prototype.locateNode=function(t){var e=this.search_node_;if(t=e.value)return this.search_node_=e,e}else for(;e=e.next;)if(t{"use strict";t.exports=function(t,e){if(!t)throw new Error(e||"Assert Failed")}},1688:(t,e,i)=>{"use strict";var n=i(9071),s=function(t,e){this.x=+t||0,this.y=+e||0,this._p2t_edge_list=null};s.prototype.toString=function(){return n.toStringBase(this)},s.prototype.toJSON=function(){return{x:this.x,y:this.y}},s.prototype.clone=function(){return new s(this.x,this.y)},s.prototype.set_zero=function(){return this.x=0,this.y=0,this},s.prototype.set=function(t,e){return this.x=+t||0,this.y=+e||0,this},s.prototype.negate=function(){return this.x=-this.x,this.y=-this.y,this},s.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this},s.prototype.sub=function(t){return this.x-=t.x,this.y-=t.y,this},s.prototype.mul=function(t){return this.x*=t,this.y*=t,this},s.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},s.prototype.normalize=function(){var t=this.length();return this.x/=t,this.y/=t,t},s.prototype.equals=function(t){return this.x===t.x&&this.y===t.y},s.negate=function(t){return new s(-t.x,-t.y)},s.add=function(t,e){return new s(t.x+e.x,t.y+e.y)},s.sub=function(t,e){return new s(t.x-e.x,t.y-e.y)},s.mul=function(t,e){return new s(t*e.x,t*e.y)},s.cross=function(t,e){return"number"==typeof t?"number"==typeof e?t*e:new s(-t*e.y,t*e.x):"number"==typeof e?new s(e*t.y,-e*t.x):t.x*e.y-t.y*e.x},s.toString=n.toString,s.compare=n.compare,s.cmp=n.compare,s.equals=n.equals,s.dot=function(t,e){return t.x*e.x+t.y*e.y},t.exports=s},3704:(t,e,i)=>{"use strict";var n=i(9071),s=function(t,e){this.name="PointError",this.points=e=e||[],this.message=t||"Invalid Points!";for(var i=0;i{"use strict";var n=i.g.poly2tri;e.noConflict=function(){return i.g.poly2tri=n,e},e.VERSION=i(3095).version,e.PointError=i(3704),e.Point=i(1688),e.Triangle=i(1580),e.SweepContext=i(2115);var s=i(1110);e.triangulate=s.triangulate,e.sweep={Triangulate:s.triangulate}},1110:(t,e,i)=>{"use strict";var n=i(2014),s=i(3704),r=i(1580),o=i(2752).Node,l=i(4555),h=l.EPSILON,a=l.Orientation,p=l.orient2d,u=l.inScanArea,d=l.isAngleObtuse;function c(t,e){var i=t.locateNode(e),s=function(t,e,i){var n=new r(e,i.point,i.next.point);n.markNeighbor(i.triangle),t.addToMap(n);var s=new o(e);s.next=i.next,s.prev=i,i.next.prev=s,i.next=s,P(t,n)||t.mapTriangleToNodes(n);return s}(t,e,i);return e.x<=i.point.x+h&&g(t,i),function(t,e){var i=e.next;for(;i.next&&!d(i.point,i.next.point,i.prev.point);)g(t,i),i=i.next;i=e.prev;for(;i.prev&&!d(i.point,i.next.point,i.prev.point);)g(t,i),i=i.prev;e.next&&e.next.next&&function(t){var e=t.point.x-t.next.next.point.x,i=t.point.y-t.next.next.point.y;return n(i>=0,"unordered y"),e>=0||Math.abs(e)=t.basin.bottom_node.next.point.y;)t.basin.bottom_node=t.basin.bottom_node.next;if(t.basin.bottom_node===t.basin.left_node)return;t.basin.right_node=t.basin.bottom_node;for(;t.basin.right_node.next&&t.basin.right_node.point.yt.basin.right_node.point.y,C(t,t.basin.bottom_node)}(t,e)}(t,s),s}function f(t,e,i){t.edge_event.constrained_edge=e,t.edge_event.right=e.p.x>e.q.x,x(i.triangle,e.p,e.q)||(!function(t,e,i){t.edge_event.right?function(t,e,i){for(;i.next.point.xe.p.x;)p(e.q,i.prev.point,e.p)===a.CW?T(t,e,i):i=i.prev}(t,e,i)}(t,e,i),y(t,e.p,e.q,i.triangle,e.q))}function y(t,e,i,n,r){if(!x(n,e,i)){var o=n.pointCCW(r),l=p(i,o,e);if(l===a.COLLINEAR)throw new s("poly2tri EdgeEvent: Collinear not supported!",[i,o,e]);var h=n.pointCW(r),u=p(i,h,e);if(u===a.COLLINEAR)throw new s("poly2tri EdgeEvent: Collinear not supported!",[i,h,e]);l===u?y(t,e,i,n=l===a.CW?n.neighborCCW(r):n.neighborCW(r),r):S(t,e,i,n,r)}}function x(t,e,i){var n=t.edgeIndex(e,i);if(-1!==n){t.markConstrainedEdgeByIndex(n);var s=t.getNeighbor(n);return s&&s.markConstrainedEdgeByPoints(e,i),!0}return!1}function g(t,e){var i=new r(e.prev.point,e.point,e.next.point);i.markNeighbor(e.prev.triangle),i.markNeighbor(e.triangle),t.addToMap(i),e.prev.next=e.next,e.next.prev=e.prev,P(t,i)||t.mapTriangleToNodes(i)}function P(t,e){for(var i=0;i<3;++i)if(!e.delaunay_edge[i]){var n=e.getNeighbor(i);if(n){var s=e.getPoint(i),r=n.oppositePoint(e,s),o=n.index(r);if(n.constrained_edge[o]||n.delaunay_edge[o]){e.constrained_edge[i]=n.constrained_edge[o];continue}if(m(s,e.pointCCW(s),e.pointCW(s),r)){e.delaunay_edge[i]=!0,n.delaunay_edge[o]=!0,v(e,s,n,r);var l=!P(t,e);return l&&t.mapTriangleToNodes(e),(l=!P(t,n))&&t.mapTriangleToNodes(n),e.delaunay_edge[i]=!1,n.delaunay_edge[o]=!1,!0}}}return!1}function m(t,e,i,n){var s=t.x-n.x,r=t.y-n.y,o=e.x-n.x,l=e.y-n.y,h=s*l-o*r;if(h<=0)return!1;var a=i.x-n.x,p=i.y-n.y,u=a*r-s*p;return!(u<=0)&&(s*s+r*r)*(o*p-a*l)+(o*o+l*l)*u+(a*a+p*p)*h>0}function v(t,e,i,n){var s,r,o,l,h,a,p,u,d,c,f,y;s=t.neighborCCW(e),r=t.neighborCW(e),o=i.neighborCCW(n),l=i.neighborCW(n),h=t.getConstrainedEdgeCCW(e),a=t.getConstrainedEdgeCW(e),p=i.getConstrainedEdgeCCW(n),u=i.getConstrainedEdgeCW(n),d=t.getDelaunayEdgeCCW(e),c=t.getDelaunayEdgeCW(e),f=i.getDelaunayEdgeCCW(n),y=i.getDelaunayEdgeCW(n),t.legalize(e,n),i.legalize(n,e),i.setDelaunayEdgeCCW(e,d),t.setDelaunayEdgeCW(e,c),t.setDelaunayEdgeCCW(n,f),i.setDelaunayEdgeCW(n,y),i.setConstrainedEdgeCCW(e,h),t.setConstrainedEdgeCW(e,a),t.setConstrainedEdgeCCW(n,p),i.setConstrainedEdgeCW(n,u),t.clearNeighbors(),i.clearNeighbors(),s&&i.markNeighbor(s),r&&t.markNeighbor(r),o&&t.markNeighbor(o),l&&i.markNeighbor(l),t.markNeighbor(i)}function C(t,e){if(!function(t,e){var i;i=t.basin.left_highest?t.basin.left_node.point.y-e.point.y:t.basin.right_node.point.y-e.point.y;if(t.basin.width>i)return!0;return!1}(t,e)&&(g(t,e),e.prev!==t.basin.left_node||e.next!==t.basin.right_node)){if(e.prev===t.basin.left_node){if(p(e.point,e.next.point,e.next.next.point)===a.CW)return;e=e.next}else if(e.next===t.basin.right_node){if(p(e.point,e.prev.point,e.prev.prev.point)===a.CCW)return;e=e.prev}else e=e.prev.point.ye.p.x&&(p(i.point,i.prev.point,i.prev.prev.point)===a.CW?L(t,e,i):(b(t,e,i),T(t,e,i)))}function b(t,e,i){p(i.prev.point,i.prev.prev.point,i.prev.prev.prev.point)===a.CW?L(t,e,i.prev):p(e.q,i.prev.prev.point,e.p)===a.CW&&b(t,e,i.prev)}function L(t,e,i){g(t,i.prev),i.prev.point!==e.p&&p(e.q,i.prev.point,e.p)===a.CW&&p(i.point,i.prev.point,i.prev.prev.point)===a.CW&&L(t,e,i)}function S(t,e,i,r,o){var l=r.neighborAcross(o);n(l,"FLIP failed due to missing triangle!");var h=l.oppositePoint(r,o);if(r.getConstrainedEdgeAcross(o)){var d=r.index(o);throw new s("poly2tri Intersecting Constraints",[o,h,r.getPoint((d+1)%3),r.getPoint((d+2)%3)])}u(o,r.pointCCW(o),r.pointCW(o),h)?(v(r,o,l,h),t.mapTriangleToNodes(r),t.mapTriangleToNodes(l),o===i&&h===e?i===t.edge_event.constrained_edge.q&&e===t.edge_event.constrained_edge.p&&(r.markConstrainedEdgeByPoints(e,i),l.markConstrainedEdgeByPoints(e,i),P(t,r),P(t,l)):(r=function(t,e,i,n,s,r){var o;if(e===a.CCW)return o=n.edgeIndex(s,r),n.delaunay_edge[o]=!0,P(t,n),n.clearDelaunayEdges(),i;return o=i.edgeIndex(s,r),i.delaunay_edge[o]=!0,P(t,i),i.clearDelaunayEdges(),n}(t,p(i,h,e),r,l,o,h),S(t,e,i,r,o))):(N(t,e,i,r,l,A(e,i,l,h)),y(t,e,i,r,o))}function A(t,e,i,n){var r=p(e,n,t);if(r===a.CW)return i.pointCCW(n);if(r===a.CCW)return i.pointCW(n);throw new s("poly2tri [Unsupported] nextFlipPoint: opposing point on constrained edge!",[e,n,t])}function N(t,e,i,s,r,o){var l=r.neighborAcross(o);n(l,"FLIP failed due to missing triangle");var h=l.oppositePoint(r,o);u(i,s.pointCCW(i),s.pointCW(i),h)?S(t,i,h,l,h):N(t,e,i,s,l,A(e,i,l,h))}e.triangulate=function(t){t.initTriangulation(),t.createAdvancingFront(),function(t){var e,i=t.pointCount();for(e=1;e{"use strict";var n=i(3704),s=i(1688),r=i(1580),o=i(1110),l=i(2752),h=l.Node,a=function(t,e){if(this.p=t,this.q=e,t.y>e.y)this.q=t,this.p=e;else if(t.y===e.y)if(t.x>e.x)this.q=t,this.p=e;else if(t.x===e.x)throw new n("poly2tri Invalid Edge constructor: repeated points!",[t]);this.q._p2t_edge_list||(this.q._p2t_edge_list=[]),this.q._p2t_edge_list.push(this)},p=function(){this.left_node=null,this.bottom_node=null,this.right_node=null,this.width=0,this.left_highest=!1};p.prototype.clear=function(){this.left_node=null,this.bottom_node=null,this.right_node=null,this.width=0,this.left_highest=!1};var u=function(){this.constrained_edge=null,this.right=!1},d=function(t,e){e=e||{},this.triangles_=[],this.map_=[],this.points_=e.cloneArrays?t.slice(0):t,this.edge_list=[],this.pmin_=this.pmax_=null,this.front_=null,this.head_=null,this.tail_=null,this.af_head_=null,this.af_middle_=null,this.af_tail_=null,this.basin=new p,this.edge_event=new u,this.initEdges(this.points_)};d.prototype.addHole=function(t){this.initEdges(t);var e,i=t.length;for(e=0;ee&&(e=l.x),l.xn&&(n=l.y),l.y{"use strict";var n=function(t,e,i){this.points_=[t,e,i],this.neighbors_=[null,null,null],this.interior_=!1,this.constrained_edge=[!1,!1,!1],this.delaunay_edge=[!1,!1,!1]},s=i(9071).toString;n.prototype.toString=function(){return"["+s(this.points_[0])+s(this.points_[1])+s(this.points_[2])+"]"},n.prototype.getPoint=function(t){return this.points_[t]},n.prototype.GetPoint=n.prototype.getPoint,n.prototype.getPoints=function(){return this.points_},n.prototype.getNeighbor=function(t){return this.neighbors_[t]},n.prototype.containsPoint=function(t){var e=this.points_;return t===e[0]||t===e[1]||t===e[2]},n.prototype.containsEdge=function(t){return this.containsPoint(t.p)&&this.containsPoint(t.q)},n.prototype.containsPoints=function(t,e){return this.containsPoint(t)&&this.containsPoint(e)},n.prototype.isInterior=function(){return this.interior_},n.prototype.setInterior=function(t){return this.interior_=t,this},n.prototype.markNeighborPointers=function(t,e,i){var n=this.points_;if(t===n[2]&&e===n[1]||t===n[1]&&e===n[2])this.neighbors_[0]=i;else if(t===n[0]&&e===n[2]||t===n[2]&&e===n[0])this.neighbors_[1]=i;else{if(!(t===n[0]&&e===n[1]||t===n[1]&&e===n[0]))throw new Error("poly2tri Invalid Triangle.markNeighborPointers() call");this.neighbors_[2]=i}},n.prototype.markNeighbor=function(t){var e=this.points_;t.containsPoints(e[1],e[2])?(this.neighbors_[0]=t,t.markNeighborPointers(e[1],e[2],this)):t.containsPoints(e[0],e[2])?(this.neighbors_[1]=t,t.markNeighborPointers(e[0],e[2],this)):t.containsPoints(e[0],e[1])&&(this.neighbors_[2]=t,t.markNeighborPointers(e[0],e[1],this))},n.prototype.clearNeighbors=function(){this.neighbors_[0]=null,this.neighbors_[1]=null,this.neighbors_[2]=null},n.prototype.clearDelaunayEdges=function(){this.delaunay_edge[0]=!1,this.delaunay_edge[1]=!1,this.delaunay_edge[2]=!1},n.prototype.pointCW=function(t){var e=this.points_;return t===e[0]?e[2]:t===e[1]?e[0]:t===e[2]?e[1]:null},n.prototype.pointCCW=function(t){var e=this.points_;return t===e[0]?e[1]:t===e[1]?e[2]:t===e[2]?e[0]:null},n.prototype.neighborCW=function(t){return t===this.points_[0]?this.neighbors_[1]:t===this.points_[1]?this.neighbors_[2]:this.neighbors_[0]},n.prototype.neighborCCW=function(t){return t===this.points_[0]?this.neighbors_[2]:t===this.points_[1]?this.neighbors_[0]:this.neighbors_[1]},n.prototype.getConstrainedEdgeCW=function(t){return t===this.points_[0]?this.constrained_edge[1]:t===this.points_[1]?this.constrained_edge[2]:this.constrained_edge[0]},n.prototype.getConstrainedEdgeCCW=function(t){return t===this.points_[0]?this.constrained_edge[2]:t===this.points_[1]?this.constrained_edge[0]:this.constrained_edge[1]},n.prototype.getConstrainedEdgeAcross=function(t){return t===this.points_[0]?this.constrained_edge[0]:t===this.points_[1]?this.constrained_edge[1]:this.constrained_edge[2]},n.prototype.setConstrainedEdgeCW=function(t,e){t===this.points_[0]?this.constrained_edge[1]=e:t===this.points_[1]?this.constrained_edge[2]=e:this.constrained_edge[0]=e},n.prototype.setConstrainedEdgeCCW=function(t,e){t===this.points_[0]?this.constrained_edge[2]=e:t===this.points_[1]?this.constrained_edge[0]=e:this.constrained_edge[1]=e},n.prototype.getDelaunayEdgeCW=function(t){return t===this.points_[0]?this.delaunay_edge[1]:t===this.points_[1]?this.delaunay_edge[2]:this.delaunay_edge[0]},n.prototype.getDelaunayEdgeCCW=function(t){return t===this.points_[0]?this.delaunay_edge[2]:t===this.points_[1]?this.delaunay_edge[0]:this.delaunay_edge[1]},n.prototype.setDelaunayEdgeCW=function(t,e){t===this.points_[0]?this.delaunay_edge[1]=e:t===this.points_[1]?this.delaunay_edge[2]=e:this.delaunay_edge[0]=e},n.prototype.setDelaunayEdgeCCW=function(t,e){t===this.points_[0]?this.delaunay_edge[2]=e:t===this.points_[1]?this.delaunay_edge[0]=e:this.delaunay_edge[1]=e},n.prototype.neighborAcross=function(t){return t===this.points_[0]?this.neighbors_[0]:t===this.points_[1]?this.neighbors_[1]:this.neighbors_[2]},n.prototype.oppositePoint=function(t,e){var i=t.pointCW(e);return this.pointCW(i)},n.prototype.legalize=function(t,e){var i=this.points_;if(t===i[0])i[1]=i[0],i[0]=i[2],i[2]=e;else if(t===i[1])i[2]=i[1],i[1]=i[0],i[0]=e;else{if(t!==i[2])throw new Error("poly2tri Invalid Triangle.legalize() call");i[0]=i[2],i[2]=i[1],i[1]=e}},n.prototype.index=function(t){var e=this.points_;if(t===e[0])return 0;if(t===e[1])return 1;if(t===e[2])return 2;throw new Error("poly2tri Invalid Triangle.index() call")},n.prototype.edgeIndex=function(t,e){var i=this.points_;if(t===i[0]){if(e===i[1])return 2;if(e===i[2])return 1}else if(t===i[1]){if(e===i[2])return 0;if(e===i[0])return 2}else if(t===i[2]){if(e===i[0])return 1;if(e===i[1])return 0}return-1},n.prototype.markConstrainedEdgeByIndex=function(t){this.constrained_edge[t]=!0},n.prototype.markConstrainedEdgeByEdge=function(t){this.markConstrainedEdgeByPoints(t.p,t.q)},n.prototype.markConstrainedEdgeByPoints=function(t,e){var i=this.points_;e===i[0]&&t===i[1]||e===i[1]&&t===i[0]?this.constrained_edge[2]=!0:e===i[0]&&t===i[2]||e===i[2]&&t===i[0]?this.constrained_edge[1]=!0:(e===i[1]&&t===i[2]||e===i[2]&&t===i[1])&&(this.constrained_edge[0]=!0)},t.exports=n},4555:(t,e)=>{"use strict";var i=1e-12;e.EPSILON=i;var n={CW:1,CCW:-1,COLLINEAR:0};e.Orientation=n,e.orient2d=function(t,e,s){var r=(t.x-s.x)*(e.y-s.y)-(t.y-s.y)*(e.x-s.x);return r>-1e-12&&r0?n.CCW:n.CW},e.inScanArea=function(t,e,n,s){return!((t.x-e.x)*(s.y-e.y)-(s.x-e.x)*(t.y-e.y)>=-1e-12)&&!((t.x-n.x)*(s.y-n.y)-(s.x-n.x)*(t.y-n.y)<=i)},e.isAngleObtuse=function(t,e,i){var n=e.x-t.x,s=e.y-t.y;return n*(i.x-t.x)+s*(i.y-t.y)<0}},9071:t=>{"use strict";function e(t){return"("+t.x+";"+t.y+")"}t.exports={toString:function(t){var i=t.toString();return"[object Object]"===i?e(t):i},toStringBase:e,compare:function(t,e){return t.y===e.y?t.x-e.x:t.y-e.y},equals:function(t,e){return t.x===e.x&&t.y===e.y}}},8917:(t,e,i)=>{"use strict";i.r(e),i.d(e,{Path2D:()=>c});var n=i(2641),s=i.n(n),r=i(1791),o=i.n(r),l=i(8831);let h=new THREE.Vector2,a=new THREE.Vector2,p=new THREE.Box2,u=null,d=()=>(u=u||new Autodesk.Extensions.CompGeom.EllipseArc,u);function c(t){this.segTypes=[],this.segData=[],this.hasCurves=!1,this.bbox=new THREE.Box2,this.precisionTolerance=t}c.FORCE_MITER_LINES_FOR_TESTING=!1,c.prototype.setTessParams=function(t){this.tessParams=t},c.prototype.isClosedPath=function(){return this.segTypes.length&&7===this.segTypes[this.segTypes.length-1]},c.prototype.isPoint=function(){return 2==this.segTypes.length&&0===this.segTypes[0]&&1===this.segTypes[1]&&this.segData[0]==this.segData[2]&&this.segData[1]==this.segData[3]},c.prototype.closePath=function(){this.isClosedPath()||this.segTypes.push(7)},c.prototype.moveTo=function(t,e){this.segTypes.push(0),this.segData.push(t,e),this.bbox.expandByPoint(h.set(t,e))},c.prototype.lineTo=function(t,e){this.segTypes.push(1),this.segData.push(t,e),this.bbox.expandByPoint(h.set(t,e))},c.prototype.arc=function(t,e,i,n,s,r){this.hasCurves=!0,this.segTypes.push(2),this.segData.push(t,e,i,n,s,r),this.bbox.expandByPoint(h.set(t,e))},c.prototype.arcTo=function(t,e,i,n,s){this.hasCurves=!0,this.segTypes.push(3),this.segData.push(t,e,i,n,s),this.bbox.expandByPoint(h.set(t,e)),this.bbox.expandByPoint(h.set(i,n))},c.prototype.quadraticCurveTo=function(t,e,i,n){this.hasCurves=!0,this.segTypes.push(4),this.segData.push(t,e,i,n),this.bbox.expandByPoint(h.set(t,e)),this.bbox.expandByPoint(h.set(i,n))},c.prototype.bezierCurveTo=function(t,e,i,n,s,r){this.hasCurves=!0,this.segTypes.push(5),this.segData.push(t,e,i,n,s,r),this.bbox.expandByPoint(h.set(t,e)),this.bbox.expandByPoint(h.set(i,n)),this.bbox.expandByPoint(h.set(s,r))},c.prototype.ellipse=function(t,e,i,n,s,r,o,l){this.hasCurves=!0,this.segTypes.push(6),this.segData.push(t,e,i,n,s,r,o,l);const h=d().set(t,e,i,n,s,r,o,l).computeBBox(p);this.bbox.union(h)},c.prototype.flatten=function(t){var e=new c(this.precisionTolerance),i=0,n=0,s=0,r=n,o=s,h=this.segTypes,p=this.segData;let u=this.bbox.getSize(a).length();for(var f=0;fMath.abs(s)?n>0?t[i].X-=i*e:t[i].X+=i*e:s>0?t[i].Y-=i*e:t[i].Y+=i*e}};var v=o.flattened||o.flatten(!0),C=v.toClipperPath(t,!1);y.map((o=>{var u=d.preCheckForClipping(t,v,o,l,!0);if(!u.needCancel)if(u.needClipping&&!o.isPoint()){var c=o.toClipperPath(t,l)[0];if(!c)return;s().Clipper.Orientation(c)&&c.reverse();var f=new(s().PolyTree),y=new(s().Clipper);p(c),y.AddPath(c,s().PolyType.ptSubject,!1),y.AddPaths(C,s().PolyType.ptClip,!0),y.Execute(s().ClipType.ctIntersection,f,s().PolyFillType.pftEvenOdd,s().PolyFillType.pftEvenOdd),function(s){var o=s.GetFirst();for(;o;)d.strokeClipperContour(t,o.Contour(),o.IsOpen,i,e,n,r,t.currentVpId,h,!1,a),o=o.GetNext()}(f)}else(!u.needClipping||1==C.length&&s().Clipper.PointInPolygon({X:o.segData[0],Y:o.segData[1]},C[0]))&&this.strokeFlattedPath(t,o,e,i,n,r,l,h,a)}))}else this.strokeFlattedPath(t,u,e,i,n,r,l,h,a)},c.prototype.strokeFlattedPath=function(t,e,i,n,s,r,o,l,h){let a,p=e.segData,u=e.segTypes;o&&(a=t.getCurrentTransform());const d="butt"===h;for(var f=0,y=0,x=0,g=0,P=0,m=0,v=0,C=0;C0&&0===u[C-1];if(e!==g||h!==P||I){const m=d&&I,v=Ct)return!1;s/=h,r/=h,o/=a,l/=a;let p=s*o+r*l;if(Math.abs(1+p)>e)return!1;let u=n[4]-n[2],d=n[5]-n[3],c=n[8]-n[6],f=n[9]-n[7],y=Math.sqrt(u*u+d*d),x=Math.sqrt(c*c+f*f);return!(Math.abs(y-x)>t)&&(u/=y,d/=y,c/=x,f/=x,p=u*c+d*f,!(Math.abs(1+p)>e)&&(p=s*u+r*d,!(Math.abs(p)>e)&&!(Math.abs(s)>t&&Math.abs(r))))};c.prototype.isAABBContain=function(t){return this.isAABB()?function(t,e,i){if(t.containsBox(e))return 1;let n=i;return void 0===n&&(n=.001/t.size().length()),e.min.x-t.max.x>n||e.min.y-t.min.y>n||e.max.x-t.max.x<-n||e.max.y-t.max.y<-n?2:e.min.x-t.min.x<-n||e.min.y-t.min.y<-n||e.max.x-t.max.x>n||e.max.y-t.max.y>n?4:1}(this.bbox,t,this.precisionTolerance):4},c.prototype.clip=function(t,e){var i=t.flattened||t.flatten(!0),n=this.flattened||this.flatten(!0),r=this.preCheckForClipping(null,i,n,!1,!1);if(r.needCancel)return console.warn("No overlap between nested clip regions."),new c;if(0==r.needClipping)return r.needSwapSubject?t:this;{var o=i.toClipperPath(null,!1),l=n.toClipperPath(null,!1),h=new(s().PolyTree),a=new(s().Clipper);a.AddPaths(l,s().PolyType.ptSubject,!0),a.AddPaths(o,s().PolyType.ptClip,!0),a.Execute(s().ClipType.ctIntersection,h,s().PolyFillType.pftEvenOdd,s().PolyFillType.pftEvenOdd);let t=new c(this.precisionTolerance);for(var p=h.GetFirst();p;){for(var u=p.Contour(),d=0;d{!function(s,r,o){var h=s.vertices;if(r){for(var u=t.getCurrentTransform(),d=[],c=0;c0&&(n[n.length-1].X!=s.X||n[n.length-1].Y!=s.Y)||0==n.length)&&n.push(s)}e&&(i=t.getCurrentTransform());for(var a=0;a1&&n.push(s),h(s=[],{X:o[l++],Y:o[l++]})):1==r[a]?h(s,{X:o[l++],Y:o[l++]}):7==r[a]&&(s.push({X:s[0].X,Y:s[0].Y}),n.push(s),s=[]);return s&&s.length>1&&n.push(s),n},c.prototype.hasIntersection=function(t,e,i){return!(t.max.x-e.min.x<=-i||t.max.y-e.min.y<=-i||t.min.x-e.max.x>=i||t.min.y-e.max.y>=i)},c.prototype.preCheckForClipping=function(t,e,i,n,s){var r=e.bbox,o=i.bbox;if(n){let e=t.getCurrentTransform();o=t.transformBox(o,e,p)}return this.hasIntersection(r,o,this.precisionTolerance)?e.isAABB()&&r.containsBox(o)?{needClipping:!1}:i.isAABB()&&o.containsBox(r)?s?{needCancel:!0}:{needClipping:!1,needSwapSubject:!0}:{needClipping:!0}:{needCancel:!0}},c.prototype.getPolygonFromClipperSolution=function(t){function e(t,e,i){for(var n=0;n{var i=[],n=[],r=[];if(1==t.holes.length&&Math.abs(s().JS.AreaOfPolygons(t.holes))>Math.abs(s().JS.AreaOfPolygon(t.outer))){let e=t.holes[0];t.holes[0]=t.outer,t.outer=e}e(r,i,t.outer),t.holes.map((t=>{n.push(i.length/2),e(r,i,t)}));var l=o()(i,n);return{vertices:i,indices:l,holeIndices:n,contours:r}}))},c.prototype.msdfClipping=function(t){var e=(this.flattened||this.flatten(!0)).toClipperPath(null,!1),i=t.toClipperPath(null,!1),n=new(s().PolyTree),r=new(s().Clipper);return r.AddPaths(e,s().PolyType.ptSubject,!0),r.AddPaths(i,s().PolyType.ptClip,!0),r.Execute(s().ClipType.ctIntersection,n,s().PolyFillType.pftEvenOdd,s().PolyFillType.pftEvenOdd),this.getPolygonFromClipperSolution(n)}},299:(t,e,i)=>{"use strict";i.r(e),i.d(e,{UniquePointList:()=>c});var n=i(5229),s=i(5420),r=i(6435),o=i.n(r);let l=function(t,e,i){this.x=t||0,this.y=e||0,this.z=i||0};var h,a,p,u;l.prototype={constructor:l,set:function(t,e,i){return this.x=t,this.y=e,this.z=i,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setZ:function(t){return this.z=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this},add:function(t,e){return void 0!==e?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this)},addScalar:function(t){return this.x+=t,this.y+=t,this.z+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this},addScaledVector:function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this},sub:function(t,e){return void 0!==e?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this)},subScalar:function(t){return this.x-=t,this.y-=t,this.z-=t,this},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this},multiply:function(t,e){return void 0!==e?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(t,e)):(this.x*=t.x,this.y*=t.y,this.z*=t.z,this)},multiplyScalar:function(t){return this.x*=t,this.y*=t,this.z*=t,this},multiplyVectors:function(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this},applyMatrix3:function(t){var e=this.x,i=this.y,n=this.z,s=t.elements;return this.x=s[0]*e+s[3]*i+s[6]*n,this.y=s[1]*e+s[4]*i+s[7]*n,this.z=s[2]*e+s[5]*i+s[8]*n,this},applyMatrix4:function(t){var e=this.x,i=this.y,n=this.z,s=t.elements;return this.x=s[0]*e+s[4]*i+s[8]*n+s[12],this.y=s[1]*e+s[5]*i+s[9]*n+s[13],this.z=s[2]*e+s[6]*i+s[10]*n+s[14],this},applyProjection:function(t){var e=this.x,i=this.y,n=this.z,s=t.elements,r=1/(s[3]*e+s[7]*i+s[11]*n+s[15]);return this.x=(s[0]*e+s[4]*i+s[8]*n+s[12])*r,this.y=(s[1]*e+s[5]*i+s[9]*n+s[13])*r,this.z=(s[2]*e+s[6]*i+s[10]*n+s[14])*r,this},applyQuaternion:function(t){var e=this.x,i=this.y,n=this.z,s=t.x,r=t.y,o=t.z,l=t.w,h=l*e+r*n-o*i,a=l*i+o*e-s*n,p=l*n+s*i-r*e,u=-s*e-r*i-o*n;return this.x=h*l+u*-s+a*-o-p*-r,this.y=a*l+u*-r+p*-s-h*-o,this.z=p*l+u*-o+h*-r-a*-s,this},transformDirection:function(t){var e=this.x,i=this.y,n=this.z,s=t.elements;return this.x=s[0]*e+s[4]*i+s[8]*n,this.y=s[1]*e+s[5]*i+s[9]*n,this.z=s[2]*e+s[6]*i+s[10]*n,this.normalize(),this},divide:function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this},divideScalar:function(t){if(0!==t){var e=1/t;this.x*=e,this.y*=e,this.z*=e}else this.x=0,this.y=0,this.z=0;return this},min:function(t){return this.x>t.x&&(this.x=t.x),this.y>t.y&&(this.y=t.y),this.z>t.z&&(this.z=t.z),this},max:function(t){return this.xe.x&&(this.x=e.x),this.ye.y&&(this.y=e.y),this.ze.z&&(this.z=e.z),this},clampScalar:function(t,e){return void 0===p&&(p=new l,u=new l),p.set(t,t,t),u.set(e,e,e),this.clamp(p,u)},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(t){return this.x*t.x+this.y*t.y+this.z*t.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(t){var e=this.length();return 0!==e&&t!==e&&this.multiplyScalar(t/e),this},lerp:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this},lerpVectors:function(t,e,i){return this.subVectors(e,t).multiplyScalar(i).add(t),this},cross:function(t,e){if(void 0!==e)return console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(t,e);var i=this.x,n=this.y,s=this.z;return this.x=n*t.z-s*t.y,this.y=s*t.x-i*t.z,this.z=i*t.y-n*t.x,this},crossVectors:function(t,e){var i=t.x,n=t.y,s=t.z,r=e.x,o=e.y,l=e.z;return this.x=n*l-s*o,this.y=s*r-i*l,this.z=i*o-n*r,this},projectOnVector:function(t){return void 0===h&&(h=new l),h.copy(t).normalize(),a=this.dot(h),this.copy(h).multiplyScalar(a)},projectOnPlane:function(){var t;return function(e){return void 0===t&&(t=new l),t.copy(this).projectOnVector(e),this.sub(t)}}(),reflect:function(){var t;return function(e){return void 0===t&&(t=new l),this.sub(t.copy(e).multiplyScalar(2*this.dot(e)))}}(),distanceTo:function(t){return Math.sqrt(this.distanceToSquared(t))},distanceToSquared:function(t){var e=this.x-t.x,i=this.y-t.y,n=this.z-t.z;return e*e+i*i+n*n},setEulerFromRotationMatrix:function(t,e){console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(t,e){console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(t){return console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),this.setFromMatrixPosition(t)},getScaleFromMatrix:function(t){return console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),this.setFromMatrixScale(t)},getColumnFromMatrix:function(t,e){return console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),this.setFromMatrixColumn(t,e)},setFromMatrixPosition:function(t){return this.x=t.elements[12],this.y=t.elements[13],this.z=t.elements[14],this},setFromMatrixScale:function(t){var e=this.set(t.elements[0],t.elements[1],t.elements[2]).length(),i=this.set(t.elements[4],t.elements[5],t.elements[6]).length(),n=this.set(t.elements[8],t.elements[9],t.elements[10]).length();return this.x=e,this.y=i,this.z=n,this},setFromMatrixColumn:function(t,e){var i=4*t,n=e.elements;return this.x=n[i],this.y=n[i+1],this.z=n[i+2],this},equals:function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z},fromArray:function(t,e){return void 0===e&&(e=0),this.x=t[e],this.y=t[e+1],this.z=t[e+2],this},toArray:function(t,e){return void 0===t&&(t=[]),void 0===e&&(e=0),t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t},fromAttribute:function(t,e,i){return void 0===i&&(i=0),e=e*t.itemSize+i,this.x=t.array[e],this.y=t.array[e+1],this.z=t.array[e+2],this}};const d=new l;class c{constructor(t,e,i,r){this.bbox=t,this.boxSize=this.bbox.getSize(d).length(),"number"==typeof e?(this.precisionTolerance=e,this.scale=1/this.precisionTolerance):(this.precisionTolerance=n.TOL*this.boxSize,this.scale=1/this.precisionTolerance),this.precisionToleranceSq=this.precisionTolerance*this.precisionTolerance,this.snapBaseX=this.bbox.min.x,this.snapBaseY=this.bbox.min.y,this.pts=[],this.xymap=new Map,r&&(this.quadTreeVerts=new s.QuadTree(t.min.x,t.min.y,t.max.x,t.max.y,e)),this.vertexConstructor=i}findOrAddPoint(t,e,i){let n,s=0|(t-this.snapBaseX)*this.scale,r=0|(e-this.snapBaseY)*this.scale,l=1/0;for(let i=s-1;i<=s+1;i++){let s=this.xymap.get(i);if(s)for(let i=r-1;i<=r+1;i++){let r=s.get(i);if(!r)continue;let o=(r.x-t)*(r.x-t)+(r.y-e)*(r.y-e);othis.precisionToleranceSq&&(n=void 0),void 0===n){let i=this.xymap.get(s);i||(i=new Map,this.xymap.set(s,i)),n=this.vertexConstructor?new this.vertexConstructor(t,e):new(o().Point)(t,e),i.set(r,n),n.id=this.pts.length,this.pts.push(n),this.quadTreeVerts&&this.quadTreeVerts.addItem(n)}if(void 0!==i){if("number"==typeof i)-1===n.dbIds.indexOf(i)&&n.dbIds.push(i);else if(i)for(let t=0;t{"use strict";i.r(e),i.d(e,{QuadTree:()=>l});var n=i(2601),s=i(2554);let r;const o={x:0,y:0};class l{constructor(t,e,i,n,s,o){this.items=[],this.children=null,this.itemCount=0,this.extraDistance=s,this.minx=t,this.miny=e,this.maxx=i,this.maxy=n,this.itemHandler=o,r=Autodesk.Viewing.Private.logger}addItem(t){if(this.itemCount++,this.children){let e=0,i=null;for(let n=0;n<4;n++)this.children[n].intersectsItem(t)&&(i=this.children[n],e++);1===e?i.addItem(t):0!==e&&this.items.push(t)}else this.items.push(t),this.items.length>16&&this.subdivide();return this.itemCount}deleteItem(t){if(!this.intersectsItem(t))return 0;if(this.items){let e=this.items.indexOf(t);if(e>=0)return this.items.splice(e,1),this.itemCount--,1}if(this.children){let e=0,i=0;for(let n=0;n<4;n++)e+=this.children[n].deleteItem(t),i+=this.children[n].itemCount;return 1===e?(this.itemCount--,1):(r.warn("Did not find item to delete. Something is wrong.",e),0)}return 0}intersectsBox(t,e,i,n){let r=this.extraDistance;return(0,s.xBoxBox)(t,e,i,n,this.minx-r,this.miny-r,this.maxx+r,this.maxy+r)}intersectsItem(t){return this.itemHandler?this.itemHandler.intersectsBox(t,this.minx-this.extraDistance,this.miny-this.extraDistance,this.maxx+this.extraDistance,this.maxy+this.extraDistance):t.v1?(0,n.xLineBox)(t.v1.x,t.v1.y,t.v2.x,t.v2.y,this.minx-this.extraDistance,this.miny-this.extraDistance,this.maxx+this.extraDistance,this.maxy+this.extraDistance):this.intersectsBox(t.x,t.y,t.x,t.y)}findSplitPoint(){let t=[],e=[];if(this.itemHandler)for(let i=0;it-e)),e.sort(((t,e)=>t-e));let i=t[0|(t.length+1)/2]-this.extraDistance-1e-20,n=e[0|(e.length+1)/2]-this.extraDistance-1e-20;return i<=this.minx||i>=this.maxx||n<=this.miny||n>=this.maxy?null:{midx:i,midy:n}}subdivide(){if(this.children)return void r.error("Attempt to subdivide already split node");if(!this.items.length)return void r.error("Attempt to subdivide empty node");let t=this.minx,e=this.miny,i=this.maxx,n=this.maxy,s=this.findSplitPoint();if(!s)return;let{midx:o,midy:h}=s;this.children=new Array(4),this.children[0]=new l(t,e,o,h,this.extraDistance,this.itemHandler),this.children[1]=new l(o,e,i,h,this.extraDistance,this.itemHandler),this.children[2]=new l(o,h,i,n,this.extraDistance,this.itemHandler),this.children[3]=new l(t,h,o,n,this.extraDistance,this.itemHandler);let a=[];for(let t=0,e=this.items.length;t=i,o=t.v2.x,l=t.v2.y,h=l>=i;r!=h&&(l-i)*(n-o)>=(o-e)*(s-l)==h&&(this.pipResult=!this.pipResult)}pointInPolygon(t,e){return this.pipResult=!1,this.enumInBox(-1/0,e,1/0,e,(i=>{this.pointInPolygonRec(i,t,e)})),this.pipResult}}},2554:(t,e,i)=>{"use strict";function n(t,e,i,n,s,r,o,l){return t<=o&&e<=l&&i>=s&&n>=r}i.r(e),i.d(e,{xBoxBox:()=>n})},3965:(t,e,i)=>{"use strict";i.r(e),i.d(e,{xBoxPlane:()=>s});var n=new THREE.Vector3;function s(t,e){n.set(e.min.x,e.min.y,e.min.z);var i=t.distanceToPoint(n),s=Math.sign(i);n.set(e.min.x,e.min.y,e.max.z);var r=t.distanceToPoint(n);return Math.sign(r)!==s||(n.set(e.min.x,e.max.y,e.min.z),r=t.distanceToPoint(n),Math.sign(r)!==s||(n.set(e.min.x,e.max.y,e.max.z),r=t.distanceToPoint(n),Math.sign(r)!==s||(n.set(e.max.x,e.min.y,e.min.z),r=t.distanceToPoint(n),Math.sign(r)!==s||(n.set(e.max.x,e.min.y,e.max.z),r=t.distanceToPoint(n),Math.sign(r)!==s||(n.set(e.max.x,e.max.y,e.min.z),r=t.distanceToPoint(n),Math.sign(r)!==s||(n.set(e.max.x,e.max.y,e.max.z),r=t.distanceToPoint(n),Math.sign(r)!==s))))))}},2601:(t,e,i)=>{"use strict";i.r(e),i.d(e,{xLineBox:()=>a});const n=0,s=1,r=2,o=4,l=8;function h(t,e,i,h,a,p){let u;return u=n,ta&&(u|=r),ep&&(u|=l),u}function a(t,e,i,n,a,p,u,d){let c=h(t,e,a,p,u,d),f=h(i,n,a,p,u,d),y=!1;for(;;){if(!(c|f)){y=!0;break}if(c&f)break;{let y,x,g=c||f;g&l?(y=t+(i-t)*(d-e)/(n-e),x=d):g&o?(y=t+(i-t)*(p-e)/(n-e),x=p):g&r?(x=e+(n-e)*(u-t)/(i-t),y=u):g&s&&(x=e+(n-e)*(a-t)/(i-t),y=a),g===c?c=h(t=y,e=x,a,p,u,d):f=h(i=y,n=x,a,p,u,d)}}return y}},1272:(t,e,i)=>{"use strict";function n(t){return Math.abs(t)}i.r(e),i.d(e,{ONE_INTERSECTION:()=>r,OVERLAP:()=>o,pointOnLine:()=>l,segmentsIntersect:()=>h});const s=i(5229).TOL,r=4,o=5;function l(t,e,i,n,r,o){if(i.lengthi.length+r))return!1;let a=i.v1.x+h*i.dx,p=i.v1.y+h*i.dy,u=(a-t)*(a-t)+(p-e)*(p-e);return o&&(o.x=a,o.y=p,o.d=Math.sqrt(u),o.u=h),ut.length+i)return null;let c=p/h*e.length;if(c<-i||c>e.length+i)return null;let f=t.v1.x+u*t.dx,y=t.v1.y+u*t.dy;return{status:r,e1:[f,y],e2:[f,y]}}},6353:(t,e,i)=>{"use strict";i.r(e),i.d(e,{convertToPlaneCoords:()=>p,makePlaneBasis:()=>a,xMeshPlane:()=>h});var n=i(5229),s=i(908);const r=Autodesk.Viewing.Private.VertexEnumerator;var o=new THREE.Matrix4,l=new THREE.Plane;function h(t,e,i){let{geometry:n,matrixWorld:h,fragId:a}=e;if(!n)return;let p=i.length;o.copy(h).invert(),l.copy(t).applyMatrix4(o),r.enumMeshTriangles(n,(function(t,e,n,r,o,h){(0,s.xTrianglePlane)(l,t,e,n,r,o,h,i,a)}));for(let t=p,e=i.length;t{"use strict";i.r(e),i.d(e,{xPlaneSegment:()=>r});var n=i(5229);let s=new THREE.Vector3;function r(t,e,i,r,o){let l=s.subVectors(i,e),h=t.normal.dot(l);if((0,n.isZero)(h))return r.copy(e),o.copy(i),2;h=1/h;let a=-(e.dot(t.normal)*h+t.constant*h);if(a<-n.TOL||a>1+n.TOL)return 0;let p=l.multiplyScalar(a).add(e);return r.copy(p),1}},908:(t,e,i)=>{"use strict";i.r(e),i.d(e,{xTrianglePlane:()=>a});var n=i(5229),s=i(8189);const r=Autodesk.Viewing.Private.logger;function o(t,e,i,n,s,r,o){this.v1=t.clone(),this.v2=e.clone()}let l=new THREE.Vector3,h=new THREE.Vector3;function a(t,e,i,a,p,u,d,c,f){let y=t.distanceToPoint(e),x=t.distanceToPoint(i),g=t.distanceToPoint(a);if(y<-n.TOL&&x<-n.TOL&&g<-n.TOL)return null;if(y>n.TOL&&x>n.TOL&&g>n.TOL)return null;let P,m,v,C,_,I,E=Math.sign(y),T=Math.sign(x),b=Math.sign(g);if(0===E&&0===T&&0===b)return null;if(E!==T){let n=(0,s.xPlaneSegment)(t,e,i,l,h);if(2===n)return void c.push(new o(e,i,p,p,u,u,f));1===n?(v=p,C=u,P=l.clone()):r.warn("Unexpected zero intersections where at least one was expected")}if(T!==b){let e=(0,s.xPlaneSegment)(t,i,a,l,h);if(2===e)return void c.push(new o(i,a,u,u,d,d,f));1===e?P?l.distanceTo(P)>n.TOL&&(_=u,I=d,m=l.clone()):(v=u,C=d,P=l.clone()):r.warn("Unexpected zero intersections where at least one was expected")}if(b!==E){let i=(0,s.xPlaneSegment)(t,a,e,l,h);if(2===i)return void c.push(new o(a,e,d,d,p,p,f));1===i?P?l.distanceTo(P)>n.TOL&&(_=d,I=p,m=l.clone()):r.warn("Unexpected single intersection point"):r.warn("Unexpected zero intersections where at least one was expected")}P&&m&&c.push(new o(P,m,v,C,_,I,f))}},3095:t=>{"use strict";t.exports={version:"1.5.0"}}},e={};function i(n){var s=e[n];if(void 0!==s)return s.exports;var r=e[n]={exports:{}};return t[n](r,r.exports,i),r.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n=i(6082);Autodesk.Extensions.CompGeom=n})(); +//# sourceMappingURL=CompGeom.min.js.map \ No newline at end of file diff --git a/public/autodesk/extensions/DataVisualization/DataVisualization.min.js b/public/autodesk/extensions/DataVisualization/DataVisualization.min.js new file mode 100644 index 0000000..c7361e7 --- /dev/null +++ b/public/autodesk/extensions/DataVisualization/DataVisualization.min.js @@ -0,0 +1,45 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var t={5354:t=>{t.exports={MOUSE_HOVERING:"DATAVIZ_OBJECT_HOVERING",MOUSE_CLICK:"DATAVIZ_OBJECT_CLICK",MOUSE_CLICK_OUT:"DATAVIZ_CLICK_OUT"}},1048:(t,e,i)=>{const n=i(1897),s=65535;t.exports={SpriteMeshBuilder:class{constructor(t){this.meshCallback=t,this.dbIds=[],this.reset()}addPoint(t,e){this.vcount+1>s&&(this.flushBuffer(),this.reset());let i=this.vcount;if(this.ib[i]=i,this.vb[3*i]=t.position.x,this.vb[3*i+1]=t.position.y,this.vb[3*i+2]=t.position.z,this.idb[3*i]=255&t.dbId,this.idb[3*i+1]=t.dbId>>8&255,this.idb[3*i+2]=t.dbId>>16&255,this.colorb[3*i]=255*t.color.r,this.colorb[3*i+1]=255*t.color.g,this.colorb[3*i+2]=255*t.color.b,e){let n=e.spriteUV(t.style.url);n&&(this.uv[4*i]=n.x,this.uv[4*i+1]=n.y,this.uv[4*i+2]=n.w,this.uv[4*i+3]=n.h)}this.scale[i]=1,this.dbIds.push(t.dbId),this.vcount++}reset(){this.vcount=0,this.ib=new Uint16Array(s),this.idb=new Uint8Array(196605),this.vb=new Float32Array(196605),this.colorb=new Uint8Array(196605),this.scale=new Float32Array(s),this.uv=new Float32Array(262140)}flushBuffer(){let t=new n.BufferGeometry,e=new n.BufferAttribute(new Uint8Array(this.idb.slice(0,3*this.vcount)),3);e.bytesPerItem=1,e.normalized=!0;let i=new n.BufferAttribute(new Float32Array(this.vb.slice(0,3*this.vcount)),3);i.bytesPerItem=4;let s=new n.BufferAttribute(new Uint8Array(this.colorb.slice(0,3*this.vcount)),3);s.bytesPerItem=1,s.normalized=!0;let r=new n.BufferAttribute(new Uint16Array(this.ib.slice(0,this.vcount)),1),o=new n.BufferAttribute(new Float32Array(this.uv.slice(0,4*this.vcount)),4),a=new n.BufferAttribute(new Float32Array(this.scale.slice(0,this.vcount)),1);t.setAttribute("id",e),t.setIndex(r),t.setAttribute("position",i),t.setAttribute("color",s),t.setAttribute("uvp",o),t.setAttribute("pointScale",a),t.isPoints=!0,t.dbIds=this.dbIds.slice(0),this.dbIds.length=0,this.meshCallback&&this.meshCallback(t),this.vcount=0}}}},673:t=>{class e{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t;this.id=t,this._children=[],this.isGroup=!0,this.name=e}get children(){return this._children}addChild(t){this.children.push(t)}update(t){this.children.forEach((e=>e.update(t)))}getLeafsById(t,e){e=e||[];for(let i=0;i3&&void 0!==arguments[3]?arguments[3]:t;"number"==typeof e&&(e=[e]),this.dbIds=e,this.shadingPoints=i||[],this.isLeaf=!0,this.fragIds=[],this.id=t,this.name=n,this.bounds=new THREE.Box3}addPoint(t){this.shadingPoints.push(t)}update(t){const e=t.getData().instanceTree,i=new Set(this.fragIds),n=new THREE.Box3,s=t.getFragmentList();this.dbIds.forEach((t=>{e.enumNodeFragments(t,(t=>{i.has(t)||(this.fragIds.push(t),s.getWorldBounds(t,n),this.bounds.union(n))}),true)}))}},SurfaceShadingPoint:class{constructor(t,e,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};this.id=t,this.position=e,this.types=i,this.name=n,this.contextData=s,this.dbId=null}positionFromDBId(t,e){const i=t.getData().instanceTree,n=new THREE.Box3,s=new THREE.Box3,r=t.getFragmentList();this.dbId=e,i.enumNodeFragments(e,(t=>{r.getWorldBounds(t,s),n.union(s)}),!0),this.position=n.getCenter(new THREE.Vector3)||this.position}},filterShadingPointsByType:function(t,e){return(t=t||[]).filter((t=>t.types&&t.types.includes(e)))}}},1801:function(t,e,i){var n,s,r;r=function(){var t,e={defaultRadius:40,defaultRenderer:"canvas2d",defaultGradient:{.25:"rgb(0,0,255)",.55:"rgb(0,255,0)",.85:"yellow",1:"rgb(255,0,0)"},defaultMaxOpacity:1,defaultMinOpacity:0,defaultBlur:.85,defaultXField:"x",defaultYField:"y",defaultValueField:"value",plugins:{}},i=function(){var t=function(t){this._coordinator={},this._data=[],this._radi=[],this._min=10,this._max=1,this._xField=t.xField||t.defaultXField,this._yField=t.yField||t.defaultYField,this._valueField=t.valueField||t.defaultValueField,t.radius&&(this._cfgRadius=t.radius)},i=e.defaultRadius;return t.prototype={_organiseData:function(t,e){var n=t[this._xField],s=t[this._yField],r=this._radi,o=this._data,a=this._max,h=this._min,l=t[this._valueField]||1,d=t.radius||this._cfgRadius||i;o[n]||(o[n]=[],r[n]=[]),o[n][s]?o[n][s]+=l:(o[n][s]=l,r[n][s]=d);var c=o[n][s];return c>a?(e?this.setDataMax(c):this._max=c,!1):c0)for(var t=arguments[0],e=t.length;e--;)this.addData.call(this,t[e]);else{var i=this._organiseData(arguments[0],!0);i&&(0===this._data.length&&(this._min=this._max=i.value),this._coordinator.emit("renderpartial",{min:this._min,max:this._max,data:[i]}))}return this},setData:function(t){var e=t.data,i=e.length;this._data=[],this._radi=[];for(var n=0;n0&&(this._drawAlpha(t),this._colorize())},renderAll:function(t){this._clear(),t.data.length>0&&(this._drawAlpha(function(t){for(var e=[],i=t.min,n=t.max,s=t.radi,r=(t=t.data,Object.keys(t)),o=r.length;o--;)for(var a=r[o],h=Object.keys(t[a]),l=h.length;l--;){var d=h[l],c=t[a][d],u=s[a][d];e.push({x:a,y:d,value:c,radius:u})}return{min:i,max:n,data:e}}(t)),this._colorize())},_updateGradient:function(e){this._palette=t(e)},updateConfig:function(t){t.gradient&&this._updateGradient(t),this._setStyles(t)},setDimensions:function(t,e){this._width=t,this._height=e,this.canvas.width=this.shadowCanvas.width=t,this.canvas.height=this.shadowCanvas.height=e},_clear:function(){this.shadowCtx.clearRect(0,0,this._width,this._height),this.ctx.clearRect(0,0,this._width,this._height)},_setStyles:function(t){this._blur=0==t.blur?0:t.blur||t.defaultBlur,t.backgroundColor&&(this.canvas.style.backgroundColor=t.backgroundColor),this._width=this.canvas.width=this.shadowCanvas.width=t.width||this._width,this._height=this.canvas.height=this.shadowCanvas.height=t.height||this._height,this._opacity=255*(t.opacity||0),this._maxOpacity=255*(t.maxOpacity||t.defaultMaxOpacity),this._minOpacity=255*(t.minOpacity||t.defaultMinOpacity),this._useGradientOpacity=!!t.useGradientOpacity},_drawAlpha:function(t){for(var i=this._min=t.min,n=this._max=t.max,s=(t=t.data||[]).length,r=1-this._blur;s--;){var o,a=t[s],h=a.x,l=a.y,d=a.radius,c=Math.min(a.value,n),u=h-d,p=l-d,f=this.shadowCtx;this._templates[d]?o=this._templates[d]:this._templates[d]=o=e(d,r);var g=(c-i)/(n-i);f.globalAlpha=g<.01?.01:g,f.drawImage(o,u,p),uthis._renderBoundaries[2]&&(this._renderBoundaries[2]=u+2*d),p+2*d>this._renderBoundaries[3]&&(this._renderBoundaries[3]=p+2*d)}},_colorize:function(){var t=this._renderBoundaries[0],e=this._renderBoundaries[1],i=this._renderBoundaries[2]-t,n=this._renderBoundaries[3]-e,s=this._width,r=this._height,o=this._opacity,a=this._maxOpacity,h=this._minOpacity,l=this._useGradientOpacity;t<0&&(t=0),e<0&&(e=0),t+i>s&&(i=s-t),e+n>r&&(n=r-e);for(var d=this.shadowCtx.getImageData(t,e,i,n),c=d.data,u=c.length,p=this._palette,f=3;f0?o:v{ +/*! + * + * Copyright 2009-2017 Kris Kowal under the terms of the MIT + * license found at https://github.com/kriskowal/q/blob/v1/LICENSE + * + * With parts by Tyler Close + * Copyright 2007-2009 Tyler Close under the terms of the MIT X license found + * at http://www.opensource.org/licenses/mit-license.html + * Forked at ref_send.js version: 2009-05-11 + * + * With parts by Mark Miller + * Copyright (C) 2011 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +!function(e){"use strict";"function"==typeof bootstrap?bootstrap("promise",e):t.exports=e()}((function(){"use strict";var t=!1;try{throw new Error}catch(e){t=!!e.stack}var e,i=x(),n=function(){},s=function(){var t={task:void 0,next:null},e=t,i=!1,n=void 0,r=!1,o=[];function a(){for(var e,n;t.next;)e=(t=t.next).task,t.task=void 0,(n=t.domain)&&(t.domain=void 0,n.enter()),h(e,n);for(;o.length;)h(e=o.pop());i=!1}function h(t,e){try{t()}catch(t){if(r)throw e&&e.exit(),setTimeout(a,0),e&&e.enter(),t;setTimeout((function(){throw t}),0)}e&&e.exit()}if(s=function(t){e=e.next={task:t,domain:r&&process.domain,next:null},i||(i=!0,n())},"object"==typeof process&&"[object process]"===process.toString()&&process.nextTick)r=!0,n=function(){process.nextTick(a)};else if("function"==typeof setImmediate)n="undefined"!=typeof window?setImmediate.bind(window,a):function(){setImmediate(a)};else if("undefined"!=typeof MessageChannel){var l=new MessageChannel;l.port1.onmessage=function(){n=d,l.port1.onmessage=a,a()};var d=function(){l.port2.postMessage(0)};n=function(){setTimeout(a,0),d()}}else n=function(){setTimeout(a,0)};return s.runAfter=function(t){o.push(t),i||(i=!0,n())},s}(),r=Function.call;function o(t){return function(){return r.apply(t,arguments)}}var a,h=o(Array.prototype.slice),l=o(Array.prototype.reduce||function(t,e){var i=0,n=this.length;if(1===arguments.length)for(;;){if(i in this){e=this[i++];break}if(++i>=n)throw new TypeError}for(;is.stackCounter)&&(p(e,"__minimumStackCounter__",{value:s.stackCounter,configurable:!0}),n.unshift(s.stack));n.unshift(e.stack);var r=function(t){for(var e=t.split("\n"),i=[],n=0;n=i&&r<=X}function x(){if(t)try{throw new Error}catch(t){var i=t.stack.split("\n"),n=w(i[0].indexOf("@")>0?i[1]:i[2]);if(!n)return;return e=n[0],n[1]}}function b(t){return t instanceof M?t:D(t)?function(t){var e=T();return b.nextTick((function(){try{t.then(e.resolve,e.reject,e.notify)}catch(t){e.reject(t)}})),e.promise}(t):L(t)}b.resolve=b,b.nextTick=s,b.longStackSupport=!1;var E=1;function T(){var e,i=[],n=[],s=u(T.prototype),r=u(M.prototype);if(r.promiseDispatch=function(t,s,r){var o=h(arguments);i?(i.push(o),"when"===s&&r[1]&&n.push(r[1])):b.nextTick((function(){e.promiseDispatch.apply(e,o)}))},r.valueOf=function(){if(i)return r;var t=P(e);return A(t)&&(e=t),t},r.inspect=function(){return e?e.inspect():{state:"pending"}},b.longStackSupport&&t)try{throw new Error}catch(t){r.stack=t.stack.substring(t.stack.indexOf("\n")+1),r.stackCounter=E++}function o(s){e=s,b.longStackSupport&&t&&(r.source=s),l(i,(function(t,e){b.nextTick((function(){s.promiseDispatch.apply(s,e)}))}),void 0),i=void 0,n=void 0}return s.promise=r,s.resolve=function(t){e||o(b(t))},s.fulfill=function(t){e||o(L(t))},s.reject=function(t){e||o(F(t))},s.notify=function(t){e||l(n,(function(e,i){b.nextTick((function(){i(t)}))}),void 0)},s}function R(t){if("function"!=typeof t)throw new TypeError("resolver must be a function.");var e=T();try{t(e.resolve,e.reject,e.notify)}catch(t){e.reject(t)}return e.promise}function S(t){return R((function(e,i){for(var n=0,s=t.length;n2?t.resolve(h(arguments,1)):t.resolve(i)}},b.Promise=R,b.promise=R,R.race=S,R.all=W,R.reject=F,R.resolve=b,b.passByCopy=function(t){return t},M.prototype.passByCopy=function(){return this},b.join=function(t,e){return b(t).join(e)},M.prototype.join=function(t){return b([this,t]).spread((function(t,e){if(t===e)return t;throw new Error("Q can't join: not the same: "+t+" "+e)}))},b.race=S,M.prototype.race=function(){return this.then(b.race)},b.makePromise=M,M.prototype.toString=function(){return"[object Promise]"},M.prototype.then=function(t,e,i){var n=this,s=T(),r=!1;return b.nextTick((function(){n.promiseDispatch((function(e){r||(r=!0,s.resolve(function(e){try{return"function"==typeof t?t(e):e}catch(t){return F(t)}}(e)))}),"when",[function(t){r||(r=!0,s.resolve(function(t){if("function"==typeof e){m(t,n);try{return e(t)}catch(t){return F(t)}}return F(t)}(t)))}])})),n.promiseDispatch(void 0,"when",[void 0,function(t){var e,n=!1;try{e=function(t){return"function"==typeof i?i(t):t}(t)}catch(t){if(n=!0,!b.onerror)throw t;b.onerror(t)}n||s.notify(e)}]),s.promise},b.tap=function(t,e){return b(t).tap(e)},M.prototype.tap=function(t){return t=b(t),this.then((function(e){return t.fcall(e).thenResolve(e)}))},b.when=C,M.prototype.thenResolve=function(t){return this.then((function(){return t}))},b.thenResolve=function(t,e){return b(t).thenResolve(e)},M.prototype.thenReject=function(t){return this.then((function(){throw t}))},b.thenReject=function(t,e){return b(t).thenReject(e)},b.nearer=P,b.isPromise=A,b.isPromiseAlike=D,b.isPending=function(t){return A(t)&&"pending"===t.inspect().state},M.prototype.isPending=function(){return"pending"===this.inspect().state},b.isFulfilled=function(t){return!A(t)||"fulfilled"===t.inspect().state},M.prototype.isFulfilled=function(){return"fulfilled"===this.inspect().state},b.isRejected=function(t){return A(t)&&"rejected"===t.inspect().state},M.prototype.isRejected=function(){return"rejected"===this.inspect().state};var I,O,k,H=[],V=[],B=[],j=!0;function U(){H.length=0,V.length=0,j||(j=!0)}function F(t){var e=M({when:function(e){return e&&function(t){if(j){var e=d(V,t);-1!==e&&("object"==typeof process&&"function"==typeof process.emit&&b.nextTick.runAfter((function(){var i=d(B,t);-1!==i&&(process.emit("rejectionHandled",H[e],t),B.splice(i,1))})),V.splice(e,1),H.splice(e,1))}}(this),e?e(t):this}},(function(){return this}),(function(){return{state:"rejected",reason:t}}));return function(t,e){j&&("object"==typeof process&&"function"==typeof process.emit&&b.nextTick.runAfter((function(){-1!==d(V,t)&&(process.emit("unhandledRejection",e,t),B.push(t))})),V.push(t),e&&void 0!==e.stack?H.push(e.stack):H.push("(no stack) "+e))}(e,t),e}function L(t){return M({when:function(){return t},get:function(e){return t[e]},set:function(e,i){t[e]=i},delete:function(e){delete t[e]},post:function(e,i){return null==e?t.apply(void 0,i):t[e].apply(t,i)},apply:function(e,i){return t.apply(e,i)},keys:function(){return g(t)}},void 0,(function(){return{state:"fulfilled",value:t}}))}function N(t,e,i){return b(t).spread(e,i)}function z(t,e,i){return b(t).dispatch(e,i)}function W(t){return C(t,(function(t){var e=0,i=T();return l(t,(function(n,s,r){var o;A(s)&&"fulfilled"===(o=s.inspect()).state?t[r]=o.value:(++e,C(s,(function(n){t[r]=n,0==--e&&i.resolve(t)}),i.reject,(function(t){i.notify({index:r,value:t})})))}),void 0),0===e&&i.resolve(t),i.promise}))}function G(t){if(0===t.length)return b.resolve();var e=b.defer(),i=0;return l(t,(function(n,s,r){var o=t[r];i++,C(o,(function(t){e.resolve(t)}),(function(t){if(0===--i){var n=t||new Error(""+t);n.message="Q can't get fulfillment value from any promise, all promises were rejected. Last error message: "+n.message,e.reject(n)}}),(function(t){e.notify({index:r,value:t})}))}),void 0),e.promise}function $(t){return C(t,(function(t){return t=c(t,b),C(W(c(t,(function(t){return C(t,n,n)}))),(function(){return t}))}))}b.resetUnhandledRejections=U,b.getUnhandledReasons=function(){return H.slice()},b.stopUnhandledRejectionTracking=function(){U(),j=!1},U(),b.reject=F,b.fulfill=L,b.master=function(t){return M({isDef:function(){}},(function(e,i){return z(t,e,i)}),(function(){return b(t).inspect()}))},b.spread=N,M.prototype.spread=function(t,e){return this.all().then((function(e){return t.apply(void 0,e)}),e)},b.async=function(t){return function(){function e(t,e){var r;if("undefined"==typeof StopIteration){try{r=i[t](e)}catch(t){return F(t)}return r.done?b(r.value):C(r.value,n,s)}try{r=i[t](e)}catch(t){return function(t){return"[object StopIteration]"===v(t)||t instanceof a}(t)?b(t.value):F(t)}return C(r,n,s)}var i=t.apply(this,arguments),n=e.bind(e,"next"),s=e.bind(e,"throw");return n()}},b.spawn=function(t){b.done(b.async(t)())},b.return=function(t){throw new a(t)},b.promised=function(t){return function(){return N([this,W(arguments)],(function(e,i){return t.apply(e,i)}))}},b.dispatch=z,M.prototype.dispatch=function(t,e){var i=this,n=T();return b.nextTick((function(){i.promiseDispatch(n.resolve,t,e)})),n.promise},b.get=function(t,e){return b(t).dispatch("get",[e])},M.prototype.get=function(t){return this.dispatch("get",[t])},b.set=function(t,e,i){return b(t).dispatch("set",[e,i])},M.prototype.set=function(t,e){return this.dispatch("set",[t,e])},b.del=b.delete=function(t,e){return b(t).dispatch("delete",[e])},M.prototype.del=M.prototype.delete=function(t){return this.dispatch("delete",[t])},b.mapply=b.post=function(t,e,i){return b(t).dispatch("post",[e,i])},M.prototype.mapply=M.prototype.post=function(t,e){return this.dispatch("post",[t,e])},b.send=b.mcall=b.invoke=function(t,e){return b(t).dispatch("post",[e,h(arguments,2)])},M.prototype.send=M.prototype.mcall=M.prototype.invoke=function(t){return this.dispatch("post",[t,h(arguments,1)])},b.fapply=function(t,e){return b(t).dispatch("apply",[void 0,e])},M.prototype.fapply=function(t){return this.dispatch("apply",[void 0,t])},b.try=b.fcall=function(t){return b(t).dispatch("apply",[void 0,h(arguments,1)])},M.prototype.fcall=function(){return this.dispatch("apply",[void 0,h(arguments)])},b.fbind=function(t){var e=b(t),i=h(arguments,1);return function(){return e.dispatch("apply",[this,i.concat(h(arguments))])}},M.prototype.fbind=function(){var t=this,e=h(arguments);return function(){return t.dispatch("apply",[this,e.concat(h(arguments))])}},b.keys=function(t){return b(t).dispatch("keys",[])},M.prototype.keys=function(){return this.dispatch("keys",[])},b.all=W,M.prototype.all=function(){return W(this)},b.any=G,M.prototype.any=function(){return G(this)},b.allResolved=(I=$,O="allResolved",k="allSettled",function(){return"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(O+" is deprecated, use "+k+" instead.",new Error("").stack),I.apply(I,arguments)}),M.prototype.allResolved=function(){return $(this)},b.allSettled=function(t){return b(t).allSettled()},M.prototype.allSettled=function(){return this.then((function(t){return W(c(t,(function(t){function e(){return t.inspect()}return(t=b(t)).then(e,e)})))}))},b.fail=b.catch=function(t,e){return b(t).then(void 0,e)},M.prototype.fail=M.prototype.catch=function(t){return this.then(void 0,t)},b.progress=function(t,e){return b(t).then(void 0,void 0,e)},M.prototype.progress=function(t){return this.then(void 0,void 0,t)},b.fin=b.finally=function(t,e){return b(t).finally(e)},M.prototype.fin=M.prototype.finally=function(t){if(!t||"function"!=typeof t.apply)throw new Error("Q can't apply finally callback");return t=b(t),this.then((function(e){return t.fcall().then((function(){return e}))}),(function(e){return t.fcall().then((function(){throw e}))}))},b.done=function(t,e,i,n){return b(t).done(e,i,n)},M.prototype.done=function(t,e,i){var n=function(t){b.nextTick((function(){if(m(t,s),!b.onerror)throw t;b.onerror(t)}))},s=t||e||i?this.then(t,e,i):this;"object"==typeof process&&process&&process.domain&&(n=process.domain.bind(n)),s.then(void 0,n)},b.timeout=function(t,e,i){return b(t).timeout(e,i)},M.prototype.timeout=function(t,e){var i=T(),n=setTimeout((function(){e&&"string"!=typeof e||((e=new Error(e||"Timed out after "+t+" ms")).code="ETIMEDOUT"),i.reject(e)}),t);return this.then((function(t){clearTimeout(n),i.resolve(t)}),(function(t){clearTimeout(n),i.reject(t)}),i.notify),i.promise},b.delay=function(t,e){return void 0===e&&(e=t,t=void 0),b(t).delay(e)},M.prototype.delay=function(t){return this.then((function(e){var i=T();return setTimeout((function(){i.resolve(e)}),t),i.promise}))},b.nfapply=function(t,e){return b(t).nfapply(e)},M.prototype.nfapply=function(t){var e=T(),i=h(t);return i.push(e.makeNodeResolver()),this.fapply(i).fail(e.reject),e.promise},b.nfcall=function(t){var e=h(arguments,1);return b(t).nfapply(e)},M.prototype.nfcall=function(){var t=h(arguments),e=T();return t.push(e.makeNodeResolver()),this.fapply(t).fail(e.reject),e.promise},b.nfbind=b.denodeify=function(t){if(void 0===t)throw new Error("Q can't wrap an undefined function");var e=h(arguments,1);return function(){var i=e.concat(h(arguments)),n=T();return i.push(n.makeNodeResolver()),b(t).fapply(i).fail(n.reject),n.promise}},M.prototype.nfbind=M.prototype.denodeify=function(){var t=h(arguments);return t.unshift(this),b.denodeify.apply(void 0,t)},b.nbind=function(t,e){var i=h(arguments,2);return function(){var n=i.concat(h(arguments)),s=T();return n.push(s.makeNodeResolver()),b((function(){return t.apply(e,arguments)})).fapply(n).fail(s.reject),s.promise}},M.prototype.nbind=function(){var t=h(arguments,0);return t.unshift(this),b.nbind.apply(void 0,t)},b.nmapply=b.npost=function(t,e,i){return b(t).npost(e,i)},M.prototype.nmapply=M.prototype.npost=function(t,e){var i=h(e||[]),n=T();return i.push(n.makeNodeResolver()),this.dispatch("post",[t,i]).fail(n.reject),n.promise},b.nsend=b.nmcall=b.ninvoke=function(t,e){var i=h(arguments,2),n=T();return i.push(n.makeNodeResolver()),b(t).dispatch("post",[e,i]).fail(n.reject),n.promise},M.prototype.nsend=M.prototype.nmcall=M.prototype.ninvoke=function(t){var e=h(arguments,1),i=T();return e.push(i.makeNodeResolver()),this.dispatch("post",[t,e]).fail(i.reject),i.promise},b.nodeify=function(t,e){return b(t).nodeify(e)},M.prototype.nodeify=function(t){if(!t)return this;this.then((function(e){b.nextTick((function(){t(null,e)}))}),(function(e){b.nextTick((function(){t(e)}))}))},b.noConflict=function(){throw new Error("Q.noConflict only works when Q is used as a global")};var X=x();return b}))},1897:t=>{"use strict";t.exports=THREE}},e={};function i(n){var s=e[n];if(void 0!==s)return s.exports;var r=e[n]={exports:{}};return t[n].call(r.exports,r,r.exports,i),r.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};(()=>{"use strict";i.r(n);var t={};i.r(t),i.d(t,{CustomViewable:()=>b,SpriteViewable:()=>E,ViewableData:()=>T,ViewableStyle:()=>x,ViewableType:()=>_});var e=i(5354),s=i.n(e),r=Autodesk.Viewing;const o=r.GlobalManagerMixin;class a extends r.ToolInterface{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),this.names=["HyperionTool"],this.options=e,this.setGlobalManager(t.globalManager),this.viewer=t,this.delegate=e.delegate,this.init(),this.hoveringDbId=0,this.selectedDbId=0}init(){let t=this.viewer.impl;this.activate=t=>{this.active=!0},this.deactivate=t=>{this.clearMarkedObject(),this.active=!1},this.handleSingleClick=(i,n)=>{let s=!1;if(0===n){var r;const n=[],o=t.clientToViewport(i.canvasX,i.canvasY),a=t.renderer(),h=null===(r=a.getOverlayIdTarget)||void 0===r?void 0:r.call(a);if(!h)return!1;const l=a.idAtPixel(o.x,o.y,n,[h]);if(this.selectedDbId!=l||0==this.selectedDbId){if(this.selectedDbId){const t={type:e.MOUSE_CLICK_OUT,dbId:this.selectedDbId,originalEvent:i};this.viewer.dispatchEvent(t),t.hasStopped||(this.clearMarkedObject(),this.viewer.impl.invalidate(!1,!1,!0))}this.selectedDbId=l;const n=t.hitTestViewport(o.clone(),!1),r={type:e.MOUSE_CLICK,dbId:l,clickInfo:n,originalEvent:i};this.viewer.dispatchEvent(r),r.hasStopped||(this.markObject([l]),this.viewer.impl.invalidate(!1,!1,!0)),this.selectedDbId&&(s=!0)}}return s},this.handleSingleTap=t=>this.handleSingleClick(t,0),this.handleDoubleClick=(t,e)=>!1,this.handleButtonDown=t=>(this.buttonDown=!0,!1),this.handleButtonUp=t=>(this.buttonDown=!1,!1),this.handleMouseMove=i=>{if(!this.buttonDown){var n,s;const r=t.clientToViewport(i.canvasX,i.canvasY),o=null===(n=(s=t.renderer()).getOverlayIdTarget)||void 0===n?void 0:n.call(s);if(!o)return!1;const a=[],h=t.renderer().idAtPixel(r.x,r.y,a,[o]);if(this.hoveringDbId!=h){const t=0!=h?h:this.hoveringDbId;this.hoveringDbId=h;const n=0!=h;return this.viewer.dispatchEvent({type:e.MOUSE_HOVERING,dbId:t,hovering:n,originalEvent:i}),!0}}},this.markObject=t=>{if(t instanceof Array||(t=[t]),!this.delegate.hasViewables)return;let e=this.delegate.mapDbIdsToGeometries(t),i=new Set(t);e.map((t=>{if(t&&t.attributes.id&&t.attributes.pointScale){let e=t.attributes.pointScale.array,n=t.attributes.uvp.array,s=t.attributes.color.array,r=t.attributes.id.array;for(let t=0;t{if(!this.delegate.hasViewables)return void(this.markedFragments=[]);const t=this.markedFragments||[];this.markedFragments=[],t&&(t.map((t=>{if(t&&t.attributes.pointScale){let e=t.attributes.pointScale.array,i=t.attributes.uvp.array,n=t.attributes.color.array,s=t.attributes.id.array;for(let t=0;t{if(!t||!e||!n)throw new Error("Parameters of 'invalidateViewables' are mandatory");t instanceof Array||(t=[t]);const s=new Set(t),r=new Map;i.viewables.forEach((t=>r.set(t.dbId,t)));let o=!1;const a=e[0].geometry,h=a.attributes.id.array;for(let t=0;t2||l.scale<0){const t=`invalidateViewables: 'scale' of '${l.scale}' out of range [0, 2]`;console.warn(t)}const t=a.attributes.pointScale.array;a.attributes.pointScale.needsUpdate=!0,t[d]=l.scale,o=!0}}o&&this.viewer.impl.invalidate(!1,!1,!0)}}}o.call(a.prototype);var h=i(1048);class l{constructor(t=0,e=0,i=0,n=0,s=!1,r=void 0){this.oversized=!1,this._rot=!1,this._allowRotation=void 0,this._dirty=0,this._width=t,this._height=e,this._x=i,this._y=n,this._data={},this._rot=s,this._allowRotation=r}static Collide(t,e){return t.collide(e)}static Contain(t,e){return t.contain(e)}area(){return this.width*this.height}collide(t){return t.xthis.x&&t.ythis.y}contain(t){return t.x>=this.x&&t.y>=this.y&&t.x+t.width<=this.x+this.width&&t.y+t.height<=this.y+this.height}get width(){return this._width}set width(t){t!==this._width&&(this._width=t,this._dirty++)}get height(){return this._height}set height(t){t!==this._height&&(this._height=t,this._dirty++)}get x(){return this._x}set x(t){t!==this._x&&(this._x=t,this._dirty++)}get y(){return this._y}set y(t){t!==this._y&&(this._y=t,this._dirty++)}get rot(){return this._rot}set rot(t){if(!1!==this._allowRotation&&this._rot!==t){const e=this.width;this.width=this.height,this.height=e,this._rot=t,this._dirty++}}get allowRotation(){return this._allowRotation}set allowRotation(t){this._allowRotation!==t&&(this._allowRotation=t,this._dirty++)}get data(){return this._data}set data(t){null!==t&&t!==this._data&&(this._data=t,"object"==typeof t&&t.hasOwnProperty("allowRotation")&&(this._allowRotation=t.allowRotation),this._dirty++)}get dirty(){return this._dirty>0}setDirty(t=!0){this._dirty=t?this._dirty+1:0}}class d{constructor(){this._dirty=0}get dirty(){return this._dirty>0||this.rects.some((t=>t.dirty))}setDirty(t=!0){if(this._dirty=t?this._dirty+1:0,!t)for(let t of this.rects)t.setDirty&&t.setDirty(!1)}}class c extends d{constructor(t=p,e=p,i=0,n={}){super(),this.maxWidth=t,this.maxHeight=e,this.padding=i,this.freeRects=[],this.rects=[],this.verticalExpand=!1,this.options={smart:!0,pot:!0,square:!0,allowRotation:!1,tag:!1,exclusiveTag:!0,border:0,logic:f.MAX_EDGE},this.options=Object.assign(Object.assign({},this.options),n),this.width=this.options.smart?0:t,this.height=this.options.smart?0:e,this.border=this.options.border?this.options.border:0,this.freeRects.push(new l(this.maxWidth+this.padding-2*this.border,this.maxHeight+this.padding-2*this.border,this.border,this.border)),this.stage=new l(this.width,this.height)}add(...t){let e,i;if(1===t.length){if("object"!=typeof t[0])throw new Error("MacrectsBin.add(): Wrong parameters");i=t[0];let e=i.data&&i.data.tag?i.data.tag:i.tag?i.tag:void 0;if(this.options.tag&&this.options.exclusiveTag&&this.tag!==e)return}else{if(e=t.length>2?t[2]:null,this.options.tag&&this.options.exclusiveTag){if(e&&this.tag!==e.tag)return;if(!e&&this.tag)return}i=new l(t[0],t[1]),i.data=e,i.setDirty(!1)}const n=this.place(i);return n&&this.rects.push(n),n}repack(){let t=[];this.reset(),this.rects.sort(((t,e)=>{const i=Math.max(e.width,e.height)-Math.max(t.width,t.height);return 0===i&&t.hash&&e.hash?t.hash>e.hash?-1:1:i}));for(let e of this.rects)this.place(e)||t.push(e);for(let e of t)this.rects.splice(this.rects.indexOf(e),1);return t.length>0?t:void 0}reset(t=!1,e=!1){t&&(this.data&&delete this.data,this.tag&&delete this.tag,this.rects=[],e&&(this.options={smart:!0,pot:!0,square:!0,allowRotation:!1,tag:!1,border:0})),this.width=this.options.smart?0:this.maxWidth,this.height=this.options.smart?0:this.maxHeight,this.border=this.options.border?this.options.border:0,this.freeRects=[new l(this.maxWidth+this.padding-2*this.border,this.maxHeight+this.padding-2*this.border,this.border,this.border)],this.stage=new l(this.width,this.height),this._dirty=0}clone(){let t=new c(this.maxWidth,this.maxHeight,this.padding,this.options);for(let e of this.rects)t.add(e);return t}place(t){let e,i,n=t.data&&t.data.tag?t.data.tag:t.tag?t.tag:void 0;if(!this.options.tag||!this.options.exclusiveTag||this.tag===n){if(i=t.hasOwnProperty("_allowRotation")&&void 0!==t.allowRotation?t.allowRotation:this.options.allowRotation,e=this.findNode(t.width+this.padding,t.height+this.padding,i),e){this.updateBinSize(e);let i=this.freeRects.length,n=0;for(;nthis.height,t.x=e.x,t.y=e.y,void 0===t.rot&&(t.rot=!1),t.rot=e.rot?!t.rot:t.rot,this._dirty++,t}if(this.verticalExpand){if(this.updateBinSize(new l(t.width+this.padding,t.height+this.padding,this.border,this.height+this.padding-this.border))||this.updateBinSize(new l(t.width+this.padding,t.height+this.padding,this.width+this.padding-this.border,this.border)))return this.place(t)}else if(this.updateBinSize(new l(t.width+this.padding,t.height+this.padding,this.width+this.padding-this.border,this.border))||this.updateBinSize(new l(t.width+this.padding,t.height+this.padding,this.border,this.height+this.padding-this.border)))return this.place(t)}}findNode(t,e,i){let n,s,r,o=Number.MAX_VALUE;for(let a in this.freeRects)s=this.freeRects[a],s.width>=t&&s.height>=e&&(n=this.options.logic===f.MAX_AREA?s.width*s.height-t*e:Math.min(s.width-t,s.height-e),n=e&&s.height>=t&&(n=this.options.logic===f.MAX_AREA?s.width*s.height-e*t:Math.min(s.height-t,s.width-e),nt.x){if(e.y>t.y&&e.yt.y){if(e.x>t.x&&e.xthis.maxWidth+this.padding||i>this.maxHeight+this.padding)&&(this.expandFreeRects(e+this.padding,i+this.padding),this.width=this.stage.width=e,this.height=this.stage.height=i,!0)}expandFreeRects(t,e){this.freeRects.forEach(((i,n)=>{i.x+i.width>=Math.min(this.width+this.padding-this.border,t)&&(i.width=t-i.x-this.border),i.y+i.height>=Math.min(this.height+this.padding-this.border,e)&&(i.height=e-i.y-this.border)}),this),this.freeRects.push(new l(t-this.width-this.padding,e-2*this.border,this.width+this.padding-this.border,this.border)),this.freeRects.push(new l(t-2*this.border,e-this.height-this.padding,this.border,this.height+this.padding-this.border)),this.freeRects=this.freeRects.filter((t=>!(t.width<=0||t.height<=0||t.x2?t[2]:null;const e=new l(this.width,this.height);e.oversized=!0,e.data=this.data,this.rects.push(e)}this.freeRects=[],this.maxWidth=this.width,this.maxHeight=this.height,this.options={smart:!1,pot:!1,square:!1}}add(){}reset(t=!1){}repack(){}clone(){return new u(this.rects[0])}}const p=4096;var f;!function(t){t[t.MAX_AREA=0]="MAX_AREA",t[t.MAX_EDGE=1]="MAX_EDGE"}(f||(f={}));class g{constructor(t=p,e=p,i=0,n={}){this.width=t,this.height=e,this.padding=i,this.options={smart:!0,pot:!0,square:!1,allowRotation:!1,tag:!1,exclusiveTag:!0,border:0,logic:f.MAX_EDGE},this._currentBinIndex=0,this.bins=[],this.options=Object.assign(Object.assign({},this.options),n)}add(...t){if(1===t.length){if("object"!=typeof t[0])throw new Error("MacrectsPacker.add(): Wrong parameters");const e=t[0];if(e.width>this.width||e.height>this.height)this.bins.push(new u(e));else{if(!this.bins.slice(this._currentBinIndex).find((t=>void 0!==t.add(e)))){let t=new c(this.width,this.height,this.padding,this.options),i=e.data&&e.data.tag?e.data.tag:e.tag?e.tag:void 0;this.options.tag&&i&&(t.tag=i),t.add(e),this.bins.push(t)}}return e}{const e=new l(t[0],t[1]);if(t.length>2&&(e.data=t[2]),e.width>this.width||e.height>this.height)this.bins.push(new u(e));else{if(!this.bins.slice(this._currentBinIndex).find((t=>void 0!==t.add(e)))){let t=new c(this.width,this.height,this.padding,this.options);this.options.tag&&e.data.tag&&(t.tag=e.data.tag),t.add(e),this.bins.push(t)}}return e}}addArray(t){if(!this.options.tag||this.options.exclusiveTag)this.sort(t,this.options.logic).forEach((t=>this.add(t)));else{if(0===t.length)return;let e;t.sort(((t,e)=>{const i=t.data&&t.data.tag?t.data.tag:t.tag?t.tag:void 0,n=e.data&&e.data.tag?e.data.tag:e.tag?e.tag:void 0;return void 0===n?-1:void 0===i?1:n>i?-1:1}));let i=0;if(!this.bins.slice(this._currentBinIndex).find(((n,s)=>{let r=n.clone();for(let s=i;sn.add(t))),i=s,this.addArray(t.slice(s)),!0;if(void 0===a)return this.sort(t.slice(s),this.options.logic).forEach((t=>this.add(t))),i=t.length,!0;if(void 0===r.add(o))return this.sort(t.slice(i,s),this.options.logic).forEach((t=>n.add(t))),i=s,!1}return this.sort(t.slice(i),this.options.logic).forEach((t=>n.add(t))),!0}))){const e=t[i],n=new c(this.width,this.height,this.padding,this.options),s=e.data&&e.data.tag?e.data.tag:e.tag?e.tag:void 0;this.options.tag&&this.options.exclusiveTag&&s&&(n.tag=s),this.bins.push(n),n.add(e),i++,this.addArray(t.slice(i))}}}reset(){this.bins=[],this._currentBinIndex=0}repack(t=!0){if(t){let t=[];for(let e of this.bins)if(e.dirty){let i=e.repack();i&&t.push(...i)}return void this.addArray(t)}if(!this.dirty)return;const e=this.rects;this.reset(),this.addArray(e)}next(){return this._currentBinIndex=this.bins.length,this._currentBinIndex}load(t){t.forEach(((t,e)=>{if(t.maxWidth>this.width||t.maxHeight>this.height)this.bins.push(new u(t.width,t.height,{}));else{let i=new c(this.width,this.height,this.padding,t.options);i.freeRects.splice(0),t.freeRects.forEach(((t,e)=>{i.freeRects.push(new l(t.width,t.height,t.x,t.y))})),i.width=t.width,i.height=t.height,t.tag&&(i.tag=t.tag),this.bins[e]=i}}),this)}save(){let t=[];return this.bins.forEach((e=>{let i={width:e.width,height:e.height,maxWidth:e.maxWidth,maxHeight:e.maxHeight,freeRects:[],rects:[],options:e.options};e.tag&&(i=Object.assign(Object.assign({},i),{tag:e.tag})),e.freeRects.forEach((t=>{i.freeRects.push({x:t.x,y:t.y,width:t.width,height:t.height})})),t.push(i)})),t}sort(t,e=f.MAX_EDGE){return t.slice().sort(((t,i)=>{const n=e===f.MAX_EDGE?Math.max(i.width,i.height)-Math.max(t.width,t.height):i.width*i.height-t.width*t.height;return 0===n&&t.hash&&i.hash?t.hash>i.hash?-1:1:n}))}get currentBinIndex(){return this._currentBinIndex}get dirty(){return this.bins.some((t=>t.dirty))}get rects(){let t=[];for(let e of this.bins)t.push(...e.rects);return t}}var v=i(6533),m=i.n(v);const y=Autodesk.Viewing.Private;class w{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1920,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1080,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2;this.width=t,this.height=e,this.padding=i,this.spritesMap={},this.pending=[],this.images=[],this.logger=y.logger,this.packer=new g(this.width,this.height,this.padding,{smart:!0,pot:!1,square:!1,allowRotation:!1,tag:!1,border:0}),this.canvas=document.createElement("canvas"),this.hasContent=!1}addSprite(t){if(null==this.spritesMap[t]){let e=m().defer(),i=new Image;i.crossOrigin="anonymous",i.onload=()=>{this.images.push({url:t,image:i,width:i.width,height:i.height}),e.resolve()},i.onerror=t=>{this.logger.error(t),e.resolve()},i.src=t,this.spritesMap[t]=1,this.pending.push(e.promise)}}get canvasWidth(){return this.canvas.width}get canvasHeight(){return this.canvas.height}async finish(){await m().all(this.pending);let t=this.canvas;this.packer.addArray(this.images),this.images.length=0,this.packer.bins.forEach((e=>{t.width=e.width,t.height=e.height;let i=t.getContext("2d");e.rects.forEach((t=>{t.image&&(i.drawImage(t.image,t.x,t.y),t.image=void 0,this.spritesMap[t.url]=t,t.url=void 0)}))}))}spriteUV(t){let e=this.spritesMap[t];return e?{x:e.x/this.canvasWidth,y:e.y/this.canvasHeight,w:(e.x+e.width)/this.canvasWidth,h:(e.y+e.height)/this.canvasHeight}:{x:0,y:0,w:1,h:1}}}const _={SPRITE:1,GEOMETRY:2};class x{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:_.SPRITE,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new THREE.Color(16777215),i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:new THREE.Color(16777215),s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"",r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:[];this.type=t,this.color=e,this.url=i,this.highlightedColor=n,this.highlightedUrl=s,this.spriteUrls=new Set(r)}get preloadedSprites(){return[...this.spriteUrls.values()]}preloadSprite(t){this.spriteUrls.add(t)}}class b{constructor(t,e,i){this._style=e,this._position=t,this._dbId=i}get style(){return this._style}get position(){return this._position}get dbId(){return this._dbId}}class E extends b{constructor(t,e,i){console.assert(e.type==_.SPRITE),super(t,e,i)}get type(){return _.SPRITE}get color(){return this.style.color}get highlightedColor(){return this.style.highlightedColor}}class T{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._styleMap=new Map,this._viewablesMap=new Map,this._spriteAtlas=new w(t.atlasWidth||1920,t.atlasHeight||1080,2)}get viewables(){return[...this._viewablesMap.values()]}get spriteAtlas(){return this._spriteAtlas}addViewable(t){if(t.type==_.SPRITE){let e=new Set;e.add(t.style.url),t.style.highlightedUrl&&e.add(t.style.highlightedUrl),t.style.preloadedSprites.forEach((t=>e.add(t))),e.forEach((t=>this.spriteAtlas.addSprite(t)))}this._viewablesMap.set(t.dbId,t)}getSpriteUV(t){return this._spriteAtlas.spriteUV(t)}getViewableUV(t,e){let i=this._viewablesMap.get(t).style;return e&&i.highlightedUrl?this._spriteAtlas.spriteUV(i.highlightedUrl):this._spriteAtlas.spriteUV(i.url)}getViewableColor(t,e){let i=this._viewablesMap.get(t).style;return e?i.highlightedColor:i.color}async finish(){await this._spriteAtlas.finish()}}var R=i(673);class S{constructor(t,e,i){this._id=t,this._name=e,this._bounds=i,this._devices=[]}set info(t){this._info=t}get id(){return this._id}get name(){return this._name}get bounds(){return this._bounds}get devices(){return this._devices}get info(){return this._info}addDevice(t){this._devices.push(t)}}class M{addRoomToLevel(t,e){this[t]||(this[t]=[]),this[t].push(e)}getRoomsOnLevel(t,e){const i=this[t]||[];return e?i.filter((t=>t.devices.length>0)):i}}class C extends THREE.ShaderMaterial{constructor(t,e,i,n){let s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:2,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1;if(e.length<2||e.length!=i.length)throw new Error("Heatmap requires at least two colors to work");if(n<0)throw new Error("Heatmap 'confidence' must be a positive number");if(s<0)throw new Error("Heatmap 'powerParameter' must be a positive number");if(r<0||r>1)throw new Error("Heatmap 'alpha' must range between 0.0 and 1.0");const o={uPower:{type:"f",value:s},uAlpha:{type:"f",value:r},uConfidence:{type:"f",value:n},uSensors:{type:"v4v",value:t.map((t=>t))},uStops:{type:"fv1",value:i},uColors:{type:"v3v",value:e}},a=THREE.UniformsUtils.merge([Autodesk.Viewing.Private.ShaderChunks.CutPlanesUniforms,o]),h=e.length,l=t.length;super({uniforms:a,vertexShader:"\n varying vec4 worldCoord;\n\n #if NUM_CUTPLANES > 0\n varying highp vec3 vWorldPosition;\n #endif\n\n void main()\n {\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n worldCoord = modelMatrix * vec4(position, 1.0);\n gl_Position = projectionMatrix * mvPosition;\n #if NUM_CUTPLANES > 0\n vWorldPosition = worldCoord.xyz;\n #endif\n }\n ",fragmentShader:`\n varying vec4 worldCoord;\n uniform float uPower;\n uniform float uAlpha;\n uniform float uConfidence;\n uniform vec4 uSensors [${l}];\n uniform float uStops[${h}];\n uniform vec3 uColors[${h}];\n\n #if NUM_CUTPLANES > 0\n varying highp vec3 vWorldPosition;\n #endif\n\n #include \n\n const float dotSize = 6.0;\n const float h_var1 = 0.4;\n const float h_var2 = 0.25;\n const float two_pi = 2.0 * 3.1415927;\n \n float lmap(float value, float inMin, float inMax, float outMin, float outMax)\n {\n return clamp(outMin + ((outMax - outMin) * (value - inMin)) / (inMax - inMin), outMin, outMax);\n }\n\n // Gradient with multiple colors in non-equal intervals\n vec3 colormap(float x)\n {\n for (int i = 1; i < ${h}; i++) {\n if (x <= uStops[i]) {\n float stopPct = lmap(x, uStops[i-1], uStops[i], 0.0, 1.0);\n return mix(uColors[i-1], uColors[i], stopPct);\n }\n }\n \n // In case 'x' goes beyond upper bound.\n return uColors[${h} - 1];\n }\n\n vec2 get_pix(float angle) {\n float rad = radians(angle);\n float c = cos(rad);\n float s = sin(rad);\n mat2 R = mat2(vec2(c, -s), vec2(s, c));\n return R * gl_FragCoord.xy;\n }\n\n vec3 halftone(float tone, vec3 dotColor, vec3 backgroundColor) {\n vec2 u = get_pix(-45.0) / (dotSize);\n float h = (h_var1 + h_var2 * cos(u.x*two_pi));\n const float e = 0.05;\n float gradient = smoothstep(-e, e, h - tone);\n return mix(dotColor, backgroundColor, gradient);\n }\n\n void main(void) {\n vec3 fragPos = vec3(worldCoord.x, worldCoord.y, worldCoord.z);\n float result = 0.0;\n float sum = 0.0;\n float wsum = 0.000001;\n float minDist = 999999999.0;\n bool found = false; // at exact location of the sensor\n int validSensors = 0;\n\n for (int i=0; i < ${l}; i++) {\n float mydist = distance(fragPos, vec3(uSensors[i][0], uSensors[i][1], uSensors[i][2]));\n if (uSensors[i][3] >= 0.0) {\n if (mydist < 0.00001) {\n result = uSensors[i][3];\n found = true;\n } else {\n float w = (1.0 / (pow(mydist, uPower)));\n sum += (uSensors[i][3] * w);\n wsum += w;\n }\n validSensors += 1;\n if (mydist < minDist) {\n minDist = mydist;\n }\n }\n }\n\n if (validSensors == 0) {\n result = -1.0;\n } else if (!found) {\n result = sum / wsum;\n }\n\n // Defaults without influence from any sensor\n float confidence = 0.0;\n vec3 sensorColor = vec3(0.5, 0.5, 0.5);\n\n if (result >= 0.0) {\n result = clamp(result, 0.0, 1.0);\n confidence = 1.0 - clamp(minDist / uConfidence, 0.0, 1.0);\n sensorColor = colormap(result);\n }\n\n vec3 confidenceColor = halftone(clamp(confidence, 0.3, 0.9), vec3(0.7, 0.7, 0.7), vec3(1.0, 1.0, 1.0));\n gl_FragColor = vec4(mix(confidenceColor, sensorColor, clamp(confidence, 0.0, 1.0)), uAlpha);\n\n\n #if NUM_CUTPLANES > 0\n checkCutPlanes(vWorldPosition);\n #endif\n }\n `,side:THREE.DoubleSide,depthTest:!0,depthWrite:!1}),this.disableEnvMap=!0,this.type="HeatMapMaterial"}update(t,e,i,n){super.update(),isNaN(e)||null===e||(this.uniforms.uConfidence.value=e),isNaN(i)||null===i||(this.uniforms.uPower.value=i),isNaN(n)||null===n||(this.uniforms.uAlpha.value=n),t&&(this.uniforms.uSensors.value=t)}}function P(t){const e=[],i=1/(t-1);for(let n=0;n{t.geometry.dispose(),t.material.dispose(),t=null})),this._meshes=[],this.viewer.impl.invalidate(!1,!1,!0)}cleanUp(){this.removeShading(),this._clearActiveShadingPoints(),this.hatchMaterial&&(this.hatchMaterial.dispose(),delete this.hatchMaterial)}_clearActiveShadingPoints(){this.activeShadingPoints.forEach((t=>t.heatmapMaterial.dispose())),this.activeShadingPoints=[]}_createHatchMaterial(){let t=this.settings.hatchPattern;return new C([new THREE.Vector4(D,D,D,-1)],t.colors,t.stops,60,2,t.alpha)}registerSensorColors(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.7;this.settings[t]={stops:P(e.length),colors:e.map((t=>new THREE.Color(t))).map((t=>new THREE.Vector3(t.r,t.g,t.b))),alpha:i}}getSetting(t){return this.settings[t]?this.settings[t]:this.settings.__defaultSensor__}render(t,e,i,n){let s=n?n.confidence:0;s=isNaN(s)?0:Math.abs(s);let r=2;n&&"number"==typeof n.powerParameter&&(r=n.powerParameter);let o=[];t instanceof Array?t.forEach((t=>this.shadingData.getLeafsById(t,o))):o=this.shadingData.getLeafsById(t);let a=this.model.getInstanceTree();this._clearActiveShadingPoints();let h=this._meshes;const l=this.viewer.impl,d=this.activeShadingPoints;function c(t,e){let i=a.fragList.getGeometry(t);if(!i)return void I.logger.error("Geometry for the fragment is empty, FragId:",t);let n=new THREE.Mesh(i,e),s=new THREE.Matrix4;a.fragList.getWorldMatrix(t,s),n.matrix.copy(s),n.matrixWorldNeedsUpdate=!0,n.matrixAutoUpdate=!1,n.frustumCulled=!1,h.push(n),l.addOverlay(A,n)}l.overlayScenes[A]||l.createOverlayScene(A),this.hatchMaterial||(this.hatchMaterial=this._createHatchMaterial(),l.matman().addMaterial("heatmap_hatchMaterial",this.hatchMaterial,!0));const u=this.getSetting(e);for(let t=0;o&&t0){let o=s;if(n.bounds&&!s){const t=n.bounds.max,e=n.bounds.min;o=t.x-e.x+(t.y-e.y)+(t.z-e.z)}o=o||160;const h=[];a.forEach((t=>{const n=t.position,s=i(t,e),r=new THREE.Vector4(n.x,n.y,n.z,s);h.push(r)})),p=new C(h,u.colors,u.stops,o,r,u.alpha),l.matman().addMaterial("heatmap_Material_"+t,p,!0),d.push({shadingPoints:a,sensorType:e,heatmapMaterial:p})}n.fragIds.forEach((t=>c(t,p))),this._meshes=h}}updateShading(t,e){let i,n,s;e&&(i=e.confidence,n=e.powerParameter,s=e.alpha);for(var r=0;r3&&void 0!==arguments[3]?arguments[3]:{};n=this._handleLegacyOptions(n);const{width:s,height:r,minOpacity:o,maxOpacity:a}=n;this.options=n;let h=document.createElement("canvas");h.width=s,h.height=r,this.config={canvas:h,width:s,height:r,minOpacity:o,maxOpacity:a,radius:20},this.model=e,this.viewer=t,this.shadingData=i;let l=new THREE.Texture(h,THREE.UVMapping);l.minFilter=THREE.LinearFilter,l.flipY=!1,this.material=new THREE.MeshBasicMaterial({map:l,depthTest:!0,depthWrite:!1,transparent:!0,side:THREE.DoubleSide}),this.gradientMap={},this._mesh=null}_handleLegacyOptions(t){if("string"==typeof(t=Object.assign({width:1024,height:1024,slicingEnabled:!0},t)).position){const e={min:0,middle:.5,max:1};t.slicingPosition=e[t.position]}if("string"==typeof t.placePosition){const e={min:0,max:1};t.placementPosition=e[t.placePosition]}function e(t,e){return null==t||"number"!=typeof t?e:t<0?0:t>1?1:t}return delete t.position,delete t.placePosition,t.slicingPosition=e(t.slicingPosition,.5),t.placementPosition=e(t.placementPosition,0),t}_setup(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:200,{model:n,shadingData:s}=this,r=new THREE.Box3,o=n.getInstanceTree(),a=[],h={},l=[],d={};this.gradientMap[e]&&(this.config.gradient=this.gradientMap[e]),this.config.radius=i,t.forEach((t=>s.getLeafsById(t,a)));for(let t=0;tt.types.find((t=>t==e))))||a[t].dbIds.forEach((t=>{if(o.getNodeBox(t,l),l[0]!=1/0){let e=new THREE.Box3(new THREE.Vector3(l[0],l[1],l[2]),new THREE.Vector3(l[3],l[4],l[5]));r.union(e),h[t]=e}}));var c;const u=r.min.x,p=r.min.y,f=r.max.x-u,g=r.max.y-p;let{slicingEnabled:v,width:m,height:y}=this.options;if(f>g?y=m/f*g:m=y/g*f,this.config.canvas.width=m,this.config.canvas.height=y,this.config.width=m,this.config.height=y,this.heatmapInstance)this.heatmapInstance.configure(this.config);else{let t=document.createElement("div");t.width=m,t.height=y,this.config.container=t,this.heatmapInstance=H().create(this.config),t.removeChild(this.config.canvas),delete this.config.container}let w=[],_=[],x=[];const b=Autodesk.Viewing.Extensions.CompGeom,E=this.options.slicingPosition,T=this.options.placementPosition;var S=n.getFragmentList();for(let t=0;t{const i=h[e],{min:n,max:s}=i,r=n.z+(s.z-n.z)*E,a=n.z+(s.z-n.z)*T,l=new THREE.Plane(t,-r);var d=b.makePlaneBasis(l);o.enumNodeFragments(e,(t=>{const e=S.getGeometry(t),i=S.getMaterial(t),n=new THREE.Matrix4;S.getWorldMatrix(t,n),e&&!e.is2d&&!e.isLines&&i.cutplanes&&b.xMeshPlane(l,{geometry:e,matrixWorld:n,fragId:t},M)}),!0);var c=new THREE.Box3;b.convertToPlaneCoords(d,M,c);var v=new b.EdgeSet(M,c,1e-6*c.getSize(new THREE.Vector3).length());v.snapEdges(),v.sanitizeEdges(),v.stitchContours();var m=v.triangulate();if(m&&!m.triangulationFailed){var y=m.toPolygonMesh();let t=w.length/3,e=y.attributes.position.array;for(let t=0,i=e.length;t{let e=h[t];if(!e.isEmpty()){const{min:t,max:i}=e,n=t.z+(i.z-t.z)*T;let s=w.length/3;x.push(s,s+2,s+1,s,s+3,s+2),w.push(t.x,t.y,n,t.x,i.y,n,i.x,i.y,n,i.x,t.y,n),_.push((t.x-u)/f,(t.y-p)/g,(t.x-u)/f,(i.y-p)/g,(i.x-u)/f,(i.y-p)/g,(i.x-u)/f,(t.y-p)/g)}}));for(let t of n){let e={x:Math.round((t.position.x-u)/f*m),y:Math.round((t.position.y-p)/g*y),value:0};d[t.id]={data:e,shadingPoint:t}}}}w=new Float32Array(w),_=new Float32Array(_),x=new Uint16Array(x);let C=new THREE.BufferGeometry,P=new THREE.BufferAttribute(w,3);P.bytesPerItem=4;let A=new THREE.BufferAttribute(_,2);A.bytesPerItem=4;let D=new THREE.BufferAttribute(x,1);C.setIndex(D),C.setAttribute("position",P),C.setAttribute("uv",A),this.geometry=C;let I=this.viewer.impl;I.overlayScenes[V]||I.createOverlayScene(V);let O=new THREE.Mesh(C,this.material);I.addOverlay(V,O),this.totalBounds=r,this.pointDataMap=d,this.currentSensorType=e,this._mesh=O}render(t,e,i,n){let s=200;"number"==typeof n?s=Math.abs(n):"object"==typeof n&&n.confidence&&(s=n.confidence),this.geometry&&(this.geometry.dispose(),this.geometry=null),t=t instanceof Array?t:[t],this._setup(t,e,s),this.updateShading(i)}updateShading(t){const e=[];for(let i in this.pointDataMap){const n=this.pointDataMap[i],s=t(n.shadingPoint,this.currentSensorType,n.data);n.data.value=0===s?1e-4:s,isNaN(n.data.value)||e.push(n.data)}this.heatmapInstance.setData({data:e,min:0,max:1}),this.material.map.needsUpdate=!0,this.viewer.impl.invalidate(!1,!1,!0)}cleanUp(){this.removeShading(),this.geometry&&(this.geometry.dispose(),this.geometry=null),this.material&&(this.material.dispose(),this.material=null)}removeShading(){this._mesh&&(this.viewer.impl.removeOverlay(V,this._mesh),this._mesh.geometry.dispose(),this._mesh.material.dispose(),this._mesh=null),this.viewer.impl.invalidate(!1,!1,!0)}registerSensorColors(t,e){let i={},n=e.length-1;for(let t=0;t>16&255}, ${s>>8&255}, ${255&s})`;var s;this.gradientMap[t]=i}}class j{constructor(t){this.viewer=t,this._textures={},this._colors={},this._excluded=["__defaultMaterial__","__fadeMaterial__","__highlightMaterial__","__dataVizSpriteMaterial__"]}show(){return this.hideTextures(),this.regen(),!0}hide(){return this.showTextures(),this.regen(),!0}regen(){this.viewer.refresh(!0)}hideTextures(){const t=0===Object.keys(this._textures).length,e=new THREE.Color(1,1,1),i=this.viewer.impl.matman()._materials;for(const n in i)if(-1===this._excluded.indexOf(n)){const s=i[n];t&&(this._textures[n]=s.map,this._colors[n]=s.color),s.map=null,s.color=e,s.needsUpdate=!0}this.regen()}showTextures(){if(Object.keys(this._textures).length>0){const t=this.viewer.impl.matman()._materials;for(const e in t)if(-1===this._excluded.indexOf(e)){const i=t[e],n=this._textures[e];n&&(i.map=n);const s=this._colors[e];s&&(i.color=s),i.needsUpdate=!0}}this.regen()}}class U extends THREE.ShaderMaterial{constructor(t,e,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;n=parseFloat(n).toFixed(3);super({uniforms:{dataTexture:{type:"t",value:null},vertexTexture:{type:"t",value:null},uPower:{type:"f",value:n},uDataCount:{type:"i",value:i},uDataTextureWidth:{type:"i",value:1}},vertexShader:"\n varying vec2 vUV;\n\n void main()\n {\n vUV = uv;\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n gl_Position = projectionMatrix * mvPosition;\n }\n ",fragmentShader:"\n varying vec2 vUV;\n\n uniform float uPower;\n uniform int uDataCount;\n uniform int uDataTextureWidth;\n \n uniform sampler2D dataTexture;\n uniform sampler2D vertexTexture;\n \n void main(void) {\n // The position of the vertex whose value is to be determined.\n vec4 vertex = texture2D(vertexTexture, vUV);\n \n if (vertex.w < 0.) {\n // This is an invalid vertex, mark as transparent.\n gl_FragColor = vec4(0., 0., 0., 1.);\n return;\n }\n \n float sum = 0.;\n float wsum = 0.;\n float factor = 1. / float(uDataTextureWidth);\n float textureWidth = float(uDataTextureWidth);\n \n // Compute weighted influence from all the data points.\n for (int index = 0; index < uDataCount; index++)\n {\n float i = float(index);\n float y = floor(i / textureWidth);\n float x = mod(i, textureWidth);\n \n vec2 dUV = vec2((x + 0.5) * factor, (y + 0.5) * factor);\n vec4 dataPoint = texture2D(dataTexture, dUV);\n \n float dist = distance(vertex.xyz, dataPoint.xyz);\n \n if (dist < 0.0001) {\n gl_FragColor = vec4(dataPoint.w, 0., 0., 1.);\n return;\n }\n \n float w = 1. / dist;\n w = pow(w, uPower);\n \n sum += dataPoint.w * w;\n wsum += w;\n }\n \n gl_FragColor = vec4(sum/wsum , 0., 0., 1.);\n }\n ",side:THREE.DoubleSide,depthTest:!0,depthWrite:!0}),this.vertexTexture=t,this.dataTexture=e}set vertexTexture(t){t&&(this.uniforms.vertexTexture.value=t)}set dataTexture(t){t&&(this.uniforms.dataTexture.value=t,this.uniforms.uDataTextureWidth.value=t.image.width)}}function F(t,e,i,n,s){if(t=t.subarray||t.slice?t:t.buffer,i=i.subarray||i.slice?i:i.buffer,t=e?t.subarray?t.subarray(e,s&&e+s):t.slice(e,s&&e+s):t,i.set)i.set(t,n);else for(let e=0;e0){const{x:t,y:e,z:n}=this.copyV3(i);this._next.push(t,e,n),this._next.push(t,e,n)}}{const i=e?1:t-1,{x:n,y:s,z:r}=this.copyV3(i);this._next.push(n,s,r),this._next.push(n,s,r)}const s=new Float32Array(this._position),r=new Float32Array(this._prev),o=new Float32Array(this._next),a=new Float32Array(this._side),h=new Float32Array(this._width),l=new Uint16Array(this._index);this._attributes&&this._attributes.position.length===this._position.length?(this.updateAttribute(this._attributes.position,s),this.updateAttribute(this._attributes.prev,r),this.updateAttribute(this._attributes.next,o),this.updateAttribute(this._attributes.side,a),this.updateAttribute(this._attributes.width,h),this.updateAttribute(this._attributes.index,l)):this._attributes={position:new THREE.BufferAttribute(s,3),prev:new THREE.BufferAttribute(r,3),next:new THREE.BufferAttribute(o,3),side:new THREE.BufferAttribute(a,1),width:new THREE.BufferAttribute(h,1),index:new THREE.BufferAttribute(l,1)},this._geometry||(this._geometry=new THREE.BufferGeometry),this._geometry.setAttribute("position",this._attributes.position),this._geometry.setAttribute("prev",this._attributes.prev),this._geometry.setAttribute("next",this._attributes.next),this._geometry.setAttribute("side",this._attributes.side),this._geometry.setAttribute("width",this._attributes.width),this._geometry.setIndex(this._attributes.index),this._geometry.computeBoundingSphere(),this._geometry.computeBoundingBox(),this._geometry.visible=!0}advance(t){var e=this._attributes.position.array,i=this._attributes.prev.array,n=this._attributes.next.array,s=e.length;F(e,0,i,0,s),F(e,6,e,0,s-6),e[s-6]=t.x,e[s-5]=t.y,e[s-4]=t.z,e[s-3]=t.x,e[s-2]=t.y,e[s-1]=t.z,F(e,6,n,0,s-6),n[s-6]=t.x,n[s-5]=t.y,n[s-4]=t.z,n[s-3]=t.x,n[s-2]=t.y,n[s-1]=t.z,this._attributes.position.needsUpdate=!0,this._attributes.prev.needsUpdate=!0,this._attributes.next.needsUpdate=!0}}function N(t){function e(t,e){return void 0===t?e:t}THREE.Material.call(this),t=t||{},t=Object.assign(t,{side:THREE.DoubleSide,depthTest:!0,depthWrite:!1}),this.lineColor=e(t.lineColor,new THREE.Color(16777215)),this.opacity=e(t.opacity,1),this.lineWidth=e(t.lineWidth,6),delete t.lineColor,delete t.opacity,delete t.lineWidth;const i=new THREE.RawShaderMaterial({uniforms:{lineWidth:{type:"f",value:this.lineWidth},color:{type:"c",value:this.lineColor},opacity:{type:"f",value:this.opacity},resolution:{type:"v2",value:new THREE.Vector2(1920,1080)},sizeAttenuation:{type:"f",value:0}},attributes:{position:{type:"v3",value:new THREE.Vector3},prev:{type:"v3",value:new THREE.Vector3},next:{type:"v3",value:new THREE.Vector3},side:{type:"f",value:0},width:{type:"f",value:0}},vertexShader:"\n attribute vec3 position;\n attribute vec3 prev;\n attribute vec3 next;\n attribute float side;\n attribute float width;\n\n uniform mat4 projectionMatrix;\n uniform mat4 modelViewMatrix;\n uniform vec2 resolution;\n uniform float lineWidth;\n uniform vec3 color;\n uniform float opacity;\n uniform float sizeAttenuation;\n\n varying vec4 vColor;\n\n vec2 fix( vec4 i, float aspect ) {\n\n vec2 res = i.xy / i.w;\n res.x *= aspect;\n return res;\n }\n\n void main() {\n float aspect = resolution.x / resolution.y;\n\n vColor = vec4( color, opacity );\n\n mat4 m = projectionMatrix * modelViewMatrix;\n vec4 finalPosition = m * vec4( position, 1.0 );\n vec4 prevPos = m * vec4( prev, 1.0 );\n vec4 nextPos = m * vec4( next, 1.0 );\n\n vec2 currP = fix( finalPosition, aspect );\n vec2 prevP = fix( prevPos, aspect );\n vec2 nextP = fix( nextPos, aspect );\n\n float w = lineWidth * width;\n\n vec2 dir;\n if ( nextP == currP ) {\n dir = normalize( currP - prevP );\n }\n else if( prevP == currP ) {\n dir = normalize( nextP - currP );\n }\n else {\n vec2 dir1 = normalize( currP - prevP );\n vec2 dir2 = normalize( nextP - currP );\n dir = normalize( dir1 + dir2 );\n\n vec2 perp = vec2( -dir1.y, dir1.x );\n vec2 miter = vec2( -dir.y, dir.x );\n w = clamp( w / dot( miter, perp ), 0., 4. * lineWidth * width );\n }\n\n vec4 normal = vec4( -dir.y, dir.x, 0., 1. );\n normal.xy *= .5 * w;\n normal *= projectionMatrix;\n\n if ( sizeAttenuation == 0. ) {\n normal.xy *= finalPosition.w;\n normal.xy /= ( vec4( resolution, 0., 1. ) * projectionMatrix ).xy;\n }\n\n finalPosition.xy += normal.xy * side;\n gl_Position = finalPosition;\n }\n",fragmentShader:"\n varying vec4 vColor;\n\n void main() {\n gl_FragColor = vColor;\n }\n"});return i.type="StreamLineMaterial",i.setValues(t),i}N.prototype=Object.create(THREE.Material.prototype),N.prototype.constructor=N,N.prototype.copy=function(t){return THREE.Material.prototype.copy.call(this,t),this},N.prototype.id=function(){return N.generateId(this.lineColor,this.opacity,this.lineWidth)},N.generateId=function(t,e,i){return`${t.getHexString()}-${e.toFixed(4)}-${i.toFixed(4)}`};const z="StreamLineOverlay";class W{constructor(t){this._viewer=t,this._overlayCreated=!1,this._streamLines=[],this._cachedMaterials={}}dispose(){this._streamLines.forEach((t=>{let{streamLine:e,mesh:i}=t;this._removeMeshFromScene(i),e.dispose()})),this._streamLines=[];Object.values(this._cachedMaterials).forEach((t=>t.dispose())),this._cachedMaterials={},this._overlayCreated&&(this._overlayCreated=!1,this._viewer.impl.removeOverlayScene(z))}createStreamLine(t){const e=new L;e.setPoints(new Float32Array(t.lineData.points));const i=this._getOrCreateMaterial(t),n=new THREE.Mesh(e.geometry,i);return this._addMeshToScene(n),this._streamLines.push({streamLine:e,mesh:n}),e}destroyStreamLine(t){const e=this._streamLines.findIndex((e=>e.streamLine===t));if(e>=0){const t=this._streamLines.splice(e,1);this._removeMeshFromScene(t[0].mesh),t[0].streamLine.dispose()}}_addMeshToScene(t){this._overlayCreated||(this._overlayCreated=!0,this._viewer.impl.createOverlayScene(z)),this._viewer.impl.addOverlay(z,t)}_removeMeshFromScene(t){this._overlayCreated&&this._viewer.impl.removeOverlay(z,t)}_getOrCreateMaterial(t){const e=t.lineColor,i=t.opacity,n=t.lineWidth,s=N.generateId(e,i,n);let r=this._cachedMaterials[s];return r||(r=new N({lineColor:e,opacity:i,lineWidth:n}),this._cachedMaterials[s]=r),r}}const G="Autodesk.DataVisualization";var $=AutodeskNamespace(G+".Core");$=Object.assign($,t),$=Object.assign($,s()),($=Object.assign($,R)).Room=S,$.LevelRoomsMap=M,$.ModelStructureInfo=class{constructor(t){this.model=t,this.rooms=null}getImmediateChildNodesByName(t,e){const i=this.model.getInstanceTree(),n=[];return i&&(e=null==e?i.getRootId():e,i.enumNodeChildren(e,(e=>{const s=i.getNodeName(e,!0);s&&s.indexOf&&s.indexOf(t)>=0&&n.push(e)}),!1)),n}async getLevelRoomsMap(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1?arguments[1]:void 0;if(!this.levelRoomsMap){const i=new M;(await this.getRoomList(e)).forEach((e=>{const n=this.getLevel(e);t||(e.info=void 0),null!=n&&i.addRoomToLevel(n,e)})),this.levelRoomsMap=i}return this.levelRoomsMap}getLevel(t){if(t&&t.info&&t.info.properties){const e=t.info.properties.find((t=>20==t.type&&"Level"==t.attributeName));return e?e.displayValue:void 0}}async getRoomList(t){if(!this.rooms){t=t||"Rooms";const e=this.getImmediateChildNodesByName(t),i=this.model,n=[];if(e&&e.length>0){const t=e[0],s=i.getInstanceTree();s&&s.enumNodeChildren(t,(t=>{const e=s.getNodeName(t,!0),i=this.getRoomBounds(t);n.push(new S(t,e,i))}),!1)}const s=n.map((t=>new Promise(((e,n)=>{i.getProperties2(t.id,(i=>{t.info=i,e(t)}),(i=>{e(t)}))}))));await Promise.all(s),this.rooms=n}return this.rooms}getRoomBounds(t){const e=new THREE.Box3,i=new THREE.Box3,n=this.model.getInstanceTree(),s=this.model.getFragmentList();return n&&n.enumNodeFragments(t,(t=>{s.getWorldBounds(t,i),e.union(i)}),!0),e}async mapDevicesInRoom(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1?arguments[1]:void 0;const i=await this.getRoomList(e);t=t.slice(0);for(let e=0;t.length>0&&e0){const e=t.map((t=>`${t.id} (${t.name})`));console.warn(`Some devices did not map to a room: ${e.join(", ")}`)}}async generateSurfaceShadingData(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1?arguments[1]:void 0,i=arguments.length>2?arguments[2]:void 0;e||(e=await this.getLevelRoomsMap(!1,i),await this.mapDevicesInRoom(t,i));const n=new R.SurfaceShadingData;for(let t in e){const i=e[t],s=new R.SurfaceShadingGroup(t);i.forEach((t=>{const e=new R.SurfaceShadingNode(t.name,t.id);t.devices.forEach((t=>{let i=t.deviceModel?t.deviceModel.id:t.type;e.addPoint(new R.SurfaceShadingPoint(t.id,t.position,t.sensorTypes,t.name,{styleId:i}))})),s.addChild(e)})),n.addChild(s)}return n.initialize(this.model),n}roomGeomContainsPoint(t,e){return t.bounds&&t.bounds.containsPoint(e)}},$.SurfaceShading=O,$.PlanarHeatmap=B,$.IDWDataProcessor=class{constructor(t,e,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};this.viewer=t,this.min=n.min,this.max=n.max;let{colors:s}=n;s?this.setColors(s):this.setColors([255,65535,65280,16776960,16711680]),this.setVertices(e),this.setDataPoints(i),this.initializeRender()}setVertices(t){this.vertexTexture&&(this.vertexTexture.dispose(),this.vertexTexture=null);const e=Math.ceil(Math.sqrt(t.length/3)),i=new Float32Array(e*e*4);i.fill(-1);for(let e=0,n=t.length/3;enew THREE.Color(t))),this.stops=this._createColorStops(t.length),this.colorMapData=[];for(let t=0;t<256;t++)this.colorMapData.push(this._mapValueToColor(t/255))}}_createColorStops(t){const e=[],i=1/(t-1);for(let n=0;n0&&void 0!==arguments[0]?arguments[0]:{},{colors:e,power:i,outputTarget:n}=t;e&&this.setColors(e),null==i&&(i=1),this.material.uniforms.uPower.value=i;const s=this.vertexTexture.image.width;this.renderTarget.width!=s&&this.renderTarget.setSize(s,s);const r=this.viewer.impl.glrenderer();return r.setRenderTarget(this.renderTarget),r.render(this.scene,this.camera,!0),r.readRenderTargetPixels(this.renderTarget,0,0,s,s,this.vertexValues),this._getColorValues(n)}_getColorValues(t){let e;e=t&&t.length==this.verticesLength?t:new Uint8Array(this.verticesLength);const i=this.vertexValues;for(let t=0,n=this.verticesLength/3;t{this.vertexTexture&&(this.vertexTexture.dispose(),this.vertexTexture=null),this.dataTexture&&(this.dataTexture.dispose(),this.dataTexture=null),this.renderTarget&&(this.renderTarget.dispose(),this.renderTarget=null),this.material&&(this.material.dispose(),this.material=null),this.planeGeometry&&(this.planeGeometry.dispose(),this.planeGeometry=null)}),32)}},$.IDWProcessMaterial=U;const X=Autodesk.Viewing,q=X.Private,Q="DataVizDots";class Y extends X.Extension{constructor(t){super(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),this.textureUtility=new j(t),this.pointMeshes=[],this._streamLineBuilder=null,this._onInstanceTreeReady=this._onInstanceTreeReady.bind(this),this.model=null}async load(){return this.tool=new a(this.viewer,{delegate:this}),this.viewer.toolController.registerTool(this.tool),this.activate(),this.instanceTreeReadyPromise=new Promise(((t,e)=>{this.instanceTreeReadyPromiseResolve=t,this.instanceTreeReadyPromiseReject=e})),this.datavizDotOverlay=this.viewer.impl.createOverlayScene(Q,null,null,null,!0,!0),this.viewer.addEventListener(Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT,this._onInstanceTreeReady),this.deviceDepthOcclusion=!1,this.surfaceShading={},!0}unload(){return this.viewer.toolController.deregisterTool(this.tool),this.viewer.removeEventListener(Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT,this._onInstanceTreeReady),this.removeSurfaceShading(),this.surfaceShading=null,this.model=null,this.showTextures(),this.removeAllViewables(),this._streamLineBuilder&&(this._streamLineBuilder.dispose(),this._streamLineBuilder=null),this.deactivate(),!0}activate(){return this.viewer.toolController.activateTool(this.tool.getName()),!0}deactivate(){return this.viewer.toolController.deactivateTool(this.tool.getName()),!0}_onInstanceTreeReady(t){this.instanceTreeReadyPromiseResolve&&this.instanceTreeReadyPromiseResolve()}async waitForInstanceTree(t){t.getInstanceTree()?this.instanceTreeReadyPromiseResolve():await this.instanceTreeReadyPromise}get hasViewables(){return this.pointMeshes&&this.pointMeshes.length>0&&this.viewableData}get streamLineBuilder(){return this._streamLineBuilder||(this._streamLineBuilder=new W(this.viewer)),this._streamLineBuilder}mapDbIdsToGeometries(t){const e=this.dbId2Geometry||{};let i=new Set;return t.map((t=>{const n=e[t];n&&i.add(n)})),Array.from(i)}addViewables(t){const e=THREE.ImageUtils.loadTexture(t.spriteAtlas.canvas.toDataURL());e.minFilter=THREE.LinearFilter,e.maxFilter=THREE.LinearFilter,e.flipY=!1;const i=new THREE.PointCloudMaterial({size:t.spriteSize*this.getWindow().devicePixelRatio,map:e,vertexColors:THREE.VertexColors,alphaTest:.5,transparent:!0,occlusion:1,depthTest:!0,depthWrite:!0});function n(t,e){const i=t.impl.renderer().getDepthTarget();if(i){const t=new THREE.Vector2(1/i.width,1/i.height);e.uniforms=Object.assign(e.uniforms||{},{tDepthTest:{type:"t",value:i},tDepthResolution:{type:"v2",value:t}})}}i.skipMrtNormals=!0,n(this.viewer,i),i.defines=Object.assign(i.defines||{},{PARTICLE_FRAGMENT:1,USE_VERTEX_ID:1,DEPTH_OCCLUSION:this.deviceDepthOcclusion?1:0,PARTICLE_UV:1,PARTICLE_FLAGS:""});const s=this.viewer.impl;s.matman().addMaterial("__dataVizSpriteMaterial__",i,!0),this.pointMaterial=i,this.viewableData=t,this.dbId2Geometry={},this.viewer.addEventListener(X.VIEWER_RESIZE_EVENT,(()=>{n(this.viewer,i)}));const r=this;let o=new h.SpriteMeshBuilder((function(t){t.dbIds.forEach((e=>{r.dbId2Geometry[e]=t}));const e=new THREE.Mesh(t,i);s.addOverlay(Q,e),r.pointMeshes.push(e),setTimeout((()=>{s.invalidate(!1,!1,!0)}),16)}));t.viewables.map((e=>{e.position&&o.addPoint(e,t.spriteAtlas)})),o.flushBuffer()}removeAllViewables(){if(this.pointMeshes&&this.pointMeshes.length>0){let t=this.viewer.impl;this.pointMeshes.forEach((e=>{t.removeOverlay(Q,e),e.geometry.dispose(),e.material.dispose()})),t.invalidate(!1,!1,!0)}this.pointMeshes=[],delete this.dbId2Geometry,delete this.viewableData}changeOcclusion(t){if(this.deviceDepthOcclusion!=t){this.deviceDepthOcclusion=t;let e=t?1:0;this.pointMaterial&&this.pointMaterial.program&&(this.pointMaterial.defines.DEPTH_OCCLUSION=e,this.pointMaterial.needsUpdate=!0),this.viewer.impl.invalidate(!1,!1,!0)}}showHideViewables(t,e){this.changeOcclusion(e),this.pointMaterial&&(this.pointMaterial.visible=t,this.pointMaterial.needsUpdate=!0),this.viewer.impl.invalidate(!1,!1,!0)}highlightViewables(t){this.tool&&this.tool.markObject(t)}clearHighlightedViewables(){this.tool&&this.tool.clearMarkedObject()}invalidateViewables(t,e){!t||t.length<=0?console.warn("All parameters of 'invalidateViewables' are mandatory"):!this.pointMeshes||this.pointMeshes.length<=0||!this.viewableData?console.warn("'addViewables' must be called before 'invalidateViewables'"):this.tool&&this.tool.invalidateViewablesDirect(t,this.pointMeshes,this.viewableData,e)}showTextures(){this.textureUtility.showTextures()}hideTextures(){this.textureUtility.hideTextures()}async setupSurfaceShading(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return await this.waitForInstanceTree(t),(async()=>{Object.keys(this.surfaceShading).length&&Object.prototype.hasOwnProperty.call(this.surfaceShading,t.id)&&this.surfaceShading[t.id].cleanUp(),this.model=t,"PlanarHeatmap"==i.type?(await this.viewer.loadExtension("Autodesk.CompGeom"),this.surfaceShading[t.id]=new B(this.viewer,t,e,i)):this.surfaceShading[t.id]=new O(this.viewer,t,e)})()}renderSurfaceShading(t,e,i){let n,s,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};"number"==typeof r?n={confidence:Math.abs(r)}:(n=r.heatmapConfig,s=r.model),null==n&&(n={confidence:160}),null==s&&(s=this.model),s&&this.surfaceShading[s.id]?this.surfaceShading[s.id].render(t,e,i,n):q.logger.error("Please call setupSurfaceShading first")}updateSurfaceShading(t){let e,i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!Object.keys(n).length||Object.prototype.hasOwnProperty.call(n,"heatmapConfig")||Object.prototype.hasOwnProperty.call(n,"model")?(e=n.heatmapConfig,i=n.model):e=n,null==i&&(i=this.model),i&&Object.prototype.hasOwnProperty.call(this.surfaceShading,i.id)?this.surfaceShading[i.id].updateShading(t,e):q.logger.error("Please call setupSurfaceShading for the model first")}registerSurfaceShadingColors(t,e){let i,n,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};"number"==typeof s?i=s:(i=s.alpha,n=s.model),null==i&&(i=.7),null==n&&(n=this.model),n&&Object.prototype.hasOwnProperty.call(this.surfaceShading,n.id)?this.surfaceShading[n.id].registerSensorColors(t,e,i):q.logger.error("Please call setupSurfaceShading for the model first")}removeSurfaceShading(t){Object.keys(this.surfaceShading).length&&(null==t&&(t=this.model),Object.prototype.hasOwnProperty.call(this.surfaceShading,t.id)&&this.surfaceShading[t.id].removeShading())}}X.theExtensionManager.registerExtension(G,Y)})(),Autodesk.Extensions.DataVisualization=n})(); +//# sourceMappingURL=DataVisualization.min.js.map \ No newline at end of file diff --git a/public/autodesk/extensions/DocumentBrowser/DocumentBrowser.min.js b/public/autodesk/extensions/DocumentBrowser/DocumentBrowser.min.js new file mode 100644 index 0000000..dd49327 --- /dev/null +++ b/public/autodesk/extensions/DocumentBrowser/DocumentBrowser.min.js @@ -0,0 +1,18 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var e={9995:(e,t,i)=>{"use strict";i.d(t,{A:()=>a});var r=i(1354),n=i.n(r),o=i(6314),s=i.n(o)()(n());s.push([e.id,'.adsk-viewing-viewer leaf>lmvheader>geom_icon,.adsk-viewing-viewer group>lmvheader>geom_icon{display:inline-block;background-repeat:no-repeat;width:24px;height:24px;padding-left:5px;transform:translateY(6px)}.adsk-viewing-viewer .viewer-document-browser .settings-tabs ul li,.adsk-viewing-viewer .viewer-document-browser .settings-tabs ul li a{width:50%}.adsk-viewing-viewer.dark-theme leaf.geometry_3d>lmvheader>geom_icon,.adsk-viewing-viewer.dark-theme group.geometry_3d>lmvheader>geom_icon{background-image:url("data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg width%3D%2224px%22 height%3D%2224px%22 viewBox%3D%220 0 24 24%22 version%3D%221.1%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E %3C!-- Generator%3A Sketch 43.1 (39012) - http%3A%2F%2Fwww.bohemiancoding.com%2Fsketch --%3E %3Ctitle%3Eicon-view-3d%3C%2Ftitle%3E %3Cdesc%3ECreated with Sketch.%3C%2Fdesc%3E %3Cdefs%3E%3C%2Fdefs%3E %3Cg id%3D%22Symbols%22 stroke%3D%22none%22 stroke-width%3D%221%22 fill%3D%22%23C4C4C4%22 fill-rule%3D%22evenodd%22%3E %3Cg id%3D%22icon-view-3d%22%3E %3Cg id%3D%22guide%22 opacity%3D%220%22 fill%3D%22%23FF9898%22%3E %3Crect id%3D%22Rectangle-4%22 x%3D%220%22 y%3D%220%22 width%3D%2224%22 height%3D%2224%22%3E%3C%2Frect%3E %3C%2Fg%3E %3Cpath d%3D%22M12.5%2C5 L6.00480947%2C8.75 L6.00480947%2C16.25 L12.5%2C20 L18.9951905%2C16.25 L18.9951905%2C8.75 L12.5%2C5 Z M12.5%2C3.84529946 L19.9951905%2C8.17264973 L19.9951905%2C16.8273503 L12.5%2C21.1547005 L5.00480947%2C16.8273503 L5.00480947%2C8.17264973 L12.5%2C3.84529946 Z%22 id%3D%22Polygon%22 fill%3D%22%23C4C4C4%22 fill-rule%3D%22nonzero%22%3E%3C%2Fpath%3E %3Cpolygon id%3D%22Line%22 fill%3D%22%23C4C4C4%22 fill-rule%3D%22nonzero%22 points%3D%2212 12 12 20.0588235 13 20.0588235 13 12%22%3E%3C%2Fpolygon%3E %3Cpolygon id%3D%22Line%22 fill%3D%22%23C4C4C4%22 fill-rule%3D%22nonzero%22 points%3D%225.64133837 9.15664034 12.6860521 13.182191 13.182191 12.3139479 6.13747731 8.2883972%22%3E%3C%2Fpolygon%3E %3Cpolygon id%3D%22Line%22 fill%3D%22%23C4C4C4%22 fill-rule%3D%22nonzero%22 points%3D%2218.8625227 8.2883972 11.817809 12.3139479 12.3139479 13.182191 19.3586616 9.15664034%22%3E%3C%2Fpolygon%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E")}.adsk-viewing-viewer.dark-theme leaf.geometry_2d>lmvheader>geom_icon,.adsk-viewing-viewer.dark-theme group.geometry_2d>lmvheader>geom_icon{background-image:url("data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg width%3D%2224px%22 height%3D%2224px%22 viewBox%3D%220 0 24 24%22 version%3D%221.1%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E %3C!-- Generator%3A Sketch 43.2 (39069) - http%3A%2F%2Fwww.bohemiancoding.com%2Fsketch --%3E %3Ctitle%3Eicon-view-2d%3C%2Ftitle%3E %3Cdesc%3ECreated with Sketch.%3C%2Fdesc%3E %3Cdefs%3E%3C%2Fdefs%3E %3Cg id%3D%22Symbols%22 stroke%3D%22none%22 stroke-width%3D%221%22 fill%3D%22%23C4C4C4%22 fill-rule%3D%22evenodd%22%3E %3Cg id%3D%22icon-view-2d%22%3E %3Cg id%3D%22guide%22 opacity%3D%220%22 fill%3D%22%23FF9898%22%3E %3Crect id%3D%22Rectangle-4%22 x%3D%220%22 y%3D%220%22 width%3D%2224%22 height%3D%2224%22%3E%3C%2Frect%3E %3C%2Fg%3E %3Cpath d%3D%22M13%2C15 L13%2C12 L16%2C12 L16%2C11 L17%2C11 L17%2C12.5 L17%2C16 L13.5%2C16 L12%2C16 L12%2C15 L13%2C15 Z%22 id%3D%22Combined-Shape%22 fill%3D%22%23C4C4C4%22%3E%3C%2Fpath%3E %3Crect id%3D%22Rectangle-10-Copy-22%22 fill%3D%22%23C4C4C4%22 x%3D%2216%22 y%3D%228%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3Cpath d%3D%22M4%2C16 L4%2C18 L20%2C18 L20%2C6 L17%2C6 L17%2C7 L16%2C7 L16%2C6 L4%2C6 L4%2C15 L5%2C15 L5%2C16 L4%2C16 Z M20.5%2C5 L21%2C5 L21%2C19 L20.5%2C19 L3%2C19 L3%2C18.5 L3%2C5.5 L3%2C5 L20.5%2C5 Z%22 id%3D%22Combined-Shape%22 fill%3D%22%23C4C4C4%22%3E%3C%2Fpath%3E %3Crect id%3D%22Rectangle-10-Copy-26%22 fill%3D%22%23C4C4C4%22 x%3D%2216%22 y%3D%2214%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3Crect id%3D%22Rectangle-10-Copy-27%22 fill%3D%22%23C4C4C4%22 transform%3D%22translate(7.000000%2C 15.500000) rotate(-270.000000) translate(-7.000000%2C -15.500000) %22 x%3D%226.5%22 y%3D%2214.5%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3Crect id%3D%22Rectangle-10-Copy-28%22 fill%3D%22%23C4C4C4%22 transform%3D%22translate(10.000000%2C 15.500000) rotate(-270.000000) translate(-10.000000%2C -15.500000) %22 x%3D%229.5%22 y%3D%2214.5%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3Crect id%3D%22Rectangle-10-Copy-30%22 fill%3D%22%23C4C4C4%22 transform%3D%22translate(16.000000%2C 15.500000) rotate(-270.000000) translate(-16.000000%2C -15.500000) %22 x%3D%2215.5%22 y%3D%2214.5%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E")}.adsk-viewing-viewer.dark-theme .mb-ext-tab-bar{background-color:rgba(34,34,34,.9);text-align:center}.adsk-viewing-viewer.dark-theme .mb-ext-tab-bar-btn{width:40%;height:60%;margin:auto}.adsk-viewing-viewer.light-theme leaf.geometry_3d>lmvheader>geom_icon,.adsk-viewing-viewer.light-theme group.geometry_3d>lmvheader>geom_icon{background-image:url("data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg width%3D%2224px%22 height%3D%2224px%22 viewBox%3D%220 0 24 24%22 version%3D%221.1%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E %3C!-- Generator%3A Sketch 43.1 (39012) - http%3A%2F%2Fwww.bohemiancoding.com%2Fsketch --%3E %3Ctitle%3Eicon-view-3d%3C%2Ftitle%3E %3Cdesc%3ECreated with Sketch.%3C%2Fdesc%3E %3Cdefs%3E%3C%2Fdefs%3E %3Cg id%3D%22Symbols%22 stroke%3D%22none%22 stroke-width%3D%221%22 fill%3D%22%23858585%22 fill-rule%3D%22evenodd%22%3E %3Cg id%3D%22icon-view-3d%22%3E %3Cg id%3D%22guide%22 opacity%3D%220%22 fill%3D%22%23FF9898%22%3E %3Crect id%3D%22Rectangle-4%22 x%3D%220%22 y%3D%220%22 width%3D%2224%22 height%3D%2224%22%3E%3C%2Frect%3E %3C%2Fg%3E %3Cpath d%3D%22M12.5%2C5 L6.00480947%2C8.75 L6.00480947%2C16.25 L12.5%2C20 L18.9951905%2C16.25 L18.9951905%2C8.75 L12.5%2C5 Z M12.5%2C3.84529946 L19.9951905%2C8.17264973 L19.9951905%2C16.8273503 L12.5%2C21.1547005 L5.00480947%2C16.8273503 L5.00480947%2C8.17264973 L12.5%2C3.84529946 Z%22 id%3D%22Polygon%22 fill%3D%22%23858585%22 fill-rule%3D%22nonzero%22%3E%3C%2Fpath%3E %3Cpolygon id%3D%22Line%22 fill%3D%22%23858585%22 fill-rule%3D%22nonzero%22 points%3D%2212 12 12 20.0588235 13 20.0588235 13 12%22%3E%3C%2Fpolygon%3E %3Cpolygon id%3D%22Line%22 fill%3D%22%23858585%22 fill-rule%3D%22nonzero%22 points%3D%225.64133837 9.15664034 12.6860521 13.182191 13.182191 12.3139479 6.13747731 8.2883972%22%3E%3C%2Fpolygon%3E %3Cpolygon id%3D%22Line%22 fill%3D%22%23858585%22 fill-rule%3D%22nonzero%22 points%3D%2218.8625227 8.2883972 11.817809 12.3139479 12.3139479 13.182191 19.3586616 9.15664034%22%3E%3C%2Fpolygon%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E")}.adsk-viewing-viewer.light-theme leaf.geometry_2d>lmvheader>geom_icon,.adsk-viewing-viewer.light-theme group.geometry_2d>lmvheader>geom_icon{background-image:url("data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg width%3D%2224px%22 height%3D%2224px%22 viewBox%3D%220 0 24 24%22 version%3D%221.1%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E %3C!-- Generator%3A Sketch 43.2 (39069) - http%3A%2F%2Fwww.bohemiancoding.com%2Fsketch --%3E %3Ctitle%3Eicon-view-2d%3C%2Ftitle%3E %3Cdesc%3ECreated with Sketch.%3C%2Fdesc%3E %3Cdefs%3E%3C%2Fdefs%3E %3Cg id%3D%22Symbols%22 stroke%3D%22none%22 stroke-width%3D%221%22 fill%3D%22%23858585%22 fill-rule%3D%22evenodd%22%3E %3Cg id%3D%22icon-view-2d%22%3E %3Cg id%3D%22guide%22 opacity%3D%220%22 fill%3D%22%23FF9898%22%3E %3Crect id%3D%22Rectangle-4%22 x%3D%220%22 y%3D%220%22 width%3D%2224%22 height%3D%2224%22%3E%3C%2Frect%3E %3C%2Fg%3E %3Cpath d%3D%22M13%2C15 L13%2C12 L16%2C12 L16%2C11 L17%2C11 L17%2C12.5 L17%2C16 L13.5%2C16 L12%2C16 L12%2C15 L13%2C15 Z%22 id%3D%22Combined-Shape%22 fill%3D%22%23858585%22%3E%3C%2Fpath%3E %3Crect id%3D%22Rectangle-10-Copy-22%22 fill%3D%22%23858585%22 x%3D%2216%22 y%3D%228%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3Cpath d%3D%22M4%2C16 L4%2C18 L20%2C18 L20%2C6 L17%2C6 L17%2C7 L16%2C7 L16%2C6 L4%2C6 L4%2C15 L5%2C15 L5%2C16 L4%2C16 Z M20.5%2C5 L21%2C5 L21%2C19 L20.5%2C19 L3%2C19 L3%2C18.5 L3%2C5.5 L3%2C5 L20.5%2C5 Z%22 id%3D%22Combined-Shape%22 fill%3D%22%23858585%22%3E%3C%2Fpath%3E %3Crect id%3D%22Rectangle-10-Copy-26%22 fill%3D%22%23858585%22 x%3D%2216%22 y%3D%2214%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3Crect id%3D%22Rectangle-10-Copy-27%22 fill%3D%22%23858585%22 transform%3D%22translate(7.000000%2C 15.500000) rotate(-270.000000) translate(-7.000000%2C -15.500000) %22 x%3D%226.5%22 y%3D%2214.5%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3Crect id%3D%22Rectangle-10-Copy-28%22 fill%3D%22%23858585%22 transform%3D%22translate(10.000000%2C 15.500000) rotate(-270.000000) translate(-10.000000%2C -15.500000) %22 x%3D%229.5%22 y%3D%2214.5%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3Crect id%3D%22Rectangle-10-Copy-30%22 fill%3D%22%23858585%22 transform%3D%22translate(16.000000%2C 15.500000) rotate(-270.000000) translate(-16.000000%2C -15.500000) %22 x%3D%2215.5%22 y%3D%2214.5%22 width%3D%221%22 height%3D%222%22%3E%3C%2Frect%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E")}',"",{version:3,sources:["webpack://./extensions/DocumentBrowser/Panel.css"],names:[],mappings:"AAAA,6FAA6F,oBAAoB,CAAC,2BAA2B,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,wIAAwI,SAAS,CAAC,2IAA2I,22DAA+C,CAAC,2IAA2I,y8EAA+C,CAAC,gDAAgD,kCAAkC,CAAC,iBAAiB,CAAC,oDAAoD,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,6IAA6I,22DAAgD,CAAC,6IAA6I,y8EAAgD",sourcesContent:[".adsk-viewing-viewer leaf>lmvheader>geom_icon,.adsk-viewing-viewer group>lmvheader>geom_icon{display:inline-block;background-repeat:no-repeat;width:24px;height:24px;padding-left:5px;transform:translateY(6px)}.adsk-viewing-viewer .viewer-document-browser .settings-tabs ul li,.adsk-viewing-viewer .viewer-document-browser .settings-tabs ul li a{width:50%}.adsk-viewing-viewer.dark-theme leaf.geometry_3d>lmvheader>geom_icon,.adsk-viewing-viewer.dark-theme group.geometry_3d>lmvheader>geom_icon{background-image:url(res/icon-view-3d-dark.svg)}.adsk-viewing-viewer.dark-theme leaf.geometry_2d>lmvheader>geom_icon,.adsk-viewing-viewer.dark-theme group.geometry_2d>lmvheader>geom_icon{background-image:url(res/icon-view-2d-dark.svg)}.adsk-viewing-viewer.dark-theme .mb-ext-tab-bar{background-color:rgba(34,34,34,.9);text-align:center}.adsk-viewing-viewer.dark-theme .mb-ext-tab-bar-btn{width:40%;height:60%;margin:auto}.adsk-viewing-viewer.light-theme leaf.geometry_3d>lmvheader>geom_icon,.adsk-viewing-viewer.light-theme group.geometry_3d>lmvheader>geom_icon{background-image:url(res/icon-view-3d-light.svg)}.adsk-viewing-viewer.light-theme leaf.geometry_2d>lmvheader>geom_icon,.adsk-viewing-viewer.light-theme group.geometry_2d>lmvheader>geom_icon{background-image:url(res/icon-view-2d-light.svg)}"],sourceRoot:""}]);const a=s},197:(e,t,i)=>{"use strict";i.d(t,{A:()=>a});var r=i(1354),n=i.n(r),o=i(6314),s=i.n(o)()(n());s.push([e.id,".viewer-ext-docbrowser-thumbnail{border:1px solid #000;background-color:#e8e8e8;margin:6px auto;cursor:pointer}.viewer-ext-docbrowser-thumbnail-selected{border:solid 3px #1dc7f3;border-radius:4px}.viewer-ext-docbrowser-thumbnail-selected>div{background-color:#1dc7f3;color:#000}.viewer-ext-docbrowser-thumbnail:hover>div{opacity:0}.viewer-ext-docbrowser-thumbnail-spinner{animation:loading-spinner-perpetual-motion 1s infinite linear;margin:65px auto;width:60px}.viewer-ext-docbrowser-thumbnail-label{background:#c7c7d4;color:#0a131c;position:relative;transform:translate(0, -100%);bottom:5px}.viewer-ext-docbrowser-thumbnail-failed{background:#c5c2c2}","",{version:3,sources:["webpack://./extensions/DocumentBrowser/ThumbnailList.css"],names:[],mappings:"AAAA,iCAAiC,qBAAqB,CAAC,wBAAwB,CAAC,eAAe,CAAC,cAAc,CAAC,0CAA0C,wBAAwB,CAAC,iBAAiB,CAAC,8CAA8C,wBAAwB,CAAC,UAAU,CAAC,2CAA2C,SAAS,CAAC,yCAAyC,6DAA6D,CAAC,gBAAgB,CAAC,UAAU,CAAC,uCAAuC,kBAAkB,CAAC,aAAa,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,UAAU,CAAC,wCAAwC,kBAAkB",sourcesContent:[".viewer-ext-docbrowser-thumbnail{border:1px solid #000;background-color:#e8e8e8;margin:6px auto;cursor:pointer}.viewer-ext-docbrowser-thumbnail-selected{border:solid 3px #1dc7f3;border-radius:4px}.viewer-ext-docbrowser-thumbnail-selected>div{background-color:#1dc7f3;color:#000}.viewer-ext-docbrowser-thumbnail:hover>div{opacity:0}.viewer-ext-docbrowser-thumbnail-spinner{animation:loading-spinner-perpetual-motion 1s infinite linear;margin:65px auto;width:60px}.viewer-ext-docbrowser-thumbnail-label{background:#c7c7d4;color:#0a131c;position:relative;transform:translate(0, -100%);bottom:5px}.viewer-ext-docbrowser-thumbnail-failed{background:#c5c2c2}"],sourceRoot:""}]);const a=s},9583:(e,t,i)=>{"use strict";i.d(t,{A:()=>a});var r=i(1354),n=i.n(r),o=i(6314),s=i.n(o)()(n());s.push([e.id,'.adsk-viewing-viewer .adsk-icon-documentModels{background-repeat:no-repeat !important;background-size:80% !important;margin-left:4px;margin-top:3px}.adsk-viewing-viewer.dark-theme .adsk-icon-documentModels{background:url("data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22%3E %3Ctitle%3Efolder-16%3C%2Ftitle%3E %3Cg id%3D%22assets%22%3E %3Cg id%3D%22Layer_201%22 data-name%3D%22Layer%25201%22%3E %3Cpath fill%3D%22%23F4F4F4%22 d%3D%22M0%2C2.5V4H6.34l1-1-1-1H.5A.5.5%2C0%2C0%2C0%2C0%2C2.5ZM0%2C5v8a1%2C1%2C0%2C0%2C0%2C1%2C1H14a1%2C1%2C0%2C0%2C0%2C1-1V4a1%2C1%2C0%2C0%2C0-1-1H9L7%2C5Z%22%2F%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E")}.adsk-viewing-viewer.dark-theme .adsk-icon-documentModels:hover,.adsk-viewing-viewer.dark-theme .active .adsk-icon-documentModels{background:url("data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22%3E %3Ctitle%3Efolder-16%3C%2Ftitle%3E %3Cg id%3D%22assets%22%3E %3Cg id%3D%22Layer_201%22 data-name%3D%22Layer%25201%22%3E %3Cpath fill%3D%22%2300BFFF%22 d%3D%22M0%2C2.5V4H6.34l1-1-1-1H.5A.5.5%2C0%2C0%2C0%2C0%2C2.5ZM0%2C5v8a1%2C1%2C0%2C0%2C0%2C1%2C1H14a1%2C1%2C0%2C0%2C0%2C1-1V4a1%2C1%2C0%2C0%2C0-1-1H9L7%2C5Z%22%2F%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E")}.adsk-viewing-viewer.light-theme .adsk-icon-documentModels{background:url("data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22%3E %3Ctitle%3Efolder-16%3C%2Ftitle%3E %3Cg id%3D%22assets%22%3E %3Cg id%3D%22Layer_201%22 data-name%3D%22Layer%25201%22%3E %3Cpath fill%3D%22black%22 d%3D%22M0%2C2.5V4H6.34l1-1-1-1H.5A.5.5%2C0%2C0%2C0%2C0%2C2.5ZM0%2C5v8a1%2C1%2C0%2C0%2C0%2C1%2C1H14a1%2C1%2C0%2C0%2C0%2C1-1V4a1%2C1%2C0%2C0%2C0-1-1H9L7%2C5Z%22%2F%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E")}.adsk-viewing-viewer.light-theme .adsk-icon-documentModels:hover,.adsk-viewing-viewer.light-theme .active .adsk-icon-documentModels{background:url("data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22%3E %3Ctitle%3Efolder-16%3C%2Ftitle%3E %3Cg id%3D%22assets%22%3E %3Cg id%3D%22Layer_201%22 data-name%3D%22Layer%25201%22%3E %3Cpath fill%3D%22%2300BFFF%22 d%3D%22M0%2C2.5V4H6.34l1-1-1-1H.5A.5.5%2C0%2C0%2C0%2C0%2C2.5ZM0%2C5v8a1%2C1%2C0%2C0%2C0%2C1%2C1H14a1%2C1%2C0%2C0%2C0%2C1-1V4a1%2C1%2C0%2C0%2C0-1-1H9L7%2C5Z%22%2F%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E")}',"",{version:3,sources:["webpack://./extensions/DocumentBrowser/uiController.css"],names:[],mappings:"AAAA,+CAA+C,sCAAsC,CAAC,8BAA8B,CAAC,eAAe,CAAC,cAAc,CAAC,0DAA0D,0gBAAsC,CAAC,kIAAkI,0gBAAwC,CAAC,2DAA2D,sgBAAuC,CAAC,oIAAoI,0gBAAwC",sourcesContent:[".adsk-viewing-viewer .adsk-icon-documentModels{background-repeat:no-repeat !important;background-size:80% !important;margin-left:4px;margin-top:3px}.adsk-viewing-viewer.dark-theme .adsk-icon-documentModels{background:url(res/folder-16-dark.svg)}.adsk-viewing-viewer.dark-theme .adsk-icon-documentModels:hover,.adsk-viewing-viewer.dark-theme .active .adsk-icon-documentModels{background:url(res/folder-16-active.svg)}.adsk-viewing-viewer.light-theme .adsk-icon-documentModels{background:url(res/folder-16-light.svg)}.adsk-viewing-viewer.light-theme .adsk-icon-documentModels:hover,.adsk-viewing-viewer.light-theme .active .adsk-icon-documentModels{background:url(res/folder-16-active.svg)}"],sourceRoot:""}]);const a=s},6314:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i="",r=void 0!==t[5];return t[4]&&(i+="@supports (".concat(t[4],") {")),t[2]&&(i+="@media ".concat(t[2]," {")),r&&(i+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),i+=e(t),r&&(i+="}"),t[2]&&(i+="}"),t[4]&&(i+="}"),i})).join("")},t.i=function(e,i,r,n,o){"string"==typeof e&&(e=[[null,e,void 0]]);var s={};if(r)for(var a=0;a0?" ".concat(h[5]):""," {").concat(h[1],"}")),h[5]=o),i&&(h[2]?(h[1]="@media ".concat(h[2]," {").concat(h[1],"}"),h[2]=i):h[2]=i),n&&(h[4]?(h[1]="@supports (".concat(h[4],") {").concat(h[1],"}"),h[4]=n):h[4]="".concat(n)),t.push(h))}},t}},1354:e=>{"use strict";e.exports=function(e){var t=e[1],i=e[3];if(!i)return t;if("function"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(i)))),n="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(r),o="/*# ".concat(n," */");return[t].concat([o]).join("\n")}return[t].join("\n")}},5072:e=>{"use strict";var t=[];function i(e){for(var i=-1,r=0;r{"use strict";var t={};e.exports=function(e,i){var r=function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}t[e]=i}return t[e]}(e);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(i)}},540:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},5056:(e,t,i)=>{"use strict";e.exports=function(e){var t=i.nc;t&&e.setAttribute("nonce",t)}},7825:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(i){!function(e,t,i){var r="";i.supports&&(r+="@supports (".concat(i.supports,") {")),i.media&&(r+="@media ".concat(i.media," {"));var n=void 0!==i.layer;n&&(r+="@layer".concat(i.layer.length>0?" ".concat(i.layer):""," {")),r+=i.css,n&&(r+="}"),i.media&&(r+="}"),i.supports&&(r+="}");var o=i.sourceMap;o&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleTagTransform(r,e,t.options)}(t,e,i)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},1113:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}}},t={};function i(r){var n=t[r];if(void 0!==n)return n.exports;var o=t[r]={id:r,exports:{}};return e[r](o,o.exports,i),o.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nc=void 0;var r={};(()=>{"use strict";i.r(r),i.d(r,{DocumentBrowser:()=>P});var e=i(5072),t=i.n(e),n=i(7825),o=i.n(n),s=i(7659),a=i.n(s),l=i(5056),d=i.n(l),h=i(540),c=i.n(h),C=i(1113),g=i.n(C),u=i(9995),m={};m.styleTagTransform=g(),m.setAttributes=d(),m.insert=a().bind(null,"head"),m.domAPI=o(),m.insertStyleElement=c();t()(u.A,m);u.A&&u.A.locals&&u.A.locals;const v="leaf",p="group";function w(e,t){var i=function(e){var t={};return e.traverse((e=>{if(e.isGeometry()&&(e.is2D()||e.is3D())&&A(t,e),e.isViewPreset()){let i=e.parent.search({type:"view"});if(i.length>1)return void A(t,e);if(1===i.length){if(i[0].is2D())return;e.name()===i[0].name()||A(t,e)}}})),t}(e),r=new Autodesk.Viewing.UI.TreeDelegate;return r.setGlobalManager(t.globalManager),r.getTreeNodeId=function(e){return e.guid()},r.getTreeNodeLabel=function(e){return e.name()||e._raw().type},r.getTreeNodeClass=function(e){return e.isGeometry()?e._raw().type+"_"+e._raw().role:e._raw().type},r.isTreeNodeGroup=function(e){let t=e.guid();return i[t]===p},r.shouldCreateTreeNode=function(e){let t=e.guid();return!!i[t]},r.onTreeNodeClick=(e,i,r)=>{t._tryLoad(i)},r.createTreeNode=function(e,t,i,r,n){const o=Autodesk.Viewing.UI.TreeDelegate.prototype.createTreeNode.call(this,e,t,i),s=10+15*n+("leaf"===r?15:0);if(t.style.paddingLeft=s+"px",e.isGeometry()){var a=this.getDocument().createElement("geom_icon");o.parentElement.insertBefore(a,o.parentElement.children[1]),t.style.paddingTop="0"}return o},r.getScrollContainer=function(){return t.scrollContainer},r}function A(e,t){var i=t.guid();e[i]=v;for(var r=t.parent;r;)e[i=r.guid()]=p,r=r.parent}var D=i(197),b={};b.styleTagTransform=g(),b.setAttributes=d(),b.insert=a().bind(null,"head"),b.domAPI=o(),b.insertStyleElement=c();t()(D.A,b);D.A&&D.A.locals&&D.A.locals;const f=Autodesk.Viewing,y=f.Private,E=200;class k{constructor(e,t,i){this._parentDiv=e,this._rootNode=t,this._panelRef=i,this._requestNextThumbnail=this._requestNextThumbnail.bind(this),this._onThumbnailClick=this._onThumbnailClick.bind(this),this._selection=null}initialize(){const e=this.getDocument(),t=this.getWindow();this._container=e.createElement("div"),this._container.style["text-align"]="center",this._pendingImage=[],this._mapping={};for(var i=this._rootNode.search({type:"geometry"}),r=0,n=i.length;r{this._onThumbnailUrlReady(t,e)})).catch((t=>{this._onThumbnailUrlError(t,e)})))}}_getNextThumbnailRequest(){return this._pendingImage.shift()}_onThumbnailUrlReady(e,t){if(!this._mapping)return;var i=t.guid(),r=this._mapping[i].div,n=r.querySelector("img");r.removeChild(n);const o=this.getDocument(),s=this.getWindow();var a=o.createElement("img");a.style.width=E+"px",a.style.height=E+"px",a.src=e,r.insertBefore(a,r.firstChild),this._requestingThumbnail=!1,s.requestAnimationFrame(this._requestNextThumbnail)}_onThumbnailUrlError(e,t){if(!this._mapping)return;var i=t.guid(),r=this._mapping[i].div,n=r.querySelector("img");r.removeChild(n),r.classList.add("viewer-ext-docbrowser-thumbnail-failed"),this._requestingThumbnail=!1;this.getWindow().requestAnimationFrame(this._requestNextThumbnail)}}f.GlobalManagerMixin.call(k.prototype);const _=Autodesk.Viewing,x=Autodesk.Viewing.UI,F="tree",L="thumbnails",T=x.SettingsPanel||class{};class M extends T{constructor(e,t){super(e.container,"lmv-document-extension_"+e.id,"Document Browser",{heightAdjustment:110}),this.setGlobalManager(e.globalManager),this.title.classList.add("docking-panel-delimiter-shadow"),this.container.classList.add("viewer-document-browser"),this.container.classList.add("viewer-settings-panel"),this.currNode=t,this.viewer=e,this._created=!1,this._showThumbnails=!0}setChangeModelHandler(e){this._changeModelFn=e}setThumbnailVisibility(e){this._showThumbnails=e}toggleVisibility(){if(this._created){const e="none"!==this.container.style.display;this.setVisible(!e),this._showThumbnails?this.addTab(L,"Thumbnails",{}):(this.selectTab(F),this.removeTab(L))}else this.addTab(F,"Tree",{}),this._showThumbnails&&this.addTab(L,"Thumbnails",{}),this.selectTab(F),this.setVisible(!0),this.container.style.top="30px",this.container.style.width="400px",this.resizeToContent(),this._created=!0}destroy(){this.myThumbnailList&&(this.myThumbnailList.destroy(),this.myThumbnailList=null),this.myTree&&(this.myTree.destroy(),this.myTree=null),this.container&&(this.container.parentElement.removeChild(this.container),this.container=null)}setVisible(e){super.setVisible(e)}setCurrentNode(e){this.currNode=e,this._updateTreeSelection(e)}selectTab(e){switch(e){case F:this._createTreeView();break;case L:this._createThumbnailView()}var t=super.selectTab(e);return this._updateTreeSelection(this.currNode,e),this._scrollToSelection(e),t}_getTabDiv(e){var t=this.tabIdToIndex[e];return void 0===t?null:this.tablesContainer.childNodes[t].tBodies[0]}_createTreeView(){if(!this.myTree){var e=this.currNode.getRootNode(),t=w(e,this),i=this._getTabDiv(F);this.myTree=new Autodesk.Viewing.UI.Tree(t,e,i,{leafClassName:"docBrowserLeaf",selectedClassName:"selected-ex"})}}_createThumbnailView(){if(!this.myThumbnailList){var e=this._getTabDiv(L),t=this.currNode.getRootNode();this.myThumbnailList=new k(e,t,this),this.myThumbnailList.setGlobalManager(this.globalManager),this.myThumbnailList.initialize()}}_updateTreeSelection(e,t){var i=this.currNode.findParentGeom2Dor3D();let r=[i];switch(i!==e&&r.push(e),t=t||this.getSelectedTabId()){case F:this.myTree.setSelection(r);break;case L:this.myThumbnailList.setSelection(r)}}_scrollToSelection(e){switch(e){case F:this.myTree.scrollTo(this.myTree.getSelection()[0]);break;case L:this.myThumbnailList.scrollToSelection()}}_tryLoad(e){const t=this.currNode.findParentGeom2Dor3D(),i=e.findParentGeom2Dor3D({fallbackParent:t});if(i)return t!==i?(this.currNode=e,this._updateTreeSelection(e),void this._changeModelFn(e).then((()=>{this._hookUnselectCameraChange(e)}))):e.isViewPreset()?(this._updateTreeSelection(e),this.viewer.setView(e),void this._hookUnselectViewAfterTransition(e)):e.isGeometry()?(this._updateTreeSelection(e),void this.viewer.setViewFromFile(this.viewer.model)):void 0}_hookUnselectViewAfterTransition(e){e&&"view"===e.type()&&this.viewer.addEventListener(_.CAMERA_TRANSITION_COMPLETED,(()=>{this._hookUnselectCameraChange(e)}),{once:!0})}_hookUnselectCameraChange(e){e&&"view"===e.type()&&setTimeout((()=>{this.viewer.addEventListener(_.CAMERA_CHANGE_EVENT,(()=>{this.myTree.removeFromSelection([e])}),{once:!0})}),200)}}var N=i(9583),B={};B.styleTagTransform=g(),B.setAttributes=d(),B.insert=a().bind(null,"head"),B.domAPI=o(),B.insertStyleElement=c();t()(N.A,B);N.A&&N.A.locals&&N.A.locals;const S=Autodesk.Viewing,V=S.UI;class I{constructor(e){this.viewer=e,this.setGlobalManager(e.globalManager),this._onPanelVisibilityChange=this._onPanelVisibilityChange.bind(this)}setChangeModelHandler(e){this._changeModelFn=e,this.panel&&this.panel.setChangeModelHandler(e)}createUi(e,t){this.currNode=e,this._addToolbarButton(),this.panel?this.panel.setCurrentNode(e):(this.panel=new M(this.viewer,this.currNode),this.panel.setChangeModelHandler(this._changeModelFn),this.panel.addVisibilityListener(this._onPanelVisibilityChange),t&&void 0!==t.showThumbnails&&this.panel.setThumbnailVisibility(t.showThumbnails),t&&t.openDocumentBrowserOnLoad&&this.panel.toggleVisibility()),this._updateButtonState()}destroy(){this._removeToolbarButton(),this.panel&&(this.panel.destroy(),this.panel=null)}togglePanel(){this.panel.toggleVisibility()}notifyStash(){this.toolbarButton=null}_addToolbarButton(){if(this.viewer.getToolbar){var e=this.viewer.getToolbar();if(e){var t=e.getControl(Autodesk.Viewing.TOOLBAR.MODELTOOLSID);if(t){var i=new V.Button("toolbar-documentModels");i.setIcon("adsk-icon-documentModels"),i.setToolTip("Document Browser"),t.addControl(i),this.toolbarButton=i,i.onClick=()=>{this.togglePanel()}}}}}_removeToolbarButton(){this.toolbarButton&&(this.toolbarButton.removeFromParent(),this.toolbarButton=null)}_updateButtonState(){if(!this.toolbarButton)return;let e=!!this.panel&&this.panel.isVisible();this.toolbarButton.setState(e?V.Button.State.ACTIVE:V.Button.State.INACTIVE)}_onPanelVisibilityChange(){this._updateButtonState()}}S.GlobalManagerMixin.call(I.prototype);const R="Autodesk.DocumentBrowser",U=Autodesk.Viewing;class P extends U.Extension{constructor(e,t){super(e,t),this.onHyperlinkListener=this.onHyperlinkListener.bind(this)}load(){return this.viewer.addEventListener(U.HYPERLINK_EVENT,this.onHyperlinkListener),!0}unload(){return this.ui&&(this.ui.destroy(),this.ui=null),this.viewer.removeEventListener(U.HYPERLINK_EVENT,this.onHyperlinkListener),!0}onHyperlinkListener(){this._stashUI()}onToolbarCreated(){this.viewer.model?this._hookToModel(this.viewer.model):this.viewer.addEventListener(U.MODEL_ROOT_LOADED_EVENT,(e=>{this._hookToModel(e.model)}),{once:!0})}loadNextModel(e,t){if(!this.currNode)return;const i=(this.geometries.indexOf(this.currNode)+1)%this.geometries.length;this.currNode=this.geometries[i];const r=this.viewer.config;Array.isArray(r.extensions)||(r.extensions=[]),-1===r.extensions.indexOf(R)&&r.extensions.push(R),this.viewer.loadDocumentNode(this.rootNode.getDocument(),this.currNode,t)}loadPrevModel(e,t){if(!this.currNode)return;const i=this.geometries.indexOf(this.currNode),r=0===i?this.geometries.length-1:i-1;this.currNode=this.geometries[r];const n=this.viewer.config;Array.isArray(n.extensions)||(n.extensions=[]),-1===n.extensions.indexOf(R)&&n.extensions.push(R),this.viewer.loadDocumentNode(this.rootNode.getDocument(),this.currNode,t)}_changeModel(e){const t=this.viewer.getExtension("Autodesk.Multipage");if(t&&t.focusOnNode(e))return Promise.resolve();const i=this.viewer.config;return Array.isArray(i.extensions)||(i.extensions=[]),-1===i.extensions.indexOf(R)&&i.extensions.push(R),this._stashUI(),this.viewer.loadDocumentNode(e.getDocument(),e)}_hookToModel(e){var t=e.getDocumentNode();if(!t)return;this.currNode=t.findParentGeom2Dor3D(),this.rootNode=t.getRootNode(),this.geometries=this.rootNode.search({type:"geometry"});let i=this.getCache();i.ui?(this.ui=i.ui,i.ui=null):this.ui=new I(this.viewer),this.ui.createUi(this.currNode,this.options),this.ui.setChangeModelHandler(this._changeModel.bind(this))}_stashUI(){let e=this.getCache();this.ui&&(this.ui.notifyStash(),e.ui=this.ui,this.ui=null)}}U.theExtensionManager.registerExtension(R,P)})(),Autodesk.Extensions.DocumentBrowser=r})(); +//# sourceMappingURL=DocumentBrowser.min.js.map \ No newline at end of file diff --git a/public/autodesk/extensions/LayerManager/LayerManager.min.js b/public/autodesk/extensions/LayerManager/LayerManager.min.js new file mode 100644 index 0000000..3321c17 --- /dev/null +++ b/public/autodesk/extensions/LayerManager/LayerManager.min.js @@ -0,0 +1,18 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var e={2341:(e,t,i)=>{"use strict";i.d(t,{A:()=>a});var n=i(1354),r=i.n(n),o=i(6314),s=i.n(o)()(r());s.push([e.id,".adsk-viewing-viewer .layers-panel{left:0px;top:0px;min-width:320px;min-height:100px;height:calc(100% - 55px);width:350px}.adsk-viewing-viewer .layers-panel .visibility{right:40px;top:0px;width:25px;height:50px;border:none;outline:none;margin:0;padding:0;background-position:2px 19px;background-repeat:no-repeat;position:absolute;cursor:pointer;z-index:1}.adsk-viewing-viewer .layers-panel .visibility.dim{background-position:2px 16px}.adsk-viewing-viewer .layers-panel .treeview{height:100%}.adsk-viewing-viewer .layers-panel .exclude>lmvheader{display:none}.adsk-viewing-viewer .layers-panel .exclude{padding-left:0;left:0}.adsk-viewing-viewer .layers-panel .treeview label{padding-left:17px}","",{version:3,sources:["webpack://./extensions/LayerManager/ui/LayersPanel.css"],names:[],mappings:"AAAA,mCAAmC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,WAAW,CAAC,+CAA+C,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,4BAA4B,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,cAAc,CAAC,SAAS,CAAC,mDAAmD,4BAA4B,CAAC,6CAA6C,WAAW,CAAC,sDAAsD,YAAY,CAAC,4CAA4C,cAAc,CAAC,MAAM,CAAC,mDAAmD,iBAAiB",sourcesContent:[".adsk-viewing-viewer .layers-panel{left:0px;top:0px;min-width:320px;min-height:100px;height:calc(100% - 55px);width:350px}.adsk-viewing-viewer .layers-panel .visibility{right:40px;top:0px;width:25px;height:50px;border:none;outline:none;margin:0;padding:0;background-position:2px 19px;background-repeat:no-repeat;position:absolute;cursor:pointer;z-index:1}.adsk-viewing-viewer .layers-panel .visibility.dim{background-position:2px 16px}.adsk-viewing-viewer .layers-panel .treeview{height:100%}.adsk-viewing-viewer .layers-panel .exclude>lmvheader{display:none}.adsk-viewing-viewer .layers-panel .exclude{padding-left:0;left:0}.adsk-viewing-viewer .layers-panel .treeview label{padding-left:17px}"],sourceRoot:""}]);const a=s},6314:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i="",n=void 0!==t[5];return t[4]&&(i+="@supports (".concat(t[4],") {")),t[2]&&(i+="@media ".concat(t[2]," {")),n&&(i+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),i+=e(t),n&&(i+="}"),t[2]&&(i+="}"),t[4]&&(i+="}"),i})).join("")},t.i=function(e,i,n,r,o){"string"==typeof e&&(e=[[null,e,void 0]]);var s={};if(n)for(var a=0;a0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=o),i&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=i):u[2]=i),r&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=r):u[4]="".concat(r)),t.push(u))}},t}},1354:e=>{"use strict";e.exports=function(e){var t=e[1],i=e[3];if(!i)return t;if("function"==typeof btoa){var n=btoa(unescape(encodeURIComponent(JSON.stringify(i)))),r="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(n),o="/*# ".concat(r," */");return[t].concat([o]).join("\n")}return[t].join("\n")}},1873:(e,t,i)=>{var n=i(9325).Symbol;e.exports=n},2552:(e,t,i)=>{var n=i(1873),r=i(659),o=i(9350),s=n?n.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":s&&s in Object(e)?r(e):o(e)}},4128:(e,t,i)=>{var n=i(1800),r=/^\s+/;e.exports=function(e){return e?e.slice(0,n(e)+1).replace(r,""):e}},4840:(e,t,i)=>{var n="object"==typeof i.g&&i.g&&i.g.Object===Object&&i.g;e.exports=n},659:(e,t,i)=>{var n=i(1873),r=Object.prototype,o=r.hasOwnProperty,s=r.toString,a=n?n.toStringTag:void 0;e.exports=function(e){var t=o.call(e,a),i=e[a];try{e[a]=void 0;var n=!0}catch(e){}var r=s.call(e);return n&&(t?e[a]=i:delete e[a]),r}},9350:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},9325:(e,t,i)=>{var n=i(4840),r="object"==typeof self&&self&&self.Object===Object&&self,o=n||r||Function("return this")();e.exports=o},1800:e=>{var t=/\s/;e.exports=function(e){for(var i=e.length;i--&&t.test(e.charAt(i)););return i}},8221:(e,t,i)=>{var n=i(3805),r=i(124),o=i(9374),s=Math.max,a=Math.min;e.exports=function(e,t,i){var l,c,u,d,p,h,v=0,f=!1,y=!1,g=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function A(t){var i=l,n=c;return l=c=void 0,v=t,d=e.apply(n,i)}function b(e){var i=e-h;return void 0===h||i>=t||i<0||y&&e-v>=u}function w(){var e=r();if(b(e))return m(e);p=setTimeout(w,function(e){var i=t-(e-h);return y?a(i,u-(e-v)):i}(e))}function m(e){return p=void 0,g&&l?A(e):(l=c=void 0,d)}function C(){var e=r(),i=b(e);if(l=arguments,c=this,h=e,i){if(void 0===p)return function(e){return v=e,p=setTimeout(w,t),f?A(e):d}(h);if(y)return clearTimeout(p),p=setTimeout(w,t),A(h)}return void 0===p&&(p=setTimeout(w,t)),d}return t=o(t)||0,n(i)&&(f=!!i.leading,u=(y="maxWait"in i)?s(o(i.maxWait)||0,t):u,g="trailing"in i?!!i.trailing:g),C.cancel=function(){void 0!==p&&clearTimeout(p),v=0,l=h=c=p=void 0},C.flush=function(){return void 0===p?d:m(r())},C}},3805:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},346:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},4394:(e,t,i)=>{var n=i(2552),r=i(346);e.exports=function(e){return"symbol"==typeof e||r(e)&&"[object Symbol]"==n(e)}},124:(e,t,i)=>{var n=i(9325);e.exports=function(){return n.Date.now()}},9374:(e,t,i)=>{var n=i(4128),r=i(3805),o=i(4394),s=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(o(e))return NaN;if(r(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=r(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=n(e);var i=a.test(e);return i||l.test(e)?c(e.slice(2),i?2:8):s.test(e)?NaN:+e}},5072:e=>{"use strict";var t=[];function i(e){for(var i=-1,n=0;n{"use strict";var t={};e.exports=function(e,i){var n=function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}t[e]=i}return t[e]}(e);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");n.appendChild(i)}},540:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},5056:(e,t,i)=>{"use strict";e.exports=function(e){var t=i.nc;t&&e.setAttribute("nonce",t)}},7825:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(i){!function(e,t,i){var n="";i.supports&&(n+="@supports (".concat(i.supports,") {")),i.media&&(n+="@media ".concat(i.media," {"));var r=void 0!==i.layer;r&&(n+="@layer".concat(i.layer.length>0?" ".concat(i.layer):""," {")),n+=i.css,r&&(n+="}"),i.media&&(n+="}"),i.supports&&(n+="}");var o=i.sourceMap;o&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleTagTransform(n,e,t.options)}(t,e,i)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},1113:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}}},t={};function i(n){var r=t[n];if(void 0!==r)return r.exports;var o=t[n]={id:n,exports:{}};return e[n](o,o.exports,i),o.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{LayerManagerExtension:()=>P});var e=i(5072),t=i.n(e),r=i(7825),o=i.n(r),s=i(7659),a=i.n(s),l=i(5056),c=i.n(l),u=i(540),d=i.n(u),p=i(1113),h=i.n(p),v=i(2341),f={};f.styleTagTransform=h(),f.setAttributes=c(),f.insert=a().bind(null,"head"),f.domAPI=o(),f.insertStyleElement=d();t()(v.A,f);v.A&&v.A.locals&&v.A.locals;const y=i(8221),g=Autodesk.Viewing,A=Autodesk.Viewing.UI,b=Autodesk.Viewing.Private,w=g.i18n,m=A.DockingPanel,C=A.TreeDelegate,x=A.Filterbox,T=A.Tree;function L(e,t,i,n){this.viewer=e,this.setGlobalManager(e.globalManager),this.tree=null,this.layersRoot=null,this.visibilityImages={},this.isMac=-1!==navigator.userAgent.search("Mac OS");m.call(this,e.container,i,"Layers",n),this.container.classList.add("layers-panel"),this.container.style.top="10px",this.container.style.left="10px";var r=this;e.model?r.build():r.addEventListener(e,g.GEOMETRY_LOADED_EVENT,(function(){r.build()}));var o=!1;this.addVisibilityListener((function(){o||(o=!0,r.resizeToContent())}))}L.prototype=Object.create(m.prototype),L.prototype.constructor=L,L.prototype.uninitialize=function(){m.prototype.uninitialize.call(this),this.viewer=null,this.tree=null,this.layersRoot=null,this.scrollContainer=null},L.prototype.build=function(){var e=this;const t=y(((e,t)=>{b.analytics.track("viewer.layers",{from:e,action:t})}),2e3);const i=this.getDocument();var n=i.createElement("div");n.classList.add("visibility"),n.title=w.translate("Show/hide all layers"),n.addEventListener("click",function(e){e.preventDefault(),e.stopPropagation(),this.viewer.setLayerVisible(null,this.viewer.allLayersHidden()),b.analytics.track("viewer.layers",{from:"Panel",action:this.viewer.allLayersHidden()?"Show All":"Hide All"})}.bind(this)),this.container.appendChild(n),this.toogleAllVisibleButton=n;var r=null,o="",s=e.viewer;function a(){o?u&&00&&(e.height+=i[0].clientHeight*i.length),e},L.prototype.createNode=function(e,t){const i=this.getDocument();var n=i.createElement("div");n.dbId=e,n.classList.add("visibility"),n.title=w.translate("Show/hide this layer"),n.addEventListener("mousedown",function(e){e.preventDefault(),e.stopPropagation()}.bind(this)),n.addEventListener("click",function(t){t.preventDefault(),t.stopPropagation(),this.onImageClick(e,t),b.analytics.track("viewer.layers",{from:"Panel.TreeIcon",action:"Toggle Visibility"})}.bind(this)),t.appendChild(n);var r=i.createElement("label");r.textContent=this.getNodeLabel(e),t.appendChild(r)};const E=Autodesk.Viewing,k=E.Extensions.ViewerPanelMixin;function M(e){var t=e.container;L.call(this,e,t,t.id+"ViewerLayersPanel",{heightAdjustment:55}),this.onRestoreStateBinded=this.onRestoreState.bind(this),this.viewer.addEventListener(E.VIEWER_STATE_RESTORED_EVENT,this.onRestoreStateBinded)}M.prototype=Object.create(L.prototype),M.prototype.constructor=M,k.call(M.prototype),M.prototype.uninitialize=function(){this.onRestoreStateBinded&&(this.viewer.removeEventListener(E.VIEWER_STATE_RESTORED_EVENT,this.onRestoreStateBinded),this.onRestoreStateBinded=null),L.prototype.uninitialize.call(this)},M.prototype.onRestoreState=function(){this.update()},M.prototype.onClick=function(e,t){if(!this.isMac||!t.ctrlKey){var i=!(t.shiftKey||t.metaKey||t.ctrlKey);this.setLayerVisible(e,i)}},M.prototype.onRightClick=function(e,t){var i=!(t.shiftKey||t.metaKey||t.ctrlKey);this.setLayerVisible(e,i)},M.prototype.onImageClick=function(e,t){this.isMac&&t.ctrlKey||this.setLayerVisible(e)},M.prototype.onTitleClick=function(e){this.viewer.setLayerVisible(null,!0)},M.prototype.onTitleDoubleClick=function(e){this.viewer.fitToView()};const S=Autodesk.Viewing,V=Autodesk.Viewing.UI,I=Autodesk.Viewing.Private;function P(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};S.Extension.call(this,e,t),this.viewer=e,this.options=t,this.name="layermanager",this.onModelLayersInit=this.onModelLayersInit.bind(this),this.onModelAdded=this.onModelAdded.bind(this),this.layersPanel=null}P.prototype=Object.create(S.Extension.prototype),P.prototype.constructor=P;const N=P.prototype;N.load=function(){return this.viewer.addEventListener(S.MODEL_ADDED_EVENT,this.onModelAdded),this.viewer.model&&this.onModelAdded({model:this.viewer.model}),!0},N.unload=function(){return this.destroyUI(),this.viewer.removeEventListener(S.MODEL_LAYERS_LOADED_EVENT,this.onModelLayersInit),this.viewer.removeEventListener(S.MODEL_ADDED_EVENT,this.onModelAdded),!0},N.addToolbarButton=function(){if(this.viewer.settingsTools.layerButton){if(this.layersPanel){const e=this.viewer.settingsTools.layerButton.getState()===V.Button.State.ACTIVE;this.layersPanel.setVisible(e)}return}const e=new V.Button("toolbar-layers-tool");e.setToolTip("Layer Manager"),e.setIcon("adsk-icon-layers"),e.onClick=()=>{this.layersPanel.setVisible(!this.layersPanel.isVisible()),I.analytics.track("viewer.layers",{from:"Panel",action:"View List"})};let t=this.viewer.settingsTools.indexOf("toolbar-modelStructureTool");t=-1!==t?t:0,this.viewer.settingsTools.addControl(e,{index:t+1}),this.viewer.settingsTools.layerButton=e},N.createUI=function(){this.setLayersPanel(new M(this.viewer)),this.addToolbarButton()},N.removeLayersPanel=function(){this.layersPanel&&(this.viewer.removePanel(this.layersPanel),this.layersPanel.uninitialize(),this.layersPanel=null)},N.removeToolbarButton=function(){this.viewer.settingsTools&&this.viewer.settingsTools.layerButton&&(this.viewer.settingsTools.removeControl(this.viewer.settingsTools.layerButton.getId()),this.viewer.settingsTools.layerButton=null)},N.destroyUI=function(){this.removeLayersPanel(),this.removeToolbarButton()},N.onModelAdded=function(e){if(e.model.is3d()){const t=this.viewer.impl.layers;t&&t.addModel(e.model)}},N.onToolbarCreated=function(){this.viewer.hasEventListener(S.MODEL_LAYERS_LOADED_EVENT,this.onModelLayersInit)||this.viewer.addEventListener(S.MODEL_LAYERS_LOADED_EVENT,this.onModelLayersInit),this.viewer.impl.layers&&this.viewer.impl.layers.initialized&&this.onModelLayersInit()},N.setLayersPanel=function(e){this.layersPanel=e,this.viewer.addPanel(e),e.addVisibilityListener((t=>{t&&this.viewer.onPanelVisible(e,this.viewer),this.viewer.settingsTools.layerButton.setState(t?V.Button.State.ACTIVE:V.Button.State.INACTIVE)}))},N.onModelLayersInit=function(){if(!this.options.disableLayersUi){var e=this.viewer.impl.layers.getRoot();e&&e.childCount>0?(this.removeLayersPanel(),this.createUI()):this.destroyUI()}},N.activate=function(){return!!this.layersPanel&&(this.layersPanel.setVisible(!0),!0)},N.deactivate=function(){return this.layersPanel&&this.layersPanel.setVisible(!1),!0},N.isActive=function(){return!!this.layersPanel&&this.layersPanel.isVisible()},S.theExtensionManager.registerExtension("Autodesk.LayerManager",P)})(),Autodesk.Extensions.LayerManager=n})(); +//# sourceMappingURL=LayerManager.min.js.map \ No newline at end of file diff --git a/public/autodesk/extensions/MaterialConverterPrism/MaterialConverterPrism.min.js b/public/autodesk/extensions/MaterialConverterPrism/MaterialConverterPrism.min.js new file mode 100644 index 0000000..07976bd --- /dev/null +++ b/public/autodesk/extensions/MaterialConverterPrism/MaterialConverterPrism.min.js @@ -0,0 +1,18 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var e={9809:e=>{e.exports="\n#include \n#ifndef RECIPROCAL_PI\n#define RECIPROCAL_PI 0.318309886\n#endif\n#define ONE 0.00390625\nuniform float opacity;\nuniform vec3 surface_albedo;\nuniform float surface_roughness;\nuniform float surface_anisotropy;\nuniform float surface_rotation;\nuniform sampler2D importantSamplingRandomMap;\nuniform sampler2D importantSamplingSolidAngleMap;\n#if defined( PRISMOPAQUE )\nuniform vec3 opaque_albedo;\nuniform float opaque_f0;\nuniform vec3 opaque_luminance_modifier;\nuniform float opaque_luminance;\n#elif defined( PRISMMETAL )\nuniform vec3 metal_f0;\n#elif defined( PRISMLAYERED )\nuniform float layered_f0;\nuniform vec3 layered_diffuse;\nuniform float layered_fraction;\nuniform vec3 layered_bottom_f0;\nuniform float layered_roughness;\nuniform float layered_anisotropy;\nuniform float layered_rotation;\n#elif defined( PRISMTRANSPARENT )\nuniform float transparent_ior;\nuniform vec3 transparent_color;\nuniform float transparent_distance;\n#elif defined( PRISMGLAZING )\nuniform vec3 glazing_f0;\nuniform vec3 glazing_transmission_color;\nuniform float glazing_transmission_roughness;\n#elif defined( PRISMWOOD )\nuniform bool wood_fiber_cosine_enable;\nuniform int wood_fiber_cosine_bands;\nuniform vec4 wood_fiber_cosine_weights;\nuniform vec4 wood_fiber_cosine_frequencies;\nuniform bool wood_fiber_perlin_enable;\nuniform int wood_fiber_perlin_bands;\nuniform vec4 wood_fiber_perlin_weights;\nuniform vec4 wood_fiber_perlin_frequencies;\nuniform float wood_fiber_perlin_scale_z;\nuniform bool wood_growth_perlin_enable;\nuniform int wood_growth_perlin_bands;\nuniform vec4 wood_growth_perlin_weights;\nuniform vec4 wood_growth_perlin_frequencies;\nuniform float wood_latewood_ratio;\nuniform float wood_earlywood_sharpness;\nuniform float wood_latewood_sharpness;\nuniform float wood_ring_thickness;\nuniform bool wood_earlycolor_perlin_enable;\nuniform int wood_earlycolor_perlin_bands;\nuniform vec4 wood_earlycolor_perlin_weights;\nuniform vec4 wood_earlycolor_perlin_frequencies;\nuniform vec3 wood_early_color;\nuniform bool wood_use_manual_late_color;\nuniform vec3 wood_manual_late_color;\nuniform bool wood_latecolor_perlin_enable;\nuniform int wood_latecolor_perlin_bands;\nuniform vec4 wood_latecolor_perlin_weights;\nuniform vec4 wood_latecolor_perlin_frequencies;\nuniform float wood_late_color_power;\nuniform bool wood_diffuse_perlin_enable;\nuniform int wood_diffuse_perlin_bands;\nuniform vec4 wood_diffuse_perlin_weights;\nuniform vec4 wood_diffuse_perlin_frequencies;\nuniform float wood_diffuse_perlin_scale_z;\nuniform bool wood_use_pores;\nuniform int wood_pore_type;\nuniform float wood_pore_radius;\nuniform float wood_pore_cell_dim;\nuniform float wood_pore_color_power;\nuniform float wood_pore_depth;\nuniform bool wood_use_rays;\nuniform float wood_ray_color_power;\nuniform float wood_ray_seg_length_z;\nuniform float wood_ray_num_slices;\nuniform float wood_ray_ellipse_z2x;\nuniform float wood_ray_ellipse_radius_x;\nuniform bool wood_use_latewood_bump;\nuniform float wood_latewood_bump_depth;\nuniform bool wood_use_groove_roughness;\nuniform float wood_groove_roughness;\nuniform float wood_diffuse_lobe_weight;\nuniform sampler2D permutationMap;\nuniform sampler2D gradientMap;\nuniform sampler2D perm2DMap;\nuniform sampler2D permGradMap;\nuniform vec4 wood_ring_fraction;\nuniform vec2 wood_fall_rise;\n#endif\n#ifdef USE_TILING\nuniform mat4 tilingOverallTransform;\nuniform sampler2D TilingMap;\nuniform mat3 TilingMap_texMatrix;\nuniform vec4 uv2tile;\nuniform vec4 tile2uv;\nuniform vec2 tileAlignOffset;\nuniform mat4 tilingUVTransform;\n#ifdef USE_TILING_NORMAL\nuniform sampler2D TilingNormalMap;\nuniform mat3 TilingNormalMap_texMatrix;\n#endif\n#ifdef USE_TILING_RANDOM\nuniform sampler2D TilingRandomMap;\nuniform mat3 TilingRandomMap_texMatrix;\nuniform vec2 tilingRandomAxisS;\nuniform vec2 tilingRandomAxisT;\nuniform vec2 tilingRandomAlignmentOffset;\n#endif\n#endif\nuniform float envExponentMin;\nuniform float envExponentMax;\nuniform float envExponentCount;\n#include \n#if TONEMAP_OUTPUT > 0\nuniform float exposureBias;\n#include \n#endif\n#if MAX_SPOT_LIGHTS > 0 || NUM_CUTPLANES > 0\nin vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \n#include \n#ifdef USE_FOG\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\n#endif\n#if defined( USE_SURFACE_ALBEDO_MAP ) || defined( USE_SURFACE_ROUGHNESS_MAP ) || defined( USE_SURFACE_CUTOUT_MAP ) || defined( USE_SURFACE_ANISOTROPY_MAP ) || defined( USE_SURFACE_ROTATION_MAP ) || defined( USE_OPAQUE_ALBEDO_MAP ) || defined( USE_OPAQUE_F0_MAP ) || defined( USE_OPAQUE_LUMINANCE_MODIFIER_MAP ) || defined( USE_LAYERED_BOTTOM_F0_MAP ) || defined( USE_LAYERED_F0_MAP ) || defined( USE_LAYERED_DIFFUSE_MAP ) || defined( USE_LAYERED_FRACTION_MAP ) || defined( USE_LAYERED_ROUGHNESS_MAP ) || defined( USE_LAYERED_ANISOTROPY_MAP ) || defined( USE_LAYERED_ROTATION_MAP ) || defined( USE_METAL_F0_MAP ) || defined( USE_SURFACE_NORMAL_MAP ) || defined( USE_LAYERED_NORMAL_MAP )\n #define USE_MAP\n#endif\n#if defined(USE_MAP) || defined(USE_TILING)\nin vec2 vUv;\n#endif\n#if defined(PRISMWOOD) && !defined(NO_UVW)\nin vec3 vUvw;\n#endif\n#if defined( USE_SURFACE_ALBEDO_MAP )\n uniform sampler2D surface_albedo_map;\n uniform mat3 surface_albedo_map_texMatrix;\n uniform bool surface_albedo_map_invert;\n#endif\n#if defined( USE_SURFACE_ROUGHNESS_MAP )\n uniform sampler2D surface_roughness_map;\n uniform mat3 surface_roughness_map_texMatrix;\n uniform bool surface_roughness_map_invert;\n#endif\n#if defined( USE_SURFACE_CUTOUT_MAP )\n uniform sampler2D surface_cutout_map;\n uniform mat3 surface_cutout_map_texMatrix;\n uniform bool surface_cutout_map_invert;\n#endif\n#if defined( USE_SURFACE_ANISOTROPY_MAP )\n uniform sampler2D surface_anisotropy_map;\n uniform mat3 surface_anisotropy_map_texMatrix;\n uniform bool surface_anisotropy_map_invert;\n#endif\n#if defined( USE_SURFACE_ROTATION_MAP )\n uniform sampler2D surface_rotation_map;\n uniform mat3 surface_rotation_map_texMatrix;\n uniform bool surface_rotation_map_invert;\n#endif\n#if defined( USE_OPAQUE_ALBEDO_MAP )\n uniform sampler2D opaque_albedo_map;\n uniform mat3 opaque_albedo_map_texMatrix;\n uniform bool opaque_albedo_map_invert;\n#endif\n#if defined( USE_OPAQUE_F0_MAP )\n uniform sampler2D opaque_f0_map;\n uniform mat3 opaque_f0_map_texMatrix;\n uniform bool opaque_f0_map_invert;\n#endif\n#if defined( USE_OPAQUE_LUMINANCE_MODIFIER_MAP )\n uniform sampler2D opaque_luminance_modifier_map;\n uniform mat3 opaque_luminance_modifier_map_texMatrix;\n uniform bool opaque_luminance_modifier_map_invert;\n#endif\n#if defined( USE_LAYERED_BOTTOM_F0_MAP )\n uniform sampler2D layered_bottom_f0_map;\n uniform mat3 layered_bottom_f0_map_texMatrix;\n uniform bool layered_bottom_f0_map_invert;\n#endif\n#if defined( USE_LAYERED_F0_MAP )\n uniform sampler2D layered_f0_map;\n uniform mat3 layered_f0_map_texMatrix;\n uniform bool layered_f0_map_invert;\n#endif\n#if defined( USE_LAYERED_DIFFUSE_MAP )\n uniform sampler2D layered_diffuse_map;\n uniform mat3 layered_diffuse_map_texMatrix;\n uniform bool layered_diffuse_map_invert;\n#endif\n#if defined( USE_LAYERED_FRACTION_MAP )\n uniform sampler2D layered_fraction_map;\n uniform mat3 layered_fraction_map_texMatrix;\n uniform bool layered_fraction_map_invert;\n#endif\n#if defined( USE_LAYERED_ROUGHNESS_MAP )\n uniform sampler2D layered_roughness_map;\n uniform mat3 layered_roughness_map_texMatrix;\n uniform bool layered_roughness_map_invert;\n#endif\n#if defined( USE_LAYERED_ANISOTROPY_MAP )\n uniform sampler2D layered_anisotropy_map;\n uniform mat3 layered_anisotropy_map_texMatrix;\n uniform bool layered_anisotropy_map_invert;\n#endif\n#if defined( USE_LAYERED_ROTATION_MAP )\n uniform sampler2D layered_rotation_map;\n uniform mat3 layered_rotation_map_texMatrix;\n uniform bool layered_rotation_map_invert;\n#endif\n#if defined( USE_METAL_F0_MAP )\n uniform sampler2D metal_f0_map;\n uniform mat3 metal_f0_map_texMatrix;\n uniform bool metal_f0_map_invert;\n#endif\n#if defined( USE_GLAZING_F0_MAP )\n uniform sampler2D glazing_f0_map;\n uniform mat3 glazing_f0_map_texMatrix;\n uniform bool glazing_f0_map_invert;\n#endif\n#if defined( USE_GLAZING_TRANSMISSION_ROUGHNESS_MAP )\n uniform sampler2D glazing_transmission_roughness_map;\n uniform mat3 glazing_transmission_roughness_map_texMatrix;\n uniform bool glazing_transmission_roughness_map_invert;\n#endif\n#if defined( USE_GLAZING_TRANSMISSION_COLOR_MAP )\n uniform sampler2D glazing_transmission_color_map;\n uniform mat3 glazing_transmission_color_map_texMatrix;\n uniform bool glazing_transmission_color_map_invert;\n#endif\n#if defined( USE_WOOD_CURLY_DISTORTION_MAP )\n uniform sampler2D wood_curly_distortion_map;\n uniform mat3 wood_curly_distortion_map_texMatrix;\n uniform bool wood_curly_distortion_map_invert;\n#endif\n#if defined( USE_WOOD_CURLY_DISTORTION_MAP )\nuniform bool wood_curly_distortion_enable;\nuniform float wood_curly_distortion_scale;\n#endif\n#if defined( USE_SURFACE_NORMAL_MAP )\n uniform sampler2D surface_normal_map;\n uniform mat3 surface_normal_map_texMatrix;\n uniform vec2 surface_normal_map_bumpScale;\n uniform int surface_normal_map_bumpmapType;\n#endif\n#if defined( USE_LAYERED_NORMAL_MAP )\n uniform sampler2D layered_normal_map;\n uniform mat3 layered_normal_map_texMatrix;\n uniform vec2 layered_normal_map_bumpScale;\n uniform int layered_normal_map_bumpmapType;\n#endif\nfloat SRGBToLinearComponent(float color) {\n float result = color;\n if (result<=0.04045)\n result *= 0.07739938;\n else\n result = pow(abs((result+0.055)*0.947867298), 2.4);\n return result;\n}\nvec3 SRGBToLinear(vec3 color) {\n vec3 result = color;\n result.x = SRGBToLinearComponent(result.x);\n result.y = SRGBToLinearComponent(result.y);\n result.z = SRGBToLinearComponent(result.z);\n return result;\n}\n#if defined( USE_ENVMAP )\nuniform float envMapExposure;\nuniform samplerCube envMap;\n#endif\n#include \n#if !defined(USE_MAP) && (MAX_DIR_LIGHTS > 0 || MAX_POINT_LIGHTS > 0 || MAX_SPOT_LIGHTS > 0) || defined ( PRISMWOODBUMP )\nin vec3 vTangent;\nin vec3 vBitangent;\n#if defined( PRISMWOODBUMP )\nin vec3 vtNormal;\nin mat3 mNormalMatrix;\n#endif\n#endif\n#if defined( USE_ENVMAP )\nvec3 sampleReflection(vec3 N, vec3 V, float mipIndex) {\n vec3 dir = (2.0 * dot(V, N)) * N - V;\n dir = adjustLookupVector(mat3(viewMatrixInverse) * dir);\n#ifdef ENV_GAMMA\n vec4 envTexColor = textureLod( envMap, dir, mipIndex );\n return GammaDecode(envTexColor, envMapExposure);\n#elif defined(ENV_RGBM)\n vec4 envTexColor = textureLod( envMap, dir, mipIndex );\n return RGBMDecode(envTexColor, envMapExposure);\n#else\n vec4 envTexColor = texture( envMap, dir );\n vec3 cubeColor = envTexColor.xyz;\n#ifdef GAMMA_INPUT\n cubeColor *= cubeColor;\n#endif\n return cubeColor;\n#endif\n}\n#endif\n#include \n#if defined( USE_ENVMAP ) && defined( USE_IRRADIANCEMAP )\nuniform samplerCube irradianceMap;\nvec3 sampleNormal(vec3 normal) {\n vec3 worldNormal = mat3(viewMatrixInverse) * normal;\n vec3 irradiance = sampleIrradianceMap(worldNormal, irradianceMap, envMapExposure);\n irradiance = applyEnvShadow(irradiance, worldNormal);\n return irradiance;\n}\n#endif\n#if MAX_DIR_LIGHTS > 0\nuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\nuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n#endif\n#if MAX_POINT_LIGHTS > 0\nuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\nuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n#endif\n#if MAX_SPOT_LIGHTS > 0\nuniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\nuniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\nuniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\nuniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\nuniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\nuniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\n#endif\nfloat sqr(float x) {return x*x;}\nfloat aSqrd(float maxAlphaSqr, float cosTheta)\n{\n if (abs(cosTheta) < 1e-10)\n {\n return 1e10;\n }\n float tan2 = 1.0/sqr(cosTheta) - 1.0;\n return maxAlphaSqr * tan2;\n}\nvec3 Fresnel_Schlick(vec3 f0, float cosAngle)\n{\n float x = 1.0 - cosAngle;\n float x2 = x * x;\n float x5 = x * x2 * x2;\n return f0 + (1.0 - f0) * x5;\n}\nvec3 Fresnel_Rough(vec3 f0, float cosAngle, float alpha)\n{\n float x = 1.0 - cosAngle;\n float x2 = x * x;\n float x5 = x * x2 * x2;\n vec3 maxReflectance = mix(vec3(1.0), f0, vec3(min(0.7, alpha)) / 0.7);\n return f0 + (maxReflectance - f0) * x5;\n}\nfloat IORToReflectance(float ior)\n{\n return sqr((1.0 - ior)/(1.0 + ior));\n}\nvec2 RoughnessToAlpha(float roughness, float anisotropy)\n{\n vec2 alpha = roughness * vec2(1.0, 1.0 - anisotropy);\n alpha = alpha * alpha;\n alpha = clamp(alpha, 0.001, 1.0);\n return alpha;\n}\nfloat AlphaToPhong(float alpha)\n{\n return max(0.0, 2.56/alpha - 7.0);\n}\nfloat ExponentToReflMipIndex(float exponent)\n{\n float targetLog = log2(exponent);\n float minLog = log2(envExponentMin);\n float maxLog = log2(envExponentMax);\n float deltaLog = clamp(targetLog - minLog, 0.0, maxLog - minLog);\n float level = clamp((1.0-(deltaLog + 0.5) / envExponentCount), 0.0, 1.0) * 6.0;\n return level;\n}\n#include \n#if defined( ENABLEIMPORTANTSAMPLING ) && (defined( USE_SURFACE_ROTATION_MAP ) || defined( USE_SURFACE_ANISOTROPY_MAP ) || defined( USE_LAYERED_ROTATION_MAP ) || defined( USE_LAYERED_ANISOTROPY_MAP ))\n#define IMPORTANTSAMPLING\n#endif\n#include \n#if MAX_DIR_LIGHTS > 0 || MAX_POINT_LIGHTS > 0 || MAX_SPOT_LIGHTS > 0\nvec3 DiffuseLobe(vec3 diffuseColor)\n{\n return diffuseColor * RECIPROCAL_PI;\n}\nvec3 Rotate(vec3 vec, float angle)\n{\n float s = sin(angle);\n float c = cos(angle);\n return vec3(vec.x * c - vec.y * s, vec.x * s + vec.y * c, vec.z);\n}\nfloat NDF_GGX(float alphaU, float alphaV, vec3 normal)\n{\n float nx2 = sqr(normal.x);\n float ny2 = sqr(normal.y);\n float nz2 = sqr(normal.z);\n float scale = 1.0/(alphaU * alphaV * PI);\n return scale/sqr(nx2/sqr(alphaU) + ny2/sqr(alphaV) + nz2);\n}\nfloat G1_GGX(float aSqrd)\n{\n return 2.0 / (1.0 + sqrt(1.0 + aSqrd));\n}\nvec3 MicrofacetLobe(\n vec3 Hlocal, float NdotL, float NdotH, float NdotV, float VdotH,\n float roughness, float anisotropy, float rotation, vec3 reflectance)\n{\n vec2 alpha = RoughnessToAlpha(roughness, anisotropy);\n Hlocal = Rotate(Hlocal, rotation);\n vec3 F = Fresnel_Schlick(reflectance, VdotH);\n float D = NDF_GGX(alpha.x, alpha.y, Hlocal);\n float alpha2 = max(sqr(alpha.x), sqr(alpha.y));\n float alpha2NL = aSqrd(alpha2, NdotL);\n float alpha2NV = aSqrd(alpha2, NdotV);\n float G = G1_GGX(alpha2NL) * G1_GGX(alpha2NV);\n return max(F * D * G / (4.0 * NdotL * NdotV), vec3(0.0));\n}\n#if defined( PRISMOPAQUE )\nvec3 BRDF_Opaque(vec3 Hlocal, float NdotL, float NdotH, float NdotV, float VdotH,\n vec3 surfaceAlbedo, float surfaceRoughness, float surfaceAnisotropy, float surfaceRotation,\n float opaqueF0, vec3 opaqueAlbedo)\n{\n vec3 diffuse = DiffuseLobe(opaqueAlbedo);\n vec3 specular = surfaceAlbedo * MicrofacetLobe(\n Hlocal, NdotL, NdotH, NdotV, VdotH,\n surfaceRoughness, surfaceAnisotropy, surfaceRotation, vec3(opaqueF0));\n return (specular+diffuse)*NdotL;\n}\n#elif defined( PRISMMETAL )\nvec3 BRDF_Metal(vec3 Hlocal, float NdotL, float NdotH, float NdotV, float VdotH,\n vec3 surfaceAlbedo, float surfaceRoughness, float surfaceAnisotropy, float surfaceRotation,\n vec3 metalF0)\n{\n vec3 specular = surfaceAlbedo * MicrofacetLobe(\n Hlocal, NdotL, NdotH, NdotV, VdotH,\n surfaceRoughness, surfaceAnisotropy, surfaceRotation, metalF0);\n return specular*NdotL;\n}\n#elif defined( PRISMLAYERED )\nvec3 BRDF_Layered(vec3 Hlocal, float NdotL, float NdotH, float NdotV, float VdotH,\n vec3 Hlocal2, float N2dotL, float N2dotH, float N2dotV,\n vec3 surfaceAlbedo, float surfaceRoughness, float surfaceAnisotropy, float surfaceRotation,\n float layeredF0, vec3 layeredDiffuse, float layeredRoughness, float layeredAnisotropy,\n float layeredRotation, vec3 bottom_f0, float layeredFraction)\n{\n vec3 Fl = Fresnel_Schlick(vec3(layeredF0), NdotL);\n vec3 Fv = Fresnel_Schlick(vec3(layeredF0), NdotV);\n vec3 amount = (1.0 - Fl) * (1.0 - Fv);\n vec3 topSpecular = surfaceAlbedo * MicrofacetLobe(\n Hlocal, NdotL, NdotH, NdotV, VdotH,\n surfaceRoughness, surfaceAnisotropy, surfaceRotation,\n vec3(layeredF0));\n vec3 topDiffuse = DiffuseLobe(layeredDiffuse);\n vec3 botSpecular = MicrofacetLobe(\n Hlocal2, N2dotL, N2dotH, N2dotV, VdotH,\n layeredRoughness, layeredAnisotropy, layeredRotation,\n bottom_f0);\n return topSpecular*NdotL + amount * mix(topDiffuse*NdotL, botSpecular*N2dotL, layeredFraction);\n}\n#elif defined( PRISMTRANSPARENT )\nvec3 BRDF_Transparent(vec3 Hlocal, float NdotL, float NdotH, float NdotV, float VdotH,\n vec3 surfaceAlbedo, float surfaceRoughness, float surfaceAnisotropy, float surfaceRotation)\n{\n vec3 reflectance = vec3(IORToReflectance(transparent_ior));\n vec3 specular = surfaceAlbedo * MicrofacetLobe(\n Hlocal, NdotL, NdotH, NdotV, VdotH,\n surfaceRoughness, surfaceAnisotropy, surfaceRotation, reflectance);\n return specular*NdotL;\n}\n#elif defined( PRISMGLAZING )\nvec3 BRDF_Glazing(vec3 Hlocal, float NdotL, float NdotH, float NdotV, float VdotH,\n vec3 surfaceAlbedo, float surfaceRoughness, float surfaceAnisotropy, float surfaceRotation,\n vec3 glazingF0, vec3 glazingTransmissionColor, float glazingIlluminance)\n{\n vec3 diffuse = DiffuseLobe(glazingTransmissionColor - vec3(glazingIlluminance, glazingIlluminance, glazingIlluminance));\n vec3 specular = surfaceAlbedo * MicrofacetLobe(\n Hlocal, NdotL, NdotH, NdotV, VdotH,\n surfaceRoughness, surfaceAnisotropy, surfaceRotation, glazingF0);\n return (specular+diffuse)*NdotL;\n}\n#elif defined( PRISMWOOD )\nvec3 BRDF_Wood(vec3 Hlocal, float NdotL, float NdotH, float NdotV, float VdotH,\n vec3 surfaceAlbedo, float surfaceRoughness, vec3 woodDiffuse)\n{\n vec3 diffuse = DiffuseLobe(woodDiffuse);\n vec3 specular = surfaceAlbedo * MicrofacetLobe(\n Hlocal, NdotL, NdotH, NdotV, VdotH,\n surfaceRoughness, 0.0, 0.0, vec3(0.04));\n return (specular+diffuse)*NdotL;\n}\n#endif\n#endif\n#if defined( USE_ENVMAP )\n#if defined( PRISMOPAQUE )\nvec3 Environment_Opaque(vec3 N, vec3 V, float NdotV, vec3 surfaceAlbedo, float surfaceRoughness,\n float opaqueF0, vec3 opaqueAlbedo, float surfaceAnisotropy, float surfaceRotation, vec3 Tu, vec3 Tv)\n{\n float alpha = RoughnessToAlpha(surfaceRoughness, 0.0).x;\n vec3 F = Fresnel_Rough(vec3(opaqueF0), NdotV, alpha);\n#if defined( IMPORTANTSAMPLING )\n vec3 specular = surfaceAlbedo * ImportanceSamplingSpecular(surfaceRotation, vec3(opaqueF0), surfaceRoughness, surfaceAnisotropy, V, N, Tu, Tv);\n#else\n float exponent = AlphaToPhong(alpha);\n float reflMipIndex = ExponentToReflMipIndex(exponent);\n vec3 envSpecular = sampleReflection(N, V, reflMipIndex);\n vec3 specular = F* surfaceAlbedo * envSpecular;\n#endif\n#if defined( USE_IRRADIANCEMAP )\n vec3 envIrradiance = sampleNormal(N);\n#else\n vec3 envIrradiance = vec3(1.0);\n#endif\n vec3 diffuse = (1.0 - F) * opaqueAlbedo * envIrradiance;\n return diffuse + specular;\n}\n#elif defined( PRISMMETAL )\nvec3 Environment_Metal(vec3 N, vec3 V, float NdotV, vec3 surfaceAlbedo, float surfaceRoughness, vec3 metalF0, float surfaceAnisotropy, float surfaceRotation, vec3 Tu, vec3 Tv)\n{\n#if defined( IMPORTANTSAMPLING )\n vec3 specular = surfaceAlbedo * ImportanceSamplingSpecular(surfaceRotation, metalF0, surfaceRoughness, surfaceAnisotropy, V, N, Tu, Tv);\n#else\n float alpha = RoughnessToAlpha(surfaceRoughness, 0.0).x;\n float exponent = AlphaToPhong(alpha);\n float reflMipIndex = ExponentToReflMipIndex(exponent);\n vec3 F = Fresnel_Rough(metalF0, NdotV, alpha);\n vec3 envSpecular = sampleReflection(N, V, reflMipIndex);\n vec3 specular = F * surfaceAlbedo * envSpecular;\n#endif\n return specular;\n}\n#elif defined( PRISMLAYERED )\nvec3 Environment_Layered(vec3 N, vec3 V, float NdotV, vec3 N2, float N2dotV, vec3 surfaceAlbedo, float surfaceRoughness,\n float layeredF0, float surfaceAnisotropy, float surfaceRotation, vec3 Tu, vec3 Tv, vec3 layeredDiffuse, float layeredRoughness,\n float layeredAnisotropy, float layeredRotation, vec3 bottom_f0, float layeredFraction)\n{\n vec3 F = Fresnel_Schlick(vec3(layeredF0), NdotV);\n float alpha = RoughnessToAlpha(surfaceRoughness, 0.0).x;\n#if defined( IMPORTANTSAMPLING )\n vec3 topSpecular = surfaceAlbedo * ImportanceSamplingSpecular(surfaceRotation, vec3(layeredF0), surfaceRoughness, surfaceAnisotropy, V, N, Tu, Tv);\n#else\n float exponent = AlphaToPhong(alpha);\n float reflMipIndex = ExponentToReflMipIndex(exponent);\n vec3 envSpecular = sampleReflection(N, V, reflMipIndex);\n vec3 topSpecular = F * surfaceAlbedo * envSpecular;\n#endif\n vec3 amount = (1.0 - F);\n#if defined( USE_IRRADIANCEMAP )\n vec3 envIrradiance = sampleNormal(N);\n#else\n vec3 envIrradiance = vec3(1.0);\n#endif\n vec3 topDiffuse = layeredDiffuse * envIrradiance;\n#if defined( IMPORTANTSAMPLING )\n vec3 botSpecular = ImportanceSamplingSpecular(layeredRotation, bottom_f0, layeredRoughness, layeredAnisotropy, V, N2, Tu, Tv);\n#else\n alpha = RoughnessToAlpha(layeredRoughness, 0.0).x;\n exponent = AlphaToPhong(alpha);\n reflMipIndex = ExponentToReflMipIndex(exponent);\n envSpecular = sampleReflection(N2, V, reflMipIndex);\n F = Fresnel_Rough(bottom_f0, N2dotV, alpha);\n vec3 botSpecular = F * envSpecular;\n#endif\n return topSpecular + amount * mix(topDiffuse, botSpecular, layeredFraction);\n}\n#elif defined( PRISMTRANSPARENT )\nvec3 Environment_Transparent(vec3 N, vec3 V, float NdotV, vec3 surfaceAlbedo, float surfaceRoughness, float surfaceAnisotropy, float surfaceRotation, vec3 Tu, vec3 Tv)\n{\n vec3 reflectance = vec3(IORToReflectance(transparent_ior));\n float alpha = RoughnessToAlpha(surfaceRoughness, 0.0).x;\n vec3 F = Fresnel_Rough(reflectance, NdotV, alpha);\n#if defined( IMPORTANTSAMPLING )\n vec3 specular = surfaceAlbedo * ImportanceSamplingSpecular(surfaceRotation, reflectance, surfaceRoughness, surfaceAnisotropy, V, N, Tu, Tv);\n#else\n float exponent = AlphaToPhong(alpha);\n float reflMipIndex = ExponentToReflMipIndex(exponent);\n vec3 envSpecular = sampleReflection(N, V, reflMipIndex);\n vec3 specular = F * surfaceAlbedo * envSpecular;\n#endif\n#if defined( USE_IRRADIANCEMAP )\n vec3 envIrradiance = sampleNormal(N);\n#else\n vec3 envIrradiance = vec3(1.0);\n#endif\n vec3 color = F * surfaceRoughness * transparent_color * envIrradiance;\n return specular + color;\n}\n#elif defined( PRISMGLAZING )\nvec3 Environment_Glazing(vec3 N, vec3 V, float NdotV, vec3 surfaceAlbedo, float surfaceRoughness, float surfaceAnisotropy, float surfaceRotation, vec3 Tu, vec3 Tv,\n vec3 glazing_f0, vec3 transmissionF, float transmissionAlpha, vec3 glazingAdjustedColor, float glazingIlluminace)\n{\n float surfaceAlpha = RoughnessToAlpha(surfaceRoughness, 0.0).x;\n vec3 surfaceF = Fresnel_Rough(glazing_f0, NdotV, surfaceAlpha);\n#if defined( IMPORTANTSAMPLING )\n vec3 specular = surfaceAlbedo * ImportanceSamplingSpecular(surfaceRotation, glazing_f0, surfaceRoughness, surfaceAnisotropy, V, N, Tu, Tv);\n#else\n float exponent = AlphaToPhong(surfaceAlpha);\n float reflMipIndex = ExponentToReflMipIndex(exponent);\n vec3 envSpecular = sampleReflection(N, V, reflMipIndex);\n vec3 specular = surfaceF * surfaceAlbedo * envSpecular;\n#endif\n#if defined( USE_IRRADIANCEMAP )\n vec3 envIrradiance = sampleNormal(N);\n#else\n vec3 envIrradiance = vec3(1.0);\n#endif\n vec3 color = 0.5 * (1.0 - transmissionF) * (glazingAdjustedColor - vec3(glazingIlluminace, glazingIlluminace, glazingIlluminace)) * envIrradiance; \n return specular + color;\n}\n#elif defined( PRISMWOOD )\nvec3 Environment_Wood(vec3 N, vec3 V, float NdotV, vec3 surfaceAlbedo, float surfaceRoughness, vec3 woodDiffuse, float surfaceAnisotropy, float surfaceRotation, vec3 Tu, vec3 Tv)\n{\n float alpha = RoughnessToAlpha(surfaceRoughness, 0.0).x;\n vec3 F = Fresnel_Rough(vec3(0.04), NdotV, alpha);\n#if defined( IMPORTANTSAMPLING )\n vec3 specular = surfaceAlbedo * ImportanceSamplingSpecular(surfaceRotation, vec3(0.04), surfaceRoughness, surfaceAnisotropy, V, N, Tu, Tv);\n#else\n float exponent = AlphaToPhong(alpha);\n float reflMipIndex = ExponentToReflMipIndex(exponent);\n vec3 envSpecular = sampleReflection(N, V, reflMipIndex);\n vec3 specular = F * surfaceAlbedo * envSpecular;\n#endif\n#if defined( USE_IRRADIANCEMAP )\n vec3 envIrradiance = sampleNormal(N);\n#else\n vec3 envIrradiance = vec3(1.0);\n#endif\n vec3 diffuse = (1.0 - F) * woodDiffuse * envIrradiance;\n return diffuse + specular;\n}\n#endif\n#endif\n#if defined( PRISMTRANSPARENT )\n#include \n#elif defined( PRISMGLAZING )\n#include \n#endif\n#ifdef USE_TILING\nvec3 tilingTransform(vec2 uv, mat4 transform)\n{\n\treturn (transform * vec4(uv, 0.0, 1.0)).xyz;\n}\nvec4 tilingMapTest(sampler2D tilingSampler, mat3 transf, vec3 uv, vec4 uv2tile, vec4 tile2uv)\n{\n\tvec2 tileCoord = vec2(dot(uv2tile.xz, uv.xy), dot(uv2tile.yw, uv.xy));\n\tvec2 ijBase = floor(tileCoord);\n vec2 fracC = fract(tileCoord);\n\tvec2 st = vec2(dot(tile2uv.xz, fracC), dot(tile2uv.yw, fracC));\n\tvec4 tileInfo = vec4(0.0, 0.0, 2.0, 2.0);\n\tvec2 iOffset = float(TILE_RANGE_X_MIN) * tile2uv.xy;\n\tvec2 jBaseOffset = float(TILE_RANGE_Y_MIN) * tile2uv.zw;\n\tfor( int i = TILE_RANGE_X_MIN; i <= TILE_RANGE_X_MAX; i++)\n\t{\n\t\tvec2 jOffset = jBaseOffset;\n\t\tfor( int j = TILE_RANGE_Y_MIN; j <= TILE_RANGE_Y_MAX; j++)\n\t\t{\n\t\t\tvec2 sampleUV = st + iOffset + jOffset;\n\t\t\tjOffset += tile2uv.zw;\n\t\t\tsampleUV = (transf * vec3(sampleUV, 1.0)).xy;\n\t\t\tvec4 tex = texture(tilingSampler, sampleUV);\n\t\t\tfloat d = max( min(tex.r, tex.g), min( max(tex.r, tex.g), tex.b));\n if (d < tileInfo.z) {\n\t\t\t\ttileInfo.xy = vec2(float(i),float(j));\n\t\t\t\ttileInfo.w = tileInfo.z;\n\t\t\t\ttileInfo.z = d;\n\t\t\t} else {\n\t\t\t\ttileInfo.w = min(tileInfo.w, d);\n\t\t\t}\n\t\t}\n\t\tiOffset += tile2uv.xy;\n\t}\n\ttileInfo.zw = tileInfo.zw - 0.5;\n\tfloat w = clamp(tileInfo.z/max(fwidth(tileInfo.z), 0.000001) + 0.5, 0.0, 1.0);\n\tif ( w == 1.0 )\n\t\tdiscard;\n \tif (abs(tileInfo.w)<=abs(tileInfo.z))\n\t\tw = 0.0;\n\ttileInfo.w = 1.0 - w;\n\ttileInfo.xy -= ijBase;\n\treturn tileInfo;\n}\nvec2 tilingSubMaterialRelocate(vec3 uv, vec4 tileInfo, vec4 tile2uv)\n{\n\tvec2 offset = vec2(dot(tile2uv.xz, tileInfo.xy), dot(tile2uv.yw, tileInfo.xy));\n\treturn (uv.xy + offset);\n}\n#ifdef USE_TILING_RANDOM\nvec2 tilingRandom(vec2 uv, vec4 tileInfo, sampler2D randomSampler, mat3 transf, vec2 tileTextureAxisS, vec2 tileTextureAxisT, vec2 tile2TextureOffset)\n{\n vec2 xti = (vec3(tileInfo.xy, 1.0) * transf).xy;\n vec4 random = texture(randomSampler, xti);\n vec2 randomOffset = vec2(tileTextureAxisS.x*random.z + tileTextureAxisT.x*random.w,\n tileTextureAxisS.y*random.z + tileTextureAxisT.y*random.w) + tile2TextureOffset;\n return uv + randomOffset;\n}\n#endif\nvoid tilingNormalOffset(\n sampler2D bumpTexture,\n vec2 uv,\n mat3 transform,\n inout vec3 T,\n inout vec3 B,\n inout vec3 N\n) {\n vec2 st = (vec3(uv, 1.0) * transform).xy;\n vec3 distort = (2.0 * texture(bumpTexture, st).xyz - 1.0) - vec3(0.0,0.0,1.0);\n mat3 mat = mat3(\n T.x, B.x, N.x,\n T.y, B.y, N.y,\n T.z, B.z, N.z\n );\n N = normalize(N + (mat*distort));\n}\n#endif\nin vec3 vNormal;\nin vec3 vViewPosition;\n#include \nvoid main() {\n#if NUM_CUTPLANES > 0\n checkCutPlanes(vWorldPosition);\n#endif\n vec3 N = normalize(vNormal);\n vec3 Tu = vec3(0.0);\n vec3 Tv = vec3(0.0);\n#if defined(USE_MAP) || defined(USE_TILING)\n vec2 uv = vUv;\n#endif\n#ifdef USE_TILING\n vec3 v_tilingOverallTransf = tilingTransform( vUv, tilingOverallTransform );\n vec4 v_TilingMap = tilingMapTest( TilingMap, TilingMap_texMatrix, v_tilingOverallTransf, uv2tile, tile2uv );\n uv = tilingSubMaterialRelocate( v_tilingOverallTransf, v_TilingMap, tile2uv ) + tileAlignOffset;\n#ifdef USE_TILING_NORMAL\n vec2 uvNorm = uv;\n#endif\n#ifdef USE_TILING_RANDOM\n uv = tilingRandom( uv, v_TilingMap, TilingRandomMap, TilingRandomMap_texMatrix, tilingRandomAxisS, tilingRandomAxisT, tilingRandomAlignmentOffset );\n#endif\n uv = tilingTransform( uv, tilingUVTransform ).xy;\n#endif\n#if defined( USE_SURFACE_NORMAL_MAP ) || defined( USE_LAYERED_NORMAL_MAP ) || MAX_DIR_LIGHTS > 0 || MAX_POINT_LIGHTS > 0 || MAX_SPOT_LIGHTS > 0 || defined( PRISMWOODBUMP ) || defined( IMPORTANTSAMPLING )\n#if !defined(USE_MAP) || defined( PRISMWOODBUMP )\n Tu = normalize(vTangent);\n Tv = normalize(vBitangent);\n#else\n vec3 q0 = dFdx( -vViewPosition );\n vec3 q1 = dFdy( -vViewPosition );\n vec2 st0 = dFdx( uv );\n vec2 st1 = dFdy( uv );\n Tu = normalize( q0 * st1.t - q1 * st0.t );\n Tv = normalize( -q0 * st1.s + q1 * st0.s );\n#endif\n#endif\n vec3 V;\n if (projectionMatrix[3][3] == 0.0) {\n V = normalize( vViewPosition );\n } else {\n V = vec3(0.0, 0.0, 1.0);\n }\n N = faceforward(N, -V, N);\n#if defined(PRISMLAYERED)\n vec3 N2 = N;\n#endif\n#ifndef FLAT_SHADED\n vec3 normal = normalize( vNormal );\n#ifdef DOUBLE_SIDED\n normal = normal * ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n#endif\n#else\n vec3 fdx = dFdx( vViewPosition );\n vec3 fdy = dFdy( vViewPosition );\n vec3 normal = normalize( cross( fdx, fdy ) );\n#endif\n vec3 geomNormal = normal;\n#if defined( USE_SURFACE_NORMAL_MAP )\n if (surface_normal_map_bumpmapType == 0)\n heightMapTransform(surface_normal_map, uv, surface_normal_map_texMatrix, surface_normal_map_bumpScale, Tu, Tv, N);\n else\n normalMapTransform(surface_normal_map, uv, surface_normal_map_texMatrix, surface_normal_map_bumpScale, Tu, Tv, N);\n#endif\n#if defined( USE_LAYERED_NORMAL_MAP )\n if (layered_normal_map_bumpmapType == 0)\n heightMapTransform(layered_normal_map, uv, layered_normal_map_texMatrix, layered_normal_map_bumpScale, Tu, Tv, N2);\n else\n normalMapTransform(layered_normal_map, uv, layered_normal_map_texMatrix, layered_normal_map_bumpScale, Tu, Tv, N2);\n#endif\n#ifdef USE_TILING_NORMAL\n tilingNormalOffset(TilingNormalMap, uvNorm, TilingNormalMap_texMatrix, Tu, Tv, N);\n#endif\n#if defined( PRISMWOOD )\n#ifdef NO_UVW\n vec3 p = vec3(0.0);\n#elif defined( USE_WOOD_CURLY_DISTORTION_MAP )\n vec3 p = DistortCurly(vUvw);\n#else\n vec3 p = vUvw;\n#endif\n#if !defined( NO_UVW ) && defined( PRISMWOODBUMP )\n getFinalWoodContext(\n N, V, Tu, Tv, p,\n normal, vtNormal, vNormalMatrix\n );\n#endif\n#endif\n float NdotV = clamp(dot(N, V), EPSILON, 1.0);\n#if defined(PRISMLAYERED)\n float N2dotV = clamp(dot(N2, V), EPSILON, 1.0);\n#endif\n vec3 surfaceAlbedo;\n #if defined( USE_SURFACE_ALBEDO_MAP )\n vec2 uv_surface_albedo_map = (surface_albedo_map_texMatrix * vec3(uv, 1.0)).xy;\n SURFACE_ALBEDO_CLAMP_TEST;\n surfaceAlbedo = texture(surface_albedo_map, uv_surface_albedo_map).xyz;\n surfaceAlbedo = SRGBToLinear(surfaceAlbedo);\n if(surface_albedo_map_invert) surfaceAlbedo = vec3(1.0) - surfaceAlbedo;\n #else\n surfaceAlbedo = surface_albedo;\n #endif\n float surfaceRoughness;\n #if defined( USE_SURFACE_ROUGHNESS_MAP )\n vec2 uv_surface_roughness_map = (surface_roughness_map_texMatrix * vec3(uv, 1.0)).xy;\n SURFACE_ROUGHNESS_CLAMP_TEST;\n vec3 surfaceRoughness_v3 = texture(surface_roughness_map, uv_surface_roughness_map).xyz;\n if(surface_roughness_map_invert) surfaceRoughness_v3 = vec3(1.0) - surfaceRoughness_v3;\n surfaceRoughness = average(surfaceRoughness_v3);\n #else\n surfaceRoughness = surface_roughness;\n #endif\n float surfaceAnisotropy;\n #if defined( USE_SURFACE_ANISOTROPY_MAP )\n vec2 uv_surface_anisotropy_map = (surface_anisotropy_map_texMatrix * vec3(uv, 1.0)).xy;\n SURFACE_ANISOTROPY_CLAMP_TEST;\n vec3 surfaceAnisotropy_v3 = texture(surface_anisotropy_map, uv_surface_anisotropy_map).xyz;\n if(surface_anisotropy_map_invert) surfaceAnisotropy_v3 = vec3(1.0) - surfaceAnisotropy_v3;\n surfaceAnisotropy = average(surfaceAnisotropy_v3);\n #else\n surfaceAnisotropy = surface_anisotropy;\n #endif\n float surfaceRotation;\n #if defined( USE_SURFACE_ROTATION_MAP )\n vec2 uv_surface_rotation_map = (surface_rotation_map_texMatrix * vec3(uv, 1.0)).xy;\n SURFACE_ROTATION_CLAMP_TEST;\n vec3 surfaceRotation_v3 = texture(surface_rotation_map, uv_surface_rotation_map).xyz;\n if(surface_rotation_map_invert) surfaceRotation_v3 = vec3(1.0) - surfaceRotation_v3;\n surfaceRotation = average(surfaceRotation_v3);\n #else\n surfaceRotation = surface_rotation;\n #endif\n #if defined(PRISMOPAQUE)\n float opaqueF0;\n #if defined( USE_OPAQUE_F0_MAP )\n vec2 uv_opaque_f0_map = (opaque_f0_map_texMatrix * vec3(uv, 1.0)).xy;\n OPAQUE_F0_CLAMP_TEST;\n vec3 opaqueF0_v3 = texture(opaque_f0_map, uv_opaque_f0_map).xyz;\n if(opaque_f0_map_invert) opaqueF0_v3 = vec3(1.0) - opaqueF0_v3;\n opaqueF0 = average(opaqueF0_v3);\n #else\n opaqueF0 = opaque_f0;\n #endif\n vec3 opaqueAlbedo;\n #if defined( USE_OPAQUE_ALBEDO_MAP )\n vec2 uv_opaque_albedo_map = (opaque_albedo_map_texMatrix * vec3(uv, 1.0)).xy;\n OPAQUE_ALBEDO_CLAMP_TEST;\n opaqueAlbedo = texture(opaque_albedo_map, uv_opaque_albedo_map).xyz;\n opaqueAlbedo = SRGBToLinear(opaqueAlbedo);\n if(opaque_albedo_map_invert) opaqueAlbedo = vec3(1.0) - opaqueAlbedo;\n #else\n opaqueAlbedo = opaque_albedo;\n #endif\n #elif defined(PRISMMETAL)\n vec3 metalF0;\n #if defined( USE_METAL_F0_MAP )\n vec2 uv_metal_f0_map = (metal_f0_map_texMatrix * vec3(uv, 1.0)).xy;\n METAL_F0_CLAMP_TEST;\n metalF0 = texture(metal_f0_map, uv_metal_f0_map).xyz;\n metalF0 = SRGBToLinear(metalF0);\n if(metal_f0_map_invert) metalF0 = vec3(1.0) - metalF0;\n #else\n metalF0 = metal_f0;\n #endif\n #elif defined(PRISMLAYERED)\n float layeredF0;\n #if defined( USE_LAYERED_F0_MAP )\n vec2 uv_layered_f0_map = (layered_f0_map_texMatrix * vec3(uv, 1.0)).xy;\n LAYERED_F0_CLAMP_TEST;\n vec3 layeredF0_v3 = texture(layered_f0_map, uv_layered_f0_map).xyz;\n if(layered_f0_map_invert) layeredF0_v3 = vec3(1.0) - layeredF0_v3;\n layeredF0 = average(layeredF0_v3);\n #else\n layeredF0 = layered_f0;\n #endif\n vec3 layeredDiffuse;\n #if defined( USE_LAYERED_DIFFUSE_MAP )\n vec2 uv_layered_diffuse_map = (layered_diffuse_map_texMatrix * vec3(uv, 1.0)).xy;\n LAYERED_DIFFUSE_CLAMP_TEST;\n layeredDiffuse = texture(layered_diffuse_map, uv_layered_diffuse_map).xyz;\n layeredDiffuse = SRGBToLinear(layeredDiffuse);\n if(layered_diffuse_map_invert) layeredDiffuse = vec3(1.0) - layeredDiffuse;\n #else\n layeredDiffuse = layered_diffuse;\n #endif\n float layeredRoughness;\n #if defined( USE_LAYERED_ROUGHNESS_MAP )\n vec2 uv_layered_roughness_map = (layered_roughness_map_texMatrix * vec3(uv, 1.0)).xy;\n LAYERED_ROUGHNESS_CLAMP_TEST;\n vec3 layeredRoughness_v3 = texture(layered_roughness_map, uv_layered_roughness_map).xyz;\n if(layered_roughness_map_invert) layeredRoughness_v3 = vec3(1.0) - layeredRoughness_v3;\n layeredRoughness = average(layeredRoughness_v3);\n #else\n layeredRoughness = layered_roughness;\n #endif\n float layeredAnisotropy;\n #if defined( USE_LAYERED_ANISOTROPY_MAP )\n vec2 uv_layered_anisotropy_map = (layered_anisotropy_map_texMatrix * vec3(uv, 1.0)).xy;\n LAYERED_ANISOTROPY_CLAMP_TEST;\n vec3 layeredAnisotropy_v3 = texture(layered_anisotropy_map, uv_layered_anisotropy_map).xyz;\n if(layered_anisotropy_map_invert) layeredAnisotropy_v3 = vec3(1.0) - layeredAnisotropy_v3;\n layeredAnisotropy = average(layeredAnisotropy_v3);\n #else\n layeredAnisotropy = layered_anisotropy;\n #endif\n float layeredRotation;\n #if defined( USE_LAYERED_ROTATION_MAP )\n vec2 uv_layered_rotation_map = (layered_rotation_map_texMatrix * vec3(uv, 1.0)).xy;\n LAYERED_ROTATION_CLAMP_TEST;\n vec3 layeredRotation_v3 = texture(layered_rotation_map, uv_layered_rotation_map).xyz;\n if(layered_rotation_map_invert) layeredRotation_v3 = vec3(1.0) - layeredRotation_v3;\n layeredRotation = average(layeredRotation_v3);\n #else\n layeredRotation = layered_rotation;\n #endif\n vec3 bottom_f0;\n #if defined( USE_LAYERED_BOTTOM_F0_MAP )\n vec2 uv_layered_bottom_f0_map = (layered_bottom_f0_map_texMatrix * vec3(uv, 1.0)).xy;\n LAYERED_BOTTOM_F0_CLAMP_TEST;\n bottom_f0 = texture(layered_bottom_f0_map, uv_layered_bottom_f0_map).xyz;\n bottom_f0 = SRGBToLinear(bottom_f0);\n if(layered_bottom_f0_map_invert) bottom_f0 = vec3(1.0) - bottom_f0;\n #else\n bottom_f0 = layered_bottom_f0;\n #endif\n float layeredFraction;\n #if defined( USE_LAYERED_FRACTION_MAP )\n vec2 uv_layered_fraction_map = (layered_fraction_map_texMatrix * vec3(uv, 1.0)).xy;\n LAYERED_FRACTION_CLAMP_TEST;\n vec3 layeredFraction_v3 = texture(layered_fraction_map, uv_layered_fraction_map).xyz;\n if(layered_fraction_map_invert) layeredFraction_v3 = vec3(1.0) - layeredFraction_v3;\n layeredFraction = average(layeredFraction_v3);\n #else\n layeredFraction = layered_fraction;\n #endif\n #elif defined( PRISMGLAZING )\n vec3 glazingTransmissionColor;\n #if defined( USE_GLAZING_TRANSMISSION_COLOR_MAP )\n vec2 uv_glazing_transmission_color_map = (glazing_transmission_color_map_texMatrix * vec3(uv, 1.0)).xy;\n GLAZING_TRANSMISSION_COLOR_CLAMP_TEST;\n glazingTransmissionColor = texture(glazing_transmission_color_map, uv_glazing_transmission_color_map).xyz;\n glazingTransmissionColor = SRGBToLinear(glazingTransmissionColor);\n if(glazing_transmission_color_map_invert) glazingTransmissionColor = vec3(1.0) - glazingTransmissionColor;\n #else\n glazingTransmissionColor = glazing_transmission_color;\n #endif\n vec3 glazingF0;\n #if defined( USE_GLAZING_F0_MAP )\n vec2 uv_glazing_f0_map = (glazing_f0_map_texMatrix * vec3(uv, 1.0)).xy;\n GLAZING_F0_CLAMP_TEST;\n glazingF0 = texture(glazing_f0_map, uv_glazing_f0_map).xyz;\n glazingF0 = SRGBToLinear(glazingF0);\n if(glazing_f0_map_invert) glazingF0 = vec3(1.0) - glazingF0;\n #else\n glazingF0 = glazing_f0;\n #endif\n float glazingTransmissionRoughness;\n #if defined( USE_GLAZING_TRANSMISSION_ROUGHNESS_MAP )\n vec2 uv_glazing_transmission_roughness_map = (glazing_transmission_roughness_map_texMatrix * vec3(uv, 1.0)).xy;\n GLAZING_TRANSMISSION_ROUGHNESS_CLAMP_TEST;\n vec3 glazingTransmissionRoughness_v3 = texture(glazing_transmission_roughness_map, uv_glazing_transmission_roughness_map).xyz;\n if(glazing_transmission_roughness_map_invert) glazingTransmissionRoughness_v3 = vec3(1.0) - glazingTransmissionRoughness_v3;\n glazingTransmissionRoughness = average(glazingTransmissionRoughness_v3);\n #else\n glazingTransmissionRoughness = glazing_transmission_roughness;\n #endif\n vec3 glazingAdjustedColor = TransmitAdjust(glazingTransmissionColor, glazingF0);\n float glazingIlluminace = ColorToIlluminance(glazingAdjustedColor);\n float transmissionAlpha = RoughnessToAlpha(glazingTransmissionRoughness, 0.0).x;\n vec3 transmissionF = Fresnel_Rough(glazingF0, NdotV, transmissionAlpha);\n#elif defined(PRISMWOOD)\n vec3 woodDiffuse = NoiseWood(p, surfaceRoughness);\n#endif\n vec3 outRadianceLight = vec3(0.0);\n#if MAX_DIR_LIGHTS > 0 || MAX_POINT_LIGHTS > 0 || MAX_SPOT_LIGHTS > 0\n vec3 lightDirection[ MAX_DIR_LIGHTS + MAX_POINT_LIGHTS + MAX_SPOT_LIGHTS ];\n vec3 lightColor[ MAX_DIR_LIGHTS + MAX_POINT_LIGHTS + MAX_SPOT_LIGHTS ];\n#if MAX_DIR_LIGHTS > 0\n for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\n lightDirection[i] = normalize( lDirection.xyz );\n lightColor[i] = SRGBToLinear(directionalLightColor[ i ]);\n }\n#endif\n#if MAX_POINT_LIGHTS > 0\n for( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\n vec3 lVector = lPosition.xyz + vViewPosition.xyz;\n lightDirection[MAX_DIR_LIGHTS + i] = normalize( lVector );\n float lDistance = 1.0;\n if ( pointLightDistance[ i ] > 0.0 )\n lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\n lightColor[MAX_DIR_LIGHTS + i] = SRGBToLinear(pointLightColor[ i ]) * lDistance;\n }\n#endif\n#if MAX_SPOT_LIGHTS > 0\n for( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\n vec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\n vec3 lVector = lPosition.xyz + vViewPosition.xyz;\n lightDirection[MAX_DIR_LIGHTS + MAX_POINT_LIGHTS + i] = normalize( lVector );\n float lDistance = 1.0;\n if ( spotLightDistance[ i ] > 0.0 )\n lDistance = 1.0 - min( ( length( lVector ) / spotLightDistance[ i ] ), 1.0 );\n float spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - vWorldPosition ) );\n if ( spotEffect > spotLightAngleCos[ i ] ) {\n spotEffect = max( pow( spotEffect, spotLightExponent[ i ] ), 0.0 );\n } else {\n spotEffect = 0.0;\n }\n lightColor[MAX_DIR_LIGHTS + MAX_POINT_LIGHTS + i] = SRGBToLinear(spotLightColor[ i ]) * lDistance * spotEffect;\n }\n#endif\n for( int i = 0; i < MAX_DIR_LIGHTS + MAX_POINT_LIGHTS + MAX_SPOT_LIGHTS; i ++ ) {\n vec3 L = lightDirection[i];\n float NdotL = max(EPSILON, dot(N, L));\n vec3 H = normalize(L + V);\n float NdotH = dot(N, H);\n float VdotH = dot(V, H);\n float Hu = dot(H, Tu);\n float Hv = dot(H, Tv);\n vec3 Hlocal = vec3(Hu, Hv, NdotH);\n#if defined(PRISMLAYERED)\n float N2dotL = dot(N2, L);\n float N2dotH = dot(N2, H);\n vec3 Hlocal2 = vec3(Hu, Hv, N2dotH);\n#endif\n vec3 brdf = lightColor[i] *\n#if defined(PRISMOPAQUE)\n BRDF_Opaque(Hlocal, NdotL, NdotH, NdotV, VdotH,\n surfaceAlbedo, surfaceRoughness, surfaceAnisotropy, surfaceRotation,\n opaqueF0, opaqueAlbedo);\n#elif defined(PRISMMETAL)\n BRDF_Metal(Hlocal, NdotL, NdotH, NdotV, VdotH,\n surfaceAlbedo, surfaceRoughness, surfaceAnisotropy, surfaceRotation,\n metalF0);\n#elif defined(PRISMLAYERED)\n BRDF_Layered(Hlocal, NdotL, NdotH, NdotV, VdotH, Hlocal2, N2dotL, N2dotH, N2dotV,\n surfaceAlbedo, surfaceRoughness, surfaceAnisotropy, surfaceRotation,\n layeredF0, layeredDiffuse, layeredRoughness, layeredAnisotropy,\n layeredRotation, bottom_f0, layeredFraction);\n#elif defined(PRISMTRANSPARENT)\n BRDF_Transparent(Hlocal, NdotL, NdotH, NdotV, VdotH, surfaceAlbedo, surfaceRoughness, surfaceAnisotropy, surfaceRotation);\n#elif defined(PRISMGLAZING)\n BRDF_Glazing(Hlocal, NdotL, NdotH, NdotV, VdotH, surfaceAlbedo, surfaceRoughness, surfaceAnisotropy, surfaceRotation,\n glazingF0, glazingTransmissionColor, glazingIlluminace);\n#elif defined(PRISMWOOD)\n BRDF_Wood(Hlocal, NdotL, NdotH, NdotV, VdotH, surfaceAlbedo, surfaceRoughness, woodDiffuse);\n#endif\n outRadianceLight += max(vec3(0.0), brdf);\n }\n#endif\n vec3 outRadianceEnv = vec3(0.0);\n#if defined( USE_ENVMAP )\n outRadianceEnv =\n#if defined(PRISMOPAQUE)\n Environment_Opaque(N, V, clamp(NdotV, 0.0, 1.0), surfaceAlbedo, surfaceRoughness,\n opaqueF0, opaqueAlbedo, surfaceAnisotropy, surfaceRotation, Tu, Tv);\n#elif defined(PRISMMETAL)\n Environment_Metal(N, V, clamp(NdotV, 0.0, 1.0), surfaceAlbedo, surfaceRoughness, metalF0, surfaceAnisotropy, surfaceRotation, Tu, Tv);\n#elif defined(PRISMLAYERED)\n Environment_Layered(N, V, clamp(NdotV, 0.0, 1.0), N2, clamp(N2dotV, 0.0, 1.0), surfaceAlbedo, surfaceRoughness,\n layeredF0, surfaceAnisotropy, surfaceRotation, Tu, Tv, layeredDiffuse, layeredRoughness, layeredAnisotropy,\n layeredRotation, bottom_f0, layeredFraction);\n#elif defined(PRISMTRANSPARENT)\n Environment_Transparent(N, V, clamp(NdotV, 0.0, 1.0), surfaceAlbedo, surfaceRoughness, surfaceAnisotropy, surfaceRotation, Tu, Tv);\n#elif defined(PRISMGLAZING)\n Environment_Glazing(N, V, clamp(NdotV, 0.0, 1.0), surfaceAlbedo, surfaceRoughness, surfaceAnisotropy, surfaceRotation, Tu, Tv,\n glazingF0, transmissionF, transmissionAlpha, glazingAdjustedColor, glazingIlluminace);\n#elif defined(PRISMWOOD)\n Environment_Wood(N, V, clamp(NdotV, 0.0, 1.0), surfaceAlbedo, surfaceRoughness, woodDiffuse, surfaceAnisotropy, surfaceRotation, Tu, Tv);\n#endif\n#endif\n#if defined(PRISMOPAQUE)\n vec3 luminanceModifier;\n #if defined( USE_OPAQUE_LUMINANCE_MODIFIER_MAP )\n vec2 uv_opaque_luminance_modifier_map = (opaque_luminance_modifier_map_texMatrix * vec3(uv, 1.0)).xy;\n OPAQUE_LUMINANCE_MODIFIER_CLAMP_TEST;\n luminanceModifier = texture(opaque_luminance_modifier_map, uv_opaque_luminance_modifier_map).xyz;\n luminanceModifier = SRGBToLinear(luminanceModifier);\n if(opaque_luminance_modifier_map_invert) luminanceModifier = vec3(1.0) - luminanceModifier;\n #else\n luminanceModifier = opaque_luminance_modifier;\n #endif\n outRadianceEnv += luminanceModifier * opaque_luminance;\n#endif\n float surface_cutout = 1.0;\n #if defined( USE_SURFACE_CUTOUT_MAP )\n vec2 uv_surface_cutout_map = (surface_cutout_map_texMatrix * vec3(uv, 1.0)).xy;\n SURFACE_CUTOUT_CLAMP_TEST;\n vec3 surface_cutout_v3 = texture(surface_cutout_map, uv_surface_cutout_map).xyz;\n if(surface_cutout_map_invert) surface_cutout_v3 = vec3(1.0) - surface_cutout_v3;\n surface_cutout = average(surface_cutout_v3);\n #else\n surface_cutout = surface_cutout;\n #endif\n#if defined( USE_SURFACE_CUTOUT_MAP )\n if(surface_cutout < 0.01) discard;\n#endif\n outFragColor = vec4( outRadianceLight + outRadianceEnv, opacity*surface_cutout );\n#if TONEMAP_OUTPUT == 1\n outFragColor.xyz = toneMapCanonOGS_WithGamma_WithColorPerserving(exposureBias * outFragColor.xyz);\n#elif TONEMAP_OUTPUT == 2\n outFragColor.xyz = toneMapCanonFilmic_WithGamma(exposureBias * outFragColor.xyz);\n#endif\n#ifdef USE_FOG\n float depth = gl_FragCoord.z / gl_FragCoord.w;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n outFragColor = mix( outFragColor, vec4( fogColor, outFragColor.w ), fogFactor );\n#endif\n#if defined(PRISMTRANSPARENT)\n applyPrismTransparency(outFragColor, transparent_color, transparent_ior);\n outFragColor.a *= surface_cutout;\n#ifdef USE_TILING\n outFragColor.a *= v_TilingMap.a;\n#endif\n#elif defined( PRISMGLAZING )\n applyPrismGlazingOpacity(outFragColor, transmissionF, transmissionAlpha, NdotV, glazingIlluminace);\n#ifdef USE_TILING\n outFragColor.a *= v_TilingMap.a;\n#endif\n#endif\n#include \n#include \n#include \n}\n"},4086:e=>{e.exports="out vec3 vViewPosition;\nout vec3 vNormal;\n#if defined(PRISMWOOD) && !defined(NO_UVW)\nout vec3 vUvw;\n#if defined(PRISMWOODBUMP)\nout vec3 vtNormal;\nout mat3 mNormalMatrix;\n#endif\n#endif\n#if MAX_SPOT_LIGHTS > 0 || NUM_CUTPLANES > 0\nout vec3 vWorldPosition;\n#endif\n#if defined( USE_SURFACE_ALBEDO_MAP ) || defined( USE_SURFACE_ROUGHNESS_MAP ) || defined( USE_SURFACE_CUTOUT_MAP ) || defined( USE_SURFACE_ANISOTROPY_MAP ) || defined( USE_SURFACE_ROTATION_MAP ) || defined( USE_OPAQUE_ALBEDO_MAP ) || defined( USE_OPAQUE_F0_MAP ) || defined( USE_OPAQUE_LUMINANCE_MODIFIER_MAP ) || defined( USE_LAYERED_BOTTOM_F0_MAP ) || defined( USE_LAYERED_F0_MAP ) || defined( USE_LAYERED_DIFFUSE_MAP ) || defined( USE_LAYERED_FRACTION_MAP ) || defined( USE_LAYERED_ROUGHNESS_MAP ) || defined( USE_LAYERED_ANISOTROPY_MAP ) || defined( USE_LAYERED_ROTATION_MAP ) || defined( USE_METAL_F0_MAP ) || defined( USE_SURFACE_NORMAL_MAP ) || defined( USE_LAYERED_NORMAL_MAP )\n #define USE_MAP\n#endif\n#if defined(USE_MAP) || defined(USE_TILING)\nout vec2 vUv;\n#endif\n#ifdef MRT_NORMALS\nout float depth;\n#endif\n#include \n#include \n#include \n#include \n#include \n#if !defined(USE_MAP) && (MAX_DIR_LIGHTS > 0 || MAX_POINT_LIGHTS > 0 || MAX_SPOT_LIGHTS > 0) || defined( PRISMWOODBUMP )\nout vec3 vTangent;\nout vec3 vBitangent;\nvoid ComputeTangents(vec3 normal, out vec3 u, out vec3 v)\n{\n float scale = normal.z < 0.0 ? -1.0 : 1.0;\n vec3 temp = scale * normal;\n float e = temp.z;\n float h = 1.0/(1.0 + e);\n float hvx = h * temp.y;\n float hvxy = hvx * -temp.x;\n u = vec3(e + hvx * temp.y, hvxy, -temp.x);\n v = vec3(hvxy, e + h * temp.x * temp.x, -temp.y);\n u *= scale;\n v *= scale;\n}\n#endif\nvoid main() {\n#if defined(USE_MAP) || defined(USE_TILING)\n vUv = uv;\n#endif\n#ifdef UNPACK_NORMALS\n vec3 objectNormal = decodeNormal(normal);\n#else\n vec3 objectNormal = normal;\n#endif\n#ifdef FLIP_SIDED\n objectNormal = -objectNormal;\n#endif\n objectNormal = getInstanceNormal(objectNormal);\n vec3 instPos = getInstancePos(position);\n#if defined(PRISMWOOD) && !defined(NO_UVW)\n#if defined(PRISMWOODBUMP)\n vUvw = instPos;\n vtNormal = normalize(objectNormal);\n mNormalMatrix = normalMatrix;\n#else\n vUvw = uvw;\n#endif\n#endif\n vec3 transformedNormal = normalMatrix * objectNormal;\n vNormal = normalize( transformedNormal );\n vec4 mvPosition = modelViewMatrix * vec4( instPos, 1.0 );\n gl_Position = projectionMatrix * mvPosition;\n#include \n vViewPosition = -mvPosition.xyz;\n#if MAX_SPOT_LIGHTS > 0 || NUM_CUTPLANES > 0\n vec4 worldPosition = modelMatrix * vec4( instPos, 1.0 );\n vWorldPosition = worldPosition.xyz;\n#endif\n#if !defined(USE_MAP) && (MAX_DIR_LIGHTS > 0 || MAX_POINT_LIGHTS > 0 || MAX_SPOT_LIGHTS > 0) || defined ( PRISMWOODBUMP )\n vec3 Tu, Tv;\n#if defined(PRISMWOODBUMP)\n ComputeTangents(vtNormal, Tu, Tv);\n#else\n ComputeTangents(vNormal, Tu, Tv);\n#endif\n vTangent = Tu;\n vBitangent = Tv;\n#endif\n#ifdef MRT_NORMALS\n depth = mvPosition.z;\n#endif\n#include \n#include \n}\n"}},n={};function o(a){var r=n[a];if(void 0!==r)return r.exports;var t=n[a]={exports:{}};return e[a](t,t.exports,o),t.exports}o.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return o.d(n,{a:n}),n},o.d=(e,n)=>{for(var a in n)o.o(n,a)&&!o.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:n[a]})},o.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};(()=>{"use strict";o.r(a);var e={};o.r(e),o.d(e,{PrismShader:()=>c,clonePrismMaterial:()=>m,createPrismMaterial:()=>p});var n={};o.r(n),o.d(n,{GetPrismMapChunk:()=>E,PrismMaps:()=>y,PrismMaterial:()=>T});var r={};o.r(r),o.d(r,{convertPrismMaterial:()=>ae,convertPrismTexture:()=>ye,disposePrismWoodTextures:()=>ne,materialTilingPattern:()=>ie,swapPrismWoodTextures:()=>ee});var t=o(4086),i=o.n(t),l=o(9809),s=o.n(l);const _=Autodesk.Viewing.Private,d=_.ShaderChunks,{GetPrismMapUniforms:f}=_.PrismUtil;function u(e){var n=e+"_texMatrix",o=e+"_bumpScale",a=e+"_bumpmapType",r={};return r[e]={type:"t",value:null},r[n]={type:"m3",value:new THREE.Matrix3},r[o]={type:"v2",value:new THREE.Vector2(1,1)},r[a]={type:"i",value:0},r}let c={uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,THREE.UniformsLib.lights,THREE.UniformsLib.fog,d.CutPlanesUniforms,d.IdUniforms,d.ThemingUniform,d.ShadowMapUniforms,f("surface_albedo_map"),f("surface_roughness_map"),f("surface_cutout_map"),f("surface_anisotropy_map"),f("surface_rotation_map"),f("opaque_albedo_map"),f("opaque_f0_map"),f("opaque_luminance_modifier_map"),f("layered_bottom_f0_map"),f("layered_f0_map"),f("layered_diffuse_map"),f("layered_fraction_map"),f("layered_roughness_map"),f("layered_anisotropy_map"),f("layered_rotation_map"),f("metal_f0_map"),f("wood_curly_distortion_map"),f("glazing_f0_map"),f("glazing_transmission_color_map"),f("glazing_transmission_roughness_map"),u("surface_normal_map"),u("layered_normal_map"),f("TilingMap"),f("TilingNormalMap"),f("TilingRandomMap"),{surface_albedo:{type:"c",value:new THREE.Color(1118481)},surface_roughness:{type:"f",value:1},surface_anisotropy:{type:"f",value:1},surface_rotation:{type:"f",value:1},opaque_albedo:{type:"c",value:new THREE.Color(1118481)},opaque_f0:{type:"f",value:1},opaque_luminance_modifier:{type:"c",value:new THREE.Color(1118481)},opaque_luminance:{type:"f",value:1},metal_f0:{type:"c",value:new THREE.Color(1118481)},layered_f0:{type:"f",value:1},layered_diffuse:{type:"c",value:new THREE.Color(0)},layered_fraction:{type:"f",value:1},layered_bottom_f0:{type:"c",value:new THREE.Color(1118481)},layered_roughness:{type:"f",value:1},layered_anisotropy:{type:"f",value:1},layered_rotation:{type:"f",value:1},transparent_ior:{type:"f",value:2},transparent_color:{type:"c",value:new THREE.Color(1118481)},transparent_distance:{type:"f",value:1},glazing_f0:{type:"c",value:new THREE.Color(16777215)},glazing_transmission_roughness:{type:"f",value:0},glazing_transmission_color:{type:"c",value:new THREE.Color(16777215)},wood_fiber_cosine_enable:{type:"i",value:1},wood_fiber_cosine_bands:{type:"i",value:2},wood_fiber_cosine_weights:{type:"v4",value:new THREE.Vector4(2.5,.5,1,1)},wood_fiber_cosine_frequencies:{type:"v4",value:new THREE.Vector4(15,4,1,1)},wood_fiber_perlin_enable:{type:"i",value:1},wood_fiber_perlin_bands:{type:"i",value:3},wood_fiber_perlin_weights:{type:"v4",value:new THREE.Vector4(3,1,.2,1)},wood_fiber_perlin_frequencies:{type:"v4",value:new THREE.Vector4(40,20,3.5,1)},wood_fiber_perlin_scale_z:{type:"f",value:.3},wood_growth_perlin_enable:{type:"i",value:1},wood_growth_perlin_bands:{type:"i",value:3},wood_growth_perlin_weights:{type:"v4",value:new THREE.Vector4(1,2,1,1)},wood_growth_perlin_frequencies:{type:"v4",value:new THREE.Vector4(1,5,13,1)},wood_latewood_ratio:{type:"f",value:.238},wood_earlywood_sharpness:{type:"f",value:.395},wood_latewood_sharpness:{type:"f",value:.109},wood_ring_thickness:{type:"f",value:.75},wood_earlycolor_perlin_enable:{type:"i",value:1},wood_earlycolor_perlin_bands:{type:"i",value:2},wood_earlycolor_perlin_weights:{type:"v4",value:new THREE.Vector4(.3,.5,.15,1)},wood_earlycolor_perlin_frequencies:{type:"v4",value:new THREE.Vector4(8,3,.35,1)},wood_early_color:{type:"c",value:new THREE.Color(.286,.157,.076)},wood_use_manual_late_color:{type:"i",value:0},wood_manual_late_color:{type:"c",value:new THREE.Color(.62,.35,.127)},wood_latecolor_perlin_enable:{type:"i",value:1},wood_latecolor_perlin_bands:{type:"i",value:1},wood_latecolor_perlin_weights:{type:"v4",value:new THREE.Vector4(.75,.55,1,1)},wood_latecolor_perlin_frequencies:{type:"v4",value:new THREE.Vector4(4.5,.05,1,1)},wood_late_color_power:{type:"f",value:1.25},wood_diffuse_perlin_enable:{type:"i",value:1},wood_diffuse_perlin_bands:{type:"i",value:3},wood_diffuse_perlin_weights:{type:"v4",value:new THREE.Vector4(.15,.2,.05,1)},wood_diffuse_perlin_frequencies:{type:"v4",value:new THREE.Vector4(.05,.1,3,1)},wood_diffuse_perlin_scale_z:{type:"f",value:.2},wood_use_pores:{type:"i",value:1},wood_pore_type:{type:"i",value:0},wood_pore_radius:{type:"f",value:.04},wood_pore_cell_dim:{type:"f",value:.15},wood_pore_color_power:{type:"f",value:1.45},wood_pore_depth:{type:"f",value:.02},wood_use_rays:{type:"i",value:1},wood_ray_color_power:{type:"f",value:1.1},wood_ray_seg_length_z:{type:"f",value:5},wood_ray_num_slices:{type:"f",value:160},wood_ray_ellipse_z2x:{type:"f",value:10},wood_ray_ellipse_radius_x:{type:"f",value:.2},wood_use_latewood_bump:{type:"i",value:1},wood_latewood_bump_depth:{type:"f",value:.01},wood_use_groove_roughness:{type:"i",value:1},wood_groove_roughness:{type:"f",value:.85},wood_diffuse_lobe_weight:{type:"f",value:.9},wood_curly_distortion_enable:{type:"i",value:0},wood_curly_distortion_scale:{type:"f",value:.25},wood_ring_fraction:{type:"v4",value:new THREE.Vector4(0,0,0,0)},wood_fall_rise:{type:"v2",value:new THREE.Vector2(0,0)},permutationMap:{type:"t",value:null},gradientMap:{type:"t",value:null},perm2DMap:{type:"t",value:null},permGradMap:{type:"t",value:null},importantSamplingRandomMap:{type:"t",value:null},importantSamplingSolidAngleMap:{type:"t",value:null},irradianceMap:{type:"t",value:null},envMap:{type:"t",value:null},exposureBias:{type:"f",value:1},envMapExposure:{type:"f",value:1},envRotationSin:{type:"f",value:0},envRotationCos:{type:"f",value:1},envExponentMin:{type:"f",value:1},envExponentMax:{type:"f",value:512},envExponentCount:{type:"f",value:10},tilingOverallTransform:{type:"m4",value:new THREE.Matrix4},uv2tile:{type:"v4",value:new THREE.Vector4(1,0,0,1)},tile2uv:{type:"v4",value:new THREE.Vector4(1,0,0,1)},tileAlignOffset:{type:"v2",value:new THREE.Vector2(0,0)},tilingUVTransform:{type:"m4",value:new THREE.Matrix4},tilingRandomAxisS:{type:"v2",value:new THREE.Vector2(0,0)},tilingRandomAxisT:{type:"v2",value:new THREE.Vector2(0,0)},tilingRandomAlignmentOffset:{type:"v2",value:new THREE.Vector2(0,0)}}]),vertexShader:i(),fragmentShader:s()};THREE.ShaderLib.prism=c;let p=function(){return console.warn("createPrismMaterial has been deprecated. Use new PrismMaterial instead"),new T},m=function(e){return console.warn("clonePrismMaterial has been deprecated. Use new PrismMaterial.clone instead"),e.clone()};function v(e,n,o){e[o].value=n[o],null!=n[o]&&(e[o+"_texMatrix"].value=n[o].matrix,e[o+"_invert"].value=n[o].invert)}function g(e,n,o){e[o].value=n[o],null!=n[o]&&(e[o+"_texMatrix"].value=n[o].matrix,e[o+"_bumpScale"].value=n[o].bumpScale,e[o+"_bumpmapType"].value=n[o].bumpmapType)}let E=function(e,n,o){var a="uv_"+e+"_map",r="";return n&&o?r="if ("+a+".x < 0.0 || "+a+".x > 1.0 || "+a+".y < 0.0 || "+a+".y > 1.0) { discard; }":n?r="if ("+a+".x < 0.0 || "+a+".x > 1.0) { discard; }":o&&(r="if ("+a+".y < 0.0 || "+a+".y > 1.0) { discard; }"),"#define "+e.toUpperCase()+"_CLAMP_TEST "+r},y=["opaque_luminance_modifier","surface_albedo","surface_roughness","surface_anisotropy","surface_rotation","opaque_f0","opaque_albedo","metal_f0","layered_f0","layered_diffuse","layered_roughness","layered_anisotropy","layered_rotation","layered_bottom_f0","layered_fraction","surface_cutout","glazing_transmission_color","glazing_f0","glazing_transmission_roughness","wood_curly_distortion"];var h=function(e){for(var n="\n",o=0;o0&&void 0!==arguments[0]?arguments[0]:{},...{vertexShader:c.vertexShader,fragmentShader:c.fragmentShader,uniforms:THREE.UniformsUtils.clone(c.uniforms)}}),this.type="PrismMaterial",this.defaultAttributeValues.uvw=[0,0,0],this.enable3DWoodBump=!1,this.enableImportantSampling=!1,this.mapList={},this.lights=!0}clone(){const e=new T;return e.copy(this),e}copy(e){switch(this.name=e.name,this.side=e.side,this.opacity=e.opacity,this.transparent=e.transparent,this.blending=e.blending,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.alphaTest=e.alphaTest,this.visible=e.visible,this.mapList=e.mapList,this.prismType=e.prismType,this.surface_albedo=e.surface_albedo,void 0!==e.surface_albedo_map&&(this.surface_albedo_map=e.surface_albedo_map),this.surface_roughness=e.surface_roughness,void 0!==e.surface_roughness_map&&(this.surface_roughness_map=e.surface_roughness_map),this.surface_anisotropy=e.surface_anisotropy,void 0!==e.surface_anisotropy_map&&(this.surface_anisotropy_map=e.surface_anisotropy_map),this.surface_rotation=e.surface_rotation,void 0!==e.surface_rotation_map&&(this.surface_rotation_map=e.surface_rotation_map),void 0!==e.surface_cutout_map&&(this.surface_cutout_map=e.surface_cutout_map),void 0!==e.surface_normal_map&&(this.surface_normal_map=e.surface_normal_map),this.uniforms.importantSamplingRandomMap.value=e.uniforms.importantSamplingRandomMap.value,this.uniforms.importantSamplingSolidAngleMap.value=e.uniforms.importantSamplingSolidAngleMap.value,this.prismType){case"PrismOpaque":this.opaque_albedo=(new THREE.Color).copy(e.opaque_albedo),this.opaque_luminance_modifier=(new THREE.Color).copy(e.opaque_luminance_modifier),this.opaque_f0=e.opaque_f0,this.opaque_luminance=e.opaque_luminance,void 0!==e.opaque_albedo_map&&(this.opaque_albedo_map=e.opaque_albedo_map),void 0!==e.opaque_luminance_modifier_map&&(this.opaque_luminance_modifier_map=e.opaque_luminance_modifier_map),void 0!==e.opaque_f0_map&&(this.opaque_f0_map=e.opaque_f0_map);break;case"PrismMetal":this.metal_f0=(new THREE.Color).copy(e.metal_f0),void 0!==e.metal_f0_map&&(this.metal_f0_map=e.metal_f0_map);break;case"PrismLayered":this.layered_f0=e.layered_f0,this.layered_diffuse=(new THREE.Color).copy(e.layered_diffuse),this.layered_fraction=e.layered_fraction,this.layered_bottom_f0=(new THREE.Color).copy(e.layered_bottom_f0),this.layered_roughness=e.layered_roughness,this.layered_anisotropy=e.layered_anisotropy,this.layered_rotation=e.layered_rotation,void 0!==e.layered_bottom_f0_map&&(this.layered_bottom_f0_map=e.layered_bottom_f0_map),void 0!==e.layered_f0_map&&(this.layered_f0_map=e.layered_f0_map),void 0!==e.layered_diffuse_map&&(this.layered_diffuse_map=e.layered_diffuse_map),void 0!==e.layered_fraction_map&&(this.layered_fraction_map=e.layered_fraction_map),void 0!==e.layered_rotationlayered_roughness_map&&(this.layered_rotationlayered_roughness_map=e.layered_rotationlayered_roughness_map),void 0!==e.layered_anisotropy_map&&(this.layered_anisotropy_map=e.layered_anisotropy_map),void 0!==e.layered_rotation_map&&(this.layered_rotation_map=e.layered_rotation_map),void 0!==e.layered_normal_map&&(this.layered_normal_map=e.layered_normal_map);break;case"PrismTransparent":this.transparent_color=(new THREE.Color).copy(e.transparent_color),this.transparent_distance=e.transparent_distance,this.transparent_ior=e.transparent_ior,this.transparent=e.transparent,this.twoPassTransparency=e.twoPassTransparency;break;case"PrismGlazing":this.glazing_f0=(new THREE.Color).copy(e.glazing_f0),this.glazing_transmission_color=(new THREE.Color).copy(e.glazing_transmission_color),this.glazing_transmission_roughness=e.glazing_transmission_roughness,void 0!==e.glazing_f0_map&&(this.glazing_f0_map=e.glazing_f0_map),void 0!==e.glazing_transmission_color_map&&(this.glazing_transmission_color_map=e.glazing_transmission_color_map),void 0!==e.glazing_transmission_roughness_map&&(this.glazing_transmission_roughness_map=e.glazing_transmission_roughness_map);break;case"PrismWood":this.wood_fiber_cosine_enable=e.wood_fiber_cosine_enable,this.wood_fiber_cosine_bands=e.wood_fiber_cosine_bands,this.wood_fiber_cosine_weights=(new THREE.Vector4).copy(e.wood_fiber_cosine_weights),this.wood_fiber_cosine_frequencies=(new THREE.Vector4).copy(e.wood_fiber_cosine_frequencies),this.wood_fiber_perlin_enable=e.wood_fiber_perlin_enable,this.wood_fiber_perlin_bands=e.wood_fiber_perlin_bands,this.wood_fiber_perlin_weights=(new THREE.Vector4).copy(e.wood_fiber_perlin_weights),this.wood_fiber_perlin_frequencies=(new THREE.Vector4).copy(e.wood_fiber_perlin_frequencies),this.wood_fiber_perlin_scale_z=e.wood_fiber_perlin_scale_z,this.wood_growth_perlin_enable=e.wood_growth_perlin_enable,this.wood_growth_perlin_bands=e.wood_growth_perlin_bands,this.wood_growth_perlin_weights=(new THREE.Vector4).copy(e.wood_growth_perlin_weights),this.wood_growth_perlin_frequencies=(new THREE.Vector4).copy(e.wood_growth_perlin_frequencies),this.wood_latewood_ratio=e.wood_latewood_ratio,this.wood_earlywood_sharpness=e.wood_earlywood_sharpness,this.wood_latewood_sharpness=e.wood_latewood_sharpness,this.wood_ring_thickness=e.wood_ring_thickness,this.wood_earlycolor_perlin_enable=e.wood_earlycolor_perlin_enable,this.wood_earlycolor_perlin_bands=e.wood_earlycolor_perlin_bands,this.wood_earlycolor_perlin_weights=(new THREE.Vector4).copy(e.wood_earlycolor_perlin_weights),this.wood_earlycolor_perlin_frequencies=(new THREE.Vector4).copy(e.wood_earlycolor_perlin_frequencies),this.wood_early_color=(new THREE.Color).copy(e.wood_early_color),this.wood_use_manual_late_color=e.wood_use_manual_late_color,this.wood_manual_late_color=(new THREE.Color).copy(e.wood_manual_late_color),this.wood_latecolor_perlin_enable=e.wood_latecolor_perlin_enable,this.wood_latecolor_perlin_bands=e.wood_latecolor_perlin_bands,this.wood_latecolor_perlin_weights=(new THREE.Vector4).copy(e.wood_latecolor_perlin_weights),this.wood_latecolor_perlin_frequencies=(new THREE.Vector4).copy(e.wood_latecolor_perlin_frequencies),this.wood_late_color_power=e.wood_late_color_power,this.wood_diffuse_perlin_enable=e.wood_diffuse_perlin_enable,this.wood_diffuse_perlin_bands=e.wood_diffuse_perlin_bands,this.wood_diffuse_perlin_weights=(new THREE.Vector4).copy(e.wood_diffuse_perlin_weights),this.wood_diffuse_perlin_frequencies=(new THREE.Vector4).copy(e.wood_diffuse_perlin_frequencies),this.wood_diffuse_perlin_scale_z=e.wood_diffuse_perlin_scale_z,this.wood_use_pores=e.wood_use_pores,this.wood_pore_type=e.wood_pore_type,this.wood_pore_radius=e.wood_pore_radius,this.wood_pore_cell_dim=e.wood_pore_cell_dim,this.wood_pore_color_power=e.wood_pore_color_power,this.wood_pore_depth=e.wood_pore_depth,this.wood_use_rays=e.wood_use_rays,this.wood_ray_color_power=e.wood_ray_color_power,this.wood_ray_seg_length_z=e.wood_ray_seg_length_z,this.wood_ray_num_slices=e.wood_ray_num_slices,this.wood_ray_ellipse_z2x=e.wood_ray_ellipse_z2x,this.wood_ray_ellipse_radius_x=e.wood_ray_ellipse_radius_x,this.wood_use_latewood_bump=e.wood_use_latewood_bump,this.wood_latewood_bump_depth=e.wood_latewood_bump_depth,this.wood_use_groove_roughness=e.wood_use_groove_roughness,this.wood_groove_roughness=e.wood_groove_roughness,this.wood_diffuse_lobe_weight=e.wood_diffuse_lobe_weight,this.uniforms.permutationMap.value=e.uniforms.permutationMap.value,this.uniforms.gradientMap.value=e.uniforms.gradientMap.value,this.uniforms.perm2DMap.value=e.uniforms.perm2DMap.value,this.uniforms.permGradMap.value=e.uniforms.permGradMap.value,void 0!==e.wood_curly_distortion_map&&(this.wood_curly_distortion_map=e.wood_curly_distortion_map,this.wood_curly_distortion_enable=e.wood_curly_distortion_enable,this.wood_curly_distortion_scale=e.wood_curly_distortion_scale),this.wood_ring_fraction=e.wood_ring_fraction,this.wood_fall_rise=e.wood_fall_rise;break;default:console.warn("Unknown prism type: "+e.prismType)}this.envExponentMin=e.envExponentMin,this.envExponentMax=e.envExponentMax,this.envExponentCount=e.envExponentCount,this.envMap=e.envMap,e.useTiling&&(this.useTiling=e.useTiling,this.tilingOverallTransform=(new THREE.Matrix4).copy(e.tilingOverallTransform),this.TilingMap=e.TilingMap,this.TilingMap_texMatrix=(new THREE.Matrix3).copy(e.TilingMap_texMatrix),this.hasRoundCorner=e.hasRoundCorner,this.hasRoundCorner&&(this.TilingNormalMap=e.TilingNormalMap,this.TilingNormalMap_texMatrix=(new THREE.Matrix3).copy(e.TilingNormalMap_texMatrix)),this.useRandomOffset=e.useRandomOffset,this.useRandomOffset&&(this.TilingRandomMap=e.TilingRandomMap,this.TilingRandomMap_texMatrix=(new THREE.Matrix3).copy(e.TilingRandomMap_texMatrix),this.tilingRandomAxisS=(new THREE.Vector2).copy(e.tilingRandomAxisS),this.tilingRandomAxisT=(new THREE.Vector2).copy(e.tilingRandomAxisT),this.tilingRandomAlignmentOffset=(new THREE.Vector2).copy(e.tilingRandomAlignmentOffset)),this.uv2tile=e.uv2tile,this.tile2uv=e.tile2uv,this.tilingRepeatRange=[e.tilingRepeatRange[0],e.tilingRepeatRange[1],e.tilingRepeatRange[2],e.tilingRepeatRange[3]],this.tileAlignOffset=(new THREE.Vector2).copy(e.tileAlignOffset),this.tilingUVTransform=(new THREE.Matrix4).copy(e.tilingUVTransform)),this.defines=e.defines}refreshUniforms(e){const n=this;switch(e.exposureBias.value=n.exposureBias,e.opacity.value=n.opacity,e.surface_albedo.value=n.surface_albedo,e.surface_roughness.value=n.surface_roughness,e.surface_anisotropy.value=n.surface_anisotropy,e.surface_rotation.value=n.surface_rotation,v(e,n,"surface_albedo_map"),v(e,n,"surface_roughness_map"),v(e,n,"surface_cutout_map"),v(e,n,"surface_anisotropy_map"),v(e,n,"surface_rotation_map"),g(e,n,"surface_normal_map"),n.prismType){case"PrismOpaque":e.opaque_albedo.value=n.opaque_albedo,e.opaque_luminance_modifier.value=n.opaque_luminance_modifier,e.opaque_f0.value=n.opaque_f0,e.opaque_luminance.value=n.opaque_luminance,v(e,n,"opaque_albedo_map"),v(e,n,"opaque_luminance_modifier_map"),v(e,n,"opaque_f0_map");break;case"PrismMetal":e.metal_f0.value=n.metal_f0,v(e,n,"metal_f0_map");break;case"PrismLayered":e.layered_f0.value=n.layered_f0,e.layered_diffuse.value=n.layered_diffuse,e.layered_fraction.value=n.layered_fraction,e.layered_bottom_f0.value=n.layered_bottom_f0,e.layered_roughness.value=n.layered_roughness,e.layered_anisotropy.value=n.layered_anisotropy,e.layered_rotation.value=n.layered_rotation,v(e,n,"layered_bottom_f0_map"),v(e,n,"layered_f0_map"),v(e,n,"layered_diffuse_map"),v(e,n,"layered_fraction_map"),v(e,n,"layered_roughness_map"),v(e,n,"layered_anisotropy_map"),v(e,n,"layered_rotation_map"),g(e,n,"layered_normal_map");break;case"PrismTransparent":e.transparent_color.value=n.transparent_color,e.transparent_distance.value=n.transparent_distance,e.transparent_ior.value=n.transparent_ior;break;case"PrismGlazing":e.glazing_f0.value=n.glazing_f0,e.glazing_transmission_color.value=n.glazing_transmission_color,e.glazing_transmission_roughness.value=n.glazing_transmission_roughness,v(e,n,"glazing_f0_map"),v(e,n,"glazing_transmission_color_map"),v(e,n,"glazing_transmission_roughness_map");break;case"PrismWood":e.wood_fiber_cosine_enable.value=n.wood_fiber_cosine_enable,e.wood_fiber_cosine_bands.value=n.wood_fiber_cosine_bands,e.wood_fiber_cosine_weights.value=n.wood_fiber_cosine_weights,e.wood_fiber_cosine_frequencies.value=n.wood_fiber_cosine_frequencies,e.wood_fiber_perlin_enable.value=n.wood_fiber_perlin_enable,e.wood_fiber_perlin_bands.value=n.wood_fiber_perlin_bands,e.wood_fiber_perlin_weights.value=n.wood_fiber_perlin_weights,e.wood_fiber_perlin_frequencies.value=n.wood_fiber_perlin_frequencies,e.wood_fiber_perlin_scale_z.value=n.wood_fiber_perlin_scale_z,e.wood_growth_perlin_enable.value=n.wood_growth_perlin_enable,e.wood_growth_perlin_bands.value=n.wood_growth_perlin_bands,e.wood_growth_perlin_weights.value=n.wood_growth_perlin_weights,e.wood_growth_perlin_frequencies.value=n.wood_growth_perlin_frequencies,e.wood_latewood_ratio.value=n.wood_latewood_ratio,e.wood_earlywood_sharpness.value=n.wood_earlywood_sharpness,e.wood_latewood_sharpness.value=n.wood_latewood_sharpness,e.wood_ring_thickness.value=n.wood_ring_thickness,e.wood_earlycolor_perlin_enable.value=n.wood_earlycolor_perlin_enable,e.wood_earlycolor_perlin_bands.value=n.wood_earlycolor_perlin_bands,e.wood_earlycolor_perlin_weights.value=n.wood_earlycolor_perlin_weights,e.wood_earlycolor_perlin_frequencies.value=n.wood_earlycolor_perlin_frequencies,e.wood_early_color.value=n.wood_early_color,e.wood_use_manual_late_color.value=n.wood_use_manual_late_color,e.wood_manual_late_color.value=n.wood_manual_late_color,e.wood_latecolor_perlin_enable.value=n.wood_latecolor_perlin_enable,e.wood_latecolor_perlin_bands.value=n.wood_latecolor_perlin_bands,e.wood_latecolor_perlin_weights.value=n.wood_latecolor_perlin_weights,e.wood_latecolor_perlin_frequencies.value=n.wood_latecolor_perlin_frequencies,e.wood_late_color_power.value=n.wood_late_color_power,e.wood_diffuse_perlin_enable.value=n.wood_diffuse_perlin_enable,e.wood_diffuse_perlin_bands.value=n.wood_diffuse_perlin_bands,e.wood_diffuse_perlin_weights.value=n.wood_diffuse_perlin_weights,e.wood_diffuse_perlin_frequencies.value=n.wood_diffuse_perlin_frequencies,e.wood_diffuse_perlin_scale_z.value=n.wood_diffuse_perlin_scale_z,e.wood_use_pores.value=n.wood_use_pores,e.wood_pore_type.value=n.wood_pore_type,e.wood_pore_radius.value=n.wood_pore_radius,e.wood_pore_cell_dim.value=n.wood_pore_cell_dim,e.wood_pore_color_power.value=n.wood_pore_color_power,e.wood_pore_depth.value=n.wood_pore_depth,e.wood_use_rays.value=n.wood_use_rays,e.wood_ray_color_power.value=n.wood_ray_color_power,e.wood_ray_seg_length_z.value=n.wood_ray_seg_length_z,e.wood_ray_num_slices.value=n.wood_ray_num_slices,e.wood_ray_ellipse_z2x.value=n.wood_ray_ellipse_z2x,e.wood_ray_ellipse_radius_x.value=n.wood_ray_ellipse_radius_x,e.wood_use_latewood_bump.value=n.wood_use_latewood_bump,e.wood_latewood_bump_depth.value=n.wood_latewood_bump_depth,e.wood_use_groove_roughness.value=n.wood_use_groove_roughness,e.wood_groove_roughness.value=n.wood_groove_roughness,e.wood_diffuse_lobe_weight.value=n.wood_diffuse_lobe_weight,v(e,n,"wood_curly_distortion_map"),null!=e.wood_curly_distortion_map.value&&(e.wood_curly_distortion_map.value.minFilter=THREE.NearestFilter,e.wood_curly_distortion_map.value.magFilter=THREE.NearestFilter,e.wood_curly_distortion_enable.value=n.wood_curly_distortion_enable,e.wood_curly_distortion_scale.value=n.wood_curly_distortion_scale);var o=1-n.wood_latewood_ratio,a=n.wood_earlywood_sharpness*o,r=n.wood_latewood_sharpness*n.wood_latewood_ratio,t=o+r;e.wood_ring_fraction.value=new THREE.Vector4(o,a,r,t),e.wood_fall_rise.value=new THREE.Vector2(o-a,n.wood_latewood_ratio-r);break;default:console.warn("Unknown prism type: "+n.prismType)}n.useTiling&&(e.tilingOverallTransform.value=n.tilingOverallTransform,e.TilingMap.value=n.TilingMap,e.TilingMap_texMatrix.value=n.TilingMap_texMatrix,n.hasRoundCorner&&(e.TilingNormalMap.value=n.TilingNormalMap,e.TilingNormalMap_texMatrix.value=n.TilingNormalMap_texMatrix),n.useRandomOffset&&(e.TilingRandomMap.value=n.TilingRandomMap,e.TilingRandomMap_texMatrix.value=n.TilingRandomMap_texMatrix,e.tilingRandomAxisS.value=n.tilingRandomAxisS,e.tilingRandomAxisT.value=n.tilingRandomAxisT,e.tilingRandomAlignmentOffset.value=n.tilingRandomAlignmentOffset),e.uv2tile.value=n.uv2tile,e.tile2uv.value=n.tile2uv,e.tileAlignOffset.value=n.tileAlignOffset,e.tilingUVTransform.value=n.tilingUVTransform),e.envExponentMin.value=n.envExponentMin,e.envExponentMax.value=n.envExponentMax,e.envExponentCount.value=n.envExponentCount,function(e,n){e.envMap&&(e.envMap.value=n.envMap),e.irradianceMap&&(e.irradianceMap.value=n.irradianceMap),e.envMapExposure&&(e.envMapExposure.value=n.envMapExposure),e.envRotationSin&&e.envRotationCos&&(e.envRotationSin.value=n.envRotationSin,e.envRotationCos.value=n.envRotationCos)}(e,n)}onBeforeCompile(e,n){super.onBeforeCompile(e,n),function(e,n){if(n.textureMaps)for(var o=0;oMath.abs(e.distance)||Math.abs(this.distance)===Math.abs(e.distance)&&this.dot>e.dot},lessThanOrEquals:function(e){return Math.abs(this.distance)Math.abs(e.distance)||Math.abs(this.distance)==Math.abs(e.distance)&&this.dot>=e.dot}};const A=0,S=1,b=2,N=3,P=4,I=5,H=6,L=7;function O(e,n,o){this.p=[],this.p[0]=e.clone(),this.p[1]=n.clone(),this.color=o}function U(e,n){return(n.x-e.x)*(e.y+n.y)}function D(){this.edges=[]}function V(e,n,o){return e.dot(n)<=0||Math.abs(M(e,n))>o}function z(e,n){return F(e,n,A)}function F(e,n,o){let a=e&o;if(a==S||a==b||a==P)return[e=a^L,n];if(e==A||e==L){return[e=[H,I,N][n%3],n=Math.floor(n/3)]}let r=e<<1+(1&n);return[e=(r|r>>3)&L,n>>=1]}function C(){this.minDistance=new w,this.nearEdge=null,this.nearParam=0}function G(e,n,o){return Math.max(Math.min(e,n),Math.min(Math.max(e,n),o))}function q(e,n){let o=n.point(0),a=n.point(1),r=e,t=e.clone().sub(o),i=a.clone().sub(o),l=t.dot(i)/i.dot(i);return l<0?t.length():l>1?r.clone().sub(a).length():Math.abs(x(i,!1,!1).dot(t))}function B(){this.contours=[],this.windings=[],this.inverseYAxis=!1}O.prototype={constructor:O,set:function(e){return this.color=e,this},clone:function(){return new this.constructor(this.p[0],this.p[1],this.color)},point:function(e){return this.p[0].clone().lerp(this.p[1],e)},direction:function(){return this.p[1].clone().sub(this.p[0])},signedDistance:function(e){let n=e.clone().sub(this.p[0]),o=this.direction(),a=n.dot(o)/o.dot(o),r=this.p[a>.5?1:0].clone().sub(e),t=r.length();if(a>0&&a<1){let e=x(o,!1,!1).dot(n);if(Math.abs(e)0?1:0)-1,l=new w;return l.set(i*t,Math.abs(o.normalize().dot(r.normalize(r)))),[l,a]},distanceToPseudoDistance:function(e,n,o){let a,r,t;if(o<0){r=this.direction().normalize();let o=n.clone().sub(this.p[0]);t=o.dot(r),t<0&&(a=M(o,r),Math.abs(a)<=Math.abs(e.distance)&&(e.distance=a,e.dot=0))}else if(o>1){r=this.direction().normalize();let o=n.clone().sub(this.p[1]);t=o.dot(r),t>0&&(a=M(o,r),Math.abs(a)<=Math.abs(e.distance)&&(e.distance=a,e.dot=0))}},moveStartPoint:function(e){this.p[0].copy(e)},moveEndPoint:function(e){this.p[1].copy(e)},splitInThirds:function(e,n,o){let a=this.point(1/3),r=this.point(2/3);new O(this.p[0],a,this.color),new O(a,r,this.color),new O(r,this.p[1],this.color)}},D.prototype={constructor:D,addEdge:function(e){this.edges.push(e)},winding:function(){if(0===this.edges.length)return 0;let e,n,o,a,r=0;if(1==this.edges.length)e=new THREE.Vector2,n=new THREE.Vector2,o=new THREE.Vector2,e.copy(this.edges[0].point(0)),n.copy(this.edges[0].point(1/3)),o.copy(this.edges[0].point(2/3)),r+=U(e,n),r+=U(n,o),r+=U(o,e);else if(2==this.edges.length)e=new THREE.Vector2,n=new THREE.Vector2,o=new THREE.Vector2,a=new THREE.Vector2,e.copy(this.edges[0].point(0)),n.copy(this.edges[0].point(.5)),o.copy(this.edges[1].point(0)),a.copy(this.edges[1].point(.5)),r+=U(e,n),r+=U(n,o),r+=U(o,a),r+=U(a,e);else{let e=new THREE.Vector2,n=new THREE.Vector2;e=this.edges[this.edges.length-1].point(0);for(let o=0;o0?1:t<0?-1:0;var t}},C.prototype={constructor:C,clear:function(){this.nearEdge=null,this.nearParam=0},copy:function(e){this.minDistance.copy(e.minDistance),this.nearEdge=e.nearEdge,this.nearParam=e.nearParam}},B.prototype={constructor:B,addContour:function(e){this.contours.push(e)},addBlankContour:function(){let e=new D;return this.contours.push(e),e},initialize:function(){for(let e=0;e0){let e=a.edges[a.edges.length-1].direction(1);for(let n=0;n=3){let n=a.edges.length;for(let o=0;o=1){let n=[];a.edges[0].splitInThirds(n[0+3*t],n[1+3*t],n[2+3*t]),a.edges.length>=2?(a.edges[1].splitInThirds(n[3-3*t],n[4-3*t],n[5-3*t]),n[0].color=n[1].color=e[0],n[2].color=n[3].color=e[1],n[4].color=n[5].color=e[2]):(n[0].color=e[0],n[1].color=e[1],n[2].color=e[2]),a.edges.clear();for(let e=0;e0&&r.lessThan(d.minDistance)&&(d.minDistance.copy(r),d.nearEdge=o,d.nearParam=t),(o.color&b)>0&&r.lessThan(f.minDistance)&&(f.minDistance.copy(r),f.nearEdge=o,f.nearParam=t),(o.color&P)>0&&r.lessThan(u.minDistance)&&(u.minDistance.copy(r),u.nearEdge=o,u.nearParam=t)}d.minDistance.lessThan(a.minDistance)&&a.copy(d),f.minDistance.lessThan(r.minDistance)&&r.copy(f),u.minDistance.lessThan(t.minDistance)&&t.copy(u);let p=Math.abs(G(d.minDistance.distance,f.minDistance.distance,u.minDistance.distance));p0&&p>=0&&Math.abs(p)=0&&Math.abs(s)<=Math.abs(l)){c.med=R,_=1;for(let e=0;e0&&o[e].med>c.med&&Math.abs(o[e].med)0&&s.cornerRoundingSize>0;let c=[];for(i=0,l=o.length;i=i){return new THREE.Vector2(e).sub(o).length()}return Math.sqrt(Math.max(r.dot(r)-t*t/i,0))}function se(e,n){let o=1e11,a=o,r=-1;for(let t=0;t=o||e[r].y=o)&&e[i].x+(o-e[i].y)/(e[r].y-e[i].y)*(e[r].x-e[i].x)>>32-n}function ue(e,n){let o,a,r;return o=a=r=3735928567+n,a+=e.y,o+=e.x,function(e,n,o){let a=4294967296;return o=((o^=n)-fe(n,14)+a)%a,o=((o^=n=((n^=e=((e^=o)-fe(o,11)+a)%a)-fe(e,25)+a)%a)-fe(n,16)+a)%a,((o^=n=((n^=e=((e^=o)-fe(o,4)+a)%a)-fe(e,14)+a)%a)-fe(n,24)+a)%a}(o,a,r)}function ce(e,n){let o=ue(e,33);n.x=(65535&o)>>>8,n.y=o>>>16>>>8}function pe(e,n){let o=512,a=512,r=new Uint8Array(1048576),t=new THREE.Vector2,i=new THREE.Vector2(107021*n,n),l=new THREE.Vector2,s=new THREE.Vector2,_=0;for(let e=0;eo?o:e{var e={8070:e=>{e.exports.l="mouseTracking"},9556:e=>{"use strict";var t=e.exports;t.ESCAPE_EVENT="escape",t.PROGRESS_UPDATE_EVENT="progress",t.FULLSCREEN_MODE_EVENT="fullScreenMode",t.NAVIGATION_MODE_CHANGED_EVENT="navmode",t.VIEWER_STATE_RESTORED_EVENT="viewerStateRestored",t.VIEWER_RESIZE_EVENT="viewerResize",t.VIEWER_INITIALIZED="viewerInitialized",t.VIEWER_UNINITIALIZED="viewerUninitialized",t.LOADER_LOAD_FILE_EVENT="loaderLoadFile",t.LOADER_LOAD_ERROR_EVENT="loaderLoadError",t.LOADER_REPAINT_REQUEST_EVENT="loaderRepaint",t.MODEL_ROOT_LOADED_EVENT="svfLoaded",t.GEOMETRY_LOADED_EVENT="geometryLoaded",t.TEXTURES_LOADED_EVENT="texturesLoaded",t.OBJECT_TREE_CREATED_EVENT="propertyDbLoaded",t.OBJECT_TREE_UNAVAILABLE_EVENT="propertyDbUnavailable",t.OBJECT_TREE_LOAD_PROGRESS_EVENT="propertyDbLoadProgress",t.MODEL_UNLOADED_EVENT="modelUnloaded",t.BEFORE_MODEL_UNLOAD_EVENT="beforeModelUnload",t.MODEL_ADDED_EVENT="modelAdded",t.MODEL_REMOVED_EVENT="modelRemoved",t.MODEL_LAYERS_LOADED_EVENT="modelLayersLoaded",t.MODEL_TRANSFORM_CHANGED_EVENT="modelTransformChanged",t.MODEL_PLACEMENT_CHANGED_EVENT="placementTransformChanged",t.MODEL_VIEWPORT_BOUNDS_CHANGED_EVENT="viewportBoundsChanged",t.MODEL_FRAGMENT_BOUNDING_BOXES_SET_EVENT="fragmentBoundingBoxesSet",t.EXTENSION_PRE_LOADED_EVENT="extensionPreLoaded",t.EXTENSION_LOADED_EVENT="extensionLoaded",t.EXTENSION_PRE_UNLOADED_EVENT="extensionPreUnloaded",t.EXTENSION_UNLOADED_EVENT="extensionUnloaded",t.EXTENSION_PRE_ACTIVATED_EVENT="extensionPreActivated",t.EXTENSION_ACTIVATED_EVENT="extensionActivated",t.EXTENSION_PRE_DEACTIVATED_EVENT="extensionPreDeactivated",t.EXTENSION_DEACTIVATED_EVENT="extensionDeactivated",t.SELECTION_CHANGED_EVENT="selection",t.AGGREGATE_SELECTION_CHANGED_EVENT="aggregateSelection",t.ISOLATE_EVENT="isolate",t.AGGREGATE_ISOLATION_CHANGED_EVENT="aggregateIsolation",t.HIDE_EVENT="hide",t.AGGREGATE_HIDDEN_CHANGED_EVENT="aggregateHidden",t.SHOW_EVENT="show",t.SHOW_PROPERTIES_EVENT="showProperties",t.SHOW_ALL_EVENT="showAll",t.HIDE_ALL_EVENT="hideAll",t.CAMERA_CHANGE_EVENT="cameraChanged",t.EXPLODE_CHANGE_EVENT="explodeChanged",t.FIT_TO_VIEW_EVENT="fitToView",t.AGGREGATE_FIT_TO_VIEW_EVENT="aggregateFitToView",t.CUTPLANES_CHANGE_EVENT="cutplanesChanged",t.TOOL_CHANGE_EVENT="toolChanged",t.RENDER_OPTION_CHANGED_EVENT="renderOptionChanged",t.FINAL_FRAME_RENDERED_CHANGED_EVENT="finalFrameRenderedChanged",t.RENDER_PRESENTED_EVENT="renderPresented",t.LAYER_VISIBILITY_CHANGED_EVENT="layerVisibility",t.PREF_CHANGED_EVENT="PrefChanged",t.PREF_RESET_EVENT="PrefReset",t.RESTORE_DEFAULT_SETTINGS_EVENT="restoreDefaultSettings",t.ANIMATION_READY_EVENT="animationReady",t.CAMERA_TRANSITION_COMPLETED="cameraTransitionCompleted",t.HYPERLINK_EVENT="hyperlink",t.HYPERLINK_NAVIGATE="hyperlink_navigate",t.LOAD_GEOMETRY_EVENT="load_geometry",t.LOAD_MISSING_GEOMETRY="loadMissingGeometry",t.WEBGL_CONTEXT_LOST_EVENT="webglcontextlost",t.WEBGL_CONTEXT_RESTORED_EVENT="webglcontextrestored",t.CANCEL_LEAFLET_SCREENSHOT="cancelLeafletScreenshot",t.SET_VIEW_EVENT="setView",t.RENDER_FIRST_PIXEL="renderFirstPixel",t.PROFILE_CHANGE_EVENT="profileChanged",t.RENDER_SCENE_PART="renderScenePart",t.OBJECT_UNDER_MOUSE_CHANGED="hoverObjectChanged",t.ANIM_ENDED="animEnded",t.TRANSITION_STARTED="transitionStarted",t.TRANSITION_ENDED="transitionEnded",t.FRAGMENTS_LOADED_EVENT="fragmentsLoaded",t.FRAGMENTS_UNLOADED_EVENT="fragmentsUnloaded",t.SCENE_UPDATED_EVENT="sceneUpdated",t.REFRESH_CUSTOM_PROPERTIES="refreshCustomProperties",t.REFRESH_CUSTOM_PROPERTIES_VALUES="refreshCustomPropertiesValues"},2240:(e,t,i)=>{"use strict";i.d(t,{A:()=>r});var n=i(1354),a=i.n(n),s=i(6314),o=i.n(s)()(a());o.push([e.id,'@font-face{font-family:"calibration-icon";src:url("data:application/octet-stream;base64,d09GRgABAAAAAAtYAA8AAAAAE7QAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABWAAAADsAAABUIIwleU9TLzIAAAGUAAAAQgAAAFZWgGFpY21hcAAAAdgAAABOAAABcAGIBM1jdnQgAAACKAAAABMAAAAgBtX/BGZwZ20AAAI8AAAFkAAAC3CKkZBZZ2FzcAAAB8wAAAAIAAAACAAAABBnbHlmAAAH1AAAAOQAAADkZyzZ8WhlYWQAAAi4AAAAMQAAADYL0YfIaGhlYQAACOwAAAAcAAAAJAc7A1VobXR4AAAJCAAAAAgAAAAIBvL//2xvY2EAAAkQAAAABgAAAAYAcgAAbWF4cAAACRgAAAAgAAAAIADpC8puYW1lAAAJOAAAAXcAAALNzJ0cHnBvc3QAAAqwAAAAKgAAADsMvKbDcHJlcAAACtwAAAB6AAAAhuVBK7x4nGNgZGBg4GIwYLBjYMpJLMlj4HNx8wlhkGJgYYAAkDwymzEnMz2RgQPGA8qxgGkOIGaDiAIAKVkFSAB4nGNgZK5knMDAysDAVMW0h4GBoQdCMz5gMGRkAooysDIzYAUBaa4pDA4MiQyJzEH/sxiimIMYpgGFGUFyAM95CpgAAHicY2BgYGVgYGAGYh0gZmFgYAxhYGQAAT+gKCNYnJmBCyzOwqAEVsMCFk/8/x9OMoJ0gkQZ2RhoDxjpYAclgAdMykB54LCCYkYA4LUHVgAAeJxjYEADEhDIHPQ/C4QBEmwD3QB4nK1WaXfTRhQdeUmchCwlCy1qYcTEabBGJmzBgAlBsmMgXZytlaCLFDvpvvGJ3+Bf82Tac+g3flrvGy8kkLTncJqTo3fnzdXM22USWpLYC+uRlJsvxdTWJo3sPAnphk3LUXwoO3shZYrJ3wVREK2W2rcdh0REIlC1rrBEEPseWZpkfOhRRsu2pFdNyi096S5b40G9Vd9+GjrKsTuhpGYzdGg9siVVGFWiSKY9UtKmZaj6K0krvL/CzFfNUMKITiJpvBnG0EjeG2e0ymg1tuMoimyy3ChSJJrhQRR5lNUS5+SKCQzKB82Q8sqnEeXD/Iis2KOcVrBLttP8vi95p3c5P7Ffb1G25EAfyI7s4Ox0JV+EW1th3LST7ShUEXbXd0Js2exU/2aP8ppGA7crMr3QjGCpfIUQKz+hzP4hWS2cT/mSR6NaspETQetlTuxLPoHW44gpcc0YWdDd0QkR1P2SMwz2mD4e/PHeKZYLEwJ4HMt6RyWcCBMpYXM0SdowcmAlZYsqqfWumDjldVrEW8J+7drRl85o41B3YjxbDx1bOVHJ8WhSp5lMndpJzaMpDaKUdCZ4zK8DKD+iSV5tYzWJlUfTOGbGhEQiAi3cS1NBLDuxpCkEzaMZvbkbprl2LVqkyQP13KP39OZWuLnTU9oO9LNGf1anYjrYC9PpaeQv8Wna5SJF6frpGX5M4kHWAjKRLTbDlIMHb/0O0svXlhyF1wbY7u3zK6h91kTwpAH7G9AeT9UpCUyFmFWIVkBirWtZlsnVrBapyNR3Q5pWvqzTBIpyHBfHvoxx/V8zM5aYEr7fidOzIy49c+1LCNMcfJt1PZrXqcVyAXFmeU6nWZbv6zTH8gOd5lme1+kIS1unoyw/1GmB5Uc6HWN5QQuadN/BkIsw5AIOkDCEpQNDWF6CISwVDGG5CENYFmEIyyUYwvJjGMJyGYawvKxl1dRTSePamVgGbEJgYo4eucxF5WoquVRCu2hUakOeEm6VVBTPqn9loF488oY5sBZIl8iaXzHOlY9G5fjWFS1vGjtXwLHqbx+O9jnxUtaLhT8F/9XWVCW9Ys3Dk6vwG4aebCeqNql4dE2Xz1U9uv5fVFRYC/QbSIVYKMqybHBnIoSPOp2GaqCVQ8xszDy063XLmp/D/TcxQhZQ/fg3FBoL3INOWUlZ7eCs1dfbstw7g3I4EyxJMTfz+lb4IiOz0n6RWcqej3wecAWMSmXYagOtFbzZJzEPmd4kzwRxW1E2SNrYzgSJDRzzgHnznQQmYeqqDeRO4YYN+AVhbsF5J1yieqMsh+5F7PMopPxbp+JE9qhojMCz2Rthr+9Cym9xDCQ0+aV+DFQVoakYNRXQNFJuqAZfxtm6bULGDvQjKnbDsqziw8cW95WSbRmEfKSI1aOjn9Zeok6q3H5mFJfvnb4FwSA1MX9733RxkMq7WskyR20DU7calVPXmkPjVYfq5lH1vePsEzlrmm66Jx56X9Oq28HFXCyw9m0O0lImF9T1YYUNosvFpVDqZTRJ77gHGBYY0O9Qio3/q/rYfJ4rVYXRcSTfTtS30edgDPwP2H9H9QPQ92Pocg0uz/eaE59u9OFsma6iF+un6Dcwa625WboG3NB0A+IhR62OuMoNfKcGcXqkuRzpIeBj3RXiAcAmgMXgE921jOZTAKP5jDk+wOfMYdBkDoMt5jDYZs4awA5zGOwyh8Eecxh8wZx1gC+ZwyBkDoOIOQyeMCcAeMocBl8xh8HXzGHwDXPuA3zLHAYxcxgkzGGwr+nWMMwtXtBdoLZBVaADU09Y3MPiUFNlyP6OF4b9vUHM/sEgpv6o6faQ+hMvDPVng5j6i0FM/VXTnSH1N14Y6u8GMfUPg5j6TL8Yy2UGv4x8lwoHlF1sPufvifcP28VAuQABAAH//wAPAAP///+TAwoDUgAlAC4AMQBJQEYkAQIGBQFHFhUQDwQBRAAHBgAGBwBtCAQCAAMCAgEAAVwKAQYGBVYJAQUFDAZJJyYAADEwKyomLicuACUAJSMkFCQXCwUZKwEVDgEVFBcDIw4BHgE7AQcXPwEhHwE3JzMyNjQmKwEDNjU0Jic1BzIWFAYiJjQ2FxMhAVgoNA7ANAoNAg0KHh4LXEABjUBbDB4eCQ4OCTLADTMoLhMbGyYaGhOw/qEDUm8ORyweHP5EAQ0UDERnLn19LmdEDRQNAbwaICxHDm/CGyYaGiYbzv6qeJxjYGRgYABiNfd3DvH8Nl8ZuJlfAEUYrqQu/A+jgWAy8wvmICCXg4EJJAoAgCEOvwAAAHicY2BkYGAO+p8FJF/8/w8iGYAiKIAJAIvHBZcD6AAAAwr//wAAAAAAcgAAAAEAAAACADIAAwAAAAAAAgAWACYAcwAAAFoLcAAAAAB4nHWQy07CQBSG/5GLCokaTdw6KwMxlksiCxISEgxsdEMMW1NKaUtKh0wHEl7Dd/BhfAmfxZ92MAZim+l855szZ04HwDW+IZA/Txw5C5wxyvkEp+hZLtA/Wy6SXyyXUMWb5TL9u+UKHhBYruIGH6wgiueMFvi0LHAlLi2f4ELcWS7QP1ouknuWS7gVr5bL9J7lCiYitVzFvfgaqNVWR0FoZG1Ql+1mqyOnW6moosSNpbs2odKp7Mu5Sowfx8rx1HLPYz9Yx67eh/t54us0UolsOc29GvmJr13jz3bV003QNmYu51ot5dBmyJVWC98zTmjMqtto/D0PAyissIVGxKsKYSBRo61zbqOJFjqkKTMkM/OsCAlcxDQu1twRZisp4z7HnFFC6zMjJjvw+F0e+TEp4P6YVfTR6mE8Ie3OiDIv2ZfD7g6zRqQky3QzO/vtPcWGp7VpDXftutRZVxLDgxqS97FbW9B49E52K4a2iwbff/7vB+NphE8AeJxjYGKAAC4G7ICJkYmRmUEwOTEnM6kosSQzPy++PCOzJJWBAQBRdwcvAAB4nGPw3sFwIihiIyNjX+QGxp0cDBwMyQUbGVidNjEwMmiBGJu5mBg5ICw+BjCLzWkX0wGgNCeQze60i8EBwmZmcNmowtgRGLHBoSNiI3OKy0Y1EG8XRwMDI4tDR3JIBEhJJBBs5mFi5NHawfi/dQNL70YmBhcADHYj9AAA") format("woff");font-weight:normal;font-style:normal}[class^=calibration-icon],[class*=" calibration-icon"]{font-family:"calibration-icon";font-style:normal;font-weight:normal;font-variant:normal;line-height:1;padding-top:2px;speak:none;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.adsk-viewing-viewer .calibration-icon:before{content:"a"}.adsk-viewing-viewer .calibration-panel{left:calc(50% - 190px);top:calc(50% - 145px);width:380px;height:auto;z-index:4}.adsk-viewing-viewer .calibration-panel .calibration-table{padding-left:24px;padding-right:24px;margin-top:12px;margin-bottom:12px;box-sizing:border-box}.adsk-viewing-viewer .measure-settings-popup .option-drop-down,.adsk-viewing-viewer .calibration-panel .option-drop-down{width:100%;padding-right:0px;box-sizing:border-box}.adsk-viewing-viewer .measure-settings-popup .adsk-lmv-tftable tr td,.adsk-viewing-viewer .calibration-panel .adsk-lmv-tftable tr td{width:auto;padding:2px 0px 2px 0px;height:56px;font-size:14px}.adsk-viewing-viewer .calibration-panel .adsk-lmv-tftable tr td div{padding:0px}.adsk-viewing-viewer .calibration-panel .adsk-lmv-tftable tr td input{margin:0px;box-sizing:border-box;width:100%;height:36px;font-size:14px}.adsk-viewing-viewer .calibration-panel .adsk-lmv-tftable tr td select{height:36px;font-size:14px}.adsk-viewing-viewer .measure-settings-popup .switch{margin-left:25px}.adsk-viewing-viewer .measure-settings-popup .switch .slider{width:26px}.adsk-viewing-viewer .calibration-textbox::-webkit-inner-spin-button,.adsk-viewing-viewer .calibration-textbox::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.adsk-viewing-viewer .calibration-text{text-align:left;padding:6px 10px 6px 10px;margin:20px 20px 14px 20px;font-size:14px;-webkit-font-smoothing:antialiased}.adsk-viewing-viewer .calibration-button{margin-top:15px}.adsk-viewing-viewer .calibration-button-left{width:calc(50% - 15px);margin-right:5px !important;display:inline-block}.adsk-viewing-viewer .calibration-button-right{width:calc(50% - 15px);margin-left:5px !important;display:inline-block}.adsk-viewing-viewer .calibration-line{position:absolute;display:block;top:0;left:0;pointer-events:none;z-index:0}.adsk-viewing-viewer .calibration-label{display:none;position:absolute;pointer-events:none;text-align:"center";vertical-align:middle;cursor:default;padding:2px;color:#000;background:#fff;border-radius:10px;-webkit-transform-origin:50% 53%}.adsk-viewing-viewer .calibration-label-text{display:inline-block;pointer-events:none;text-align:"center";vertical-align:middle;font-size:12px;cursor:default;padding:2px;color:#000;background:#fff;border-bottom:1px dashed #000;text-decoration:none;text-transform:uppercase;-webkit-font-smoothing:antialiased}.adsk-viewing-viewer .calibration-label-text:hover{color:#039be5;border-bottom:1px dashed #039be5}.adsk-viewing-viewer .calibration-label.visible{display:block}.adsk-viewing-viewer .calibration-endpoint:hover.calibration-endpoint.enable-hover,.adsk-viewing-viewer .calibration-endpoint.edit{background-color:#039be5}.adsk-viewing-viewer .calibration-endpoint:hover.calibration-endpoint.enable-hover>*,.adsk-viewing-viewer .calibration-endpoint.edit>*{color:#fff}.adsk-viewing-viewer .calibration-endpoint.editable{pointer-events:all}.adsk-viewing-viewer .calibration-endpoint{display:none;position:absolute;cursor:move;pointer-events:none;width:30px;height:30px;background-color:#fff;box-shadow:0 4px 8px 0 rgba(0,0,0,.24),0 0 8px 0 rgba(0,0,0,.12);-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px;justify-content:center;align-items:center;text-align:center}.adsk-viewing-viewer .calibration-endpoint.visible{display:block}.adsk-viewing-viewer .calibration-endpoint-text{display:inline-block;font-size:14px;vertical-align:middle;cursor:default;margin:5px 5px 5px 5px;vertical-align:middle;text-align:center;color:#039be5;text-decoration:none;text-transform:uppercase;pointer-events:none}.adsk-viewing-viewer .calibration-panel .docking-panel-footer{padding:16px 24px;display:flex;justify-content:flex-end;text-align:center;position:relative;height:auto}.adsk-viewing-viewer .calibration-panel .docking-panel-footer .docking-panel-secondary-button,.adsk-viewing-viewer .calibration-panel .docking-panel-footer .docking-panel-primary-button{padding:0px 16px;margin:0px 0px 0px 8px;font-size:14px}.adsk-viewing-viewer .calibration-panel .docking-panel-title{padding-top:19px;padding-bottom:19px}.adsk-viewing-viewer .calibration-panel .docking-panel-close{margin-top:7.5px}',"",{version:3,sources:["webpack://./extensions/Measure/Calibration.css"],names:[],mappings:"AAAA,WAAW,8BAA8B,CAAC,+1HAA+1H,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,uDAAuD,8BAA8B,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,mBAAmB,CAAC,kCAAkC,CAAC,iCAAiC,CAAC,8CAA8C,WAAW,CAAC,wCAAwC,sBAAsB,CAAC,qBAAqB,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,2DAA2D,iBAAiB,CAAC,kBAAkB,CAAC,eAAe,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,yHAAyH,UAAU,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,qIAAqI,UAAU,CAAC,uBAAuB,CAAC,WAAW,CAAC,cAAc,CAAC,oEAAoE,WAAW,CAAC,sEAAsE,UAAU,CAAC,qBAAqB,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,uEAAuE,WAAW,CAAC,cAAc,CAAC,qDAAqD,gBAAgB,CAAC,6DAA6D,UAAU,CAAC,0IAA0I,uBAAuB,CAAC,QAAQ,CAAC,uCAAuC,eAAe,CAAC,yBAAyB,CAAC,0BAA0B,CAAC,cAAc,CAAC,kCAAkC,CAAC,yCAAyC,eAAe,CAAC,8CAA8C,sBAAsB,CAAC,2BAA2B,CAAC,oBAAoB,CAAC,+CAA+C,sBAAsB,CAAC,0BAA0B,CAAC,oBAAoB,CAAC,uCAAuC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,wCAAwC,YAAY,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,eAAe,CAAC,kBAAkB,CAAC,gCAAgC,CAAC,6CAA6C,oBAAoB,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,eAAe,CAAC,6BAA6B,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,kCAAkC,CAAC,mDAAmD,aAAa,CAAC,gCAAgC,CAAC,gDAAgD,aAAa,CAAC,mIAAmI,wBAAwB,CAAC,uIAAuI,UAAU,CAAC,oDAAoD,kBAAkB,CAAC,2CAA2C,YAAY,CAAC,iBAAiB,CAAC,WAAW,CAAC,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,qBAAqB,CAAC,gEAAgE,CAAC,uBAAuB,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,mDAAmD,aAAa,CAAC,gDAAgD,oBAAoB,CAAC,cAAc,CAAC,qBAAqB,CAAC,cAAc,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,aAAa,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,8DAA8D,iBAAiB,CAAC,YAAY,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,WAAW,CAAC,0LAA0L,gBAAgB,CAAC,sBAAsB,CAAC,cAAc,CAAC,6DAA6D,gBAAgB,CAAC,mBAAmB,CAAC,6DAA6D,gBAAgB",sourcesContent:['@font-face{font-family:"calibration-icon";src:url("data:application/octet-stream;base64,d09GRgABAAAAAAtYAA8AAAAAE7QAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABWAAAADsAAABUIIwleU9TLzIAAAGUAAAAQgAAAFZWgGFpY21hcAAAAdgAAABOAAABcAGIBM1jdnQgAAACKAAAABMAAAAgBtX/BGZwZ20AAAI8AAAFkAAAC3CKkZBZZ2FzcAAAB8wAAAAIAAAACAAAABBnbHlmAAAH1AAAAOQAAADkZyzZ8WhlYWQAAAi4AAAAMQAAADYL0YfIaGhlYQAACOwAAAAcAAAAJAc7A1VobXR4AAAJCAAAAAgAAAAIBvL//2xvY2EAAAkQAAAABgAAAAYAcgAAbWF4cAAACRgAAAAgAAAAIADpC8puYW1lAAAJOAAAAXcAAALNzJ0cHnBvc3QAAAqwAAAAKgAAADsMvKbDcHJlcAAACtwAAAB6AAAAhuVBK7x4nGNgZGBg4GIwYLBjYMpJLMlj4HNx8wlhkGJgYYAAkDwymzEnMz2RgQPGA8qxgGkOIGaDiAIAKVkFSAB4nGNgZK5knMDAysDAVMW0h4GBoQdCMz5gMGRkAooysDIzYAUBaa4pDA4MiQyJzEH/sxiimIMYpgGFGUFyAM95CpgAAHicY2BgYGVgYGAGYh0gZmFgYAxhYGQAAT+gKCNYnJmBCyzOwqAEVsMCFk/8/x9OMoJ0gkQZ2RhoDxjpYAclgAdMykB54LCCYkYA4LUHVgAAeJxjYEADEhDIHPQ/C4QBEmwD3QB4nK1WaXfTRhQdeUmchCwlCy1qYcTEabBGJmzBgAlBsmMgXZytlaCLFDvpvvGJ3+Bf82Tac+g3flrvGy8kkLTncJqTo3fnzdXM22USWpLYC+uRlJsvxdTWJo3sPAnphk3LUXwoO3shZYrJ3wVREK2W2rcdh0REIlC1rrBEEPseWZpkfOhRRsu2pFdNyi096S5b40G9Vd9+GjrKsTuhpGYzdGg9siVVGFWiSKY9UtKmZaj6K0krvL/CzFfNUMKITiJpvBnG0EjeG2e0ymg1tuMoimyy3ChSJJrhQRR5lNUS5+SKCQzKB82Q8sqnEeXD/Iis2KOcVrBLttP8vi95p3c5P7Ffb1G25EAfyI7s4Ox0JV+EW1th3LST7ShUEXbXd0Js2exU/2aP8ppGA7crMr3QjGCpfIUQKz+hzP4hWS2cT/mSR6NaspETQetlTuxLPoHW44gpcc0YWdDd0QkR1P2SMwz2mD4e/PHeKZYLEwJ4HMt6RyWcCBMpYXM0SdowcmAlZYsqqfWumDjldVrEW8J+7drRl85o41B3YjxbDx1bOVHJ8WhSp5lMndpJzaMpDaKUdCZ4zK8DKD+iSV5tYzWJlUfTOGbGhEQiAi3cS1NBLDuxpCkEzaMZvbkbprl2LVqkyQP13KP39OZWuLnTU9oO9LNGf1anYjrYC9PpaeQv8Wna5SJF6frpGX5M4kHWAjKRLTbDlIMHb/0O0svXlhyF1wbY7u3zK6h91kTwpAH7G9AeT9UpCUyFmFWIVkBirWtZlsnVrBapyNR3Q5pWvqzTBIpyHBfHvoxx/V8zM5aYEr7fidOzIy49c+1LCNMcfJt1PZrXqcVyAXFmeU6nWZbv6zTH8gOd5lme1+kIS1unoyw/1GmB5Uc6HWN5QQuadN/BkIsw5AIOkDCEpQNDWF6CISwVDGG5CENYFmEIyyUYwvJjGMJyGYawvKxl1dRTSePamVgGbEJgYo4eucxF5WoquVRCu2hUakOeEm6VVBTPqn9loF488oY5sBZIl8iaXzHOlY9G5fjWFS1vGjtXwLHqbx+O9jnxUtaLhT8F/9XWVCW9Ys3Dk6vwG4aebCeqNql4dE2Xz1U9uv5fVFRYC/QbSIVYKMqybHBnIoSPOp2GaqCVQ8xszDy063XLmp/D/TcxQhZQ/fg3FBoL3INOWUlZ7eCs1dfbstw7g3I4EyxJMTfz+lb4IiOz0n6RWcqej3wecAWMSmXYagOtFbzZJzEPmd4kzwRxW1E2SNrYzgSJDRzzgHnznQQmYeqqDeRO4YYN+AVhbsF5J1yieqMsh+5F7PMopPxbp+JE9qhojMCz2Rthr+9Cym9xDCQ0+aV+DFQVoakYNRXQNFJuqAZfxtm6bULGDvQjKnbDsqziw8cW95WSbRmEfKSI1aOjn9Zeok6q3H5mFJfvnb4FwSA1MX9733RxkMq7WskyR20DU7calVPXmkPjVYfq5lH1vePsEzlrmm66Jx56X9Oq28HFXCyw9m0O0lImF9T1YYUNosvFpVDqZTRJ77gHGBYY0O9Qio3/q/rYfJ4rVYXRcSTfTtS30edgDPwP2H9H9QPQ92Pocg0uz/eaE59u9OFsma6iF+un6Dcwa625WboG3NB0A+IhR62OuMoNfKcGcXqkuRzpIeBj3RXiAcAmgMXgE921jOZTAKP5jDk+wOfMYdBkDoMt5jDYZs4awA5zGOwyh8Eecxh8wZx1gC+ZwyBkDoOIOQyeMCcAeMocBl8xh8HXzGHwDXPuA3zLHAYxcxgkzGGwr+nWMMwtXtBdoLZBVaADU09Y3MPiUFNlyP6OF4b9vUHM/sEgpv6o6faQ+hMvDPVng5j6i0FM/VXTnSH1N14Y6u8GMfUPg5j6TL8Yy2UGv4x8lwoHlF1sPufvifcP28VAuQABAAH//wAPAAP///+TAwoDUgAlAC4AMQBJQEYkAQIGBQFHFhUQDwQBRAAHBgAGBwBtCAQCAAMCAgEAAVwKAQYGBVYJAQUFDAZJJyYAADEwKyomLicuACUAJSMkFCQXCwUZKwEVDgEVFBcDIw4BHgE7AQcXPwEhHwE3JzMyNjQmKwEDNjU0Jic1BzIWFAYiJjQ2FxMhAVgoNA7ANAoNAg0KHh4LXEABjUBbDB4eCQ4OCTLADTMoLhMbGyYaGhOw/qEDUm8ORyweHP5EAQ0UDERnLn19LmdEDRQNAbwaICxHDm/CGyYaGiYbzv6qeJxjYGRgYABiNfd3DvH8Nl8ZuJlfAEUYrqQu/A+jgWAy8wvmICCXg4EJJAoAgCEOvwAAAHicY2BkYGAO+p8FJF/8/w8iGYAiKIAJAIvHBZcD6AAAAwr//wAAAAAAcgAAAAEAAAACADIAAwAAAAAAAgAWACYAcwAAAFoLcAAAAAB4nHWQy07CQBSG/5GLCokaTdw6KwMxlksiCxISEgxsdEMMW1NKaUtKh0wHEl7Dd/BhfAmfxZ92MAZim+l855szZ04HwDW+IZA/Txw5C5wxyvkEp+hZLtA/Wy6SXyyXUMWb5TL9u+UKHhBYruIGH6wgiueMFvi0LHAlLi2f4ELcWS7QP1ouknuWS7gVr5bL9J7lCiYitVzFvfgaqNVWR0FoZG1Ql+1mqyOnW6moosSNpbs2odKp7Mu5Sowfx8rx1HLPYz9Yx67eh/t54us0UolsOc29GvmJr13jz3bV003QNmYu51ot5dBmyJVWC98zTmjMqtto/D0PAyissIVGxKsKYSBRo61zbqOJFjqkKTMkM/OsCAlcxDQu1twRZisp4z7HnFFC6zMjJjvw+F0e+TEp4P6YVfTR6mE8Ie3OiDIv2ZfD7g6zRqQky3QzO/vtPcWGp7VpDXftutRZVxLDgxqS97FbW9B49E52K4a2iwbff/7vB+NphE8AeJxjYGKAAC4G7ICJkYmRmUEwOTEnM6kosSQzPy++PCOzJJWBAQBRdwcvAAB4nGPw3sFwIihiIyNjX+QGxp0cDBwMyQUbGVidNjEwMmiBGJu5mBg5ICw+BjCLzWkX0wGgNCeQze60i8EBwmZmcNmowtgRGLHBoSNiI3OKy0Y1EG8XRwMDI4tDR3JIBEhJJBBs5mFi5NHawfi/dQNL70YmBhcADHYj9AAA") format("woff");font-weight:normal;font-style:normal}[class^=calibration-icon],[class*=" calibration-icon"]{font-family:"calibration-icon";font-style:normal;font-weight:normal;font-variant:normal;line-height:1;padding-top:2px;speak:none;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.adsk-viewing-viewer .calibration-icon:before{content:"a"}.adsk-viewing-viewer .calibration-panel{left:calc(50% - 190px);top:calc(50% - 145px);width:380px;height:auto;z-index:4}.adsk-viewing-viewer .calibration-panel .calibration-table{padding-left:24px;padding-right:24px;margin-top:12px;margin-bottom:12px;box-sizing:border-box}.adsk-viewing-viewer .measure-settings-popup .option-drop-down,.adsk-viewing-viewer .calibration-panel .option-drop-down{width:100%;padding-right:0px;box-sizing:border-box}.adsk-viewing-viewer .measure-settings-popup .adsk-lmv-tftable tr td,.adsk-viewing-viewer .calibration-panel .adsk-lmv-tftable tr td{width:auto;padding:2px 0px 2px 0px;height:56px;font-size:14px}.adsk-viewing-viewer .calibration-panel .adsk-lmv-tftable tr td div{padding:0px}.adsk-viewing-viewer .calibration-panel .adsk-lmv-tftable tr td input{margin:0px;box-sizing:border-box;width:100%;height:36px;font-size:14px}.adsk-viewing-viewer .calibration-panel .adsk-lmv-tftable tr td select{height:36px;font-size:14px}.adsk-viewing-viewer .measure-settings-popup .switch{margin-left:25px}.adsk-viewing-viewer .measure-settings-popup .switch .slider{width:26px}.adsk-viewing-viewer .calibration-textbox::-webkit-inner-spin-button,.adsk-viewing-viewer .calibration-textbox::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.adsk-viewing-viewer .calibration-text{text-align:left;padding:6px 10px 6px 10px;margin:20px 20px 14px 20px;font-size:14px;-webkit-font-smoothing:antialiased}.adsk-viewing-viewer .calibration-button{margin-top:15px}.adsk-viewing-viewer .calibration-button-left{width:calc(50% - 15px);margin-right:5px !important;display:inline-block}.adsk-viewing-viewer .calibration-button-right{width:calc(50% - 15px);margin-left:5px !important;display:inline-block}.adsk-viewing-viewer .calibration-line{position:absolute;display:block;top:0;left:0;pointer-events:none;z-index:0}.adsk-viewing-viewer .calibration-label{display:none;position:absolute;pointer-events:none;text-align:"center";vertical-align:middle;cursor:default;padding:2px;color:#000;background:#fff;border-radius:10px;-webkit-transform-origin:50% 53%}.adsk-viewing-viewer .calibration-label-text{display:inline-block;pointer-events:none;text-align:"center";vertical-align:middle;font-size:12px;cursor:default;padding:2px;color:#000;background:#fff;border-bottom:1px dashed #000;text-decoration:none;text-transform:uppercase;-webkit-font-smoothing:antialiased}.adsk-viewing-viewer .calibration-label-text:hover{color:#039be5;border-bottom:1px dashed #039be5}.adsk-viewing-viewer .calibration-label.visible{display:block}.adsk-viewing-viewer .calibration-endpoint:hover.calibration-endpoint.enable-hover,.adsk-viewing-viewer .calibration-endpoint.edit{background-color:#039be5}.adsk-viewing-viewer .calibration-endpoint:hover.calibration-endpoint.enable-hover>*,.adsk-viewing-viewer .calibration-endpoint.edit>*{color:#fff}.adsk-viewing-viewer .calibration-endpoint.editable{pointer-events:all}.adsk-viewing-viewer .calibration-endpoint{display:none;position:absolute;cursor:move;pointer-events:none;width:30px;height:30px;background-color:#fff;box-shadow:0 4px 8px 0 rgba(0,0,0,.24),0 0 8px 0 rgba(0,0,0,.12);-moz-border-radius:50px;-webkit-border-radius:50px;border-radius:50px;justify-content:center;align-items:center;text-align:center}.adsk-viewing-viewer .calibration-endpoint.visible{display:block}.adsk-viewing-viewer .calibration-endpoint-text{display:inline-block;font-size:14px;vertical-align:middle;cursor:default;margin:5px 5px 5px 5px;vertical-align:middle;text-align:center;color:#039be5;text-decoration:none;text-transform:uppercase;pointer-events:none}.adsk-viewing-viewer .calibration-panel .docking-panel-footer{padding:16px 24px;display:flex;justify-content:flex-end;text-align:center;position:relative;height:auto}.adsk-viewing-viewer .calibration-panel .docking-panel-footer .docking-panel-secondary-button,.adsk-viewing-viewer .calibration-panel .docking-panel-footer .docking-panel-primary-button{padding:0px 16px;margin:0px 0px 0px 8px;font-size:14px}.adsk-viewing-viewer .calibration-panel .docking-panel-title{padding-top:19px;padding-bottom:19px}.adsk-viewing-viewer .calibration-panel .docking-panel-close{margin-top:7.5px}'],sourceRoot:""}]);const r=o},4660:(e,t,i)=>{"use strict";i.d(t,{A:()=>r});var n=i(1354),a=i.n(n),s=i(6314),o=i.n(s)()(a());o.push([e.id,'.adsk-viewing-viewer .measure-length:hover.measure-length.enable-hover{box-shadow:0 0 16px 3px rgba(0,117,210,.7);-webkit-box-shadow:0 0 16px 3px rgba(0,117,210,.7);-moz-box-shadow:0 0 16px 3px rgba(0,117,210,.7)}.adsk-viewing-viewer .measure-length{display:none;position:absolute;height:19px;left:0px;top:0px;padding:2px 0 2px 0;background-color:#009bea;box-shadow:0px 1px 3px 1px rgba(0,0,0,.25);color:#f4f4f4;font-size:12px;text-align:center;line-height:1.2;white-space:nowrap;border-radius:8px;pointer-events:none;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0)}.adsk-viewing-viewer .measure-length.visible{display:block}.adsk-viewing-viewer .measure-length.fetching-topology{background-color:rgba(34,34,34,.8);box-shadow:0 .5px 1.5px 0 rgba(0,0,0,.3)}.adsk-viewing-viewer .measure-length-text{display:inline-block;margin:0 5px 0 5px;vertical-align:middle;font-size:16px;pointer-events:none}.adsk-viewing-viewer .measure-delta-text{margin:0 5px 0 5px;align-self:center;font-size:14px;overflow:hidden;white-space:nowrap;height:16px;line-height:16px;vertical-align:middle;pointer-events:none}.adsk-viewing-viewer .measure-length-button{display:inline-block;width:16px;height:16px;font-size:16px;float:right;color:#fff;opacity:.7}.adsk-viewing-viewer .measure-length-button:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.adsk-viewing-viewer .measure-label:hover.measure-label.enable-hover,.adsk-viewing-viewer .measure-label.on-edit{box-shadow:0 0 4px 4px #0d69ca;-webkit-box-shadow:0 0 4px 4px #0d69ca;-moz-box-shadow:0 0 4px 4px #0d69ca}.adsk-viewing-viewer .measure-label.editable{pointer-events:all}.adsk-viewing-viewer .measure-label{display:none;position:absolute;width:7px;height:7px;cursor:move;pointer-events:none;border-radius:100px}.adsk-viewing-viewer .measure-label-hit-area{display:inline-block;position:absolute;width:44px;height:44px;left:-22px;top:-22px;border-radius:100px;z-index:2}.adsk-viewing-viewer .measure-label-icon{display:inline-block;position:absolute;width:7px;height:7px;left:-2px;top:-2px;background-color:#009bea;border-style:solid;border-width:2px;border-color:#fff;border-radius:100px;box-shadow:0 2px 5px 0 #182a3d;z-index:2}.adsk-viewing-viewer .measure-label.visible{display:block}.adsk-viewing-viewer .measure-label-text{display:inline-block;margin:0px 5px 0px 5px;vertical-align:middle}.adsk-viewing-viewer .measure-horizontal-divider{height:1px;border-top:1px solid rgba(200,200,200,.8)}.adsk-viewing-viewer .measure-submenu-select{display:block;position:relative;width:calc(100% - 40px);padding:10px 20px 0px 20px;opacity:.3}.adsk-viewing-viewer .option-drop-down:disabled{opacity:.3}.adsk-viewing-viewer .measure-submenu-selectlabel{position:relative;display:inline-block;padding-right:20px;padding-bottom:4px}.adsk-viewing-viewer .measure-results{position:relative;display:block;padding:5px 0px 10px 30px}.adsk-viewing-viewer .measure-result-label{display:inline-block;padding-right:10px}.adsk-viewing-viewer .measure-result-number{display:inline-block}.adsk-viewing-viewer .measure-delta-collapse{position:absolute;right:20px;display:inline-block;background-color:rgba(255,255,255,.12);margin:0px 4px 0px 4px;padding:0px 4px 0px 4px;cursor:pointer;text-align:center}.adsk-viewing-viewer .measure-delta-collapse:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.adsk-viewing-viewer .measure-selection-repick{position:absolute;right:20px;display:inline-block;background-color:rgba(255,255,255,.12);margin:4px 4px 4px 4px;padding:4px 4px 4px 4px;cursor:pointer;text-align:center}.adsk-viewing-viewer .measure-selection-repick:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.adsk-viewing-viewer .measure-restart{margin:10px 20px 15px 20px;padding:6px 10px 6px 10px;width:calc(100% - 55px);cursor:pointer;text-align:center;border-style:solid;border-width:1px;border-color:rgba(255,255,255,.2);border-radius:3px}.adsk-viewing-viewer .docking-panel:hover .measure-restart{background-color:rgba(255,255,255,.12)}.adsk-viewing-viewer .docking-panel .measure-restart:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.adsk-viewing-viewer .measure-panel-title{padding-top:0px;padding-left:20px;margin-top:10px}.adsk-viewing-viewer .measure-panel-title:hover{cursor:pointer}.adsk-viewing-viewer .measure-panel-title.collapsed{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEwMDhBMzY4QTYyODExRTM5REY0Q0MwMTM3MTVFOTMzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEwMDhBMzY5QTYyODExRTM5REY0Q0MwMTM3MTVFOTMzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTAwOEEzNjZBNjI4MTFFMzlERjRDQzAxMzcxNUU5MzMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTAwOEEzNjdBNjI4MTFFMzlERjRDQzAxMzcxNUU5MzMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6WHWu4AAAAcElEQVR42mL8//8/AzmAiYFMgEtjGSFDcUmGAfEEIOYix6lWQLwUiGXJ8SNI00IgNiIncPiAeCoQ+5ITqsxQA+CAhQhN34C4AoiPkaLxGRAXAfEdUvx4DohjsGkCA1CSw4LrgZgVhxwYM9I9rQIEGACZNDs01yUXlAAAAABJRU5ErkJggg==);background-repeat:no-repeat}.adsk-viewing-viewer .measure-panel-title.expanded{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkE3QzFFQUQ1QTYyODExRTM5NzE2RjcyN0QxQjg0QTREIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkE3QzFFQUQ2QTYyODExRTM5NzE2RjcyN0QxQjg0QTREIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTdDMUVBRDNBNjI4MTFFMzk3MTZGNzI3RDFCODRBNEQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTdDMUVBRDRBNjI4MTFFMzk3MTZGNzI3RDFCODRBNEQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6XuY60AAAARklEQVR42mL8//8/AzmAiYFMQBeNqSg8kB+JwKlAfAZZjIlIm9JJdSpWTYQ04tSETyNeTbg0EtSETSNRmkCAcegkOYAAAwDGjDZHvY373AAAAABJRU5ErkJggg==);background-repeat:no-repeat}.adsk-viewing-viewer .adsk-viewing-viewer .measure-table td{padding:10px 0px 10px 20px}.adsk-viewing-viewer .measure-selection-one-label{display:inline-block;margin:18px 18px 18px 18px;width:16px;height:16px;font-size:16px;float:left;padding:2px;background-color:#03f;border-radius:10px;opacity:.6}.adsk-viewing-viewer .measure-selection-two-label{display:inline-block;margin:18px 18px 18px 18px;width:16px;height:16px;font-size:16px;float:left;padding:2px;background-color:#03f;border-radius:10px;opacity:.6}.adsk-viewing-viewer .measure-repick{display:inline-block;cursor:default;margin:20px 20px 20px 20px;width:16px;height:16px;font-size:16px;float:right;opacity:.5}.adsk-viewing-viewer .measure-repick:hover{opacity:1}.adsk-viewing-viewer .measure-selection-result{display:inline-block;margin:21px 0px 21px 0px}.adsk-viewing-viewer .measure-distance-icon{display:inline-block;margin:20px 2px 20px 2px;font-size:52px;color:#f90;float:left}.adsk-viewing-viewer .measure-angle-icon{display:inline-block;margin:20px 2px 20px 2px;font-size:52px;color:#f90;float:left}.adsk-viewing-viewer .adsk-viewing-viewer .measure-result{font-size:20px;color:#f90;display:inline-block;margin:38px 0px 38px 0px}.adsk-viewing-viewer .measure-initial{font-size:20px;display:inline-block;margin:38px 0px 38px 56px}.adsk-viewing-viewer .measure-settings-button{cursor:default;position:relative;top:20px;right:20px;width:16px;height:16px;font-size:18px;float:right;opacity:.5}.adsk-viewing-viewer .measure-settings-button:hover{opacity:1}.adsk-viewing-viewer .measure-delta-button{position:relative;top:56px;right:4px;width:16px;height:16px;font-size:16px;float:right;opacity:.5;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.adsk-viewing-viewer .measure-delta-button.rotated{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.adsk-viewing-viewer .measure-delta-button:hover{opacity:1}.adsk-viewing-viewer .measure-delta-result{display:inline-block;margin:0px 0px 20px 0px;padding:0px 0px 0px 56px}.adsk-viewing-viewer .measure-label-axis{display:none;position:absolute;width:16px;height:16px;left:0px;top:0px;background-color:#f4f4f4;border-radius:8px;pointer-events:none}.adsk-viewing-viewer .measure-label-axis-icon.X{background-color:#f12c2c}.adsk-viewing-viewer .measure-label-axis-icon.Y{background-color:#0bb80b}.adsk-viewing-viewer .measure-label-axis-icon.Z{background-color:#2c2cf1}.adsk-viewing-viewer .measure-label-axis-icon{width:20px;height:18px;color:#f4f4f4;border-radius:8px 0 0 8px;font-size:12px;padding-top:4px;line-height:15px;text-align:center;margin-left:-2px}.adsk-viewing-viewer .measure-label-axis-delta.enableTransition{transition:opacity .1s linear}.adsk-viewing-viewer .measure-label-axis-delta{display:none;position:absolute;font-size:18px;left:0px;top:0px;background-color:#fff;pointer-events:none;opacity:0;border-radius:8px;box-shadow:0px 1px 3px 1px rgba(0,0,0,.25)}.adsk-viewing-viewer .measure-label-axis.visible{display:block}.adsk-viewing-viewer .measure-label-axis-delta.visible{display:flex}.adsk-viewing-viewer .measure-label-axis-x{color:#f12c2c}.adsk-viewing-viewer .measure-label-axis-y{color:#0bb80b}.adsk-viewing-viewer .measure-label-axis-z{color:#2c2cf1}.adsk-viewing-viewer .magnifying-glass.visible{display:block}.adsk-viewing-viewer .magnifying-glass{position:absolute;display:none;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%;background:rgba(0,0,0,0);box-shadow:2px 2px 4px rgba(0,0,0,.5),inset 2px 2px 4px rgba(0,0,0,.5);-webkit-box-shadow:2px 2px 4px rgba(0,0,0,.5),inset 2px 2px 4px rgba(0,0,0,.5);-moz-box-shadow:2px 2px 4px rgba(0,0,0,.5),inset 2px 2px 4px rgba(0,0,0,.5);z-index:4}.adsk-viewing-viewer .measure-fetching-topology{display:inline-block;width:10px;height:10px;background:url("data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22 width%3D%2210%22 height%3D%2210%22 viewBox%3D%220 0 10 10%22%3E %3Cdefs%3E %3ClinearGradient id%3D%22linear-gradient%22 y1%3D%225%22 x2%3D%2210%22 y2%3D%225%22 gradientUnits%3D%22userSpaceOnUse%22%3E %3Cstop offset%3D%220%22 stop-color%3D%22%23fff%22 stop-opacity%3D%220%22%2F%3E %3Cstop offset%3D%221%22 stop-color%3D%22%23fff%22%2F%3E %3C%2FlinearGradient%3E %3C%2Fdefs%3E %3Ctitle%3EAsset 6%3C%2Ftitle%3E %3Cg id%3D%22Layer_2%22 data-name%3D%22Layer 2%22%3E %3Cg id%3D%22finals_24px%22%3E %3Cpath d%3D%22M5%2C10A5%2C5%2C0%2C0%2C1%2C0%2C5%2C1.2%2C1.2%2C0%2C0%2C1%2C2.3%2C5%2C2.7%2C2.7%2C0%2C1%2C0%2C5%2C2.3%2C1.2%2C1.2%2C0%2C0%2C1%2C5%2C0%2C5%2C5%2C0%2C0%2C1%2C5%2C10Z%22 fill%3D%22url(%23linear-gradient)%22%2F%3E %3C%2Fg%3E %3C%2Fg%3E%3C%2Fsvg%3E");margin:3px 0px -2px 3px;animation:measure-topology-fetching-anim 1.4s infinite linear;-webkit-animation:measure-topology-fetching-anim 1.4s infinite linear}@keyframes measure-topology-fetching-anim{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes measure-topology-fetching-anim{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.adsk-viewing-viewer .docking-panel.measure-settings-popup{display:flex;justify-content:center;flex-direction:column;bottom:120%;box-sizing:border-box;text-align:left;position:absolute;padding-top:15px;padding-bottom:15px}.adsk-viewing-viewer .adsk-toolbar-vertical .docking-panel.measure-settings-popup{right:120%;bottom:unset;height:max-content;width:max-content}.adsk-viewing-viewer .docking-panel.measure-settings-popup .adsk-lmv-tftable tr.switch-slider-row td{width:auto;padding-bottom:0px;padding-top:0px;vertical-align:inherit}.adsk-viewing-viewer .docking-panel.measure-settings-popup.hide{display:none}.adsk-viewing-viewer .measure-settings-popup tbody{top:15px}.adsk-toolbar .measure-toolbar-seperator{height:18px;width:1px;background-color:#999;float:left;margin:16px 5px}.adsk-toolbar.adsk-toolbar-vertical .measure-toolbar-seperator{height:1px;width:18px;margin:5px 16px}.adsk-viewing-viewer .measure-selection-area{display:block;position:absolute;cursor:pointer;z-index:1;-webkit-tap-highlight-color:rgba(0,0,0,0)}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-label-button{padding:0px;width:40px}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-label-button>label{padding:10px 0px}',"",{version:3,sources:["webpack://./extensions/Measure/Measure.css"],names:[],mappings:"AAAA,uEAAuE,0CAA0C,CAAC,kDAAkD,CAAC,+CAA+C,CAAC,qCAAqC,YAAY,CAAC,iBAAiB,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,0CAA0C,CAAC,aAAa,CAAC,cAAc,CAAC,iBAAiB,CAAC,eAAe,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,cAAc,CAAC,SAAS,CAAC,yCAAyC,CAAC,6CAA6C,aAAa,CAAC,uDAAuD,kCAAkC,CAAC,wCAAwC,CAAC,0CAA0C,oBAAoB,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,cAAc,CAAC,mBAAmB,CAAC,yCAAyC,kBAAkB,CAAC,iBAAiB,CAAC,cAAc,CAAC,eAAe,CAAC,kBAAkB,CAAC,WAAW,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,4CAA4C,oBAAoB,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,kDAAkD,qCAAqC,CAAC,+BAA+B,CAAC,4BAA4B,CAAC,2BAA2B,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,iHAAiH,8BAA8B,CAAC,sCAAsC,CAAC,mCAAmC,CAAC,6CAA6C,kBAAkB,CAAC,oCAAoC,YAAY,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,6CAA6C,oBAAoB,CAAC,iBAAiB,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,mBAAmB,CAAC,SAAS,CAAC,yCAAyC,oBAAoB,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,8BAA8B,CAAC,SAAS,CAAC,4CAA4C,aAAa,CAAC,yCAAyC,oBAAoB,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,iDAAiD,UAAU,CAAC,yCAAyC,CAAC,6CAA6C,aAAa,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,0BAA0B,CAAC,UAAU,CAAC,gDAAgD,UAAU,CAAC,kDAAkD,iBAAiB,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,sCAAsC,iBAAiB,CAAC,aAAa,CAAC,yBAAyB,CAAC,2CAA2C,oBAAoB,CAAC,kBAAkB,CAAC,4CAA4C,oBAAoB,CAAC,6CAA6C,iBAAiB,CAAC,UAAU,CAAC,oBAAoB,CAAC,sCAAsC,CAAC,sBAAsB,CAAC,uBAAuB,CAAC,cAAc,CAAC,iBAAiB,CAAC,mDAAmD,qCAAqC,CAAC,+BAA+B,CAAC,4BAA4B,CAAC,2BAA2B,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,+CAA+C,iBAAiB,CAAC,UAAU,CAAC,oBAAoB,CAAC,sCAAsC,CAAC,sBAAsB,CAAC,uBAAuB,CAAC,cAAc,CAAC,iBAAiB,CAAC,qDAAqD,qCAAqC,CAAC,+BAA+B,CAAC,4BAA4B,CAAC,2BAA2B,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,sCAAsC,0BAA0B,CAAC,yBAAyB,CAAC,uBAAuB,CAAC,cAAc,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,iCAAiC,CAAC,iBAAiB,CAAC,2DAA2D,sCAAsC,CAAC,2DAA2D,qCAAqC,CAAC,+BAA+B,CAAC,4BAA4B,CAAC,2BAA2B,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,0CAA0C,eAAe,CAAC,iBAAiB,CAAC,eAAe,CAAC,gDAAgD,cAAc,CAAC,oDAAoD,43CAA43C,CAAC,2BAA2B,CAAC,mDAAmD,o0CAAo0C,CAAC,2BAA2B,CAAC,4DAA4D,0BAA0B,CAAC,kDAAkD,oBAAoB,CAAC,0BAA0B,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,UAAU,CAAC,kDAAkD,oBAAoB,CAAC,0BAA0B,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,UAAU,CAAC,qCAAqC,oBAAoB,CAAC,cAAc,CAAC,0BAA0B,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,2CAA2C,SAAS,CAAC,+CAA+C,oBAAoB,CAAC,wBAAwB,CAAC,4CAA4C,oBAAoB,CAAC,wBAAwB,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,yCAAyC,oBAAoB,CAAC,wBAAwB,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,0DAA0D,cAAc,CAAC,UAAU,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,sCAAsC,cAAc,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,8CAA8C,cAAc,CAAC,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,oDAAoD,SAAS,CAAC,2CAA2C,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,gCAAgC,CAAC,6BAA6B,CAAC,4BAA4B,CAAC,2BAA2B,CAAC,wBAAwB,CAAC,mDAAmD,+BAA+B,CAAC,4BAA4B,CAAC,2BAA2B,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,iDAAiD,SAAS,CAAC,2CAA2C,oBAAoB,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,yCAAyC,YAAY,CAAC,iBAAiB,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,gDAAgD,wBAAwB,CAAC,gDAAgD,wBAAwB,CAAC,gDAAgD,wBAAwB,CAAC,8CAA8C,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,yBAAyB,CAAC,cAAc,CAAC,eAAe,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,gEAAgE,6BAA6B,CAAC,+CAA+C,YAAY,CAAC,iBAAiB,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,SAAS,CAAC,iBAAiB,CAAC,0CAA0C,CAAC,iDAAiD,aAAa,CAAC,uDAAuD,YAAY,CAAC,2CAA2C,aAAa,CAAC,2CAA2C,aAAa,CAAC,2CAA2C,aAAa,CAAC,+CAA+C,aAAa,CAAC,uCAAuC,iBAAiB,CAAC,YAAY,CAAC,uBAAuB,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,sEAAsE,CAAC,8EAA8E,CAAC,2EAA2E,CAAC,SAAS,CAAC,gDAAgD,oBAAoB,CAAC,UAAU,CAAC,WAAW,CAAC,06BAAuC,CAAC,uBAAuB,CAAC,6DAA6D,CAAC,qEAAqE,CAAC,0CAA0C,GAAG,8BAA8B,CAAC,sBAAsB,CAAC,KAAK,gCAAgC,CAAC,wBAAwB,CAAC,CAAC,kDAAkD,GAAG,8BAA8B,CAAC,sBAAsB,CAAC,KAAK,gCAAgC,CAAC,wBAAwB,CAAC,CAAC,2DAA2D,YAAY,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,WAAW,CAAC,qBAAqB,CAAC,eAAe,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,kFAAkF,UAAU,CAAC,YAAY,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,qGAAqG,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,sBAAsB,CAAC,gEAAgE,YAAY,CAAC,mDAAmD,QAAQ,CAAC,yCAAyC,WAAW,CAAC,SAAS,CAAC,qBAAqB,CAAC,UAAU,CAAC,eAAe,CAAC,+DAA+D,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,6CAA6C,aAAa,CAAC,iBAAiB,CAAC,cAAc,CAAC,SAAS,CAAC,yCAAyC,CAAC,4EAA4E,WAAW,CAAC,UAAU,CAAC,kFAAkF,gBAAgB",sourcesContent:[".adsk-viewing-viewer .measure-length:hover.measure-length.enable-hover{box-shadow:0 0 16px 3px rgba(0,117,210,.7);-webkit-box-shadow:0 0 16px 3px rgba(0,117,210,.7);-moz-box-shadow:0 0 16px 3px rgba(0,117,210,.7)}.adsk-viewing-viewer .measure-length{display:none;position:absolute;height:19px;left:0px;top:0px;padding:2px 0 2px 0;background-color:#009bea;box-shadow:0px 1px 3px 1px rgba(0,0,0,.25);color:#f4f4f4;font-size:12px;text-align:center;line-height:1.2;white-space:nowrap;border-radius:8px;pointer-events:none;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0)}.adsk-viewing-viewer .measure-length.visible{display:block}.adsk-viewing-viewer .measure-length.fetching-topology{background-color:rgba(34,34,34,.8);box-shadow:0 .5px 1.5px 0 rgba(0,0,0,.3)}.adsk-viewing-viewer .measure-length-text{display:inline-block;margin:0 5px 0 5px;vertical-align:middle;font-size:16px;pointer-events:none}.adsk-viewing-viewer .measure-delta-text{margin:0 5px 0 5px;align-self:center;font-size:14px;overflow:hidden;white-space:nowrap;height:16px;line-height:16px;vertical-align:middle;pointer-events:none}.adsk-viewing-viewer .measure-length-button{display:inline-block;width:16px;height:16px;font-size:16px;float:right;color:#fff;opacity:.7}.adsk-viewing-viewer .measure-length-button:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.adsk-viewing-viewer .measure-label:hover.measure-label.enable-hover,.adsk-viewing-viewer .measure-label.on-edit{box-shadow:0 0 4px 4px #0d69ca;-webkit-box-shadow:0 0 4px 4px #0d69ca;-moz-box-shadow:0 0 4px 4px #0d69ca}.adsk-viewing-viewer .measure-label.editable{pointer-events:all}.adsk-viewing-viewer .measure-label{display:none;position:absolute;width:7px;height:7px;cursor:move;pointer-events:none;border-radius:100px}.adsk-viewing-viewer .measure-label-hit-area{display:inline-block;position:absolute;width:44px;height:44px;left:-22px;top:-22px;border-radius:100px;z-index:2}.adsk-viewing-viewer .measure-label-icon{display:inline-block;position:absolute;width:7px;height:7px;left:-2px;top:-2px;background-color:#009bea;border-style:solid;border-width:2px;border-color:#fff;border-radius:100px;box-shadow:0 2px 5px 0 #182a3d;z-index:2}.adsk-viewing-viewer .measure-label.visible{display:block}.adsk-viewing-viewer .measure-label-text{display:inline-block;margin:0px 5px 0px 5px;vertical-align:middle}.adsk-viewing-viewer .measure-horizontal-divider{height:1px;border-top:1px solid rgba(200,200,200,.8)}.adsk-viewing-viewer .measure-submenu-select{display:block;position:relative;width:calc(100% - 40px);padding:10px 20px 0px 20px;opacity:.3}.adsk-viewing-viewer .option-drop-down:disabled{opacity:.3}.adsk-viewing-viewer .measure-submenu-selectlabel{position:relative;display:inline-block;padding-right:20px;padding-bottom:4px}.adsk-viewing-viewer .measure-results{position:relative;display:block;padding:5px 0px 10px 30px}.adsk-viewing-viewer .measure-result-label{display:inline-block;padding-right:10px}.adsk-viewing-viewer .measure-result-number{display:inline-block}.adsk-viewing-viewer .measure-delta-collapse{position:absolute;right:20px;display:inline-block;background-color:rgba(255,255,255,.12);margin:0px 4px 0px 4px;padding:0px 4px 0px 4px;cursor:pointer;text-align:center}.adsk-viewing-viewer .measure-delta-collapse:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.adsk-viewing-viewer .measure-selection-repick{position:absolute;right:20px;display:inline-block;background-color:rgba(255,255,255,.12);margin:4px 4px 4px 4px;padding:4px 4px 4px 4px;cursor:pointer;text-align:center}.adsk-viewing-viewer .measure-selection-repick:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.adsk-viewing-viewer .measure-restart{margin:10px 20px 15px 20px;padding:6px 10px 6px 10px;width:calc(100% - 55px);cursor:pointer;text-align:center;border-style:solid;border-width:1px;border-color:rgba(255,255,255,.2);border-radius:3px}.adsk-viewing-viewer .docking-panel:hover .measure-restart{background-color:rgba(255,255,255,.12)}.adsk-viewing-viewer .docking-panel .measure-restart:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.adsk-viewing-viewer .measure-panel-title{padding-top:0px;padding-left:20px;margin-top:10px}.adsk-viewing-viewer .measure-panel-title:hover{cursor:pointer}.adsk-viewing-viewer .measure-panel-title.collapsed{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEwMDhBMzY4QTYyODExRTM5REY0Q0MwMTM3MTVFOTMzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEwMDhBMzY5QTYyODExRTM5REY0Q0MwMTM3MTVFOTMzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTAwOEEzNjZBNjI4MTFFMzlERjRDQzAxMzcxNUU5MzMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTAwOEEzNjdBNjI4MTFFMzlERjRDQzAxMzcxNUU5MzMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6WHWu4AAAAcElEQVR42mL8//8/AzmAiYFMgEtjGSFDcUmGAfEEIOYix6lWQLwUiGXJ8SNI00IgNiIncPiAeCoQ+5ITqsxQA+CAhQhN34C4AoiPkaLxGRAXAfEdUvx4DohjsGkCA1CSw4LrgZgVhxwYM9I9rQIEGACZNDs01yUXlAAAAABJRU5ErkJggg==);background-repeat:no-repeat}.adsk-viewing-viewer .measure-panel-title.expanded{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkE3QzFFQUQ1QTYyODExRTM5NzE2RjcyN0QxQjg0QTREIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkE3QzFFQUQ2QTYyODExRTM5NzE2RjcyN0QxQjg0QTREIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTdDMUVBRDNBNjI4MTFFMzk3MTZGNzI3RDFCODRBNEQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTdDMUVBRDRBNjI4MTFFMzk3MTZGNzI3RDFCODRBNEQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6XuY60AAAARklEQVR42mL8//8/AzmAiYFMQBeNqSg8kB+JwKlAfAZZjIlIm9JJdSpWTYQ04tSETyNeTbg0EtSETSNRmkCAcegkOYAAAwDGjDZHvY373AAAAABJRU5ErkJggg==);background-repeat:no-repeat}.adsk-viewing-viewer .adsk-viewing-viewer .measure-table td{padding:10px 0px 10px 20px}.adsk-viewing-viewer .measure-selection-one-label{display:inline-block;margin:18px 18px 18px 18px;width:16px;height:16px;font-size:16px;float:left;padding:2px;background-color:#03f;border-radius:10px;opacity:.6}.adsk-viewing-viewer .measure-selection-two-label{display:inline-block;margin:18px 18px 18px 18px;width:16px;height:16px;font-size:16px;float:left;padding:2px;background-color:#03f;border-radius:10px;opacity:.6}.adsk-viewing-viewer .measure-repick{display:inline-block;cursor:default;margin:20px 20px 20px 20px;width:16px;height:16px;font-size:16px;float:right;opacity:.5}.adsk-viewing-viewer .measure-repick:hover{opacity:1}.adsk-viewing-viewer .measure-selection-result{display:inline-block;margin:21px 0px 21px 0px}.adsk-viewing-viewer .measure-distance-icon{display:inline-block;margin:20px 2px 20px 2px;font-size:52px;color:#f90;float:left}.adsk-viewing-viewer .measure-angle-icon{display:inline-block;margin:20px 2px 20px 2px;font-size:52px;color:#f90;float:left}.adsk-viewing-viewer .adsk-viewing-viewer .measure-result{font-size:20px;color:#f90;display:inline-block;margin:38px 0px 38px 0px}.adsk-viewing-viewer .measure-initial{font-size:20px;display:inline-block;margin:38px 0px 38px 56px}.adsk-viewing-viewer .measure-settings-button{cursor:default;position:relative;top:20px;right:20px;width:16px;height:16px;font-size:18px;float:right;opacity:.5}.adsk-viewing-viewer .measure-settings-button:hover{opacity:1}.adsk-viewing-viewer .measure-delta-button{position:relative;top:56px;right:4px;width:16px;height:16px;font-size:16px;float:right;opacity:.5;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.adsk-viewing-viewer .measure-delta-button.rotated{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.adsk-viewing-viewer .measure-delta-button:hover{opacity:1}.adsk-viewing-viewer .measure-delta-result{display:inline-block;margin:0px 0px 20px 0px;padding:0px 0px 0px 56px}.adsk-viewing-viewer .measure-label-axis{display:none;position:absolute;width:16px;height:16px;left:0px;top:0px;background-color:#f4f4f4;border-radius:8px;pointer-events:none}.adsk-viewing-viewer .measure-label-axis-icon.X{background-color:#f12c2c}.adsk-viewing-viewer .measure-label-axis-icon.Y{background-color:#0bb80b}.adsk-viewing-viewer .measure-label-axis-icon.Z{background-color:#2c2cf1}.adsk-viewing-viewer .measure-label-axis-icon{width:20px;height:18px;color:#f4f4f4;border-radius:8px 0 0 8px;font-size:12px;padding-top:4px;line-height:15px;text-align:center;margin-left:-2px}.adsk-viewing-viewer .measure-label-axis-delta.enableTransition{transition:opacity .1s linear}.adsk-viewing-viewer .measure-label-axis-delta{display:none;position:absolute;font-size:18px;left:0px;top:0px;background-color:#fff;pointer-events:none;opacity:0;border-radius:8px;box-shadow:0px 1px 3px 1px rgba(0,0,0,.25)}.adsk-viewing-viewer .measure-label-axis.visible{display:block}.adsk-viewing-viewer .measure-label-axis-delta.visible{display:flex}.adsk-viewing-viewer .measure-label-axis-x{color:#f12c2c}.adsk-viewing-viewer .measure-label-axis-y{color:#0bb80b}.adsk-viewing-viewer .measure-label-axis-z{color:#2c2cf1}.adsk-viewing-viewer .magnifying-glass.visible{display:block}.adsk-viewing-viewer .magnifying-glass{position:absolute;display:none;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%;background:rgba(0,0,0,0);box-shadow:2px 2px 4px rgba(0,0,0,.5),inset 2px 2px 4px rgba(0,0,0,.5);-webkit-box-shadow:2px 2px 4px rgba(0,0,0,.5),inset 2px 2px 4px rgba(0,0,0,.5);-moz-box-shadow:2px 2px 4px rgba(0,0,0,.5),inset 2px 2px 4px rgba(0,0,0,.5);z-index:4}.adsk-viewing-viewer .measure-fetching-topology{display:inline-block;width:10px;height:10px;background:url(res/icon-spinner-sm.svg);margin:3px 0px -2px 3px;animation:measure-topology-fetching-anim 1.4s infinite linear;-webkit-animation:measure-topology-fetching-anim 1.4s infinite linear}@keyframes measure-topology-fetching-anim{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes measure-topology-fetching-anim{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.adsk-viewing-viewer .docking-panel.measure-settings-popup{display:flex;justify-content:center;flex-direction:column;bottom:120%;box-sizing:border-box;text-align:left;position:absolute;padding-top:15px;padding-bottom:15px}.adsk-viewing-viewer .adsk-toolbar-vertical .docking-panel.measure-settings-popup{right:120%;bottom:unset;height:max-content;width:max-content}.adsk-viewing-viewer .docking-panel.measure-settings-popup .adsk-lmv-tftable tr.switch-slider-row td{width:auto;padding-bottom:0px;padding-top:0px;vertical-align:inherit}.adsk-viewing-viewer .docking-panel.measure-settings-popup.hide{display:none}.adsk-viewing-viewer .measure-settings-popup tbody{top:15px}.adsk-toolbar .measure-toolbar-seperator{height:18px;width:1px;background-color:#999;float:left;margin:16px 5px}.adsk-toolbar.adsk-toolbar-vertical .measure-toolbar-seperator{height:1px;width:18px;margin:5px 16px}.adsk-viewing-viewer .measure-selection-area{display:block;position:absolute;cursor:pointer;z-index:1;-webkit-tap-highlight-color:rgba(0,0,0,0)}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-label-button{padding:0px;width:40px}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-label-button>label{padding:10px 0px}"],sourceRoot:""}]);const r=o},6314:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i="",n=void 0!==t[5];return t[4]&&(i+="@supports (".concat(t[4],") {")),t[2]&&(i+="@media ".concat(t[2]," {")),n&&(i+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),i+=e(t),n&&(i+="}"),t[2]&&(i+="}"),t[4]&&(i+="}"),i})).join("")},t.i=function(e,i,n,a,s){"string"==typeof e&&(e=[[null,e,void 0]]);var o={};if(n)for(var r=0;r0?" ".concat(A[5]):""," {").concat(A[1],"}")),A[5]=s),i&&(A[2]?(A[1]="@media ".concat(A[2]," {").concat(A[1],"}"),A[2]=i):A[2]=i),a&&(A[4]?(A[1]="@supports (".concat(A[4],") {").concat(A[1],"}"),A[4]=a):A[4]="".concat(a)),t.push(A))}},t}},1354:e=>{"use strict";e.exports=function(e){var t=e[1],i=e[3];if(!i)return t;if("function"==typeof btoa){var n=btoa(unescape(encodeURIComponent(JSON.stringify(i)))),a="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(n),s="/*# ".concat(a," */");return[t].concat([s]).join("\n")}return[t].join("\n")}},5072:e=>{"use strict";var t=[];function i(e){for(var i=-1,n=0;n{"use strict";var t={};e.exports=function(e,i){var n=function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}t[e]=i}return t[e]}(e);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");n.appendChild(i)}},540:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},5056:(e,t,i)=>{"use strict";e.exports=function(e){var t=i.nc;t&&e.setAttribute("nonce",t)}},7825:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(i){!function(e,t,i){var n="";i.supports&&(n+="@supports (".concat(i.supports,") {")),i.media&&(n+="@media ".concat(i.media," {"));var a=void 0!==i.layer;a&&(n+="@layer".concat(i.layer.length>0?" ".concat(i.layer):""," {")),n+=i.css,a&&(n+="}"),i.media&&(n+="}"),i.supports&&(n+="}");var s=i.sourceMap;s&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(s))))," */")),t.styleTagTransform(n,e,t.options)}(t,e,i)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},1113:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}}},t={};function i(n){var a=t[n];if(void 0!==a)return a.exports;var s=t[n]={id:n,exports:{}};return e[n](s,s.exports,i),s.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{MeasureExtension:()=>Ve});var e=Autodesk.Viewing.MeasureCommon;function t(e){this.viewer=e,this.init(),this.restoredMeasurementData=[]}var a=t.prototype;a.getCurrentMeasurement=function(){return this.currentMeasurement},a.getRestoredMeasurementData=function(){return this.restoredMeasurementData.slice()},a.selectMeasurementById=function(e){var t=this.measurementsList[e];return!!t&&(this.changeCurrentMeasurement(t),this.currentMeasurement)},a.createMeasurement=function(t,i){var n=this.measurementsCounter,a=new e.Measurement(t,n,i);return this.measurementsList[n]=a,this.measurementsCounter++,this.changeCurrentMeasurement(a),this.currentMeasurement},a.createMeasurementFromData=function(t,i,n,a){let s=t.options;if(s){s=JSON.parse(JSON.stringify(s));const e=Object.prototype.hasOwnProperty.call(s,"modelId")&&s.modelId?this.viewer.impl.findModel(s.modelId):this.viewer.model,t=e&&e.getData().globalOffset;if(t&&(0!==t.x||0!==t.y||0!==t.z)){const e=e=>{if(e)for(let i=0;i{const e=this.restoredMeasurementData[this.currentMeasurement.id],t=Object.keys(e),i=[];for(let n=0;n0&&delete this.measurementsList[this.currentMeasurement.id]},a.init=function(){this.reset()},a.destroy=function(){this.reset()},a.reset=function(){this.currentMeasurement=null,this.measurementsList={},this.measurementsCounter=0};var s=Autodesk.Viewing,o=s.MeasureCommon,r=function(e,t,i){this.viewer=e,this.setGlobalManager(e.globalManager),this.measurement=t,this.tool=i,this.snapper=i.getSnapper(),this.materialExtensionLine=null,this.materialExtensionFace=null,this.extensionLines=[],this.extensionFaces=[],this.grayOutPlane=[],this.materialPoint=null,this.materialLine=null,this.materialAngle=null,this.materialAngleOutline=null,this.materialGreyOutPlane=null,this.materialFace=null,this.angleArc=null,this.angleOutline=[],this.arcOutline=[],this.arcTip=[],this.showMeasureResult=!1,this.visibleLabels=[],this.overlayName="measure-indicator-overlay-"+(t.id||""),this.xAxis=this.viewer.autocam.getWorldRightVector(),this.yAxis=this.viewer.autocam.getWorldUpVector(),this.zAxis=this.viewer.autocam.getWorldFrontVector()},l=r.prototype;function c(e){function t(e,t,n,a){this.x=e,this.y=t,this.h=n,this.d=function(e,t,n){for(var a=!1,s=1/0,o=0;ot!=d.y>t&&e<(d.x-h.x)*(t-h.y)/(d.y-h.y)+h.x&&(a=!a),s=Math.min(s,i(e,t,h,d))}return(a?1:-1)*Math.sqrt(s)}(e,t,a),this.max=this.d+this.h*Math.SQRT2}function i(e,t,i,n){var a=i.x,s=i.y,o=n.x-a,r=n.y-s;if(0!==o||0!==r){var l=((e-a)*o+(t-s)*r)/(o*o+r*r);l>1?(a=n.x,s=n.y):l>0&&(a+=o*l,s+=r*l)}return(o=e-a)*o+(r=t-s)*r}function n(e,t){if(!(this instanceof n))return new n(e,t);if(this.data=e||[],this.length=this.data.length,this.compare=t||function(e,t){return et?1:0},this.length>0)for(var i=this.length>>1;i>=0;i--)this._down(i)}if(n.prototype={push:function(e){this.data.push(e),this.length++,this._up(this.length-1)},pop:function(){if(0!==this.length){var e=this.data[0];return this.length--,this.length>0&&(this.data[0]=this.data[this.length],this._down(0)),this.data.pop(),e}},peek:function(){return this.data[0]},_up:function(e){for(var t=this.data,i=this.compare,n=t[e];e>0;){var a=e-1>>1,s=t[a];if(i(n,s)>=0)break;t[e]=s,e=a}t[e]=n},_down:function(e){for(var t=this.data,i=this.compare,n=this.length>>1,a=t[e];e=0)break;t[e]=r,e=s}t[e]=a}},3===e.length)return function(e){for(var t=new THREE.Vector3,i=e.length,n=0;no)&&(o=c.x),(!l||c.y>r)&&(r=c.y)}var A=o-a,h=r-s,d=Math.min(A,h),u=d/2,p=new n(null,(function(e,t){return t.max-e.max}));if(0===d)return[a,s];for(var m=a;mb.d&&(b=C);p.length;){var v=p.pop();v.d>b.d&&(b=v),v.max-b.d<=.01||(u=v.h/2,p.push(new t(v.x-u,v.y-u,u,e)),p.push(new t(v.x+u,v.y-u,u,e)),p.push(new t(v.x-u,v.y+u,u,e)),p.push(new t(v.x+u,v.y+u,u,e)))}return{x:b.x,y:b.y}}s.GlobalManagerMixin.call(l),l.init=function(){return!1},l.updateDistance=function(){return!1},l.updateAngle=function(){return!1},l.clear=function(){return!1},l.updateLabelsPosition=function(){return!1},l.renderFromPoints=function(e,t){this.showMeasureResult=t,this.clear();for(var i=1;i<=Object.keys(e).length;i++){const t=e[i].intersection;this.endpoints[i]||this.createEndpoint(i),this.endpoints[i].position=new THREE.Vector3(t.x,t.y,t.z),this.showClick(i)}this.renderRubberbandFromPoints(e),this.updateLabelsPosition()},l.render=function(e,t){this.showMeasureResult=t,this.clear();for(var i=1;i<=Object.keys(e).length;i++)this.measurement.hasPick(i)&&this.renderPick(i);this.renderRubberband(e),this.updateLabelsPosition()},l.changeEndpointOnEditStyle=function(e,t){return!1},l.handleResize=function(){return!1},l.setNoTopology=function(){return!1},l.setFetchingTopology=function(){return!1},l.setTopologyAvailable=function(){return!1},l.clientToCanvasCoords=function(e){var t=this.viewer.impl.getCanvasBoundingClientRect(),i={};return Object.prototype.hasOwnProperty.call(e,"center")?(e.canvasX=i.x=e.center.x-t.left,e.canvasY=i.y=e.center.y-t.top):(e.canvasX=i.x=e.pointers[0].clientX-t.left,e.canvasY=i.y=e.pointers[0].clientY-t.top),i},l.initLabelMobileGestures=function(e,t){var i=this.viewer.toolController.getTool("magnifyingGlass");this.hammer=new s.Hammer.Manager(e,{recognizers:[s.GestureRecognizers.drag,s.GestureRecognizers.singletap],handlePointerEventMouse:!1,inputClass:s.Hammer.TouchInput}),this.onSingleTapBinded=function(e){var i=this.clientToCanvasCoords(e);this.snapper.onMouseDown(i),this.tool.editEndpoint(e,t,this.measurement.id)}.bind(this),this.onDragStartBinded=function(e){var n=this.clientToCanvasCoords(e);this.snapper.onMouseDown(n),this.tool.editEndpoint(e,t,this.measurement.id),this.tool.editByDrag=!0,e.type="press",i.handlePressHold(e),this.tool.handlePressHold(e),e.type="dragstart",i.handleGesture(e),this.tool.handleGesture(e)}.bind(this),this.onDragMoveBinded=function(e){var t=this.clientToCanvasCoords(e);this.snapper.onMouseDown(t),i.handleGesture(e),this.tool.handleGesture(e)}.bind(this),this.onDragEndBinded=function(e){var t=this.clientToCanvasCoords(e);this.snapper.onMouseDown(t),i.handleGesture(e),this.tool.handleGesture(e),e.type="pressup",i.handlePressHold(e),this.tool.handlePressHold(e),this.tool.handleButtonUp(e)}.bind(this),this.hammer.on("singletap",this.onSingleTapBinded),this.hammer.on("dragstart",this.onDragStartBinded),this.hammer.on("dragmove",this.onDragMoveBinded),this.hammer.on("dragend",this.onDragEndBinded)},l.clearLabelMobileGestures=function(){this.hammer&&(this.hammer.off("singletap",this.onSingleTapBinded),this.hammer.off("dragstart",this.onDragStartBinded),this.hammer.off("dragmove",this.onDragMoveBinded),this.hammer.off("dragend",this.onDragEndBinded),this.hammer=null)},l.updateVisibleLabelsArray=function(e,t){if(t)this.visibleLabels.indexOf(e)>-1||this.visibleLabels.push(e);else{var i=this.visibleLabels.indexOf(e);i>-1&&this.visibleLabels.splice(i,1)}},l.hideEndpoints=function(){for(var e in this.endpoints)if(Object.prototype.hasOwnProperty.call(this.endpoints,e)){var t=this.endpoints[e];t.label&&this.hideLabel(t.label)}},l.showEndpoints=function(){for(var e in this.endpoints)if(Object.prototype.hasOwnProperty.call(this.endpoints,e)){var t=this.endpoints[e];this.measurement.hasPick(e)&&t.label&&this.showLabel(t.label)}},l.hideLabel=function(e){e&&(o.safeToggle(e,"visible",!1),this.updateVisibleLabelsArray(e,!1))},l.showLabel=function(e){e&&(o.safeToggle(e,"visible",!0),this.updateVisibleLabelsArray(e,!0))},l.changeEndpointOnEditStyle=function(e,t){this.endpoints[e]&&this.endpoints[e].label&&o.safeToggle(this.endpoints[e].label,"on-edit",t)},l.changeEndpointEditableStyle=function(e,t){this.endpoints[e]&&this.endpoints[e].label&&o.safeToggle(this.endpoints[e].label,"editable",t)},l.changeAllEndpointsEditableStyle=function(e){for(var t in this.endpoints)Object.prototype.hasOwnProperty.call(this.endpoints,t)&&this.changeEndpointEditableStyle(t,e)},l.changeAllEndpointsOnEditStyle=function(e){for(var t in this.endpoints)Object.prototype.hasOwnProperty.call(this.endpoints,t)&&this.changeEndpointOnEditStyle(t,e)},l.hideLabelsOutsideOfView=function(){this.viewer.model&&!this.viewer.model.is2d()&&this.visibleLabels.forEach(function(e){if(e.point){var t=this.viewer.navigation.isPointVisible(e.point);(e.classList.contains("visible")&&!t||!e.classList.contains("visible")&&t)&&e.classList.toggle("visible",t)}}.bind(this))},l.showClick=function(e){this.tool.getActivePointIndex()!==e&&this.showLabel(this.endpoints[e].label)},l.hideClick=function(e){this.endpoints[e]&&this.hideLabel(this.endpoints[e].label)},l.renderPick=function(e){this.endpoints[e]||this.createEndpoint(e),this.renderEndpointGeometry(e),this.showClick(e)},l.renderEndpointGeometry=function(e){var t=o.getSnapResultPosition(this.measurement.getPick(e),this.viewer);null!==t&&(this.endpoints[e].position=t.clone())},l.drawEdgeAsCylinder=function(e,t,i,n,a){var s,o=[];const r=e.getAttribute("position"),l=new THREE.Vector3,c=new THREE.Vector3;if(1==n)for(let e=0;e=0?o:-o;var r=null,l=t.x-i.x,c=t.y-i.y;r=-((r=t.x90&&(r+=180),e.style.transform="rotate("+r+"deg) translate(0px, "+n+"px)"},l.destroy=function(){for(var e in this.materialPoint=null,this.materialFace=null,this.materialLine=null,this.materialAngle=null,s.isTouchDevice()&&this.clearLabelMobileGestures(),this.endpoints)if(Object.prototype.hasOwnProperty.call(this.endpoints,e)){var t=this.endpoints[e];t.label&&(t.label.removeEventListener(s.isSafari()?"mousedown":"pointerdown",this.onMouseClickBinded),t.label.removeEventListener("mousewheel",this.viewer.toolController.mousewheel),t.label.parentNode.removeChild(t.label),t.label=null)}this.visibleLabels=[]},l.renderRubberbandFromPoints=function(e){const t=Object.keys(e),i=[];for(let n=0;n>>8).getHexString()}function C(e,t,i){r.call(this,e,t,i),this.measureTool=i,this.endpoints=[],this.lines={xyz:{axis:!1,material:this._createLineMaterial(d),className:"adsk-icon-axis-delta-xyz measure-label-axis-delta measure-label-axis-xyz"},x:{axis:!0,material:this._createLineMaterial(u),className:"adsk-icon-axis-delta-x measure-label-axis-delta measure-label-axis-x",iconText:"X"},y:{axis:!0,material:this._createLineMaterial(p),className:"adsk-icon-axis-delta-y measure-label-axis-delta measure-label-axis-y",iconText:"Y"},z:{axis:!0,material:this._createLineMaterial(m),className:"adsk-icon-axis-delta-z measure-label-axis-delta measure-label-axis-z",iconText:"Z"}},this.applyLineColor(this.lines.xyz.material),this.segments=[],this.dashedLines=[],this.simple=!1,this.angleLabel={},this.areaLabel={},this.arcLabel={},this.locationLabel={},this.calloutLabel={},this.labels=[],this.isLeaflet=!1,this.topologyStatus=f,this.tmpVector=new THREE.Vector3,this.surfaceColor=new THREE.MeshBasicMaterial({color:parseInt(d,16),opacity:.15,transparent:!0,depthTest:!1,depthWrite:!1,side:THREE.DoubleSide}),this.applyLineColor(this.surfaceColor)}C.prototype=Object.create(r.prototype),C.prototype.constructor=C;var v=C.prototype,f=0;function E(e){return e.classList.contains("visible")}function w(e,t){return e.right>=t.left&&e.right<=t.right}function y(e,t){return e.left>=t.left&&e.left<=t.right}function x(e,t){return e.left<=t.left&&e.right>=t.right}function k(e,t,i){e.style.left=parseInt(e.style.left,10)+(i.right-t.left)+"px"}function T(e,t,i){e.style.top=parseInt(e.style.top,10)+(i.bottom-t.top)+"px"}function M(e,t){if(e){var i=e.querySelector(".measure-length-text");i&&(i.textContent=t)}}function B(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\n/g,"
")}function L(e){if("string"==typeof e)return B(e);let t="",i=e.fontSize;void 0!==e.fontSize&&10!==e.fontSize?(i=`font-size: ${0|10*i}%;`,t=" "):i="";let n=e.bold;n=void 0!==n?`${t}font-weight: ${n?"bold":"normal"};`:"";const a=B(e.text);return n||i?`${a}`:a}function S(e,t){if(e){var i=e.querySelector(".measure-delta-text");i&&(i.textContent=t)}}function R(e,t,i){if(e){var n=e.querySelector(".measure-fetching-topology");n&&(n.style.display=t&&1===i?"inline-block":"none")}}v.init=function(){var e;switch(this.isLeaflet=this.viewer.model.isLeaflet(),this.onSelectionAreaClickedBinded=this.onSelectionAreaClicked.bind(this),this.lines.xyz.label||((e=this.lines.xyz.label=this.createMeasurementLabel()).addEventListener("mousewheel",this.viewer.toolController.mousewheel),e.addEventListener("click",this.onSelectionAreaClickedBinded),this.viewer.container.appendChild(e)),this.topologyStatus){case 1:this.setFetchingTopology();break;case 2:this.setTopologyAvailable();break;case f:this.setNoTopology()}this.showMeasureResult=!1,this.onCameraChangeBinded=this.onCameraChange.bind(this),this.viewer.addEventListener(A.CAMERA_CHANGE_EVENT,this.onCameraChangeBinded),this.handleButtonUpBinded=this.measureTool.handleButtonUp.bind(this.measureTool),this.addWindowEventListener("mouseup",this.handleButtonUpBinded)},v._hexToCorrectedColor=function(e){return g.set(parseInt(e,16)),this.viewer.impl.is2d||g.multiply(g),g},v._createLineMaterial=function(e){const t=this._hexToCorrectedColor(e);return new THREE.MeshBasicMaterial({color:t.getHex(),depthTest:!1,depthWrite:!1,side:THREE.DoubleSide})},v.createEndpoint=function(e){if(this.endpoints[e]={},2!==e||this.measurement.measurementType!==h.MeasurementTypes.MEASUREMENT_LOCATION&&this.measurement.measurementType!==h.MeasurementTypes.MEASUREMENT_CALLOUT){var t=this.endpoints[e].label=this.createSnapResultLabel(e);this.viewer.container.appendChild(t)}},v.applyLineColor=function(e){if(!e)return;const t=this.measurement.options&&this.measurement.options.format&&this.measurement.options.format.TEXTCOLOR&&"true"===this.measurement.options.format.TEXTCOLOR.Enabled&&this.measurement.options.format.FILLCOLOR&&"true"===this.measurement.options.format.FILLCOLOR.Enabled&&this.measurement.options.format.LINECOLOR&&"true"===this.measurement.options.format.LINECOLOR.Enabled?b(this.measurement.options.format.LINECOLOR.UIntValue):d,i=this._hexToCorrectedColor(t);e.color.set(i)},v.applyLabelColors=function(e){if(!e)return;const t=this.measurement.options&&this.measurement.options.format&&this.measurement.options.format.TEXTCOLOR&&"true"===this.measurement.options.format.TEXTCOLOR.Enabled&&this.measurement.options.format.FILLCOLOR&&"true"===this.measurement.options.format.FILLCOLOR.Enabled&&this.measurement.options.format.LINECOLOR&&"true"===this.measurement.options.format.LINECOLOR.Enabled,i=t?`#${b(this.measurement.options.format.TEXTCOLOR.UIntValue)}`:`#${d}`,n=t?`#${b(this.measurement.options.format.FILLCOLOR.UIntValue)}`:"#f4f4f4";e.style.color=i,e.style.backgroundColor=n},v.updateLabelsPosition=function(){var e,t,i,n;const a=(n,a)=>{t=h.project(e,this.viewer),i.style.top=t.y-a+"px",i.style.left=t.x-n+"px",i.point=e,this.applyLabelColors(i),this.labels.push(i)};for(n in this.endpoints)Object.prototype.hasOwnProperty.call(this.endpoints,n)&&(i=this.endpoints[n].label,e=this.endpoints[n].position,i&&e&&E(i)&&(t=h.project(e,this.viewer),a(i.getBoundingClientRect().width/2,i.getBoundingClientRect().height/2)));for(var s in this.lines)if(Object.prototype.hasOwnProperty.call(this.lines,s)){var o=this.lines[s];if((i=o.label)&&o.p1&&o.p2&&E(i)){if(o.line.visible=o.visible,e={x:(o.p1.x+o.p2.x)/2,y:(o.p1.y+o.p2.y)/2,z:(o.p1.z+o.p2.z)/2},t=h.project(e,this.viewer),i.style.top=t.y-Math.floor(i.clientHeight/2)+"px",i.style.left=t.x-Math.floor(i.clientWidth/2)+"px",this.viewer.model&&this.viewer.model.is2d()){var r=o===this.lines.xyz?0:i.clientHeight,l=h.project(o.p1,this.viewer),c=h.project(o.p2,this.viewer);if(i.clientWidth>=l.distanceTo(c)-this.endpoints[1].label.clientWidth){if(o!==this.lines.xyz){for(s in this.lines.x.line.visible=!1,this.lines.y.line.visible=!1,this.viewer.impl.invalidate(!1,!1,!0),this.lines)if(Object.prototype.hasOwnProperty.call(this.lines,s)&&this.lines[s]!==this.lines.xyz){var A=this.lines[s].label;A&&(A.style.opacity=0)}break}r=i.clientHeight}if(o!==this.lines.xyz){var d=new THREE.Vector3,u=new THREE.Vector3;d.subVectors(this.lines.xyz.p1,this.lines.xyz.p2).normalize(),u.subVectors(o.p1,o.p2).normalize(),d.cross(this.viewer.navigation.getEyeVector()).normalize().dot(u)<0&&(r=-r)}this.alignLabelWithLine(i,o.p1,o.p2,r,this.viewer)}i.style.opacity=1,i.point=e,this.applyLabelColors(i),this.labels.push(i)}}if(this.angleLabel&&(i=this.angleLabel.label)&&this.angleLabel.p1&&this.angleLabel.p2&&E(i)&&(e={x:(this.angleLabel.p1.x+this.angleLabel.p2.x)/2,y:(this.angleLabel.p1.y+this.angleLabel.p2.y)/2,z:(this.angleLabel.p1.z+this.angleLabel.p2.z)/2},t=h.project(e,this.viewer,5),a(Math.floor(i.clientWidth/2),Math.floor(i.clientHeight/2))),this.arcLabel&&(r=0,(i=this.arcLabel.label)&&this.arcLabel.p1&&this.arcLabel.p2&&E(i))){e={x:(this.arcLabel.p1.x+this.arcLabel.p2.x)/2,y:(this.arcLabel.p1.y+this.arcLabel.p2.y)/2,z:(this.arcLabel.p1.z+this.arcLabel.p2.z)/2},t=h.project(e,this.viewer,i.clientHeight),a(Math.floor(i.clientWidth/2),Math.floor(i.clientHeight/2));let n=h.project(this.arcLabel.point1Relative,this.viewer),s=h.project(this.arcLabel.point2Relative,this.viewer);if(i.clientWidth>=n.distanceTo(s)-this.endpoints[1].label.clientWidth){var p=h.project(this.arcLabel.midPointRelative,this.viewer),m=h.project(new THREE.Vector3,this.viewer);r=p.y>m.y?i.clientHeight:-i.clientHeight}this.alignLabelWithLine(i,this.arcLabel.point1Relative,this.arcLabel.point2Relative,r,this.viewer)}if(this.locationLabel&&(i=this.locationLabel.label)&&this.locationLabel.p&&E(i)&&(t=h.project(this.locationLabel.p,this.viewer),a(Math.floor(i.clientWidth/2),Math.floor(i.clientHeight/2))),this.calloutLabel&&(i=this.calloutLabel.label)&&this.calloutLabel.p&&E(i)&&(t=h.project(this.calloutLabel.p,this.viewer),a(Math.floor(i.clientWidth/2),Math.floor(i.clientHeight/2))),this.areaLabel&&(i=this.areaLabel.label)&&this.areaLabel.p1&&this.areaLabel.p2&&E(i)&&(e={x:(this.areaLabel.p1.x+this.areaLabel.p2.x)/2,y:(this.areaLabel.p1.y+this.areaLabel.p2.y)/2,z:(this.areaLabel.p1.z+this.areaLabel.p2.z)/2},t=h.project(e,this.viewer),a(Math.floor(i.clientWidth/2),Math.floor(i.clientHeight/2))),this.viewer.model&&!this.viewer.model.is2d()){var g,b,C=!1;this.labelsStacked=!1;var v=[];for(b=0;bo.top&&(w(d,h)?(n=d,a=h,(i=c).style.left=parseInt(i.style.left,10)-(n.right-a.left)+"px",A=!0):y(d,h)?(k(c,d,h),A=!0):x(d,h)&&(T(c,d,h),A=!0),A)){var u=t.slice(0);u.splice(u.indexOf(e),1),this.labelsOverlapDetection(c,u),c.causeStacking&&e.causeStacking&&(r=!0),c.causeStacking&&this.labelsStacked&&this.stackLabels(this.labels)}}}return r},v.stackLabels=function(e){for(var t=this.lines.xyz.label,i=1;i2&&(this.drawSegmentAndPush(n,i,!this.measurement.closedArea),h.isEqualVectors(n,i,h.EPSILON)||a.push(i),0!==this.measurement.area&&this.drawSurface(a)&&(this.showAreaLabel(c(a)),this.updateArea()))},v.renderAreaMeasurement=function(e){for(var t,i,n=this.measurement.countPicks(),a=[],s=1;s2&&(t=h.getSnapResultPosition(e[1],this.viewer),this.drawSegmentAndPush(t,i,!this.measurement.closedArea),h.isEqualVectors(t,i,h.EPSILON)||a.push(i),0!==this.measurement.area&&this.drawSurface(a)&&(this.showAreaLabel(c(a)),this.updateArea()))},v.clearAngleMeshes=function(){this.angleArc&&(this.viewer.impl.removeOverlay(this.overlayName,this.angleArc,!0),this.angleArc=null),this.angleOutline.length>0&&(this.viewer.impl.removeMultipleOverlays(this.overlayName,this.angleOutline,!0),this.angleOutline.length=0)},v.drawAngle=function(e,t,i,n,a,s,o){var r=.001;this.materialAngle||(this.materialAngle=new THREE.MeshPhongMaterial({color:10066329,opacity:.5,transparent:!0,depthTest:!1,depthWrite:!1,side:THREE.DoubleSide}),this.materialAngleOutline=new THREE.MeshBasicMaterial({color:16750848,depthTest:!1,depthWrite:!1})),this.applyLineColor(this.lines.xyz.material),this.applyLineColor(this.surfaceColor),h.createCommonOverlay(this.viewer,this.overlayName),this.clearAngleMeshes();var l=o||Math.min(e.distanceTo(t),e.distanceTo(i))/4,c=new THREE.CircleBufferGeometry(l,100,0,a*Math.PI/180),A=new THREE.Mesh(c,this.surfaceColor);this.applyLineColor(this.surfaceColor);const d=A.geometry.getAttribute("position");{const e=Array.from(d.array),t=e.slice(0,d.itemSize);d.array=Float32Array.from(e.concat(t)),d.count++,d.needsUpdate=!0}A.position.set(e.x,e.y,e.z);var u=A.position.clone();u.add(n),A.lookAt(u),A.updateMatrixWorld();let p=(new THREE.Vector3).fromBufferAttribute(d,1),m=(new THREE.Vector3).fromBufferAttribute(d,d.count-2);p.applyMatrix4(A.matrixWorld),m.applyMatrix4(A.matrixWorld);var g=new THREE.Vector3,b=new THREE.Vector3,C=new THREE.Vector3,v=new THREE.Vector3;g.subVectors(p,e),b.subVectors(m,e),C.subVectors(t,e),v.subVectors(i,e);var f,E=g.angleTo(C),w=g.angleTo(v),y=b.angleTo(C),x=b.angleTo(v);f=(E<=r&&E>=-.001||w<=r&&w>=-.001)&&(y<=r&&y>=-.001||x<=r&&x>=-.001)?0:(E<=Math.PI+r&&E>=Math.PI-r||w<=Math.PI+r&&w>=Math.PI-r)&&(y<=Math.PI+r&&y>=Math.PI-r||x<=Math.PI+r&&x>=Math.PI-r)?Math.PI:E<=y+r&&E>=y-r||E<=x+r&&E>=x-r?E:w;var k=new THREE.Matrix4;k.makeRotationAxis(n,f),k.multiply(A.matrix),A.matrix=k,A.rotation.setFromRotationMatrix(A.matrix),A.updateMatrixWorld(),p=(new THREE.Vector3).fromBufferAttribute(d,1),m=(new THREE.Vector3).fromBufferAttribute(d,d.count-2),p.applyMatrix4(A.matrixWorld),m.applyMatrix4(A.matrixWorld),g.subVectors(p,e),b.subVectors(m,e),E=g.angleTo(C),w=g.angleTo(v),y=b.angleTo(C),x=b.angleTo(v),E>=r&&w>=r&&((k=new THREE.Matrix4).makeRotationAxis(n,2*-f),k.multiply(A.matrix),A.matrix=k,A.rotation.setFromRotationMatrix(A.matrix));const T=new THREE.CircleBufferGeometry(l,100,0,a*Math.PI/180);{const e=T.getAttribute("position");e.array=e.array.slice(e.itemSize),e.count--,e.needsUpdate=!0}if(A.updateMatrixWorld(),T.applyMatrix4(A.matrixWorld),this.angleOutline=this.drawEdgeAsCylinder(T,this.lines.xyz.material,2,0,this.getNewCylinderGeometry()),this.angleArc=A,this.viewer.impl.addOverlay(this.overlayName,this.angleArc),this.viewer.impl.addMultipleOverlays(this.overlayName,this.angleOutline),s.fromBufferAttribute(d,Math.round(d.count/2)-1),s.applyMatrix4(A.matrixWorld),!o){var M=new THREE.Vector3;M.subVectors(s,e).normalize(),M.multiplyScalar(l/2),s.add(M)}},v.createArcLabel=function(){var e=this.createMeasurementLabel();return this.viewer.container.appendChild(e),e.addEventListener("mousewheel",this.viewer.toolController.mousewheel),e.addEventListener("click",this.onSelectionAreaClickedBinded),e},v.clearArcMeshes=function(){this.arcOutline&&this.arcOutline.length>0&&(this.viewer.impl.removeMultipleOverlays(this.overlayName,this.arcOutline,!0),this.arcOutline.length=0)},v.drawCircularArc=function(e,t,i,n){let a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];var s=new THREE.BufferGeometry;const o=[new THREE.Vector3,new THREE.Vector3];var r=h.nearestPointInPointToSegment(this.viewer.navigation.getPosition(),e,t),l=this.setScale(r),c=new THREE.Vector3;c.subVectors(e,i);var A=Math.atan2(c.y,c.x),d=new THREE.Vector3;d.subVectors(t,i);var u=Math.atan2(d.y,d.x);this.arcLabel.point1Relative=c.clone(),this.arcLabel.point2Relative=d.clone().normalize().multiplyScalar(n);var p=u-A;p>Math.PI?p-=2*Math.PI:p<-Math.PI&&(p+=2*Math.PI);var m=new THREE.CircleBufferGeometry(n,100,A,p),g=new THREE.Mesh(m,this.lines.xyz.material);g.position.set(i.x,i.y,i.z);{const e=m.getAttribute("position");e.array=e.array.slice(e.itemSize),e.count--,e.needsUpdate=!0}function b(e,t){o[0].addVectors(e,t.clone().multiplyScalar(2*l)),o[1].subVectors(e,t.clone().multiplyScalar(2*l)),s.setFromPoints(o);var i=this.drawLineAsCylinder(s,this.lines.xyz.material,3,this.overlayName);this.arcTip.push(i)}g.updateMatrixWorld(),m.applyMatrix4(g.matrixWorld),h.createCommonOverlay(this.viewer,this.overlayName),this.clearArcMeshes(),this.arcOutline=this.drawEdgeAsCylinder(m,this.lines.xyz.material,4,0,this.getNewCylinderGeometry()),this.viewer.impl.addMultipleOverlays(this.overlayName,this.arcOutline),a&&(b.call(this,e,c.normalize()),b.call(this,t,d.normalize()));var C=new THREE.Vector3,v=A+.5*p;C.x=Math.cos(v)*n,C.y=Math.sin(v)*n,this.arcLabel.midPointRelative=C.clone(),C.applyMatrix4(g.matrixWorld),this.showArcLabel(C)},v.renderAngleMeasurementFromPoints=function(e){var t=[];const i=Object.keys(e);for(var n=0;nd.x||e===this.lines.y&&u.y>d.y||e===this.lines.z&&u.z>d.z)&&(l=d.clone(),d=u.clone(),u=l.clone()),e.line=null,A?this.hideLabel(A):A=this.createDistanceLabel(e),(this.isLeaflet&&e!==this.lines.z||d.distanceTo(u)>=h.EPSILON)&&r)if(e.p1=d,e.p2=u,e===this.lines.xyz)this.drawXYZLine(e),this.showLabel(A),this.updateDistance();else{c=e.line=this.drawLineSegment(d,u,2,e.material);var p=!this.simple&&this.showMeasureResult;c.visible=p,e.visible=p,p?this.showLabel(A):this.hideLabel(A)}},v.renderDistanceMeasurementFromPoints=function(e,t){this.updateLine(this.lines.xyz,e.x,e.y,e.z,t.x,t.y,t.z,!0);var i=this.viewer.navigation.getAlignedUpVector(),n=Math.abs(i.x),a=Math.abs(i.y),s=Math.abs(i.z),o=!1;s>n&&s>a?(this.updateLine(this.lines.x,e.x,e.y,e.z,t.x,e.y,e.z,o),this.updateLine(this.lines.y,t.x,e.y,e.z,t.x,t.y,e.z,o),this.updateLine(this.lines.z,t.x,t.y,e.z,t.x,t.y,t.z,o)):a>n&&a>s?(this.updateLine(this.lines.x,e.x,e.y,e.z,t.x,e.y,e.z,o),this.updateLine(this.lines.z,t.x,e.y,e.z,t.x,e.y,t.z,o),this.updateLine(this.lines.y,t.x,e.y,t.z,t.x,t.y,t.z,o)):(this.updateLine(this.lines.y,e.x,e.y,e.z,e.x,t.y,e.z,o),this.updateLine(this.lines.z,e.x,t.y,e.z,e.x,t.y,t.z,o),this.updateLine(this.lines.x,e.x,t.y,t.z,t.x,t.y,t.z,o))},v.renderDistanceMeasurement=function(e,t){var i=this;this.updateLine(this.lines.xyz,e.x,e.y,e.z,t.x,t.y,t.z,!0);var n=this.viewer.navigation.getAlignedUpVector(),a=Math.abs(n.x),s=Math.abs(n.y),o=Math.abs(n.z),r=function(e,t){return i.tmpVector.subVectors(e,t),i.tmpVector.normalize(),!h.isParallel(i.tmpVector,i.xAxis)&&!h.isParallel(i.tmpVector,i.yAxis)&&!h.isParallel(i.tmpVector,i.zAxis)}(e,t);o>a&&o>s?(this.updateLine(this.lines.x,e.x,e.y,e.z,t.x,e.y,e.z,r),this.updateLine(this.lines.y,t.x,e.y,e.z,t.x,t.y,e.z,r),this.updateLine(this.lines.z,t.x,t.y,e.z,t.x,t.y,t.z,r)):s>a&&s>o?(this.updateLine(this.lines.x,e.x,e.y,e.z,t.x,e.y,e.z,r),this.updateLine(this.lines.z,t.x,e.y,e.z,t.x,e.y,t.z,r),this.updateLine(this.lines.y,t.x,e.y,t.z,t.x,t.y,t.z,r)):(this.updateLine(this.lines.y,e.x,e.y,e.z,e.x,t.y,e.z,r),this.updateLine(this.lines.z,e.x,t.y,e.z,e.x,t.y,t.z,r),this.updateLine(this.lines.x,e.x,t.y,t.z,t.x,t.y,t.z,r))},v.updateResults=function(){this.updateDistance(),this.updateAngle(),this.updateArea(),this.updateArcLength(),setTimeout(function(){this.viewer.impl&&this.updateLabelsPosition()}.bind(this),0)},v.updateDistance=function(){function e(e,t){e&&(e.style.width=t)}function t(e){return e?e.clientWidth:0}Object.keys(this.lines).forEach(function(t){e(this.lines[t].label,"")}.bind(this)),S(this.lines.x.label,"~ "+this.measureTool.getDistanceX(this.measurement)),S(this.lines.y.label,"~ "+this.measureTool.getDistanceY(this.measurement)),S(this.lines.z.label,"~ "+this.measureTool.getDistanceZ(this.measurement)),M(this.lines.xyz.label,"~ "+this.measureTool.getDistanceXYZ(this.measurement)),this.viewer.model&&this.viewer.model.is3d()&&setTimeout(function(){var i=Math.max(t(this.lines.x.label),t(this.lines.y.label),t(this.lines.z.label),t(this.lines.xyz.label));Object.keys(this.lines).forEach(function(t){e(this.lines[t].label,i+"px")}.bind(this))}.bind(this),0)},v.updateAngle=function(){M(this.angleLabel.label,"~ "+this.measureTool.getAngle(this.measurement))},v.updateLocation=function(){M(this.locationLabel.label,("~ "+this.measureTool.getLocation(this.measurement)).split("\n").join("\n~ "))},v.updateCallout=function(){!function(e,t){if("string"==typeof t)return void M(e,t);var i=e.querySelector(".measure-length-text");i&&(Array.isArray(t)?i.innerHTML=t.map(L).join(""):i.innerHTML=L(t))}(this.calloutLabel.label,this.measureTool.getCallout(this.measurement))},v.updateArea=function(){M(this.areaLabel.label,"~ "+this.measureTool.getArea(this.measurement))},v.updateArcLength=function(){M(this.arcLabel.label,"~ "+this.measureTool.getArc(this.measurement))},v.setSimple=function(e){if(this.simple!=e){this.simple=e;var t=!e;this.setLineVisible(this.lines.x,t),this.setLineVisible(this.lines.y,t),this.setLineVisible(this.lines.z,t),this.updateLabelsPosition(),this.viewer.impl.invalidate(!1,!1,!0)}},v.setLineVisible=function(e,t){e.line&&(e.line.visible=t,e.visible=t,e.label&&(t?this.showLabel(e.label):(this.hideLabel(e.label),e.label.style.opacity=0)))},v.enableLabelsTouchEvents=function(e){var t=e?"all":"none";this.lines.xyz.label&&(this.lines.xyz.label.style.pointerEvents=t),this.angleLabel.label&&(this.angleLabel.label.style.pointerEvents=t),this.areaLabel.label&&(this.areaLabel.label.style.pointerEvents=t),this.arcLabel.label&&(this.arcLabel.label.style.pointerEvents=t)},v.setLabelsZIndex=function(e){for(var t in this.lines)if(Object.prototype.hasOwnProperty.call(this.lines,t)){var i=this.lines[t];i.label&&(i.label.style.zIndex=e)}for(t in this.angleLabel&&this.angleLabel.label&&(this.angleLabel.label.style.zIndex=e),this.locationLabel&&this.locationLabel.label&&(this.locationLabel.label.style.zIndex=e),this.calloutLabel&&this.calloutLabel.label&&(this.calloutLabel.label.style.zIndex=e),this.areaLabel&&this.areaLabel.label&&(this.areaLabel.label.style.zIndex=e),this.arcLabel&&this.arcLabel.label&&(this.arcLabel.label.style.zIndex=e),this.endpoints)if(Object.prototype.hasOwnProperty.call(this.endpoints,t)){var n=this.endpoints[t];n.label&&(n.label.style.zIndex=e-1)}},v.focusLabels=function(){this.setLabelsZIndex(3)},v.unfocusLabels=function(){this.setLabelsZIndex(2)},v.clear=function(){var e;for(e in this.endpoints)if(Object.prototype.hasOwnProperty.call(this.endpoints,e)){var t=this.endpoints[e];t.label&&this.hideLabel(t.label)}for(e in this.lines)if(Object.prototype.hasOwnProperty.call(this.lines,e)){var i=this.lines[e];i.line&&(i.line.visible=!1,i.visible=!1,i.tips&&i.tips.forEach((function(e){e.visible=!1}))),i.label&&(this.hideLabel(i.label),i.label.style.opacity=0,i.label.style.zIndex=2)}this.angleLabel&&this.angleLabel.label&&this.hideLabel(this.angleLabel.label),this.locationLabel&&this.locationLabel.label&&this.hideLabel(this.locationLabel.label),this.calloutLabel&&this.calloutLabel.label&&this.hideLabel(this.calloutLabel.label),this.areaLabel&&this.areaLabel.label&&this.hideLabel(this.areaLabel.label),this.arcLabel&&this.arcLabel.label&&this.hideLabel(this.arcLabel.label),this.clearSelectionAreas(),this.segments=[],this.dashedLines=[],this.viewer.impl.clearOverlay(this.overlayName,!0),h.createCommonOverlay(this.viewer,this.overlayName)},v.hideClick=function(e){for(var t in r.prototype.hideClick.call(this,e),this.lines)if(Object.prototype.hasOwnProperty.call(this.lines,t)){var i=this.lines[t];i.line&&(i.line.visible=!1,i.visible=!1,i.tips&&i.tips.forEach((function(e){e.visible=!1}))),i.label&&(this.hideLabel(i.label),i.label.style.opacity=0)}this.angleLabel&&this.angleLabel.label&&this.hideLabel(this.angleLabel.label),this.areaLabel&&this.areaLabel.label&&this.hideLabel(this.areaLabel.label),this.arcLabel&&this.arcLabel.label&&this.hideLabel(this.arcLabel.label),this.enableSelectionAreas(i.selectionArea,!1)},v.destroy=function(){var e;for(e in r.prototype.destroy.call(this),this.lines)if(Object.prototype.hasOwnProperty.call(this.lines,e)){var t=this.lines[e];t.line&&(this.viewer.impl.clearOverlay(self.overlayName,!0),t.material=t.line=t.geometry=null),t.label&&("xyz"===e&&(t.label.addEventListener("mousewheel",this.viewer.toolController.mousewheel),t.label.removeEventListener("click",this.onSelectionAreaClickedBinded)),t.label.parentNode.removeChild(t.label),t.label=null),t.material=t.line=t.geometry=t.label=t.p1=t.p2=null}this.clearAngleMeshes(),this.angleLabel&&this.angleLabel.label&&(this.angleLabel.label.parentNode.removeChild(this.angleLabel.label),this.angleLabel.label.removeEventListener("mousewheel",this.viewer.toolController.mousewheel),this.angleLabel.label.removeEventListener("click",this.onSelectionAreaClickedBinded),this.angleLabel.label=this.angleLabel.p1=this.angleLabel.p2=null),this.clearArcMeshes(),this.arcLabel&&this.arcLabel.label&&(this.arcLabel.label.parentNode.removeChild(this.arcLabel.label),this.arcLabel.label.removeEventListener("mousewheel",this.viewer.toolController.mousewheel),this.arcLabel.label.removeEventListener("click",this.onSelectionAreaClickedBinded),this.arcLabel.label=this.arcLabel.midPoint=null),this.locationLabel&&this.locationLabel.label&&(this.locationLabel.label.parentNode.removeChild(this.locationLabel.label),this.locationLabel.label.removeEventListener("mousewheel",this.viewer.toolController.mousewheel),this.locationLabel.label=this.locationLabel.p=null),this.calloutLabel&&this.calloutLabel.label&&(this.calloutLabel.label.parentNode.removeChild(this.calloutLabel.label),this.calloutLabel.label.removeEventListener("mousewheel",this.viewer.toolController.mousewheel),this.calloutLabel.label=this.calloutLabel.p=null),this.areaLabel&&this.areaLabel.label&&(this.areaLabel.label.parentNode.removeChild(this.areaLabel.label),this.areaLabel.label.removeEventListener("mousewheel",this.viewer.toolController.mousewheel),this.areaLabel.label.removeEventListener("click",this.onSelectionAreaClickedBinded),this.areaLabel.label=this.areaLabel.p1=this.areaLabel.p2=null),this.viewer.impl.overlayScenes[this.overlayName]&&this.viewer.impl.removeOverlayScene(this.overlayName),this.viewer.removeEventListener(A.CAMERA_CHANGE_EVENT,this.onCameraChangeBinded),this.removeWindowEventListener("mouseup",this.handleButtonUpBinded)},v.clearXYZLine=function(){this.viewer.impl.removeOverlay(this.overlayName,this.lines.xyz.line,!0),this.lines.xyz.tips&&this.lines.xyz.tips.forEach(function(e){this.viewer.impl.removeOverlay(this.overlayName,e,!0)}.bind(this))},v.updateScale=function(){var e;for(e in this.angleOutline.forEach((e=>this.setCylinderScale(e))),this.arcOutline.forEach((e=>this.setCylinderScale(e))),this.lines)if(Object.prototype.hasOwnProperty.call(this.lines,e)){var t=this.lines[e];t.line&&t!==this.lines.xyz&&this.setCylinderScale(t.line,t.p1,t.p2)}for(e in this.segments)if(Object.prototype.hasOwnProperty.call(this.segments,e)){var i=this.segments[e];i.line&&this.setCylinderScale(i.line,i.p1,i.p2)}this.measurement.measurementType===h.MeasurementTypes.MEASUREMENT_DISTANCE&&this.measurement.isComplete()&&(this.clearXYZLine(),this.drawXYZLine(this.lines.xyz)),this.measurement.measurementType===h.MeasurementTypes.MEASUREMENT_ARC&&this.arcTip.forEach((e=>{var t=this.setScale(e.position);if(Object.prototype.hasOwnProperty.call(e,"lmv_line_width")){var i=t*e.lmv_line_width;e.scale.x=i,e.scale.z=i}var n=4*t;e.scale.y=n}))},v.setNoTopology=function(){this.topologyStatus=f,this.lines.xyz.label&&(R(this.lines.xyz.label,!1,this.topologyStatus),this.lines.xyz.label.classList.remove("fetching-topology"))},v.setFetchingTopology=function(){this.topologyStatus=1,this.lines.xyz.label&&(R(this.lines.xyz.label,!0,this.topologyStatus),this.lines.xyz.label.classList.add("fetching-topology"))},v.setTopologyAvailable=function(){this.topologyStatus=2,this.lines.xyz.label&&(R(this.lines.xyz.label,!1,this.topologyStatus),this.lines.xyz.label.classList.remove("fetching-topology"))},v.createMeasurementLabel=function(){const e=this.getDocument();var t=e.createElement("div");t.className="measure-length";var i=e.createElement("div");i.className="measure-fetching-topology",i.style.display="none",t.appendChild(i);var n=e.createElement("div");n.className="measure-length-text",t.appendChild(n);var a=e.createElement("div");return a.className="measure-delta-text",t.appendChild(a),t.causeStacking=!0,A.isMobileDevice()||h.safeToggle(t,"enable-hover",!0),t},v.createSnapResultLabel=function(e){const t=this.getDocument();var i=t.createElement("div");i.className="measure-label";var n=t.createElement("div");if(n.className="measure-label-icon",i.appendChild(n),A.isTouchDevice()){this.initLabelMobileGestures(i,e,this.measureTool);var a=t.createElement("div");a.className="measure-label-hit-area",i.appendChild(a)}return A.isMobileDevice()||(this.initMouseEvent(i,e),i.addEventListener("mousewheel",this.viewer.toolController.mousewheel),h.safeToggle(i,"enable-hover",!0)),i.causeStacking=!1,i},v.showAngleLabel=function(e){var t=this.angleLabel.label;t||(t=this.angleLabel.label=this.createMeasurementLabel(),this.viewer.container.appendChild(t),t.addEventListener("mousewheel",this.viewer.toolController.mousewheel),t.addEventListener("click",this.onSelectionAreaClickedBinded)),this.updateAngle(),this.showLabel(t),this.angleLabel.p1=e.clone(),this.angleLabel.p2=e.clone()},v.showArcLabel=function(e){var t=this.arcLabel.label;t?this.hideLabel(t):this.arcLabel.label=t=this.createArcLabel(),this.updateArcLength(),this.showLabel(t),this.arcLabel.p1=e.clone(),this.arcLabel.p2=e.clone()},v.showLocationLabel=function(e){var t=this.locationLabel.label;t||((t=this.locationLabel.label=this.createMeasurementLabel()).style.whiteSpace="pre-line",t.style.height="auto",t.style.textAlign="start",t.querySelector(".measure-delta-text").style.display="none",this.viewer.container.appendChild(t),t.addEventListener("mousewheel",this.viewer.toolController.mousewheel)),this.updateLocation(),this.showLabel(t),this.locationLabel.p=e.clone()},v.showCalloutLabel=function(e){var t=this.calloutLabel.label;t||((t=this.calloutLabel.label=this.createMeasurementLabel()).style.whiteSpace="pre-line",t.style.height="auto",t.style.textAlign="start",this.measurement.options&&this.measurement.options.width&&(t.style.width=this.measurement.options.width+"px"),t.querySelector(".measure-delta-text").style.display="none",this.viewer.container.appendChild(t),t.addEventListener("mousewheel",this.viewer.toolController.mousewheel)),this.updateCallout(),this.showLabel(t),this.calloutLabel.p=e.clone()},v.showAreaLabel=function(e){var t=this.areaLabel.label;t||(t=this.areaLabel.label=this.createMeasurementLabel(),this.viewer.container.appendChild(t),t.addEventListener("mousewheel",this.viewer.toolController.mousewheel),t.addEventListener("click",this.onSelectionAreaClickedBinded)),this.updateArea(),this.showLabel(t),this.areaLabel.p1=e,this.areaLabel.p2=e},v.onSelectionAreaClicked=function(){this.viewer.dispatchEvent({type:h.Events.SELECT_MEASUREMENT,data:{id:this.measurement.id}}),this.measureTool.selectMeasurementById(this.measurement.id)},v.createSelectionArea=function(){var e=this.getDocument().createElement("div");return e.id="measurement-selection-area-"+this.measurement.id,this.viewer.container.appendChild(e),e.className="measure-selection-area",e.style.display="none",e.addEventListener("mousewheel",this.viewer.toolController.mousewheel),e.addEventListener("click",this.onSelectionAreaClickedBinded),e},v.updateSelectionArea=function(){this.segments.forEach(function(e){if(e.p1&&e.p2){var t=h.project(e.p1,this.viewer),i=h.project(e.p2,this.viewer);e.selectionArea||(e.selectionArea=this.createSelectionArea());var n=e.selectionArea,a=new THREE.Vector2;n.style.top=t.y-7.5+"px",n.style.left=t.x+"px",n.style.width=a.subVectors(t,i).length()+"px",n.style.height="15px";var s,o=t.x-i.x,r=t.y-i.y;s=180*Math.atan2(-r,-o)/Math.PI,n.style.transform="rotate("+s+"deg)",n.style.transformOrigin="0px 7.5px"}}.bind(this)),this.measureTool.areAllPicksSet()&&this.enableSelectionAreas(!0)},v.clearSelectionAreas=function(){const e=this.getDocument();this.segments.forEach(function(t){if(t.selectionArea){t.selectionArea.removeEventListener("mousewheel",this.viewer.toolController.mousewheel),t.selectionArea.removeEventListener("click",this.onSelectionAreaClickedBinded);var i=e.getElementById("measurement-selection-area-"+this.measurement.id);i&&i.parentNode.removeChild(i),t.selectionArea=null}}.bind(this))},v.enableSelectionAreas=function(e){this.segments.forEach(function(t){t.selectionArea&&(t.selectionArea.style.display=e?"block":"none")}.bind(this))},v.render=function(e,t){r.prototype.render.call(this,e,t),this.updateSelectionArea()},v.renderFromPoints=function(e,t){r.prototype.renderFromPoints.call(this,e,t),this.updateSelectionArea()},v.onCameraChange=function(){this.redrawDashedLines(),this.updateSelectionArea(),this.hideLabelsOutsideOfView(),this.updateLabelsPosition()},v.handleResize=function(){this.redrawDashedLines(),this.updateSelectionArea(),this.updateLabelsPosition()};var D=i(8070),N=i(9556);const P=THREE,I=Autodesk.Viewing,O=Autodesk.Viewing.Private;function V(e,i,n,a){var s=e,o=["measure"];this.setGlobalManager(e.globalManager);var r=n,l=Autodesk.Viewing,c=Autodesk.Viewing.MeasureCommon,A=!1,h=!1,d=!1,u=0,p=!1,m=!1,g=null,b=null,v=!1,f=new t(s),E=null,w=null,y=[],x=null,k=!1,T=a,M=!1,B=[],L=null,S=null,R=c.MeasurementTypes.MEASUREMENT_DISTANCE,I=!0,V=null,z=!1;function U(e){const t=(e=e||E).clonePicks(),i=[];for(let n=0;n0;)E=f.measurementsList[Object.keys(f.measurementsList)[0]],f.changeCurrentMeasurement(E),this.clearCurrentMeasurement(),E=null;T&&T.isActive()&&s.toolController.deactivateTool("snapper"),s.toolController.deactivateTool("magnifyingGlass"),s.impl.pauseHighlight(!1),f.destroy(),s.removeEventListener(l.CAMERA_CHANGE_EVENT,this.onCameraChange),s.removeEventListener(c.Events.MEASUREMENT_CHANGED_EVENT,this.onMeasurementChangedBinded),s.removeEventListener(l.SHOW_ALL_EVENT,this.onShowAllEvent)},this.clearIncompleteMeasurement=function(){this.areAllPicksSet()||(this.isEditingEndpoint?this.undoEditEndpoint():this.clearCurrentMeasurement())},this.update=function(){return!1},this.getUnits=function(){return r.units},this.setUnits=function(e){if(r.units!==e)for(var t in r.units=e,f.measurementsList)if(Object.prototype.hasOwnProperty.call(f.measurementsList,t)){var i=f.measurementsList[t];i.indicator&&i.indicator.updateResults()}},this.getPrecision=function(){return r.precision},this.setPrecision=function(e){if(Number.isInteger(e)&&!(e<0)&&r.precision!==e)for(var t in r.precision=e,f.measurementsList)if(Object.prototype.hasOwnProperty.call(f.measurementsList,t)){var i=f.measurementsList[t];i.indicator&&i.indicator.updateResults()}},this.getDistanceXYZ=function(e){var t;return e||(e=E),this.getDistanceAux(e.distanceXYZ,null===(t=e.result)||void 0===t?void 0:t.units)},this.getDistanceX=function(e){var t;return e||(e=E),this.getDistanceAux(e.distanceX,null===(t=e.result)||void 0===t?void 0:t.units)},this.getDistanceY=function(e){var t;return e||(e=E),this.getDistanceAux(e.distanceY,null===(t=e.result)||void 0===t?void 0:t.units)},this.getDistanceZ=function(e){var t;return e||(e=E),this.getDistanceAux(e.distanceZ,null===(t=e.result)||void 0===t?void 0:t.units)},this.getDistanceAux=function(e,t){if(s.model){let i=s.model.getUnitString();r.useViewportInfo&&t&&null===r.calibrationFactor&&(i=t);const n=Autodesk.Viewing.Private.convertUnits(i,r.units,r.calibrationFactor,e||0);return Autodesk.Viewing.Private.formatValueWithUnits(n,r.units,3,r.precision)}},this.getAngle=function(e){e||(e=E);var t=e.angle;return Autodesk.Viewing.Private.formatValueWithUnits(t,String.fromCharCode(176),3,r.precision)},this.getArc=function(e){if(s.model){e||(e=E);let i=s.model.getUnitString();var t=e.arc;const n=Autodesk.Viewing.Private.convertUnits(i,r.units,r.calibrationFactor,t||0);return Autodesk.Viewing.Private.formatValueWithUnits(n,r.units,3,r.precision)}},this.getLocation=function(e){e||(e=E);var t=e.location||{x:0,y:0,z:0};return"X: "+this.getDistanceAux(t.x)+"\nY: "+this.getDistanceAux(t.y)+"\nZ: "+this.getDistanceAux(t.z)},this.getCallout=function(e){return e||(e=E),e.text||""},this.getArea=function(e){if(s.model){var t;e||(e=E);let i=s.model.getUnitString();const n=null===(t=e.result)||void 0===t?void 0:t.units;r.useViewportInfo&&n&&null===r.calibrationFactor&&(i=n);const a=Autodesk.Viewing.Private.convertUnits(i,r.units,r.calibrationFactor,e.area,"square");return r.units?Autodesk.Viewing.Private.formatValueWithUnits(a,r.units+"^2",3,r.precision):Autodesk.Viewing.Private.formatValueWithUnits(a,null,3,r.precision)}},this.snapToFirstPick=function(t,i){if(E.hasPick(1)&&u>3&&!E.closedArea){var n=E.getPick(1),a=c.getSnapResultPosition(n,s),o=c.project(a,e),r=c.getSnapResultPosition(t,s),l=c.project(r,e);(i||l.distanceTo(o)<25)&&(T.onMouseMove(o),n.copyTo(t))}},this.render=function(e){this.isCalibrationSetOnPage()?G(0,!0):k&&x&&x.picks.length>0&&G(x.picks[0].viewportIndex2d);var t=E.computeResult(E.picks,s,T);return E.indicator.render(E.picks,p||!!e),t},this.setUseLastViewport=function(e){k=e},this.getUseLastViewport=function(){return k},this.setMeasurements=function(e){if(e&&0!==(e=Array.isArray(e)?e:[e]).length){for(let i=0;i{E=e,e.attachIndicator(s,this,C),w instanceof Function&&(w(),w=null),H(!1)},r=()=>{const e=f.getRestoredMeasurementData()[E.id];u=e.length};f.createMeasurementFromData(n,a,o,r)}this.deselectAllMeasurements()}function t(e){let t;switch(e.type){case"Distance":t=c.MeasurementTypes.MEASUREMENT_DISTANCE;break;case"Angle":t=c.MeasurementTypes.MEASUREMENT_ANGLE;break;case"Area":t=c.MeasurementTypes.MEASUREMENT_AREA;break;case"Arc":t=c.MeasurementTypes.MEASUREMENT_ARC;break;case"Location":t=c.MeasurementTypes.MEASUREMENT_LOCATION;break;case"Callout":t=c.MeasurementTypes.MEASUREMENT_CALLOUT;break;default:return}return t}},this.getMeasurement=function(e,t){if(!E)return null;r.units=e||r.units,r.precision=t||r.precision;var i=["Vertex","Edge","Face","Circular Arc","Curved Edge","Curved Face"],n=U(),a=Y();return{from:i[E.getGeometry(1).type],to:i[E.getGeometry(2).type],distance:this.getDistanceXYZ(),deltaX:this.getDistanceX(),deltaY:this.getDistanceY(),deltaZ:this.getDistanceZ(),angle:this.getAngle(),area:this.getArea(),arc:this.getArc(),location:this.getLocation(),text:this.getCallout(),unitType:r.units,precision:r.precision,picks:n,type:a}},this.getMeasurementPoints=function(){return E.clonePicks()},this.getMeasurementList=function(e,t){var i=[],n=null,a=["Vertex","Edge","Face","Circular Arc","Curved Edge","Curved Face"],o=Object.keys(f.measurementsList);for(let h=0;h{if(e)for(let t=0;t3},this.undoEditEndpoint=function(){for(var e in E.indicator.clear(),E.picks)Object.prototype.hasOwnProperty.call(E.picks,e)&&E.setPick(e,B[e].clone());E.indicator.changeEndpointOnEditStyle(u,!1),this.isEditingEndpoint=!1,this.updateViewportId(!0),this.allPicksSet(),this.render(!0)},this.updateResults=function(){E.indicator.updateResults(),E.indicator.showEndpoints(),E.indicator.focusLabels(),E.isComplete()&&this.isolateMeasurement()},this.deleteMeasurements=function(){const e=f.measurementsList,t=Object.keys(e);for(let i=0;i1)this.setPrecision(null===(n=e[i])||void 0===n?void 0:n.precision)}},this.setNoTopology=function(){_("setNoTopology"),w=function(){E.indicator.setNoTopology()}},this.setFetchingTopology=function(){w=function(){y.push(E),E.indicator.setFetchingTopology()},E&&E.indicator&&w()},this.setTopologyAvailable=function(){_("setTopologyAvailable"),w=function(){E.indicator.setTopologyAvailable()}},this.getSnapper=function(){return T},this.correctPickPosition=function(){var t=this.getActivePick();if(t&&!t.getGeometry()&&L&&(t.geomType=c.SnapType.SNAP_VERTEX,t.geomVertex=L,t.intersectPoint=L),this.hasPreviousPick()){var i=this.getPreviousPick();if(!c.correctPerpendicularPicks(i,t,e,T)){var n=(t.id+1)%(E.countPicks()+1);if(0===n&&(n=1),n!==t.id&&E.hasPick(n)){var a=E.getPick(n);c.correctPerpendicularPicks(a,t,e,T)}}E.measurementType==c.MeasurementTypes.MEASUREMENT_AREA&&this.snapToFirstPick(t)}},this._handleMouseEvent=function(t){var i=!1;if(T.isSnapped()){var n;if((this.areAllPicksSet()||this.isNoPicksSet())&&(this.startNewMeasurement(),u=1),T.copyResults(this.getActivePick()),!s.model.is2d()){let i=s.container.getBoundingClientRect(),n=t.canvasX||t.clientX-i.left,r=t.canvasY||t.clientY-i.top,l=this.getActivePick(),c=e.impl.hitTestViewport(e.impl.clientToViewport(n,r));if(l){var a,o;const e=s.model.getFragmentList(),t=new P.Matrix4;null!==(a=l.geomFace)&&void 0!==a&&a.fragId||0===(null===(o=l.geomFace)||void 0===o?void 0:o.fragId)?this.getActivePick().fragId=l.geomFace.fragId:this.getActivePick().fragId=null==c?void 0:c.fragId,e.getWorldMatrix(this.getActivePick().fragId,t);const i=(new P.Vector3).applyMatrix4(t);this.getActivePick().fragPos={x:i.x,y:i.y,z:i.z}}}if(p&&(null===(n=E)||void 0===n?void 0:n.measurementType)===c.MeasurementTypes.MEASUREMENT_ARC&&(!E.getPick(1).circularArcCenter||E.hasPick(2)&&(!c.isEqualVectors(E.getPick(1).circularArcCenter,E.getPick(2).circularArcCenter,0)||E.getPick(1).circularArcRadius!==E.getPick(2).circularArcRadius)))return!1;i=!0}else{if(t&&s.model){var r=s.container.getBoundingClientRect(),l=t.canvasX||t.clientX-r.left,A=t.canvasY||t.clientY-r.top;if(l&&A){let e;if(s.impl.is2d)e=!0;else{const t=[];s.impl.renderer().idAtPixel(l,A,t);const i=t[1];if(i>0){const t=s.impl.modelQueue().findModel(i);e=null==t?void 0:t.is2d()}}L=e?c.inverseProject({x:l,y:A},s):null}}if(p&&E&&!this.isEditingEndpoint&&u===E.getMaxNumberOfPicks()+1)return!0;var h=this.getActivePick();h&&h.clear()}if(E&&(this.correctPickPosition(),p&&this._doConsumeSingleClick(),!this.isNoPicksSet())){var d=this.render();E.hasPick(2)&&(i&=d)}return i},this._doConsumeSingleClick=function(){var e;if(E.measurementType===c.MeasurementTypes.MEASUREMENT_AREA&&!E.closedArea){var t=E.countPicks(),i=E.getPick(1),n=E.getPick(t);t>=3&&E.hasEqualPicks(i,n)&&(n.clear(),delete E.picks[t],E.closedArea=!0)}this.updateResults();var a=E.isComplete();this.updateViewportId(a),s.dispatchEvent({type:D.l,mode:a?"end":"start"}),O.analytics.track("viewer.measure",{action:"Measurement",type:c.MeasurementTypesToAnalytics[E.measurementType],snapping:(null===(e=this.getActivePick())||void 0===e?void 0:e.geomType)!==c.SnapType.RASTER_PIXEL})},this.handleButtonDown=function(e,t){return l.isMobileDevice()||(h=!0,s.dispatchEvent({type:D.l,mode:"start"}),0!==t||e.ctrlKey||e.metaKey||e.shiftKey||e.altKey||(p=!0,g=e.canvasX,b=e.canvasY)),!1},this.handleMouseMove=function(t){return l.isMobileDevice()||(t.canvasX===g&&t.canvasY===b||(p=!1),d=this.isEditingEndpoint,this.isNoPicksSet()||this.areAllPicksSet()||(this.clearPick(u),this._handleMouseEvent(t)),function(){var t;if(E||T.setArc(!0),(null===(t=E)||void 0===t?void 0:t.measurementType)===c.MeasurementTypes.MEASUREMENT_ARC&&e.model.is2d()){var i=E&&E.getPick(1),n=E&&E.hasPick(2)&&E.getPick(2);const e=!i||E.countPicks().length>2||c.isEqualVectors(i.circularArcCenter,n.circularArcCenter,0)&&i.circularArcRadius===n.circularArcRadius;T.setArc(e)}}(),T.indicator.render()),!1},this.restoreMouseListeners=function(){s.toolController.getTool("gestures").controller.enableMouseButtons(!0)},this.handlePressHold=function(e){if(p=!1,l.isTouchDevice())switch(e.type){case"press":return M=!0,(this.areAllPicksSet()||this.isNoPicksSet())&&(this.startNewMeasurement(),v&&this.clearIsolate(),u=1),this._handleMouseEvent(e),T.indicator.render(),!0;case"pressup":return p=!0,this.restoreMouseListeners(),m=!m,this.handleSingleClick(e),M=!1,!0}return!1},this.handleGesture=function(e){if(l.isTouchDevice()){if(p=!1,M)switch(this.clearPick(u),e.type){case"dragstart":case"dragmove":return this._handleMouseEvent(e),T.indicator.render(),!0;case"dragend":return M=!1,p=!0,this.editByDrag||(m=!m,this.handleSingleClick(e)),this.editByDrag=!1,this.restoreMouseListeners(),!0;case"pinchstart":case"pinchmove":this._handleMouseEvent(e),T.indicator.render();break;case"pinchend":return p=!0,m=!m,this.handleSingleClick(e),this.restoreMouseListeners(),!0}if(-1!==e.type.indexOf("pinch"))for(var t in f.measurementsList){if(Object.prototype.hasOwnProperty.call(f.measurementsList,t))f.measurementsList[t].indicator.updateScale()}}return!1},this.handleButtonUp=function(e,t){return h=!1,s.dispatchEvent({type:D.l,mode:"end"}),g=null,b=null,d&&(p=!0,m=!m,this.handleSingleClick(e),d=!1),!1},this.handleSingleClick=function(e,t){return p&&(T.indicator.clearOverlays(),E&&E.indicator.changeEndpointOnEditStyle(u,!1),this._handleMouseEvent(e)?(this.updateResults(),u++):this.isEditingEndpoint?this.undoEditEndpoint():E&&E.measurementType===c.MeasurementTypes.MEASUREMENT_AREA&&this.canCloseArea()?(this.snapToFirstPick(this.getActivePick(),!0),this._handleMouseEvent()):this.clearCurrentMeasurement(),E&&E.isComplete()&&this.allPicksSet(),p=!1,m=!m,this.isEditingEndpoint=!1,T.clearSnapped()),!0},this.handleDoubleClick=function(e){return!0},this.onCameraChange=function(){for(var e in f.measurementsList){if(Object.prototype.hasOwnProperty.call(f.measurementsList,e))f.measurementsList[e].indicator.updateScale()}T.indicator.onCameraChange()},this.handleSingleTap=function(e){return m||(p=!0,T.onMouseDown({x:e.canvasX,y:e.canvasY}),this.handleSingleClick(e)),m=!m,!0},this.handleDoubleTap=function(t){if(E&&E.measurementType===c.MeasurementTypes.MEASUREMENT_AREA&&E.countPicks()>2){var i=E.getPick(1),n=c.getSnapResultPosition(i,s),a=c.project(n,e);t.canvasX=a.x,t.canvasY=a.y,p=!0,T.onMouseDown(a),this.handleSingleClick(t),m=!m}return!0},this.handleResize=function(){for(var e in f.measurementsList)if(Object.prototype.hasOwnProperty.call(f.measurementsList,e)){var t=f.measurementsList[e];t.indicator&&t.indicator.handleResize()}},this.handleKeyDown=function(e,t){switch(t){case Autodesk.Viewing.KeyCode.BACKSPACE:case Autodesk.Viewing.KeyCode.DELETE:return E&&E.measurementType===c.MeasurementTypes.MEASUREMENT_AREA&&!this.areAllPicksSet()&&E.countPicks()>2?this.deleteCurrentPick():this.deleteCurrentMeasurement(),!0}return!1},this.isCalibrationSetOnPage=function(){return i.calibrateWithPage&&null!=r.calibrationFactor}}I.GlobalManagerMixin.call(V.prototype);var z=Autodesk.Viewing,U=Autodesk.Viewing.MeasureCommon;function G(e,t,i){r.call(this,e,t,i),this.calibrationTool=i,this.calibrationLabel=null,this.endpoints=null,this.tmpVector=new THREE.Vector3,this.p1=null,this.p2=null,this.rubberbandDefaultMaterial=new THREE.MeshBasicMaterial({color:15249964,opacity:1,transparent:!1,depthTest:!1,depthWrite:!1,side:THREE.DoubleSide}),this.rubberbandSnappedMaterial=new THREE.MeshBasicMaterial({color:23502,opacity:1,transparent:!1,depthTest:!1,depthWrite:!1,side:THREE.DoubleSide}),this.rubberbandTipMaterial=new THREE.MeshBasicMaterial({color:0,opacity:1,transparent:!1,depthTest:!1,depthWrite:!1,side:THREE.DoubleSide})}G.prototype=Object.create(r.prototype),G.prototype.constructor=G;var Y=G.prototype;function H(e,t){return e.right>=t.left&&e.right<=t.right}function _(e,t){return e.left>=t.left&&e.left<=t.right}function F(e,t){return e.left<=t.left&&e.right>=t.right}function W(e,t,i){e.style.left=parseInt(e.style.left,10)+(i.right-t.left)+"px"}function j(e,t,i){e.style.top=parseInt(e.style.top,10)+(i.bottom-t.top)+"px"}Y.createEndpoint=function(e){this.endpoints[e]={},this.endpoints[e].position=null;const t=this.getDocument();var i=this.endpoints[e].label=t.createElement("div");i.className="calibration-endpoint",this.viewer.container.appendChild(i);var n=t.createElement("div");n.className="calibration-endpoint-text",n.textContent=e.toString(),i.appendChild(n),z.isTouchDevice()&&this.initLabelMobileGestures(i,e,this.calibrationTool),z.isMobileDevice()||(U.safeToggle(i,"enable-hover",!0),this.initMouseEvent(i,e),i.addEventListener("mousewheel",this.viewer.toolController.mousewheel))},Y.init=function(){if(U.createCommonOverlay(this.viewer,this.overlayName),!this.calibrationLabel){const t=this.getDocument();this.calibrationLabel=t.createElement("div"),this.calibrationLabel.className="calibration-label",this.hideLabel(this.calibrationLabel),this.viewer.container.appendChild(this.calibrationLabel),this.calibrationLabel.addEventListener("mousewheel",this.viewer.toolController.mousewheel);var e=t.createElement("div");e.className="calibration-label-text",this.calibrationLabel.appendChild(e)}this.endpoints=[],this.handleButtonUpBinded=this.calibrationTool.handleButtonUp.bind(this.calibrationTool),this.addWindowEventListener("mouseup",this.handleButtonUpBinded),this.onCameraChangeBinded=this.onCameraChange.bind(this),this.viewer.addEventListener(z.CAMERA_CHANGE_EVENT,this.onCameraChangeBinded)},Y.destroy=function(){this.clear(),r.prototype.destroy.call(this),this.calibrationLabel&&(this.calibrationLabel.removeEventListener("mousewheel",this.viewer.toolController.mousewheel),this.viewer.container.removeChild(this.calibrationLabel),this.calibrationLabel=null),this.viewer.impl.clearOverlay(this.overlayName,!0),this.viewer.impl.removeOverlayScene(this.overlayName),this.removeWindowEventListener("mouseup",this.handleButtonUpBinded),this.viewer.removeEventListener(z.CAMERA_CHANGE_EVENT,this.onCameraChangeBinded)},Y.clearRubberband=function(){this.viewer.impl.clearOverlay(this.overlayName,!0)},Y.clear=function(){for(var e in this.clearRubberband(),this.hideLabel(this.calibrationLabel),this.endpoints)Object.prototype.hasOwnProperty.call(this.endpoints,e)&&(this.hideClick(e),this.endpoints[e].position=null)},Y.updateLabelValue=function(e){e&&""!==e?(this.calibrationLabel.childNodes[0].setAttribute("data-i18n",e),this.calibrationLabel.childNodes[0].textContent=z.i18n.translate(e),this.showLabel(this.calibrationLabel),this.calibrationTool.render()):(this.calibrationLabel.childNodes[0].textContent=null,this.hideLabel(this.calibrationLabel))},Y.changeLabelClickableMode=function(e){this.calibrationLabel.childNodes[0].style.pointerEvents=e?"all":"none"},Y.showAddCalibrationLabel=function(){var e=this;this.updateLabelValue("Add Calibration"),this.changeLabelClickableMode(!0),this.calibrationTool.render(),this.calibrationLabel.addEventListener("click",(function t(){e.calibrationLabel.childNodes[0].style.pointerEvents="none",e.calibrationTool.render(),e.updateLabelValue(null),e.calibrationTool.showPanel(),e.calibrationLabel.removeEventListener("click",t)}))},Y.updateLabelsPosition=function(){for(var e=1;e<=Object.keys(this.endpoints).length;e++)if(this.endpoints[e].position){var t=this.endpoints[e].label,i=U.project(this.endpoints[e].position,this.viewer,15);t.style.left=i.x-parseInt(t.clientWidth)/2+"px",t.style.top=i.y-parseInt(t.clientHeight)/2+"px",t.point=this.endpoints[e].position,this.labelsOverlapDetection(this.endpoints[e].label,this.endpoints)}this.hideLabelsOutsideOfView()},Y.labelsOverlapDetection=function(e,t){for(var i=1;i<=Object.keys(t).length;i++){var n=t[i].label;if(e!==n){var a=e.getBoundingClientRect(),s=n.getBoundingClientRect();A=a,(c=s).topA.top&&(H(s,a)?(r=s,l=a,(o=n).style.left=parseInt(o.style.left,10)-(r.right-l.left)+"px"):_(s,a)?W(n,s,a):F(s,a)&&j(n,s,a))}}var o,r,l,c,A},Y.renderCalibrationLabel=function(){if(this.showMeasureResult&&this.calibrationLabel&&this.p1&&this.p2){var e={x:(this.p1.x+this.p2.x)/2,y:(this.p1.y+this.p2.y)/2,z:(this.p1.z+this.p2.z)/2},t=U.project(e,this.viewer);this.labelPosition=new THREE.Vector2(t.x,t.y),this.calibrationLabel.childNodes[0].textContent&&this.showLabel(this.calibrationLabel),this.calibrationLabel.style.top=this.labelPosition.y-Math.floor(this.calibrationLabel.clientHeight/2)+"px",this.calibrationLabel.style.left=this.labelPosition.x-Math.floor(this.calibrationLabel.clientWidth/2)+"px",this.calibrationLabel.point=e,this.viewer.model.is2d()&&this.alignLabelWithLine(this.calibrationLabel,this.p1,this.p2,this.calibrationLabel.clientHeight,this.viewer)}},Y.drawMeasurementLineTip=function(e,t,i,n){const a=[new THREE.Vector3,new THREE.Vector3],s=new THREE.BufferGeometry;var o=this.setScale(e);n=n?-1:1;var r=this.snapper.isSnapped()&&!this.showMeasureResult?this.rubberbandSnappedMaterial:this.rubberbandTipMaterial;a[0].addVectors(e,i.clone().multiplyScalar(5*o)),a[1].subVectors(e,i.clone().multiplyScalar(5*o)),s.setFromPoints(a),this.drawLineAsCylinder(s,r,1.5,this.overlayName),a[0].copy(e),a[1].subVectors(e,t.clone().multiplyScalar(5*o*n)),s.setFromPoints(a),this.drawLineAsCylinder(s,r,1.5,this.overlayName),a[0].addVectors(e,i.clone().multiplyScalar(3*o)),a[1].subVectors(e,i.clone().multiplyScalar(3*o)),s.setFromPoints(a),this.drawLineAsCylinder(s,this.rubberbandDefaultMaterial,2,this.overlayName),a[0].addVectors(e,i.clone().multiplyScalar(3*o)),a[0].addVectors(a[0],t.clone().multiplyScalar(3*o)),a[1].subVectors(e,i.clone().multiplyScalar(3*o)),a[1].subVectors(a[1],t.clone().multiplyScalar(3*o)),s.setFromPoints(a),this.drawLineAsCylinder(s,this.rubberbandDefaultMaterial,2,this.overlayName)},Y.renderDistanceMeasurement=function(e,t){if(this.viewer.impl.clearOverlay(this.overlayName,!0),e&&t){var i=(new THREE.Vector3).subVectors(t,e).normalize(),n=i.clone().cross(this.viewer.navigation.getEyeVector()).normalize(),a=this.setScale(e),s=2*a,o=1*a,r=(Math.abs(e.x-t.x)<=.1||Math.abs(e.y-t.y)<=.1||this.snapper.getSnapResult().isPerpendicular)&&!this.showMeasureResult?this.rubberbandSnappedMaterial:this.rubberbandDefaultMaterial;if(this.showMeasureResult){const i=(new THREE.BufferGeometry).setFromPoints([e,t]);this.drawLineAsCylinder(i,r,3,this.overlayName)}else this.drawDashedLine(e,t,s,o,r,3,this.overlayName);this.drawMeasurementLineTip(e,i,n,!1),this.showMeasureResult&&this.drawMeasurementLineTip(t,i,n,!0),this.p1=e,this.p2=t,this.renderCalibrationLabel()}},Y.onCameraChange=function(){this.measurement.isComplete()&&this.renderDistanceMeasurement(this.p1,this.p2),this.updateLabelsPosition()};var Q=Autodesk.Viewing,Z=Autodesk.Viewing.Extensions,J=Autodesk.Viewing.Private,X=Autodesk.Viewing.UI,q=Autodesk.Viewing.MeasureCommon;const K=X&&X.DockingPanel||class{},$=Z&&Z.ViewerPanelMixin||function(){},ee=Q.getGlobal().document;var te=function(e,t,i,n,a){var s=this;(a=a||{}).addFooter=!1,K.call(this,t.container,i,n,a),this.viewer=t,this.calibrationTool=e,this.parentContainer=t.container,this.container.style.left="0px",this.container.style.top="0px",this.container.style.resize="none",this.container.classList.add("calibration-panel"),this.setGlobalManager&&this.setGlobalManager(t.globalManager),this.addEventListener(this.closer,"click",(function(e){s.cancel()})),a.heightAdjustment||(a.heightAdjustment=40),a.marginTop||(a.marginTop=0),a.left=!1,this.createScrollContainer(a);const o=this.getDocument&&this.getDocument()||ee;this.calibrationMenu=o.createElement("div"),this.scrollContainer.appendChild(this.calibrationMenu),this.table=o.createElement("table"),this.table.className="adsk-lmv-tftable calibration-table",this.tbody=o.createElement("tbody"),this.table.appendChild(this.tbody),this.calibrationMenu.appendChild(this.table),this.row=this.tbody.insertRow(0),this.requestedSizeTextbox=o.createElement("input"),this.requestedSizeTextbox.className="docking-panel-textbox",this.requestedSizeTextbox.type="text",this.requestedSizeTextbox.autofocus="true",this.addEventListener(this.requestedSizeTextbox,"keyup",(function(e){var t=s.requestedSizeTextbox.value;""!==t&&""===t.split(".")[0]&&(s.requestedSizeTextbox.value="0"+t),s.updateLabel()})),this.addEventListener(this.requestedSizeTextbox,"keypress",(function(e){var t=e.key||String.fromCharCode(e.keyCode);if("Backspace"!=t&&"ArrowLeft"!=t&&"ArrowRight"!=t)if(e.keyCode!=Q.KeyCode.ESCAPE){if(e.keyCode==Q.KeyCode.ENTER){var i=s.unitList.selectedIndex,n=s.units[i].units;s.calibrationTool.calibrate(n,s.requestedSizeTextbox.value)}var a=s.requestedSizeTextbox.value,o=s.requestedSizeTextbox.selectionStart;if("."!=(a=[a.slice(0,o),t,a.slice(o)].join(""))){var r=s.units[s.unitList.selectedIndex].simpleInput;(!ie(a)||r&&(!ne(a)||Autodesk.Viewing.Private.calculatePrecision(a)>s.calibrationTool.getMaxPrecision()))&&e.preventDefault()}}else s.cancel()}));var r="Define Size",l=this.row.insertCell(0);this.caption=o.createElement("div"),this.caption.setAttribute("data-i18n",r),this.caption.textContent=Q.i18n.translate(r),l.appendChild(this.caption),(l=this.row.insertCell(1)).appendChild(this.requestedSizeTextbox),this.units=[{name:"Feet and fractional inches",units:"ft-and-fractional-in",matches:["ft-and-fractional-in","fractional-in"],simpleInput:!1},{name:"Feet and decimal inches",units:"ft-and-decimal-in",matches:["ft","decimal-ft","in","decimal-in","ft-and-decimal-in"],simpleInput:!1},{name:"Meters",units:"m",matches:["m","m-and-cm"],simpleInput:!0},{name:"Centimeters",units:"cm",matches:["cm"],simpleInput:!0},{name:"Millimeters",units:"mm",matches:["mm"],simpleInput:!0}];for(var c=[],A=0;A=0};te.prototype=Object.create(K.prototype),$.call(te.prototype),te.prototype.uninitialize=function(){this.viewer=null,K.prototype.uninitialize.call(this)},te.prototype.cancel=function(){this.setVisible(!1),this.calibrationTool.clearSize(),this.calibrationTool.showAddCalibrationLabel()},te.prototype.findUnits=function(){var e,t,i=this.calibrationTool.getCurrentUnits();for(e=0;ethis.viewer.canvas.clientWidth||s<0||s+r>this.viewer.canvas.clientHeight)&&(a=Math.floor((this.viewer.canvas.clientWidth-o)/2),s=Math.floor((this.viewer.canvas.clientHeight-r)/2))}else a=Math.floor((this.viewer.canvas.clientWidth-o)/2),s=Math.floor((this.viewer.canvas.clientHeight-r)/2);this.container.style.left=a+"px",this.container.style.top=s+"px"};var ae=function(e,t,i,n,a){var s=this;(a=a||{}).addFooter=!1,K.call(this,t.container,i,n,a),this.viewer=t,this.measureExt=e,this.parentContainer=t.container,this.container.classList.add("calibration-panel"),this.setGlobalManager&&this.setGlobalManager(t.globalManager),a.heightAdjustment||(a.heightAdjustment=70),a.marginTop||(a.marginTop=0),a.left=!1;const o=this.getDocument&&this.getDocument()||ee;this.createScrollContainer(a),this.dialogBox=o.createElement("div"),this.scrollContainer.appendChild(this.dialogBox);var r=o.createElement("div");r.className="calibration-text";var l="Calibration Message";r.setAttribute("data-i18n",l),r.textContent=Q.i18n.translate(l),this.dialogBox.appendChild(r);var c=o.createElement("div");c.className="calibration-buttons-wrapper",this.dialogBox.appendChild(c);var A=o.createElement("div");A.classList.add("docking-panel-secondary-button"),A.classList.add("calibration-button-left"),A.setAttribute("data-i18n","Cancel"),A.textContent=Q.i18n.translate("Cancel"),A.addEventListener("click",(function(){s.setVisible(!1)}),!1),c.appendChild(A);var h=o.createElement("div");h.classList.add("docking-panel-primary-button"),h.classList.add("calibration-button-right"),h.setAttribute("data-i18n","Calibrate Now"),h.textContent=Q.i18n.translate("Calibrate Now"),h.addEventListener("click",(function(){s.measureExt.enableCalibrationTool(!0),s.setVisible(!1)}),!1),c.appendChild(h)};ae.prototype=Object.create(K.prototype),$.call(ae.prototype),ae.prototype.uninitialize=function(){this.viewer=null,K.prototype.uninitialize.call(this)};const se=Autodesk.Viewing;var oe=function(e,t,i,n){var a=Autodesk.Viewing,s=Autodesk.Viewing.MeasureCommon,o=["calibration"],r=e,l=new s.Measurement(s.MeasurementTypes.MEASUREMENT_DISTANCE),c=t||{};this.setGlobalManager(e.globalManager);var A=i,h=t.maxPrecision||5,d=null!=i.calibrationFactor,u=n,p=!1,m=!1,g=!1,b=null,C=!1,v=null,f=null,E=null,w=null,y=!1,x=[],k=null,T=0,M=!1,B=!1,L=!1,S=null,R=null,N=null,P=Autodesk.Viewing.GuiViewer3D&&e instanceof Autodesk.Viewing.GuiViewer3D;function I(){switch(T){case 0:return null;case 1:case 2:return l.getPick(T);case 3:return l.getPick(l.countPicks())}}function O(){switch(T){case 0:return null;case 1:return l.getPick(l.countPicks());case 2:case 3:return l.getPick(1)}}function V(){T=0}function z(){T=3,l.indicator.changeAllEndpointsEditableStyle(!0)}function U(){return 0===T}function Y(){return 3===T}this.register=function(){P&&!N&&(N=new te(this,r,"calibration-panel","Calibration",c),r.addPanel(N)),this.onCameraChangeBinded=this.onCameraChange.bind(this),this.screenSizeChangedBinded=this.screenSizeChanged.bind(this)},this.deregister=function(){this.deactivate(),N&&(r.removePanel(N),N.uninitialize(),N=null)},this.isActive=function(){return p},this.getNames=function(){return o},this.getName=function(){return o[0]},this.getPriority=function(){return 50},this.getCursor=function(){return m?null:"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAYCAYAAAD+vg1LAAAAAXNSR0IArs4c6QAAAwZJREFUSA2tVEtLW0EUvjGJefoqSY0x0WBSiY+oNWiUINkU6ioLaaAlG1eudNVFoT+grgopiCkEIbUK1o0lusmurRSEWmmKG6MNtNhNosWqyU2CZPpN8cr15nFD7YHDzHnON2fOGYZhmHkw4XEW+wD4xkT4lMvl6CE0+Y2ohh+dz+cZn89HVS/5+n/d/wVMkXq9Xor2v5SBgsmymQwZHx+vOqlKpXKDXWI3eU6Tg+kqSjSh3W4/s9lsvzUajaNcAK3xY7Dyci3nd6WXSCS60dHRvMfjSRcKBfWV4SYbrVarB8p0PB5nY7HYmdVq/aDX67WlckpKKcvpOjs7X09OTvoPDw8z2Wy2Bu+imJqa+npycnJXGHOt3YRGoSyVSvvMZrNkYWFBs7GxkaoBAXFJcDJhcCW5rq5ur62trQ/EOhyOBhDT2Nj4qVKMqA31ve1yub7Rfufo/PycDA4OxpuamhqECaouhVqtfuD3+1tqa2uZQCCQDoVCWTwknVQDDvIKE1clI1ja09Ozg0cjx8fHpL+/P+50OhMU8f7+Punt7f2I5NdqXRXi9fV1z9jYWCuIWV5eziSTyWAqlXq1urqaw6AwOMiCG4lOYtEturu732xubhK0FQHSvfr6+lsog4HWPIPvIBqNErRiqCiwkkKpVFowZd8xZSQYDLImk+kJ52+xWJ4tLS3hU8yTkZGRBD2Ms4mu6Nun4XA4f3p6SoaGhuJ0+rgg/Bsmt9udYFmWzM3NZdDT05ztWsE5JV0R1AqUCfTt0fb2tjESiRRmZmaOUOcI3w9DY5mdnb03PDzMoDQ/MZFRzM20lO/E38vl8vt46UdAq0WNJWixlEwmu8B1bXioOxwjpgXJ0hMTE1og1qysrDghf+HnKtoD7c7u7i5ZXFzMGY3GF7iFuRR3dHTMr62tXWxtbZH29vZ3RYmECozu54ODAzpdP2hphHZOVigUVjChvgMDA+85fdm1q6vrrU6n+4WR9Zd1ujQ0Nzc/NBgMScSExXwZ2j5oL5Wo46UD/ZvxUemo+AdW1zJzUYr16wAAAABJRU5ErkJggg==), auto"},this.activate=function(){if(p=!0,m=!1,this.isEditingEndpoint=!1,this.editByDrag=!1,V(),r.toolController.activateTool(u.getName()),r.toolController.activateTool("magnifyingGlass"),l.indicator||l.attachIndicator(r,this,G),l.indicator.clear(),C&&E&&w){l.setPick(1,E.clone()),l.setPick(2,w.clone()),z();var e=Autodesk.Viewing.Private.UnitParser.parsePositiveNumber(v,f);l.indicator.updateLabelValue(Autodesk.Viewing.Private.formatValueWithUnits(e,f,3,A.precision)),b=l.distanceXYZ,l.indicator.changeLabelClickableMode(!1),y=!0;var t=this.render();l.indicator.changeAllEndpointsEditableStyle(!0),t&&(N&&N.setPanelValue(v),this.showPanel())}else if(P){const e={messageKey:"Select two points",messageDefaultValue:"Select two points to calibrate drawing",position:"top"};Autodesk.Viewing.Private.HudMessage.displayMessage(r.container,e)}r.addEventListener(Autodesk.Viewing.CAMERA_CHANGE_EVENT,this.onCameraChangeBinded),r.addEventListener(Autodesk.Viewing.VIEWER_RESIZE_EVENT,this.screenSizeChangedBinded)},this.deactivate=function(){p&&(r.dispatchEvent({type:D.l,mode:"end"}),p=!1,Autodesk.Viewing.Private.HudMessage.dismiss(),this.hidePanel(),this.updateViewportId(!0),y=!1,l.clearAllPicks(),u&&u.isActive()&&r.toolController.deactivateTool(u.getName()),r.toolController.deactivateTool("magnifyingGlass"),l.indicator&&(l.indicator.clear(),l.indicator.destroy(),l.indicator=null),r.removeEventListener(Autodesk.Viewing.CAMERA_CHANGE_EVENT,this.onCameraChangeBinded),r.removeEventListener(Autodesk.Viewing.VIEWER_RESIZE_EVENT,this.screenSizeChangedBinded))},this.getActivePointIndex=function(){return T},this.setCalibrationFactor=function(e){A.calibrationFactor=e},this.getCalibrationFactor=function(){return A.calibrationFactor},this.updateLabelValue=function(e){l.indicator.updateLabelValue(e)},this.isCalibrationValid=function(e,t){var i=Autodesk.Viewing.Private.UnitParser.parsePositiveNumber(t,e);return!isNaN(i)},this.calibrate=function(e,t){var i=null,n=Autodesk.Viewing.Private.UnitParser.parsePositiveNumber(t,e);if(!isNaN(n)){var a=Autodesk.Viewing.Private.convertUnits(r.model.getUnitString(),e,1,b);if(0!==a&&!isNaN(a)){i=n/a,A.calibrationFactor=i,A.units=e;var o=r.model.is2d()?3:1,c=Autodesk.Viewing.Private.calculatePrecision(t);A.precision=Math.max(A.precision?A.precision:o,c),v=t,f=e,d=!0,C=!0,E=l.getPick(1).clone(),w=l.getPick(2).clone()}}i&&(r.getExtension("Autodesk.Measure").enableCalibrationTool(!1),r.dispatchEvent({type:s.Events.FINISHED_CALIBRATION,units:e,scaleFactor:i,size:t}))},this.calibrateByScale=function(e,t){A.calibrationFactor=t,A.units!==e&&(A.units=e,f=e),d=!0},this.getCurrentUnits=function(){return A.units},this.hidePanel=function(){N?N.setVisible(!1):r.dispatchEvent({type:s.Events.CLOSE_CALIBRATION_PANEL_EVENT})},this.showPanel=function(){Autodesk.Viewing.Private.HudMessage.dismiss();var e=this;const t=this.getWindow();N?(t.setTimeout((function(){N.requestedSizeTextbox.focus()}),0),N.setVisible(!0),N.updatePanelPosition(l.indicator.labelPosition,l.indicator.p1,l.indicator.p2,l.indicator.calibrationLabel.clientHeight),N.updateUnits(),e.addWindowEventListener("keyup",(function t(i){"Escape"==(i.key||String.fromCharCode(i.keyCode))&&e.isActive()&&(e.hidePanel(),e.clearSize(),e.showAddCalibrationLabel(),e.removeWindowEventListener("keyup",t))}))):r.dispatchEvent({type:s.Events.OPEN_CALIBRATION_PANEL_EVENT,data:{size:v,units:f}})},this.updateCalibrationPanel=function(){N&&N.updateUnits()},this.showAddCalibrationLabel=function(){l.indicator.showAddCalibrationLabel()},this.isCalibrated=function(){return d},this.clearSize=function(){l.indicator.updateLabelValue(null),N?N.requestedSizeTextbox.value="":r.dispatchEvent({type:s.Events.CLEAR_CALIBRATION_SIZE_EVENT})},this.getMaxPrecision=function(){return h},this.clearMeasurement=function(){V(),this.clearPick(1),this.clearPick(2),l.indicator.clear(),this.updateViewportId(!0),this.hidePanel(),y=!1},this.clearPick=function(e){l.hasPick(e)&&(l.clearPick(e),l.indicator.hideClick(e))},this.repickEndpoint=function(e){this.clearPick(e),this.editEndpoint(null,e)},this.getSnapper=function(){return u},this._handleMouseEvent=function(e){var t=!1;if(u.isSnapped())(Y()||U())&&(this.clearMeasurement(),T=1),u.copyResults(I()),t=!0;else{if(e&&r.model.is2d()){var i=r.container.getBoundingClientRect(),n=e.canvasX||e.clientX-i.left,a=e.canvasY||e.clientY-i.top;n&&a&&(k=s.inverseProject({x:n,y:a},r))}if(B&&l&&!this.isEditingEndpoint&&T===l.getMaxNumberOfPicks()+1)return!0;var o=I();o&&o.clear()}if(this.correctPickPosition(),B&&this._doConsumeSingleClick(t),!U()){var c=this.render();l.hasPick(2)&&(t&=c)}return B&&(l.isComplete()&&t?(b=l.distanceXYZ,this.clearSize(),this.showPanel(),y=!0,r.dispatchEvent({type:D.l,mode:"end"})):(r.dispatchEvent({type:D.l,mode:"start"}),this.hidePanel(),l.indicator.updateLabelValue(null),y=!1)),t},this.updateViewportId=function(t){if(r.model&&r.model.is2d())if(t||U())e.impl.updateViewportId(0),u.setViewportId(null);else if(!g){var i=O().viewportIndex2d||I().viewportIndex2d;e.impl.updateViewportId(i),u&&u.setViewportId(i)}},this._doConsumeSingleClick=function(e){this.updateViewportId(l.isComplete()),l.indicator.clear()},this.handleButtonDown=function(e,t){return a.isMobileDevice()||(m=!0,0!==t||e.ctrlKey||e.metaKey||e.shiftKey||e.altKey||(B=!0,S=e.canvasX,R=e.canvasY)),!1},this.handleMouseMove=function(e){return a.isMobileDevice()||(e.canvasX===S&&e.canvasY===R||(B=!1),M=this.isEditingEndpoint,U()||Y()||(this.clearPick(T),this._handleMouseEvent(e)),u.indicator.render()),!1},this.restoreMouseListeners=function(){r.toolController.getTool("gestures").controller.enableMouseButtons(!0)},this.handlePressHold=function(e){if(B=!1,a.isTouchDevice())switch(e.type){case"press":return g=!0,Y()?this.clearMeasurement():this.clearPick(T),this._handleMouseEvent(e),u.indicator.render(),!0;case"pressup":return B=!0,this.restoreMouseListeners(),L=!L,this.handleSingleClick(e),g=!1,!0}return!1},this.correctPickPosition=function(){var t=I();if(t&&!t.getGeometry()&&k&&(t.geomType=s.SnapType.SNAP_VERTEX,t.geomVertex=k,t.intersectPoint=k),function(){switch(T){case 0:return!1;case 1:return l.hasPick(l.countPicks());case 2:case 3:return l.hasPick(1)}}()){var i=O();s.correctPerpendicularPicks(i,t,e,u)}},this.render=function(){var e=l.computeResult(l.picks,r,u);return l.indicator.render(l.picks,B||y),e},this.editEndpoint=function(e,t){if(T===t)return l.indicator.changeEndpointOnEditStyle(t,!1),void this.undoEditEndpoint();for(var i in T=t,this.isEditingEndpoint=!0,l.indicator.changeEndpointOnEditStyle(t,!0),l.indicator.changeAllEndpointsEditableStyle(!1),l.picks)Object.prototype.hasOwnProperty.call(l.picks,i)&&(x[i]=l.getPick(i).clone());this.updateViewportId(),r.dispatchEvent({type:D.l,mode:"start"}),this.hidePanel(),l.indicator.updateLabelValue(null),y=!1,a.isMobileDevice()||this._handleMouseEvent(e)},this.undoEditEndpoint=function(){for(var e in l.indicator.clear(),l.picks)Object.prototype.hasOwnProperty.call(l.picks,e)&&l.setPick(e,x[e].clone());this.updateViewportId(!0),this.isEditingEndpoint=!1,y=!0,z(),this.render()&&this.showPanel()},this.handleGesture=function(e){if(a.isTouchDevice()&&(B=!1,g))switch(this.clearPick(T),e.type){case"dragstart":case"dragmove":return this._handleMouseEvent(e),u.indicator.render(),!0;case"dragend":return g=!1,B=!0,this.editByDrag||(L=!L,this.handleSingleClick(e)),this.editByDrag=!1,this.restoreMouseListeners(),!0;case"pinchend":return B=!0,L=!L,this.handleSingleClick(e),this.restoreMouseListeners(),!0}return!1},this.handleButtonUp=function(e){return m=!1,S=null,R=null,M&&(B=!0,L=!L,this.handleSingleClick(e),M=!1),!1},this.handleSingleClick=function(e){return B&&(u.indicator.clearOverlays(),l.indicator.changeEndpointOnEditStyle(T,!1),this._handleMouseEvent(e)?(l.indicator.showEndpoints(),l.indicator.updateLabelsPosition(),T++):this.isEditingEndpoint?this.undoEditEndpoint():this.clearMeasurement(),l.isComplete()&&z(),B=!1,L=!L,this.isEditingEndpoint=!1,u.clearSnapped()),!0},this.handleDoubleClick=function(){return!0},this.handleSingleTap=function(e){return L||(B=!0,u.onMouseDown({x:e.canvasX,y:e.canvasY}),this.handleSingleClick(e)),L=!L,!0},this.handleDoubleTap=function(){return!0},this.handleResize=function(){l.indicator&&l.indicator.handleResize()},this.onCameraChange=function(){u.indicator&&u.indicator.onCameraChange()},this.screenSizeChanged=function(e){this.onCameraChange()}};se.GlobalManagerMixin.call(oe.prototype);const re=Autodesk.Viewing;var le=function(e){var t=e,i=!1,n=["magnifyingGlass"],a=!1,s=null,o=null,r=null,l=null,c=null,A=!1,h=Autodesk.Viewing;this.setGlobalManager(e.globalManager),this.register=function(){this.updateMagnifyingGlassBinded=this.updateMagnifyingGlass.bind(this)},this.isActive=function(){return i},this.activate=function(){i=!0},this.updateMagnifyingGlass=function(){const e=this.getWindow(),i=this.getDocument();if(A)s&&s.classList.remove("visible"),A=!1;else{var n=e.devicePixelRatio,a=120,h=a*n,d=n*(l-30),u=n*(c-30);s||((s=i.createElement("canvas")).className="magnifying-glass",s.width=h,s.height=h,s.style.width=a+"px",s.style.height=a+"px",s.getContext("2d").translate(0,h),s.getContext("2d").scale(1,-1),t.container.appendChild(s),o=s.getContext("2d").createImageData(Math.ceil(h/2),Math.ceil(h/2)),r=new Uint8Array(o.data.buffer));var p=s.getContext("2d"),m=t.impl.glrenderer().getContext();m.readPixels(d,t.canvas.height-u-o.height,o.width,o.height,m.RGBA,m.UNSIGNED_BYTE,r),p.putImageData(o,0,0),p.drawImage(s,0,0,o.width,o.height,0,0,h,h),this.setGlassPosition(s,l,c,a,15),s.classList.toggle("visible",!0)}},this.deactivate=function(){this.clearMagnifyingGlass(),i=!1},this.getNames=function(){return n},this.getName=function(){return n[0]},this.getPriority=function(){return 70},this.setGlassPosition=function(e,t,i,n,a){e.style.left=t-n/2+"px",e.style.top=i-n-a>0?i-n-a+"px":i+a+"px"},this.requestUpdate=function(){t.hasEventListener(Autodesk.Viewing.RENDER_PRESENTED_EVENT,this.updateMagnifyingGlassBinded)||t.addEventListener(Autodesk.Viewing.RENDER_PRESENTED_EVENT,this.updateMagnifyingGlassBinded,{once:!0})},this.drawMagnifyingGlass=function(e,i){A=!1,l=e,c=i,t.impl.invalidate(!1,!1,!0),this.requestUpdate()},this.clearMagnifyingGlass=function(){A=!0,this.requestUpdate()},this.handlePressHold=function(e){if(h.isTouchDevice())switch(e.type){case"press":a=!0,this.drawMagnifyingGlass(e.canvasX,e.canvasY);break;case"pressup":this.clearMagnifyingGlass(),a=!1}return!1},this.handleGesture=function(e){if(a&&h.isTouchDevice())switch(e.type){case"dragstart":case"dragmove":case"pinchstart":case"pinchmove":this.drawMagnifyingGlass(e.canvasX,e.canvasY);break;case"dragend":this.clearMagnifyingGlass(),a=!1;break;case"pinchend":this.clearMagnifyingGlass()}return!1},this.handleMouseMove=function(e){return!1},this.handleWheelInput=function(e){return!1},this.handleButtonUp=function(e,t){return!1}};re.GlobalManagerMixin.call(le.prototype);var ce=Autodesk.Viewing,Ae=Autodesk.Viewing.UI,he=Autodesk.Viewing.Private,de=Autodesk.Viewing.MeasureCommon;function ue(e){this.measureExtension=e,this.measureTool=this.measureExtension.measureTool,this.viewer=this.measureExtension.viewer,this.setGlobalManager(this.viewer.globalManager),this.visible=!1,this.buttonsList=[]}var pe=ue.prototype;ce.GlobalManagerMixin.call(ue.prototype),pe.onUnitChange=function(e,t){t?this.measureTool.setUnits(e):(this.updateSettingsPanel(),he.logger.track({category:"pref_changed",name:"measure/units",value:e}))},pe.onPrecisionChange=function(e,t){t?this.measureTool.setPrecision(e):(this.updateSettingsPanel(),he.logger.track({category:"pref_changed",name:"measure/precision",value:e}))},pe.init=function(){var e=this;const t=this.getDocument();this.onUnitChangeBound=this.onUnitChange.bind(this),this.viewer.addEventListener(de.Events.DISPLAY_UNITS_CHANGED,this.onUnitChangeBound),this.onPrecisionChangeBound=this.onPrecisionChange.bind(this),this.viewer.addEventListener(de.Events.PRECISION_CHANGED,this.onPrecisionChangeBound);var i=this.viewer.getToolbar(),n=i.getControl(Autodesk.Viewing.TOOLBAR.NAVTOOLSID),a={};a.index=i.indexOf(n)+1,this.measureToolbar=new Ae.ControlGroup(Autodesk.Viewing.TOOLBAR.MEASURETOOLSID),this.measureToolbar.setGlobalManager(this.globalManager),i.addControl(this.measureToolbar,a),this.measureSimpleDistanceBtn=new Ae.Button("toolbar-measureTool-simple-distance"),this.measureSimpleDistanceBtn.setGlobalManager(this.globalManager),this.measureSimpleDistanceBtn.setToolTip("Distance"),this.measureSimpleDistanceBtn.setIcon("adsk-icon-measure-distance-new"),this.measureSimpleDistanceBtn.onClick=function(){e.measureSimpleDistanceBtn.getState()!==Ae.Button.State.ACTIVE?e.measureExtension.activate("distance"):e.measureTool.deselectAllMeasurements()},this.measureToolbar.addControl(this.measureSimpleDistanceBtn),this.buttonsList[de.MeasurementTypes.MEASUREMENT_DISTANCE]=this.measureSimpleDistanceBtn,this.measureAngleBtn=new Ae.Button("toolbar-measureTool-angle"),this.measureAngleBtn.setGlobalManager(this.globalManager),this.measureAngleBtn.setToolTip("Angle"),this.measureAngleBtn.setIcon("adsk-icon-measure-angle-new"),this.measureAngleBtn.onClick=function(){e.measureAngleBtn.getState()!==Ae.Button.State.ACTIVE?e.measureExtension.activate("angle"):e.measureTool.deselectAllMeasurements()},this.measureToolbar.addControl(this.measureAngleBtn),this.buttonsList[de.MeasurementTypes.MEASUREMENT_ANGLE]=this.measureAngleBtn,this.viewer.model&&this.viewer.model.is2d()&&(this.measureAreaBtn=new Ae.Button("toolbar-measureTool-area"),this.measureAreaBtn.setGlobalManager(this.globalManager),this.measureAreaBtn.setToolTip("Area"),this.measureAreaBtn.setIcon("adsk-icon-measure-area-new"),this.measureAreaBtn.onClick=function(){e.measureAreaBtn.getState()!==Ae.Button.State.ACTIVE?e.measureExtension.activate("area"):e.measureTool.deselectAllMeasurements()},this.measureToolbar.addControl(this.measureAreaBtn),this.buttonsList[de.MeasurementTypes.MEASUREMENT_AREA]=this.measureAreaBtn),this.viewer.model&&this.viewer.model.is2d()&&(this.measureArcBtn=new Ae.Button("toolbar-measureTool-arc"),this.measureArcBtn.setGlobalManager(this.globalManager),this.measureArcBtn.setToolTip("Arc"),this.measureArcBtn.setIcon("adsk-icon-measure-arc-new"),this.measureArcBtn.onClick=function(){e.measureArcBtn.getState()!==Ae.Button.State.ACTIVE?e.measureExtension.activate("arc"):e.measureTool.deselectAllMeasurements()},this.measureToolbar.addControl(this.measureArcBtn),this.buttonsList[de.MeasurementTypes.MEASUREMENT_ARC]=this.measureArcBtn),this.calibrationToolBtn=new Ae.Button("toolbar-calibrationTool"),this.calibrationToolBtn.setGlobalManager(this.globalManager),this.calibrationToolBtn.setToolTip("Calibrate"),this.calibrationToolBtn.setIcon("adsk-icon-measure-calibration"),this.calibrationToolBtn.onClick=function(t){e.calibrationToolBtn.getState()!==Ae.Button.State.ACTIVE?e.measureExtension.activate("calibrate"):e.measureExtension.enableCalibrationTool(!1)},this.measureToolbar.addControl(this.calibrationToolBtn),this.buttonsList[de.MeasurementTypes.CALIBRATION]=this.calibrationToolBtn;var s=t.createElement("div");s.className="measure-toolbar-seperator",this.measureToolbar.container.appendChild(s),this.deleteBtn=new Ae.Button("toolbar-delete"),this.deleteBtn.setGlobalManager(this.globalManager),this.deleteBtn.setToolTip("Delete measurement"),this.deleteBtn.setIcon("adsk-icon-measure-trash"),this.deleteBtn.onClick=function(){e.measureExtension.deleteCurrentMeasurement()},this.measureToolbar.addControl(this.deleteBtn),this.settingsBtn=new Ae.Button("toolbar-settings"),this.settingsBtn.setGlobalManager(this.globalManager),this.settingsBtn.setToolTip("Measure settings"),this.settingsBtn.setIcon("adsk-icon-measure-settings"),this.settingsControlPanel=t.createElement("div"),this.settingsControlPanel.classList.add("docking-panel"),this.settingsControlPanel.classList.add("docking-panel-container-solid-color-b"),this.settingsControlPanel.classList.add("measure-settings-popup"),this.settingsControlPanel.classList.add("hide"),this.settingsBtn.onClick=function(e){this.settingsControlPanel.classList.contains("hide")?(this.settingsControlPanel.classList.remove("hide"),this.setButtonActive(this.settingsBtn)):(this.settingsControlPanel.classList.add("hide"),this.setButtonInactive(this.settingsBtn))}.bind(this),this.measureToolbar.container.appendChild(this.settingsControlPanel),this.settingsControlPanel.root=this.settingsBtn,this.measureToolbar.addControl(this.settingsBtn),this.table=t.createElement("table"),this.table.classList.add("adsk-lmv-tftable"),this.table.classList.add("calibration-table"),this.tbody=t.createElement("tbody"),this.table.appendChild(this.tbody),this.settingsControlPanel.appendChild(this.table),this.units=[{name:"Unknown",units:"",matches:[""]},{name:"Decimal feet",units:"decimal-ft",matches:["ft","decimal-ft"]},{name:"Feet and fractional inches",units:"ft-and-fractional-in",matches:["ft-and-fractional-in"]},{name:"Feet and decimal inches",units:"ft-and-decimal-in",matches:["ft-and-decimal-in"]},{name:"Decimal inches",units:"decimal-in",matches:["in","decimal-in"]},{name:"Fractional inches",units:"fractional-in",matches:["fractional-in"]},{name:"Meters",units:"m",matches:["m"]},{name:"Centimeters",units:"cm",matches:["cm"]},{name:"Millimeters",units:"mm",matches:["mm"]},{name:"Meters and centimeters",units:"m-and-cm",matches:["m-and-cm"]},{name:"Points",units:"pt",matches:["pt"]}];var o=this.findUnits(),r=[];ce.isSafari()&&this.viewer.model&&this.viewer.model.getDisplayUnit()&&this.units.shift();for(var l=0;l{this.setActive(e),e||this.deactivate()};return this.measureTool=new V(t,i,this.sharedMeasureConfig,this.snapper),t.toolController.registerTool(this.measureTool,n),this.calibrationTool=new oe(t,this.options,this.sharedMeasureConfig,this.snapper),t.toolController.registerTool(this.calibrationTool,n),this.magnifyingGlass=new le(t),t.toolController.registerTool(this.magnifyingGlass),this.calibration={},this.onFinishedCalibration=function(t){e.measureToolbar&&e.measureToolbar.updateSettingsPanel(),e.activateInitiator&&e.activateInitiator(),e.calibration.units=t.units,e.calibration.scaleFactor=t.scaleFactor,e.calibration.size=t.size,e.calibration.precision=e.sharedMeasureConfig.precision},t.addEventListener("finished-calibration",this.onFinishedCalibration),this.onMeasurementChanged=function(t){var i=t.data.type;e.changeMeasurementType(i)},t.addEventListener(Ie.Events.MEASUREMENT_CHANGED_EVENT,this.onMeasurementChanged),t.model?this._onModelLoaded({model:t.model}):t.addEventListener(De.MODEL_ROOT_LOADED_EVENT,this._onModelLoaded,{once:!0}),this.onModelRemoved=function(){e.measurementToolbarButton&&(e.viewer.model||(e.measurementToolbarButton.setState(Autodesk.Viewing.UI.Button.State.DISABLED),e.exitMeasurementMode()))},this.onModelAdded=function(){e.measurementToolbarButton&&(1===e.viewer.getVisibleModels().length&&e.measurementToolbarButton&&e.measurementToolbarButton.setState(Autodesk.Viewing.UI.Button.State.INACTIVE))},t.addEventListener(De.MODEL_ADDED_EVENT,this.onModelAdded),t.addEventListener(De.MODEL_REMOVED_EVENT,this.onModelRemoved),this.viewer.prefs.addListeners(Ne.Prefs.DISPLAY_UNITS,this._onDisplayUnitsPrefChanged,this._onDisplayUnitsPrefChanged),this.viewer.prefs.addListeners(Ne.Prefs.DISPLAY_UNITS_PRECISION,this._onPrecisionPrefChanged,this._onPrecisionPrefChanged),this.hasNotEntered=!0,!0},Ve.prototype._onDisplayUnitsPrefChanged=function(e){var t;""!==e&&(this.setUnits(e),null===(t=this.measureToolbar)||void 0===t||t.updateSettingsPanel(),this.calibrationTool.updateCalibrationPanel())},Ve.prototype._onPrecisionPrefChanged=function(e){var t;"number"==typeof e&&(this.setPrecision(e),null===(t=this.measureToolbar)||void 0===t||t.updateSettingsPanel())},Ve.prototype._onModelLoaded=function(e){var t=e.model;const i=!!t.isPdf(!0)&&!this.viewer.prefs.get(Ne.Prefs2D.FORCE_PDF_CALIBRATION),n=!!t.isLeaflet()&&!this.viewer.prefs.get(Ne.Prefs2D.FORCE_LEAFLET_CALIBRATION);let a,s=3;var o;((t.isSmartPdf()||this.viewer.prefs.get(Ne.Prefs2D.USE_PDF_VIEWPORT_INFO))&&t.getData().viewports&&t.getData().viewports.length>1&&(a=Ne.fixUnitString(t.getData().viewports[1].units),Number.isInteger(t.getData().viewports[1].precision)&&t.getData().viewports[1].precision>=0&&(s=t.getData().viewports[1].precision),this.sharedMeasureConfig.useViewportInfo=!0),this.sharedMeasureConfig.units=this.options.calibrationUnits||this.viewer.prefs.get(Ne.Prefs.DISPLAY_UNITS)||a||t.getDisplayUnit(),this.sharedMeasureConfig.units)||(null===(o=this.measureToolbar)||void 0===o||o.disableUnitOption());!i&&!n||t.getMetadata("page_dimensions","model_units",null)||a||(this.sharedMeasureConfig.units="pt");const r=this.viewer.prefs.get(Ne.Prefs.DISPLAY_UNITS_PRECISION);this.sharedMeasureConfig.precision="number"==typeof r?r:t.is2d()?s:1,this.options.calibrationUnits&&!isNaN(this.options.calibrationFactor)&&this.calibrationTool.calibrateByScale(this.options.calibrationUnits,this.options.calibrationFactor)},Ve.prototype.unload=function(){var e=this.viewer;return this.destroyUI(),e.removeEventListener(V.EXPLODE_CHANGE_EVENT,V.onExplodedChange),e.removeEventListener("finished-calibration",this.onFinishedCalibration),e.removeEventListener(Ie.Events.MEASUREMENT_CHANGED_EVENT,this.onMeasurementChanged),e.removeEventListener(De.MODEL_ADDED_EVENT,this.onModelAdded),e.removeEventListener(De.MODEL_REMOVED_EVENT,this.onModelRemoved),e.removeEventListener(De.MODEL_ROOT_LOADED_EVENT,this._onModelLoaded),e.toolController.deregisterTool(this.snapper),this.snapper=null,e.toolController.deregisterTool(this.measureTool),this.measureTool=null,e.toolController.deregisterTool(this.calibrationTool),this.calibrationTool=null,e.toolController.deregisterTool(this.magnifyingGlass),this.magnifyingGlass=null,this.unloaded=!0,e.prefs.removeListeners(Ne.Prefs.DISPLAY_UNITS,this._onDisplayUnitsPrefChanged,this._onDisplayUnitsPrefChanged),e.prefs.removeListeners(Ne.Prefs.DISPLAY_UNITS_PRECISION,this._onPrecisionPrefChanged,this._onPrecisionPrefChanged),!0},Ve.prototype.setActive=function(e){return this.enableMeasureTool(e)},Ve.prototype.toggle=function(){return this.isActive()?this.enableMeasureTool(!1):this.enableMeasureTool(!0),this.isActive()},Ve.prototype.getMeasurement=function(e,t){var i=null;return this.measureTool.isActive()&&(i=this.measureTool.getMeasurement(e,t)),i},Ve.prototype.getMeasurementList=function(e,t){var i=[];return this.measureTool.isActive()&&(i=this.measureTool.getMeasurementList(e,t)),i},Ve.prototype.setMeasurements=function(e){this.measureTool.isActive()&&this.measureTool.setMeasurements(e)},Ve.prototype.getUnitOptions=function(){return[{name:"Unknown",type:""},{name:"Decimal feet",type:"decimal-ft"},{name:"Feet and fractional inches",type:"ft"},{name:"Feet and decimal inches",type:"ft-and-decimal-in"},{name:"Decimal inches",type:"decimal-in"},{name:"Fractional inches",type:"fractional-in"},{name:"Meters",type:"m"},{name:"Centimeters",type:"cm"},{name:"Millimeters",type:"mm"},{name:"Meters and centimeters",type:"m-and-cm"},{name:"Points",type:"pt"}]},Ve.prototype.getPrecisionOptions=function(e){return e?["1","1/2","1/4","1/8","1/16","1/32","1/64"]:["0","0.1","0.01","0.001","0.0001","0.00001"]},Ve.prototype.getDefaultUnit=function(){return this.viewer.model.getDisplayUnit()},Ve.prototype.openCalibrationRequiredDialog=function(e){this.hasUI?(this.CalibrationRequiredDialog||(this.CalibrationRequiredDialog=new ae(this,this.viewer,"calibration-required","Calibration Required",this.options)),this.CalibrationRequiredDialog.setVisible(!0)):this.viewer.dispatchEvent({type:Ie.Events.CALIBRATION_REQUIRED_EVENT}),"measure"===e?this.activateInitiator=function(){this.enableMeasureTool(!0,Oe),this.activateInitiator=null}:"dimension"===e&&(this.activateInitiator=function(){this.viewer.dispatchEvent({type:Ie.Events.FINISHED_CALIBRATION_FOR_DIMENSION_EVENT}),this.activateInitiator=null})},Ve.prototype.getCalibration=function(){return this.calibration},Ve.prototype.activate=function(e){if(this.activeStatus&&this.mode===e)return!0;var t;switch(this.enterMeasurementMode(),e){default:e="distance";case"distance":t=this.enableMeasureTool(!0,Ie.MeasurementTypes.MEASUREMENT_DISTANCE);break;case"angle":t=this.enableMeasureTool(!0,Ie.MeasurementTypes.MEASUREMENT_ANGLE);break;case"area":this.viewer.model.is2d()?t=this.enableMeasureTool(!0,Ie.MeasurementTypes.MEASUREMENT_AREA):console.warn("Area mode is applicable on 2D models only");break;case"arc":!this.viewer.model.is2d()||this.viewer.model.isPdf()?console.warn("Arc mode is applicable on 2D models only"):t=this.enableMeasureTool(!0,Ie.MeasurementTypes.MEASUREMENT_ARC);break;case"calibrate":t=this.enableCalibrationTool(!0)}return this.mode=t?e:"",this.activeStatus=!0,!0},Ve.prototype.deactivate=function(){return this.activeStatus&&(this.exitMeasurementMode(),this.enableMeasureTool(!1),this.activeStatus=!1),!0},Ve.prototype.setForcePDFCalibrate=function(e){this.viewer.prefs.set(Ne.Prefs2D.FORCE_PDF_CALIBRATION,e)},Ve.prototype.setForceLeafletCalibrate=function(e){this.viewer.prefs.set(Ne.Prefs2D.FORCE_LEAFLET_CALIBRATION,e)},Ve.prototype.setRestoreSessionMeasurements=function(e){this.viewer.prefs.set(Ne.Prefs.RESTORE_SESSION_MEASUREMENTS,e)},Ve.prototype.enableMeasureTool=function(e,t){var i;if(t===Ie.MeasurementTypes.MEASUREMENT_AREA&&this.viewer.model&&!this.viewer.model.is2d())return!1;if(t===Ie.MeasurementTypes.MEASUREMENT_ARC&&this.viewer.model&&!this.viewer.model.is2d())return!1;const n=t===Ie.MeasurementTypes.MEASUREMENT_ARC&&(null===(i=this.viewer.model)||void 0===i?void 0:i.is2d());this.snapper.setSnapToArc(n);var a=this.viewer.toolController,s=1===this.selectedTool;if(!this.viewer.model||!e&&s)return this.measureTool.isActive()&&(a.deactivateTool("measure"),this.measureToolbar&&this.measureToolbar.deactivateAllButtons(),this.selectedTool=0),!0;const o=this.viewer.impl.is2d,r=o&&this.viewer.model.isPdf(!0)&&this.viewer.prefs.get(Ne.Prefs2D.FORCE_PDF_CALIBRATION),l=o&&this.viewer.model.isLeaflet()&&this.viewer.prefs.get(Ne.Prefs2D.FORCE_LEAFLET_CALIBRATION);return this.forceCalibrate|=l||r,t||(t=Oe),e&&!s?(this.checkAndFetchTopology(a.getTool("measure")),!this.forceCalibrate||this.forceCalibrate&&this.calibrationTool.isCalibrated()||t===Ie.MeasurementTypes.MEASUREMENT_ANGLE?(this.calibrationTool.isActive()&&a.deactivateTool("calibration"),this.measureToolbar&&this.measureToolbar.updateSettingsPanel(),a.activateTool("measure"),this.selectedTool=1,this.changeMeasurementType(t),!0):(this.viewer.addEventListener(Re.OPEN_TOOL_AFTER_CALIBRAION,function(){this.enableMeasureTool(!0)}.bind(this),{once:!0}),this.openCalibrationRequiredDialog("measure"),!1)):!(!e||!s)&&(!this.forceCalibrate||this.forceCalibrate&&this.calibrationTool.isCalibrated()||t===Ie.MeasurementTypes.MEASUREMENT_ANGLE?(this.changeMeasurementType(t),!0):(this.openCalibrationRequiredDialog("measure"),!1))},Ve.prototype.changeMeasurementType=function(e){switch(this.measureTool.changeMeasurementType(e),this.measureToolbar&&(this.measureToolbar.deactivateAllButtons(),this.measureToolbar.activateButtonByType(e)),e){case Ie.MeasurementTypes.MEASUREMENT_DISTANCE:this.mode="distance";break;case Ie.MeasurementTypes.MEASUREMENT_ANGLE:this.mode="angle";break;case Ie.MeasurementTypes.MEASUREMENT_AREA:this.mode="area";break;case Ie.MeasurementTypes.MEASUREMENT_ARC:this.mode="arc";break;default:this.mode=""}},Ve.prototype.setIsolateMeasure=function(e){this.measureTool.setIsolateMeasure(e),e?this.measureTool.isolateMeasurement():this.measureTool.clearIsolate()},Ve.prototype.enableCalibrationTool=function(e){var t=this.viewer.toolController,i=2==this.selectedTool;return e&&!i?(this.measureTool.isActive()&&t.deactivateTool("measure"),t.activateTool("calibration"),this.viewer.dispatchEvent({type:Ie.Events.UNITS_CALIBRATION_STARTS_EVENT}),this.measureToolbar&&(this.measureToolbar.deactivateAllButtons(),this.measureToolbar.activateButtonByType(Ie.MeasurementTypes.CALIBRATION)),this.selectedTool=2,!0):!(e||!i)&&(this.calibrationTool.isActive()&&(this.mode="",t.deactivateTool("calibration"),this.measureToolbar&&this.measureToolbar.deactivateAllButtons()),this.selectedTool=0,!0)},Ve.prototype.enterMeasurementMode=function(){if(!this._measurementMode&&(this._measurementMode=!0,this.viewer.dispatchEvent({type:Ie.Events.MEASUREMENT_MODE_ENTER}),this.viewer.getToolbar)){for(var e=this.viewer.getToolbar(),t=e.container,i=t.children.length,n=0;n{var e={6345:e=>{"use strict";var t,r={DEBUG:!1,LIB_VERSION:"2.49.0"};if("undefined"==typeof window){var i={hostname:""};t={navigator:{userAgent:""},document:{location:i,referrer:""},screen:{width:0,height:0},location:i}}else t=window;var o,n,s,a,c,p,u,_,h,l,d,f=Array.prototype,g=Function.prototype,m=Object.prototype,y=f.slice,v=m.toString,b=m.hasOwnProperty,k=t.console,x=t.navigator,w=t.document,S=t.opera,q=t.screen,E=x.userAgent,O=g.bind,I=f.forEach,A=f.indexOf,D=f.map,T=Array.isArray,P={},B={trim:function(e){return e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}},U={log:function(){if(r.DEBUG&&!B.isUndefined(k)&&k)try{k.log.apply(k,arguments)}catch(e){B.each(arguments,(function(e){k.log(e)}))}},warn:function(){if(r.DEBUG&&!B.isUndefined(k)&&k){var e=["Mixpanel warning:"].concat(B.toArray(arguments));try{k.warn.apply(k,e)}catch(t){B.each(e,(function(e){k.warn(e)}))}}},error:function(){if(r.DEBUG&&!B.isUndefined(k)&&k){var e=["Mixpanel error:"].concat(B.toArray(arguments));try{k.error.apply(k,e)}catch(t){B.each(e,(function(e){k.error(e)}))}}},critical:function(){if(!B.isUndefined(k)&&k){var e=["Mixpanel error:"].concat(B.toArray(arguments));try{k.error.apply(k,e)}catch(t){B.each(e,(function(e){k.error(e)}))}}}},$=function(e,t){return function(){return arguments[0]="["+t+"] "+arguments[0],e.apply(U,arguments)}},j=function(e){return{log:$(U.log,e),error:$(U.error,e),critical:$(U.critical,e)}};B.bind=function(e,t){var r,i;if(O&&e.bind===O)return O.apply(e,y.call(arguments,1));if(!B.isFunction(e))throw new TypeError;return r=y.call(arguments,2),i=function(){if(!(this instanceof i))return e.apply(t,r.concat(y.call(arguments)));var o={};o.prototype=e.prototype;var n=new o;o.prototype=null;var s=e.apply(n,r.concat(y.call(arguments)));return Object(s)===s?s:n},i},B.each=function(e,t,r){if(null!=e)if(I&&e.forEach===I)e.forEach(t,r);else if(e.length===+e.length){for(var i=0,o=e.length;i0&&(t[r]=e)})),t},B.truncate=function(e,t){var r;return"string"==typeof e?r=e.slice(0,t):B.isArray(e)?(r=[],B.each(e,(function(e){r.push(B.truncate(e,t))}))):B.isObject(e)?(r={},B.each(e,(function(e,i){r[i]=B.truncate(e,t)}))):r=e,r},B.JSONEncode=function(e){var t=function(e){var t=/[\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,r={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};return t.lastIndex=0,t.test(e)?'"'+e.replace(t,(function(e){var t=r[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)}))+'"':'"'+e+'"'},r=function(e,i){var o="",n=0,s="",a="",c=0,p=o,u=[],_=i[e];switch(_&&"object"==typeof _&&"function"==typeof _.toJSON&&(_=_.toJSON(e)),typeof _){case"string":return t(_);case"number":return isFinite(_)?String(_):"null";case"boolean":case"null":return String(_);case"object":if(!_)return"null";if(o+=" ",u=[],"[object Array]"===v.apply(_)){for(c=_.length,n=0;n="0"&&n<="9";)t+=n,u();if("."===n)for(t+=".";u()&&n>="0"&&n<="9";)t+=n;if("e"===n||"E"===n)for(t+=n,u(),"-"!==n&&"+"!==n||(t+=n,u());n>="0"&&n<="9";)t+=n,u();if(e=+t,isFinite(e))return e;p("Bad number")},h=function(){var e,t,r,i="";if('"'===n)for(;u();){if('"'===n)return u(),i;if("\\"===n)if(u(),"u"===n){for(r=0,t=0;t<4&&(e=parseInt(u(),16),isFinite(e));t+=1)r=16*r+e;i+=String.fromCharCode(r)}else{if("string"!=typeof c[n])break;i+=c[n]}else i+=n}p("Bad string")},l=function(){for(;n&&n<=" ";)u()},a=function(){switch(l(),n){case"{":return function(){var e,t={};if("{"===n){if(u("{"),l(),"}"===n)return u("}"),t;for(;n;){if(e=h(),l(),u(":"),Object.hasOwnProperty.call(t,e)&&p('Duplicate key "'+e+'"'),t[e]=a(),l(),"}"===n)return u("}"),t;u(","),l()}}p("Bad object")}();case"[":return function(){var e=[];if("["===n){if(u("["),l(),"]"===n)return u("]"),e;for(;n;){if(e.push(a()),l(),"]"===n)return u("]"),e;u(","),l()}}p("Bad array")}();case'"':return h();case"-":return _();default:return n>="0"&&n<="9"?_():function(){switch(n){case"t":return u("t"),u("r"),u("u"),u("e"),!0;case"f":return u("f"),u("a"),u("l"),u("s"),u("e"),!1;case"n":return u("n"),u("u"),u("l"),u("l"),null}p('Unexpected "'+n+'"')}()}},function(e){var t;return s=e,o=0,n=" ",t=a(),l(),n&&p("Syntax error"),t}),B.base64Encode=function(e){var t,r,i,o,n,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",a=0,c=0,p="",u=[];if(!e)return e;e=B.utf8Encode(e);do{t=(n=e.charCodeAt(a++)<<16|e.charCodeAt(a++)<<8|e.charCodeAt(a++))>>18&63,r=n>>12&63,i=n>>6&63,o=63&n,u[c++]=s.charAt(t)+s.charAt(r)+s.charAt(i)+s.charAt(o)}while(a127&&s<2048?String.fromCharCode(s>>6|192,63&s|128):String.fromCharCode(s>>12|224,s>>6&63|128,63&s|128),null!==a&&(r>t&&(n+=e.substring(t,r)),n+=a,t=r=o+1)}return r>t&&(n+=e.substring(t,e.length)),n},B.UUID=(d=function(){var e,r=1*new Date;if(t.performance&&t.performance.now)e=t.performance.now();else for(e=0;r==1*new Date;)e++;return r.toString(16)+Math.floor(e).toString(16)},function(){var e=(q.height*q.width).toString(16);return d()+"-"+Math.random().toString(16).replace(".","")+"-"+function(){var e,t,r=E,i=[],o=0;function n(e,t){var r,o=0;for(r=0;r=4&&(o=n(o,i),i=[]);return i.length>0&&(o=n(o,i)),o.toString(16)}()+"-"+e+"-"+d()});var M=["ahrefsbot","ahrefssiteaudit","baiduspider","bingbot","bingpreview","chrome-lighthouse","facebookexternal","petalbot","pinterest","screaming frog","yahoo! slurp","yandexbot","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleweblight","mediapartners-google","storebot-google"];B.isBlockedUA=function(e){var t;for(e=e.toLowerCase(),t=0;t=0}function i(t){if(!w.getElementsByTagName)return[];var i,o,n,s,a,c,p,u,_,h,l=t.split(" "),d=[w];for(c=0;c-1){n=(o=i.split("#"))[0];var f=o[1],g=w.getElementById(f);if(!g||n&&g.nodeName.toLowerCase()!=n)return[];d=[g]}else if(i.indexOf(".")>-1){n=(o=i.split("."))[0];var m=o[1];for(n||(n="*"),s=[],a=0,p=0;p-1};break;default:v=function(e){return e.getAttribute(b)}}for(d=[],h=0,p=0;p=3?t[2]:""},currentUrl:function(){return t.location.href},properties:function(e){return"object"!=typeof e&&(e={}),B.extend(B.strip_empty_properties({$os:B.info.os(),$browser:B.info.browser(E,x.vendor,S),$referrer:w.referrer,$referring_domain:B.info.referringDomain(w.referrer),$device:B.info.device(E)}),{$current_url:B.info.currentUrl(),$browser_version:B.info.browserVersion(E,x.vendor,S),$screen_height:q.height,$screen_width:q.width,mp_lib:"web",$lib_version:r.LIB_VERSION,$insert_id:L(),time:B.timestamp()/1e3},B.strip_empty_properties(e))},people_properties:function(){return B.extend(B.strip_empty_properties({$os:B.info.os(),$browser:B.info.browser(E,x.vendor,S)}),{$browser_version:B.info.browserVersion(E,x.vendor,S)})},mpPageViewProperties:function(){return B.strip_empty_properties({current_page_title:w.title,current_domain:t.location.hostname,current_url_path:t.location.pathname,current_url_protocol:t.location.protocol,current_url_search:t.location.search})}};var L=function(e){var t=Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10);return e?t.substring(0,e):t},J=/[a-z0-9][a-z0-9-]*\.[a-z]+$/i,Q=/[a-z0-9][a-z0-9-]+\.[a-z.]{2,6}$/i,V=function(e){var t=Q,r=e.split("."),i=r[r.length-1];(i.length>4||"com"===i||"org"===i)&&(t=J);var o=e.match(t);return o?o[0]:""},H=null,K=null;"undefined"!=typeof JSON&&(H=JSON.stringify,K=JSON.parse),H=H||B.JSONEncode,K=K||B.JSONDecode,B.toArray=B.toArray,B.isObject=B.isObject,B.JSONEncode=B.JSONEncode,B.JSONDecode=B.JSONDecode,B.isBlockedUA=B.isBlockedUA,B.isEmptyObject=B.isEmptyObject,B.info=B.info,B.info.device=B.info.device,B.info.browser=B.info.browser,B.info.browserVersion=B.info.browserVersion,B.info.properties=B.info.properties;var G=function(){};G.prototype.create_properties=function(){},G.prototype.event_handler=function(){},G.prototype.after_track_handler=function(){},G.prototype.init=function(e){return this.mp=e,this},G.prototype.track=function(e,t,r,i){var o=this,n=B.dom_query(e);if(0!==n.length)return B.each(n,(function(e){B.register_event(e,this.override_event,(function(e){var n={},s=o.create_properties(r,this),a=o.mp.get_config("track_links_timeout");o.event_handler(e,this,n),window.setTimeout(o.track_callback(i,s,n,!0),a),o.mp.track(t,s,o.track_callback(i,s,n))}))}),this),!0;U.error("The DOM query ("+e+") returned 0 elements")},G.prototype.track_callback=function(e,t,r,i){i=i||!1;var o=this;return function(){r.callback_fired||(r.callback_fired=!0,e&&!1===e(i,t)||o.after_track_handler(t,r,i))}},G.prototype.create_properties=function(e,t){return"function"==typeof e?e(t):B.extend({},e)};var W=function(){this.override_event="click"};B.inherit(W,G),W.prototype.create_properties=function(e,t){var r=W.superclass.create_properties.apply(this,arguments);return t.href&&(r.url=t.href),r},W.prototype.event_handler=function(e,t,r){r.new_tab=2===e.which||e.metaKey||e.ctrlKey||"_blank"===t.target,r.href=t.href,r.new_tab||e.preventDefault()},W.prototype.after_track_handler=function(e,t){t.new_tab||setTimeout((function(){window.location=t.href}),0)};var X=function(){this.override_event="submit"};B.inherit(X,G),X.prototype.event_handler=function(e,t,r){r.element=t,e.preventDefault()},X.prototype.after_track_handler=function(e,t){setTimeout((function(){t.element.submit()}),0)};var Y=j("lock"),Z=function(e,t){t=t||{},this.storageKey=e,this.storage=t.storage||window.localStorage,this.pollIntervalMS=t.pollIntervalMS||100,this.timeoutMS=t.timeoutMS||2e3};Z.prototype.withLock=function(e,t,r){r||"function"==typeof t||(r=t,t=null);var i=r||(new Date).getTime()+"|"+Math.random(),o=(new Date).getTime(),n=this.storageKey,s=this.pollIntervalMS,a=this.timeoutMS,c=this.storage,p=n+":X",u=n+":Y",_=n+":Z",h=function(e){t&&t(e)},l=function(e){if((new Date).getTime()-o>a)return Y.error("Timeout waiting for mutex on "+n+"; clearing lock. ["+i+"]"),c.removeItem(_),c.removeItem(u),void g();setTimeout((function(){try{e()}catch(e){h(e)}}),s*(Math.random()+.1))},d=function(e,t){e()?t():l((function(){d(e,t)}))},f=function(){var e=c.getItem(u);if(e&&e!==i)return!1;if(c.setItem(u,i),c.getItem(u)===i)return!0;if(!N(c,!0))throw new Error("localStorage support dropped while acquiring lock");return!1},g=function(){c.setItem(p,i),d(f,(function(){c.getItem(p)!==i?l((function(){c.getItem(u)===i?d((function(){return!c.getItem(_)}),m):g()})):m()}))},m=function(){c.setItem(_,"1");try{e()}finally{c.removeItem(_),c.getItem(u)===i&&c.removeItem(u),c.getItem(p)===i&&c.removeItem(p)}};try{if(!N(c,!0))throw new Error("localStorage support check failed");g()}catch(e){h(e)}};var ee=j("batch"),te=function(e,t){t=t||{},this.storageKey=e,this.storage=t.storage||window.localStorage,this.reportError=t.errorReporter||B.bind(ee.error,ee),this.lock=new Z(e,{storage:this.storage}),this.pid=t.pid||null,this.memQueue=[]};te.prototype.enqueue=function(e,t,r){var i={id:L(),flushAfter:(new Date).getTime()+2*t,payload:e};this.lock.withLock(B.bind((function(){var t;try{var o=this.readFromStorage();o.push(i),(t=this.saveToStorage(o))&&this.memQueue.push(i)}catch(r){this.reportError("Error enqueueing item",e),t=!1}r&&r(t)}),this),B.bind((function(e){this.reportError("Error acquiring storage lock",e),r&&r(!1)}),this),this.pid)},te.prototype.fillBatch=function(e){var t=this.memQueue.slice(0,e);if(t.lengthn.flushAfter&&!i[n.id]&&(n.orphaned=!0,t.push(n),t.length>=e))break}}}return t};var re=function(e,t){var r=[];return B.each(e,(function(e){e.id&&!t[e.id]&&r.push(e)})),r};te.prototype.removeItemsByID=function(e,t){var r={};B.each(e,(function(e){r[e]=!0})),this.memQueue=re(this.memQueue,r);var i=B.bind((function(){var t;try{var i=this.readFromStorage();if(i=re(i,r),t=this.saveToStorage(i)){i=this.readFromStorage();for(var o=0;o5&&(this.reportError("[dupe] item ID sent too many times, not sending",{item:e,batchSize:n.length,timesSent:this.itemIdsSentSuccessfully[o]}),i=!1):this.reportError("[dupe] found item with no ID",{item:e}),i&&s.push(t)}a[e.id]=t}),this),s.length<1)return void this.resetFlush();this.requestInProgress=!0;var c=B.bind((function(r){this.requestInProgress=!1;try{var s=!1;if(e.unloading)this.queue.updatePayloads(a);else if(B.isObject(r)&&"timeout"===r.error&&(new Date).getTime()-i>=t)this.reportError("Network timeout; retrying"),this.flush();else if(B.isObject(r)&&r.xhr_req&&(r.xhr_req.status>=500||429===r.xhr_req.status||"timeout"===r.error)){var c=2*this.flushInterval,p=r.xhr_req.responseHeaders;if(p){var u=p["Retry-After"];u&&(c=1e3*parseInt(u,10)||c)}c=Math.min(6e5,c),this.reportError("Error; retry in "+c+" ms"),this.scheduleFlush(c)}else if(B.isObject(r)&&r.xhr_req&&413===r.xhr_req.status)if(n.length>1){var _=Math.max(1,Math.floor(o/2));this.batchSize=Math.min(this.batchSize,_,n.length-1),this.reportError("413 response; reducing batch size to "+this.batchSize),this.resetFlush()}else this.reportError("Single-event request too large; dropping",n),this.resetBatchSize(),s=!0;else s=!0;s&&(this.queue.removeItemsByID(B.map(n,(function(e){return e.id})),B.bind((function(e){e?(this.consecutiveRemovalFailures=0,this.flush()):(this.reportError("Failed to remove items from queue"),++this.consecutiveRemovalFailures>5?(this.reportError("Too many queue failures; disabling batching system."),this.stopAllBatching()):this.resetFlush())}),this)),B.each(n,B.bind((function(e){var t=e.id;t?(this.itemIdsSentSuccessfully[t]=this.itemIdsSentSuccessfully[t]||0,this.itemIdsSentSuccessfully[t]++,this.itemIdsSentSuccessfully[t]>5&&this.reportError("[dupe] item ID sent too many times",{item:e,batchSize:n.length,timesSent:this.itemIdsSentSuccessfully[t]})):this.reportError("[dupe] found item with no ID while removing",{item:e})}),this)))}catch(e){this.reportError("Error handling API response",e),this.resetFlush()}}),this),p={method:"POST",verbose:!0,ignore_json_errors:!0,timeout_ms:t};e.unloading&&(p.transport="sendBeacon"),oe.log("MIXPANEL REQUEST:",s),this.sendRequest(s,p,c)}catch(e){this.reportError("Error flushing request queue",e),this.resetFlush()}},ne.prototype.reportError=function(e,t){if(oe.error.apply(oe.error,arguments),this.errorReporter)try{t instanceof Error||(t=new Error(e)),this.errorReporter(e,t)}catch(t){oe.error(t)}};var se="__mp_opt_in_out_";function ae(e,t){ye(!0,e,t)}function ce(e,t){ye(!1,e,t)}function pe(e,t){return"1"===me(e,t)}function ue(e,r){if(function(e){if(e&&e.ignoreDnt)return!1;var r=e&&e.window||t,i=r.navigator||{},o=!1;return B.each([i.doNotTrack,i.msDoNotTrack,r.doNotTrack],(function(e){B.includes([!0,1,"1","yes"],e)&&(o=!0)})),o}(r))return U.warn('This browser has "Do Not Track" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the "Do Not Track" browser setting, initialize the Mixpanel instance with the config "ignore_dnt: true"'),!0;var i="0"===me(e,r);return i&&U.warn("You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data."),i}function _e(e){return ve(e,(function(e){return this.get_config(e)}))}function he(e){return ve(e,(function(e){return this._get_config(e)}))}function le(e){return ve(e,(function(e){return this._get_config(e)}))}function de(e,t){fe(t=t||{}).remove(ge(e,t),!!t.crossSubdomainCookie,t.cookieDomain)}function fe(e){return"localStorage"===(e=e||{}).persistenceType?B.localStorage:B.cookie}function ge(e,t){return((t=t||{}).persistencePrefix||se)+e}function me(e,t){return fe(t).get(ge(e,t))}function ye(e,t,r){B.isString(t)&&t.length?(fe(r=r||{}).set(ge(t,r),e?1:0,B.isNumber(r.cookieExpiration)?r.cookieExpiration:null,!!r.crossSubdomainCookie,!!r.secureCookie,!!r.crossSiteCookie,r.cookieDomain),r.track&&e&&r.track(r.trackEventName||"$opt_in",r.trackProperties,{send_immediately:!0})):U.error("gdpr."+(e?"optIn":"optOut")+" called with an invalid token")}function ve(e,t){return function(){var r=!1;try{var i=t.call(this,"token"),o=t.call(this,"ignore_dnt"),n=t.call(this,"opt_out_tracking_persistence_type"),s=t.call(this,"opt_out_tracking_cookie_prefix"),a=t.call(this,"window");i&&(r=ue(i,{ignoreDnt:o,persistenceType:n,persistencePrefix:s,window:a}))}catch(e){U.error("Unexpected error when checking tracking opt-out status: "+e)}if(!r)return e.apply(this,arguments);var c=arguments[arguments.length-1];"function"==typeof c&&c(0)}}var be="$set",ke="$set_once",xe="$unset",we="$add",Se="$append",qe="$union",Ee="$remove",Oe={set_action:function(e,t){var r={},i={};return B.isObject(e)?B.each(e,(function(e,t){this._is_reserved_property(t)||(i[t]=e)}),this):i[e]=t,r[be]=i,r},unset_action:function(e){var t={},r=[];return B.isArray(e)||(e=[e]),B.each(e,(function(e){this._is_reserved_property(e)||r.push(e)}),this),t[xe]=r,t},set_once_action:function(e,t){var r={},i={};return B.isObject(e)?B.each(e,(function(e,t){this._is_reserved_property(t)||(i[t]=e)}),this):i[e]=t,r[ke]=i,r},union_action:function(e,t){var r={},i={};return B.isObject(e)?B.each(e,(function(e,t){this._is_reserved_property(t)||(i[t]=B.isArray(e)?e:[e])}),this):i[e]=B.isArray(t)?t:[t],r[qe]=i,r},append_action:function(e,t){var r={},i={};return B.isObject(e)?B.each(e,(function(e,t){this._is_reserved_property(t)||(i[t]=e)}),this):i[e]=t,r[Se]=i,r},remove_action:function(e,t){var r={},i={};return B.isObject(e)?B.each(e,(function(e,t){this._is_reserved_property(t)||(i[t]=e)}),this):i[e]=t,r[Ee]=i,r},delete_action:function(){var e={$delete:""};return e}},Ie=function(){};B.extend(Ie.prototype,Oe),Ie.prototype._init=function(e,t,r){this._mixpanel=e,this._group_key=t,this._group_id=r},Ie.prototype.set=le((function(e,t,r){var i=this.set_action(e,t);return B.isObject(e)&&(r=t),this._send_request(i,r)})),Ie.prototype.set_once=le((function(e,t,r){var i=this.set_once_action(e,t);return B.isObject(e)&&(r=t),this._send_request(i,r)})),Ie.prototype.unset=le((function(e,t){var r=this.unset_action(e);return this._send_request(r,t)})),Ie.prototype.union=le((function(e,t,r){B.isObject(e)&&(r=t);var i=this.union_action(e,t);return this._send_request(i,r)})),Ie.prototype.delete=le((function(e){var t=this.delete_action();return this._send_request(t,e)})),Ie.prototype.remove=le((function(e,t,r){var i=this.remove_action(e,t);return this._send_request(i,r)})),Ie.prototype._send_request=function(e,t){e.$group_key=this._group_key,e.$group_id=this._group_id,e.$token=this._get_config("token");var r=B.encodeDates(e);return this._mixpanel._track_or_batch({type:"groups",data:r,endpoint:this._get_config("api_host")+"/"+this._get_config("api_routes").groups,batcher:this._mixpanel.request_batchers.groups},t)},Ie.prototype._is_reserved_property=function(e){return"$group_key"===e||"$group_id"===e},Ie.prototype._get_config=function(e){return this._mixpanel.get_config(e)},Ie.prototype.toString=function(){return this._mixpanel.toString()+".group."+this._group_key+"."+this._group_id},Ie.prototype.remove=Ie.prototype.remove,Ie.prototype.set=Ie.prototype.set,Ie.prototype.set_once=Ie.prototype.set_once,Ie.prototype.union=Ie.prototype.union,Ie.prototype.unset=Ie.prototype.unset,Ie.prototype.toString=Ie.prototype.toString;var Ae=function(){};B.extend(Ae.prototype,Oe),Ae.prototype._init=function(e){this._mixpanel=e},Ae.prototype.set=he((function(e,t,r){var i=this.set_action(e,t);return B.isObject(e)&&(r=t),this._get_config("save_referrer")&&this._mixpanel.persistence.update_referrer_info(document.referrer),i[be]=B.extend({},B.info.people_properties(),i[be]),this._send_request(i,r)})),Ae.prototype.set_once=he((function(e,t,r){var i=this.set_once_action(e,t);return B.isObject(e)&&(r=t),this._send_request(i,r)})),Ae.prototype.unset=he((function(e,t){var r=this.unset_action(e);return this._send_request(r,t)})),Ae.prototype.increment=he((function(e,t,r){var i={},o={};return B.isObject(e)?(B.each(e,(function(e,t){if(!this._is_reserved_property(t)){if(isNaN(parseFloat(e)))return void U.error("Invalid increment value passed to mixpanel.people.increment - must be a number");o[t]=e}}),this),r=t):(B.isUndefined(t)&&(t=1),o[e]=t),i[we]=o,this._send_request(i,r)})),Ae.prototype.append=he((function(e,t,r){B.isObject(e)&&(r=t);var i=this.append_action(e,t);return this._send_request(i,r)})),Ae.prototype.remove=he((function(e,t,r){B.isObject(e)&&(r=t);var i=this.remove_action(e,t);return this._send_request(i,r)})),Ae.prototype.union=he((function(e,t,r){B.isObject(e)&&(r=t);var i=this.union_action(e,t);return this._send_request(i,r)})),Ae.prototype.track_charge=he((function(e,t,r){if(B.isNumber(e)||(e=parseFloat(e),!isNaN(e)))return this.append("$transactions",B.extend({$amount:e},t),r);U.error("Invalid value passed to mixpanel.people.track_charge - must be a number")})),Ae.prototype.clear_charges=function(e){return this.set("$transactions",[],e)},Ae.prototype.delete_user=function(){if(this._identify_called()){var e={$delete:this._mixpanel.get_distinct_id()};return this._send_request(e)}U.error("mixpanel.people.delete_user() requires you to call identify() first")},Ae.prototype.toString=function(){return this._mixpanel.toString()+".people"},Ae.prototype._send_request=function(e,t){e.$token=this._get_config("token"),e.$distinct_id=this._mixpanel.get_distinct_id();var r=this._mixpanel.get_property("$device_id"),i=this._mixpanel.get_property("$user_id"),o=this._mixpanel.get_property("$had_persisted_distinct_id");r&&(e.$device_id=r),i&&(e.$user_id=i),o&&(e.$had_persisted_distinct_id=o);var n=B.encodeDates(e);return this._identify_called()?this._mixpanel._track_or_batch({type:"people",data:n,endpoint:this._get_config("api_host")+"/"+this._get_config("api_routes").engage,batcher:this._mixpanel.request_batchers.people},t):(this._enqueue(e),B.isUndefined(t)||(this._get_config("verbose")?t({status:-1,error:null}):t(-1)),B.truncate(n,255))},Ae.prototype._get_config=function(e){return this._mixpanel.get_config(e)},Ae.prototype._identify_called=function(){return!0===this._mixpanel._flags.identify_called},Ae.prototype._enqueue=function(e){be in e?this._mixpanel.persistence._add_to_people_queue(be,e):ke in e?this._mixpanel.persistence._add_to_people_queue(ke,e):xe in e?this._mixpanel.persistence._add_to_people_queue(xe,e):we in e?this._mixpanel.persistence._add_to_people_queue(we,e):Se in e?this._mixpanel.persistence._add_to_people_queue(Se,e):Ee in e?this._mixpanel.persistence._add_to_people_queue(Ee,e):qe in e?this._mixpanel.persistence._add_to_people_queue(qe,e):U.error("Invalid call to _enqueue():",e)},Ae.prototype._flush_one_queue=function(e,t,r,i){var o=this,n=B.extend({},this._mixpanel.persistence.load_queue(e)),s=n;B.isUndefined(n)||!B.isObject(n)||B.isEmptyObject(n)||(o._mixpanel.persistence._pop_from_people_queue(e,n),o._mixpanel.persistence.save(),i&&(s=i(n)),t.call(o,s,(function(t,i){0===t&&o._mixpanel.persistence._add_to_people_queue(e,n),B.isUndefined(r)||r(t,i)})))},Ae.prototype._flush=function(e,t,r,i,o,n,s){var a=this;this._flush_one_queue(be,this.set,e),this._flush_one_queue(ke,this.set_once,i),this._flush_one_queue(xe,this.unset,n,(function(e){return B.keys(e)})),this._flush_one_queue(we,this.increment,t),this._flush_one_queue(qe,this.union,o);var c=this._mixpanel.persistence.load_queue(Se);if(!B.isUndefined(c)&&B.isArray(c)&&c.length)for(var p,u=function(e,t){0===e&&a._mixpanel.persistence._add_to_people_queue(Se,p),B.isUndefined(r)||r(e,t)},_=c.length-1;_>=0;_--)c=this._mixpanel.persistence.load_queue(Se),p=c.pop(),a._mixpanel.persistence.save(),B.isEmptyObject(p)||a.append(p,u);var h=this._mixpanel.persistence.load_queue(Ee);if(!B.isUndefined(h)&&B.isArray(h)&&h.length)for(var l,d=function(e,t){0===e&&a._mixpanel.persistence._add_to_people_queue(Ee,l),B.isUndefined(s)||s(e,t)},f=h.length-1;f>=0;f--)h=this._mixpanel.persistence.load_queue(Ee),l=h.pop(),a._mixpanel.persistence.save(),B.isEmptyObject(l)||a.remove(l,d)},Ae.prototype._is_reserved_property=function(e){return"$distinct_id"===e||"$token"===e||"$device_id"===e||"$user_id"===e||"$had_persisted_distinct_id"===e},Ae.prototype.set=Ae.prototype.set,Ae.prototype.set_once=Ae.prototype.set_once,Ae.prototype.unset=Ae.prototype.unset,Ae.prototype.increment=Ae.prototype.increment,Ae.prototype.append=Ae.prototype.append,Ae.prototype.remove=Ae.prototype.remove,Ae.prototype.union=Ae.prototype.union,Ae.prototype.track_charge=Ae.prototype.track_charge,Ae.prototype.clear_charges=Ae.prototype.clear_charges,Ae.prototype.delete_user=Ae.prototype.delete_user,Ae.prototype.toString=Ae.prototype.toString;var De,Te,Pe="__mps",Be="__mpso",Ue="__mpus",$e="__mpa",je="__mpap",Me="__mpr",Ce="__mpu",Ne="$people_distinct_id",Fe="__alias",Re="__timers",ze=[Pe,Be,Ue,$e,je,Me,Ce,Ne,Fe,Re],Le=function(e){this.props={},this.campaign_params_saved=!1,e.persistence_name?this.name="mp_"+e.persistence_name:this.name="mp_"+e.token+"_mixpanel";var t=e.persistence;"cookie"!==t&&"localStorage"!==t&&(U.critical("Unknown persistence type "+t+"; falling back to cookie"),t=e.persistence="cookie"),"localStorage"===t&&B.localStorage.is_supported()?this.storage=B.localStorage:this.storage=B.cookie,this.load(),this.update_config(e),this.upgrade(e),this.save()};Le.prototype.properties=function(){var e={};return this.load(),B.each(this.props,(function(t,r){B.include(ze,r)||(e[r]=t)})),e},Le.prototype.load=function(){if(!this.disabled){var e=this.storage.parse(this.name);e&&(this.props=B.extend({},e))}},Le.prototype.upgrade=function(e){var t,r,i=e.upgrade;i&&(t="mp_super_properties","string"==typeof i&&(t=i),r=this.storage.parse(t),this.storage.remove(t),this.storage.remove(t,!0),r&&(this.props=B.extend(this.props,r.all,r.events))),e.cookie_name||"mixpanel"===e.name||(t="mp_"+e.token+"_"+e.name,(r=this.storage.parse(t))&&(this.storage.remove(t),this.storage.remove(t,!0),this.register_once(r))),this.storage===B.localStorage&&(r=B.cookie.parse(this.name),B.cookie.remove(this.name),B.cookie.remove(this.name,!0),r&&this.register_once(r))},Le.prototype.save=function(){this.disabled||this.storage.set(this.name,B.JSONEncode(this.props),this.expire_days,this.cross_subdomain,this.secure,this.cross_site,this.cookie_domain)},Le.prototype.load_prop=function(e){return this.load(),this.props[e]},Le.prototype.remove=function(){this.storage.remove(this.name,!1,this.cookie_domain),this.storage.remove(this.name,!0,this.cookie_domain)},Le.prototype.clear=function(){this.remove(),this.props={}},Le.prototype.register_once=function(e,t,r){return!!B.isObject(e)&&(void 0===t&&(t="None"),this.expire_days=void 0===r?this.default_expiry:r,this.load(),B.each(e,(function(e,r){this.props.hasOwnProperty(r)&&this.props[r]!==t||(this.props[r]=e)}),this),this.save(),!0)},Le.prototype.register=function(e,t){return!!B.isObject(e)&&(this.expire_days=void 0===t?this.default_expiry:t,this.load(),B.extend(this.props,e),this.save(),!0)},Le.prototype.unregister=function(e){this.load(),e in this.props&&(delete this.props[e],this.save())},Le.prototype.update_search_keyword=function(e){this.register(B.info.searchInfo(e))},Le.prototype.update_referrer_info=function(e){this.register_once({$initial_referrer:e||"$direct",$initial_referring_domain:B.info.referringDomain(e)||"$direct"},"")},Le.prototype.get_referrer_info=function(){return B.strip_empty_properties({$initial_referrer:this.props.$initial_referrer,$initial_referring_domain:this.props.$initial_referring_domain})},Le.prototype.update_config=function(e){this.default_expiry=this.expire_days=e.cookie_expiration,this.set_disabled(e.disable_persistence),this.set_cookie_domain(e.cookie_domain),this.set_cross_site(e.cross_site_cookie),this.set_cross_subdomain(e.cross_subdomain_cookie),this.set_secure(e.secure_cookie)},Le.prototype.set_disabled=function(e){this.disabled=e,this.disabled?this.remove():this.save()},Le.prototype.set_cookie_domain=function(e){e!==this.cookie_domain&&(this.remove(),this.cookie_domain=e,this.save())},Le.prototype.set_cross_site=function(e){e!==this.cross_site&&(this.cross_site=e,this.remove(),this.save())},Le.prototype.set_cross_subdomain=function(e){e!==this.cross_subdomain&&(this.cross_subdomain=e,this.remove(),this.save())},Le.prototype.get_cross_subdomain=function(){return this.cross_subdomain},Le.prototype.set_secure=function(e){e!==this.secure&&(this.secure=!!e,this.remove(),this.save())},Le.prototype._add_to_people_queue=function(e,t){var r=this._get_queue_key(e),i=t[e],o=this._get_or_create_queue(be),n=this._get_or_create_queue(ke),s=this._get_or_create_queue(xe),a=this._get_or_create_queue(we),c=this._get_or_create_queue(qe),p=this._get_or_create_queue(Ee,[]),u=this._get_or_create_queue(Se,[]);r===Pe?(B.extend(o,i),this._pop_from_people_queue(we,i),this._pop_from_people_queue(qe,i),this._pop_from_people_queue(xe,i)):r===Be?(B.each(i,(function(e,t){t in n||(n[t]=e)})),this._pop_from_people_queue(xe,i)):r===Ue?B.each(i,(function(e){B.each([o,n,a,c],(function(t){e in t&&delete t[e]})),B.each(u,(function(t){e in t&&delete t[e]})),s[e]=!0})):r===$e?(B.each(i,(function(e,t){t in o?o[t]+=e:(t in a||(a[t]=0),a[t]+=e)}),this),this._pop_from_people_queue(xe,i)):r===Ce?(B.each(i,(function(e,t){B.isArray(e)&&(t in c||(c[t]=[]),c[t]=c[t].concat(e))})),this._pop_from_people_queue(xe,i)):r===Me?(p.push(i),this._pop_from_people_queue(Se,i)):r===je&&(u.push(i),this._pop_from_people_queue(xe,i)),U.log("MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):"),U.log(t),this.save()},Le.prototype._pop_from_people_queue=function(e,t){var r=this.props[this._get_queue_key(e)];B.isUndefined(r)||B.each(t,(function(t,i){e===Se||e===Ee?B.each(r,(function(e){e[i]===t&&delete e[i]})):delete r[i]}),this)},Le.prototype.load_queue=function(e){return this.load_prop(this._get_queue_key(e))},Le.prototype._get_queue_key=function(e){return e===be?Pe:e===ke?Be:e===xe?Ue:e===we?$e:e===Se?je:e===Ee?Me:e===qe?Ce:void U.error("Invalid queue:",e)},Le.prototype._get_or_create_queue=function(e,t){var r=this._get_queue_key(e);return t=B.isUndefined(t)?{}:t,this.props[r]||(this.props[r]=t)},Le.prototype.set_event_timer=function(e,t){var r=this.load_prop(Re)||{};r[e]=t,this.props[Re]=r,this.save()},Le.prototype.remove_event_timer=function(e){var t=(this.load_prop(Re)||{})[e];return B.isUndefined(t)||(delete this.props[Re][e],this.save()),t};var Je=function(e){return e},Qe=function(){},Ve="mixpanel",He="base64",Ke="$device:",Ge=t.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest,We=!Ge&&-1===E.indexOf("MSIE")&&-1===E.indexOf("Mozilla"),Xe=null;x.sendBeacon&&(Xe=function(){return x.sendBeacon.apply(x,arguments)});var Ye={track:"track/",engage:"engage/",groups:"groups/"},Ze={api_host:"https://api-js.mixpanel.com",api_routes:Ye,api_method:"POST",api_transport:"XHR",api_payload_format:He,app_host:"https://mixpanel.com",cdn:"https://cdn.mxpnl.com",cross_site_cookie:!1,cross_subdomain_cookie:!0,error_reporter:Qe,persistence:"cookie",persistence_name:"",cookie_domain:"",cookie_name:"",loaded:Qe,mp_loader:null,track_marketing:!0,track_pageview:!1,skip_first_touch_marketing:!1,store_google:!0,stop_utm_persistence:!1,save_referrer:!0,test:!1,verbose:!1,img:!1,debug:!1,track_links_timeout:300,cookie_expiration:365,upgrade:!1,disable_persistence:!1,disable_cookie:!1,secure_cookie:!1,ip:!0,opt_out_tracking_by_default:!1,opt_out_persistence_by_default:!1,opt_out_tracking_persistence_type:"localStorage",opt_out_tracking_cookie_prefix:null,property_blacklist:[],xhr_headers:{},ignore_dnt:!1,batch_requests:!0,batch_size:50,batch_flush_interval_ms:5e3,batch_request_timeout_ms:9e4,batch_autostart:!0,hooks:{}},et=!1,tt=function(){},rt=function(e,t,i){var o,n=i===Ve?Te:Te[i];if(n&&0===De)o=n;else{if(n&&!B.isArray(n))return void U.error("You have already initialized "+i);o=new tt}if(o._cached_groups={},o._init(e,t,i),o.people=new Ae,o.people._init(o),!o.get_config("skip_first_touch_marketing")){var s=B.info.campaignParams(null),a={},c=!1;B.each(s,(function(e,t){a["initial_"+t]=e,e&&(c=!0)})),c&&o.people.set_once(a)}return r.DEBUG=r.DEBUG||o.get_config("debug"),!B.isUndefined(n)&&B.isArray(n)&&(o._execute_array.call(o.people,n.people),o._execute_array(n)),o};tt.prototype.init=function(e,t,r){if(B.isUndefined(r))this.report_error("You must name your new library: init(token, config, name)");else{if(r!==Ve){var i=rt(e,t,r);return Te[r]=i,i._loaded(),i}this.report_error("You must initialize the main mixpanel object right after you include the Mixpanel js snippet")}},tt.prototype._init=function(e,r,i){r=r||{},this.__loaded=!0,this.config={};var o={};"api_payload_format"in r||(r.api_host||Ze.api_host).match(/\.mixpanel\.com/)&&(o.api_payload_format="json");if(this.set_config(B.extend({},Ze,o,r,{name:i,token:e,callback_fn:(i===Ve?i:Ve+"."+i)+"._jsc"})),this._jsc=Qe,this.__dom_loaded_queue=[],this.__request_queue=[],this.__disabled_events=[],this._flags={disable_all_events:!1,identify_called:!1},this.request_batchers={},this._batch_requests=this.get_config("batch_requests"),this._batch_requests)if(B.localStorage.is_supported(!0)&&Ge){if(this.init_batchers(),Xe&&t.addEventListener){var n=B.bind((function(){this.request_batchers.events.stopped||this.request_batchers.events.flush({unloading:!0})}),this);t.addEventListener("pagehide",(function(e){e.persisted&&n()})),t.addEventListener("visibilitychange",(function(){"hidden"===w.visibilityState&&n()}))}}else this._batch_requests=!1,U.log("Turning off Mixpanel request-queueing; needs XHR and localStorage support"),B.each(this.get_batcher_configs(),(function(e){U.log("Clearing batch queue "+e.queue_key),B.localStorage.remove(e.queue_key)}));this.persistence=this.cookie=new Le(this.config),this.unpersisted_superprops={},this._gdpr_init();var s=B.UUID();this.get_distinct_id()||this.register_once({distinct_id:Ke+s,$device_id:s},"");var a=this.get_config("track_pageview");a&&this._init_url_change_tracking(a)},tt.prototype._loaded=function(){if(this.get_config("loaded")(this),this._set_default_superprops(),this.people.set_once(this.persistence.get_referrer_info()),this.get_config("store_google")&&this.get_config("stop_utm_persistence")){var e=B.info.campaignParams(null);B.each(e,function(e,t){this.unregister(t)}.bind(this))}},tt.prototype._set_default_superprops=function(){this.persistence.update_search_keyword(w.referrer),this.get_config("store_google")&&!this.get_config("stop_utm_persistence")&&this.register(B.info.campaignParams()),this.get_config("save_referrer")&&this.persistence.update_referrer_info(w.referrer)},tt.prototype._dom_loaded=function(){B.each(this.__dom_loaded_queue,(function(e){this._track_dom.apply(this,e)}),this),this.has_opted_out_tracking()||B.each(this.__request_queue,(function(e){this._send_request.apply(this,e)}),this),delete this.__dom_loaded_queue,delete this.__request_queue},tt.prototype._track_dom=function(e,t){if(this.get_config("img"))return this.report_error("You can't use DOM tracking functions with img = true."),!1;if(!et)return this.__dom_loaded_queue.push([e,t]),!1;var r=(new e).init(this);return r.track.apply(r,t)},tt.prototype._init_url_change_tracking=function(e){var r="";if(this.track_pageview()&&(r=B.info.currentUrl()),B.include(["full-url","url-with-path-and-query-string","url-with-path"],e)){t.addEventListener("popstate",(function(){t.dispatchEvent(new Event("mp_locationchange"))})),t.addEventListener("hashchange",(function(){t.dispatchEvent(new Event("mp_locationchange"))}));var i=t.history.pushState;"function"==typeof i&&(t.history.pushState=function(e,r,o){i.call(t.history,e,r,o),t.dispatchEvent(new Event("mp_locationchange"))});var o=t.history.replaceState;"function"==typeof o&&(t.history.replaceState=function(e,r,i){o.call(t.history,e,r,i),t.dispatchEvent(new Event("mp_locationchange"))}),t.addEventListener("mp_locationchange",function(){var t=B.info.currentUrl(),i=!1;("full-url"===e?i=t!==r:"url-with-path-and-query-string"===e?i=t.split("#")[0]!==r.split("#")[0]:"url-with-path"===e&&(i=t.split("#")[0].split("?")[0]!==r.split("#")[0].split("?")[0]),i)&&(this.track_pageview()&&(r=t))}.bind(this))}},tt.prototype._prepare_callback=function(e,t){if(B.isUndefined(e))return null;if(Ge){return function(r){e(r,t)}}var r=this._jsc,i=""+Math.floor(1e8*Math.random()),o=this.get_config("callback_fn")+"["+i+"]";return r[i]=function(o){delete r[i],e(o,t)},o},tt.prototype._send_request=function(e,t,r,i){var o=!0;if(We)return this.__request_queue.push(arguments),o;var n={method:this.get_config("api_method"),transport:this.get_config("api_transport"),verbose:this.get_config("verbose")},s=null;i||!B.isFunction(r)&&"string"!=typeof r||(i=r,r=null),r=B.extend(n,r||{}),Ge||(r.method="GET");var a="POST"===r.method,c=Xe&&a&&"sendbeacon"===r.transport.toLowerCase(),p=r.verbose;t.verbose&&(p=!0),this.get_config("test")&&(t.test=1),p&&(t.verbose=1),this.get_config("img")&&(t.img=1),Ge||(i?t.callback=i:(p||this.get_config("test"))&&(t.callback="(function(){})")),t.ip=this.get_config("ip")?1:0,t._=(new Date).getTime().toString(),a&&(s="data="+encodeURIComponent(t.data),delete t.data),e+="?"+B.HTTPBuildQuery(t);var u=this;if("img"in t){var _=w.createElement("img");_.src=e,w.body.appendChild(_)}else if(c){try{o=Xe(e,s)}catch(e){u.report_error(e),o=!1}try{i&&i(o?1:0)}catch(e){u.report_error(e)}}else if(Ge)try{var h=new XMLHttpRequest;h.open(r.method,e,!0);var l=this.get_config("xhr_headers");if(a&&(l["Content-Type"]="application/x-www-form-urlencoded"),B.each(l,(function(e,t){h.setRequestHeader(t,e)})),r.timeout_ms&&void 0!==h.timeout){h.timeout=r.timeout_ms;var d=(new Date).getTime()}h.withCredentials=!0,h.onreadystatechange=function(){var e;if(4===h.readyState)if(200===h.status){if(i)if(p){var t;try{t=B.JSONDecode(h.responseText)}catch(e){if(u.report_error(e),!r.ignore_json_errors)return;t=h.responseText}i(t)}else i(Number(h.responseText))}else e=h.timeout&&!h.status&&(new Date).getTime()-d>=h.timeout?"timeout":"Bad HTTP status: "+h.status+" "+h.statusText,u.report_error(e),i&&i(p?{status:0,error:e,xhr_req:h}:0)},h.send(s)}catch(e){u.report_error(e),o=!1}else{var f=w.createElement("script");f.type="text/javascript",f.async=!0,f.defer=!0,f.src=e;var g=w.getElementsByTagName("script")[0];g.parentNode.insertBefore(f,g)}return o},tt.prototype._execute_array=function(e){var t,r=[],i=[],o=[];B.each(e,(function(e){e&&(t=e[0],B.isArray(t)?o.push(e):"function"==typeof e?e.call(this):B.isArray(e)&&"alias"===t?r.push(e):B.isArray(e)&&-1!==t.indexOf("track")&&"function"==typeof this[t]?o.push(e):i.push(e))}),this);var n=function(e,t){B.each(e,(function(e){if(B.isArray(e[0])){var r=t;B.each(e,(function(e){r=r[e[0]].apply(r,e.slice(1))}))}else this[e[0]].apply(this,e.slice(1))}),t)};n(r,this),n(i,this),n(o,this)},tt.prototype.are_batchers_initialized=function(){return!!this.request_batchers.events},tt.prototype.get_batcher_configs=function(){var e="__mpq_"+this.get_config("token"),t=this.get_config("api_routes");return this._batcher_configs=this._batcher_configs||{events:{type:"events",endpoint:"/"+t.track,queue_key:e+"_ev"},people:{type:"people",endpoint:"/"+t.engage,queue_key:e+"_pp"},groups:{type:"groups",endpoint:"/"+t.groups,queue_key:e+"_gr"}},this._batcher_configs},tt.prototype.init_batchers=function(){if(!this.are_batchers_initialized()){var e=B.bind((function(e){return new ne(e.queue_key,{libConfig:this.config,sendRequestFunc:B.bind((function(t,r,i){this._send_request(this.get_config("api_host")+e.endpoint,this._encode_data_for_request(t),r,this._prepare_callback(i,t))}),this),beforeSendHook:B.bind((function(t){return this._run_hook("before_send_"+e.type,t)}),this),errorReporter:this.get_config("error_reporter"),stopAllBatchingFunc:B.bind(this.stop_batch_senders,this)})}),this),t=this.get_batcher_configs();this.request_batchers={events:e(t.events),people:e(t.people),groups:e(t.groups)}}this.get_config("batch_autostart")&&this.start_batch_senders()},tt.prototype.start_batch_senders=function(){this._batchers_were_started=!0,this.are_batchers_initialized()&&(this._batch_requests=!0,B.each(this.request_batchers,(function(e){e.start()})))},tt.prototype.stop_batch_senders=function(){this._batch_requests=!1,B.each(this.request_batchers,(function(e){e.stop(),e.clear()}))},tt.prototype.push=function(e){this._execute_array([e])},tt.prototype.disable=function(e){void 0===e?this._flags.disable_all_events=!0:this.__disabled_events=this.__disabled_events.concat(e)},tt.prototype._encode_data_for_request=function(e){var t=B.JSONEncode(e);return this.get_config("api_payload_format")===He&&(t=B.base64Encode(t)),{data:t}},tt.prototype._track_or_batch=function(e,t){var r=B.truncate(e.data,255),i=e.endpoint,o=e.batcher,n=e.should_send_immediately,s=e.send_request_options||{};t=t||Qe;var a=!0,c=B.bind((function(){return s.skip_hooks||(r=this._run_hook("before_send_"+e.type,r)),r?(U.log("MIXPANEL REQUEST:"),U.log(r),this._send_request(i,this._encode_data_for_request(r),s,this._prepare_callback(t,r))):null}),this);return this._batch_requests&&!n?o.enqueue(r,(function(e){e?t(1,r):c()})):a=c(),a&&r},tt.prototype.track=_e((function(e,t,r,i){i||"function"!=typeof r||(i=r,r=null);var o=(r=r||{}).transport;o&&(r.transport=o);var n=r.send_immediately;if("function"!=typeof i&&(i=Qe),B.isUndefined(e))this.report_error("No event name provided to mixpanel.track");else{if(!this._event_is_disabled(e)){(t=B.extend({},t)).token=this.get_config("token");var s=this.persistence.remove_event_timer(e);if(!B.isUndefined(s)){var a=(new Date).getTime()-s;t.$duration=parseFloat((a/1e3).toFixed(3))}this._set_default_superprops();var c=this.get_config("track_marketing")?B.info.marketingParams():{};t=B.extend({},B.info.properties({mp_loader:this.get_config("mp_loader")}),c,this.persistence.properties(),this.unpersisted_superprops,t);var p=this.get_config("property_blacklist");B.isArray(p)?B.each(p,(function(e){delete t[e]})):this.report_error("Invalid value for property_blacklist config: "+p);var u={event:e,properties:t};return this._track_or_batch({type:"events",data:u,endpoint:this.get_config("api_host")+"/"+this.get_config("api_routes").track,batcher:this.request_batchers.events,should_send_immediately:n,send_request_options:r},i)}i(0)}})),tt.prototype.set_group=_e((function(e,t,r){B.isArray(t)||(t=[t]);var i={};return i[e]=t,this.register(i),this.people.set(e,t,r)})),tt.prototype.add_group=_e((function(e,t,r){var i=this.get_property(e),o={};return void 0===i?(o[e]=[t],this.register(o)):-1===i.indexOf(t)&&(i.push(t),o[e]=i,this.register(o)),this.people.union(e,t,r)})),tt.prototype.remove_group=_e((function(e,t,r){var i=this.get_property(e);if(void 0!==i){var o=i.indexOf(t);o>-1&&(i.splice(o,1),this.register({group_key:i})),0===i.length&&this.unregister(e)}return this.people.remove(e,t,r)})),tt.prototype.track_with_groups=_e((function(e,t,r,i){var o=B.extend({},t||{});return B.each(r,(function(e,t){null!=e&&(o[t]=e)})),this.track(e,o,i)})),tt.prototype._create_map_key=function(e,t){return e+"_"+JSON.stringify(t)},tt.prototype._remove_group_from_cache=function(e,t){delete this._cached_groups[this._create_map_key(e,t)]},tt.prototype.get_group=function(e,t){var r=this._create_map_key(e,t),i=this._cached_groups[r];return void 0!==i&&i._group_key===e&&i._group_id===t||((i=new Ie)._init(this,e,t),this._cached_groups[r]=i),i},tt.prototype.track_pageview=_e((function(e,t){"object"!=typeof e&&(e={});var r=(t=t||{}).event_name||"$mp_web_page_view",i=B.extend(B.info.mpPageViewProperties(),B.info.campaignParams(),B.info.clickParams()),o=B.extend({},i,e);return this.track(r,o)})),tt.prototype.track_links=function(){return this._track_dom.call(this,W,arguments)},tt.prototype.track_forms=function(){return this._track_dom.call(this,X,arguments)},tt.prototype.time_event=function(e){B.isUndefined(e)?this.report_error("No event name provided to mixpanel.time_event"):this._event_is_disabled(e)||this.persistence.set_event_timer(e,(new Date).getTime())};var it={persistent:!0},ot=function(e){var t;return t=B.isObject(e)?e:B.isUndefined(e)?{}:{days:e},B.extend({},it,t)};tt.prototype.register=function(e,t){var r=ot(t);r.persistent?this.persistence.register(e,r.days):B.extend(this.unpersisted_superprops,e)},tt.prototype.register_once=function(e,t,r){var i=ot(r);i.persistent?this.persistence.register_once(e,t,i.days):(void 0===t&&(t="None"),B.each(e,(function(e,r){this.unpersisted_superprops.hasOwnProperty(r)&&this.unpersisted_superprops[r]!==t||(this.unpersisted_superprops[r]=e)}),this))},tt.prototype.unregister=function(e,t){(t=ot(t)).persistent?this.persistence.unregister(e):delete this.unpersisted_superprops[e]},tt.prototype._register_single=function(e,t){var r={};r[e]=t,this.register(r)},tt.prototype.identify=function(e,t,r,i,o,n,s,a){var c=this.get_distinct_id();if(e&&c!==e){if("string"==typeof e&&0===e.indexOf(Ke))return this.report_error("distinct_id cannot have $device: prefix"),-1;this.register({$user_id:e})}if(!this.get_property("$device_id")){var p=c;this.register_once({$had_persisted_distinct_id:!0,$device_id:p},"")}e!==c&&e!==this.get_property(Fe)&&(this.unregister(Fe),this.register({distinct_id:e})),this._flags.identify_called=!0,this.people._flush(t,r,i,o,n,s,a),e!==c&&this.track("$identify",{distinct_id:e,$anon_distinct_id:c},{skip_hooks:!0})},tt.prototype.reset=function(){this.persistence.clear(),this._flags.identify_called=!1;var e=B.UUID();this.register_once({distinct_id:Ke+e,$device_id:e},"")},tt.prototype.get_distinct_id=function(){return this.get_property("distinct_id")},tt.prototype.alias=function(e,t){if(e===this.get_property(Ne))return this.report_error("Attempting to create alias for existing People user - aborting."),-2;var r=this;return B.isUndefined(t)&&(t=this.get_distinct_id()),e!==t?(this._register_single(Fe,e),this.track("$create_alias",{alias:e,distinct_id:t},{skip_hooks:!0},(function(){r.identify(e)}))):(this.report_error("alias matches current distinct_id - skipping api call."),this.identify(e),-1)},tt.prototype.name_tag=function(e){this._register_single("mp_name_tag",e)},tt.prototype.set_config=function(e){B.isObject(e)&&(B.extend(this.config,e),e.batch_size&&B.each(this.request_batchers,(function(e){e.resetBatchSize()})),this.get_config("persistence_name")||(this.config.persistence_name=this.config.cookie_name),this.get_config("disable_persistence")||(this.config.disable_persistence=this.config.disable_cookie),this.persistence&&this.persistence.update_config(this.config),r.DEBUG=r.DEBUG||this.get_config("debug"))},tt.prototype.get_config=function(e){return this.config[e]},tt.prototype._run_hook=function(e){var t=(this.config.hooks[e]||Je).apply(this,y.call(arguments,1));return void 0===t&&(this.report_error(e+" hook did not return a value"),t=null),t},tt.prototype.get_property=function(e){return this.persistence.load_prop([e])},tt.prototype.toString=function(){var e=this.get_config("name");return e!==Ve&&(e=Ve+"."+e),e},tt.prototype._event_is_disabled=function(e){return B.isBlockedUA(E)||this._flags.disable_all_events||B.include(this.__disabled_events,e)},tt.prototype._gdpr_init=function(){"localStorage"===this.get_config("opt_out_tracking_persistence_type")&&B.localStorage.is_supported()&&(!this.has_opted_in_tracking()&&this.has_opted_in_tracking({persistence_type:"cookie"})&&this.opt_in_tracking({enable_persistence:!1}),!this.has_opted_out_tracking()&&this.has_opted_out_tracking({persistence_type:"cookie"})&&this.opt_out_tracking({clear_persistence:!1}),this.clear_opt_in_out_tracking({persistence_type:"cookie",enable_persistence:!1})),this.has_opted_out_tracking()?this._gdpr_update_persistence({clear_persistence:!0}):this.has_opted_in_tracking()||!this.get_config("opt_out_tracking_by_default")&&!B.cookie.get("mp_optout")||(B.cookie.remove("mp_optout"),this.opt_out_tracking({clear_persistence:this.get_config("opt_out_persistence_by_default")}))},tt.prototype._gdpr_update_persistence=function(e){var t;if(e&&e.clear_persistence)t=!0;else{if(!e||!e.enable_persistence)return;t=!1}this.get_config("disable_persistence")||this.persistence.disabled===t||this.persistence.set_disabled(t),t?this.stop_batch_senders():this._batchers_were_started&&this.start_batch_senders()},tt.prototype._gdpr_call_func=function(e,t){return t=B.extend({track:B.bind(this.track,this),persistence_type:this.get_config("opt_out_tracking_persistence_type"),cookie_prefix:this.get_config("opt_out_tracking_cookie_prefix"),cookie_expiration:this.get_config("cookie_expiration"),cross_site_cookie:this.get_config("cross_site_cookie"),cross_subdomain_cookie:this.get_config("cross_subdomain_cookie"),cookie_domain:this.get_config("cookie_domain"),secure_cookie:this.get_config("secure_cookie"),ignore_dnt:this.get_config("ignore_dnt")},t),B.localStorage.is_supported()||(t.persistence_type="cookie"),e(this.get_config("token"),{track:t.track,trackEventName:t.track_event_name,trackProperties:t.track_properties,persistenceType:t.persistence_type,persistencePrefix:t.cookie_prefix,cookieDomain:t.cookie_domain,cookieExpiration:t.cookie_expiration,crossSiteCookie:t.cross_site_cookie,crossSubdomainCookie:t.cross_subdomain_cookie,secureCookie:t.secure_cookie,ignoreDnt:t.ignore_dnt})},tt.prototype.opt_in_tracking=function(e){e=B.extend({enable_persistence:!0},e),this._gdpr_call_func(ae,e),this._gdpr_update_persistence(e)},tt.prototype.opt_out_tracking=function(e){(e=B.extend({clear_persistence:!0,delete_user:!0},e)).delete_user&&this.people&&this.people._identify_called()&&(this.people.delete_user(),this.people.clear_charges()),this._gdpr_call_func(ce,e),this._gdpr_update_persistence(e)},tt.prototype.has_opted_in_tracking=function(e){return this._gdpr_call_func(pe,e)},tt.prototype.has_opted_out_tracking=function(e){return this._gdpr_call_func(ue,e)},tt.prototype.clear_opt_in_out_tracking=function(e){e=B.extend({enable_persistence:!0},e),this._gdpr_call_func(de,e),this._gdpr_update_persistence(e)},tt.prototype.report_error=function(e,t){U.error.apply(U.error,arguments);try{t||e instanceof Error||(e=new Error(e)),this.get_config("error_reporter")(e,t)}catch(t){U.error(t)}},tt.prototype.init=tt.prototype.init,tt.prototype.reset=tt.prototype.reset,tt.prototype.disable=tt.prototype.disable,tt.prototype.time_event=tt.prototype.time_event,tt.prototype.track=tt.prototype.track,tt.prototype.track_links=tt.prototype.track_links,tt.prototype.track_forms=tt.prototype.track_forms,tt.prototype.track_pageview=tt.prototype.track_pageview,tt.prototype.register=tt.prototype.register,tt.prototype.register_once=tt.prototype.register_once,tt.prototype.unregister=tt.prototype.unregister,tt.prototype.identify=tt.prototype.identify,tt.prototype.alias=tt.prototype.alias,tt.prototype.name_tag=tt.prototype.name_tag,tt.prototype.set_config=tt.prototype.set_config,tt.prototype.get_config=tt.prototype.get_config,tt.prototype.get_property=tt.prototype.get_property,tt.prototype.get_distinct_id=tt.prototype.get_distinct_id,tt.prototype.toString=tt.prototype.toString,tt.prototype.opt_out_tracking=tt.prototype.opt_out_tracking,tt.prototype.opt_in_tracking=tt.prototype.opt_in_tracking,tt.prototype.has_opted_out_tracking=tt.prototype.has_opted_out_tracking,tt.prototype.has_opted_in_tracking=tt.prototype.has_opted_in_tracking,tt.prototype.clear_opt_in_out_tracking=tt.prototype.clear_opt_in_out_tracking,tt.prototype.get_group=tt.prototype.get_group,tt.prototype.set_group=tt.prototype.set_group,tt.prototype.add_group=tt.prototype.add_group,tt.prototype.remove_group=tt.prototype.remove_group,tt.prototype.track_with_groups=tt.prototype.track_with_groups,tt.prototype.start_batch_senders=tt.prototype.start_batch_senders,tt.prototype.stop_batch_senders=tt.prototype.stop_batch_senders,tt.prototype.DEFAULT_API_ROUTES=Ye,Le.prototype.properties=Le.prototype.properties,Le.prototype.update_search_keyword=Le.prototype.update_search_keyword,Le.prototype.update_referrer_info=Le.prototype.update_referrer_info,Le.prototype.get_cross_subdomain=Le.prototype.get_cross_subdomain,Le.prototype.clear=Le.prototype.clear;var nt={},st=function(){Te.init=function(e,r,i){if(i)return Te[i]||(Te[i]=nt[i]=rt(e,r,i),Te[i]._loaded()),Te[i];var o=Te;nt[Ve]?o=nt[Ve]:e&&((o=rt(e,r,Ve))._loaded(),nt[Ve]=o),Te=o,1===De&&(t[Ve]=Te),B.each(nt,(function(e,t){t!==Ve&&(Te[t]=e)})),Te._=B}};var at=(De=0,Te=new tt,st(),Te.init(),function(){function e(){e.done||(e.done=!0,et=!0,We=!1,B.each(nt,(function(e){e._dom_loaded()})))}if(w.addEventListener)"complete"===w.readyState?e():w.addEventListener("DOMContentLoaded",e,!1);else if(w.attachEvent){w.attachEvent("onreadystatechange",e);var r=!1;try{r=null===t.frameElement}catch(e){}w.documentElement.doScroll&&r&&function t(){try{w.documentElement.doScroll("left")}catch(e){return void setTimeout(t,1)}e()}()}B.register_event(t,"load",e,!0)}(),Te);e.exports=at}},t={};function r(i){var o=t[i];if(void 0!==o)return o.exports;var n=t[i]={exports:{}};return e[i](n,n.exports,r),n.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};(()=>{"use strict";r.r(i);var e=r(6345),t=r.n(e);const o=Autodesk.Viewing.Private.logger;class n extends Autodesk.Viewing.Private.AnalyticsProviderInterface{constructor(e){super(e),this.initialized=!1}init(){this.options.token||o.warn("Mixpanel token is not defined"),t().init(this.options.token,this.options.config),this.initialized=!0}register(e){t().register(e)}static get name(){return"mixpanel"}static get defaultOptions(){return{token:"7cecb637d6468a8b61f388bbb82072ee",config:{persistence:"localStorage",batch_requests:!0,batch_size:500,batch_flush_interval_ms:15e3,autotrack:!1}}}hasOptedOut(){return t().has_opted_out_tracking()}optOut(e){this.track("OptOutTracking"),t().opt_out_tracking(e)}getDistinctId(){return t().get_distinct_id()}optIn(e){t().opt_in_tracking(e),this.track("OptInTracking")}track(e,r){t().track(e,r)}identify(e){t().identify(e)}}const s=Autodesk.Viewing,a=s.Private;class c extends Autodesk.Viewing.Extension{constructor(e,t){super(e,t)}load(){return!0}unload(){return!0}activate(){return!0}deactivate(){return!1}}s.theExtensionManager.registerExtension("Autodesk.Viewing.MixpanelExtension",c),a.analytics.registerProvider(n)})(),Autodesk.Extensions.MixpanelProvider=i})(); +//# sourceMappingURL=MixpanelProvider.min.js.map \ No newline at end of file diff --git a/public/autodesk/extensions/Section/Section.min.js b/public/autodesk/extensions/Section/Section.min.js new file mode 100644 index 0000000..dac56c5 --- /dev/null +++ b/public/autodesk/extensions/Section/Section.min.js @@ -0,0 +1,18 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var t={3412:(t,e,n)=>{"use strict";n.d(e,{A:()=>r});var i=n(1354),o=n.n(i),a=n(6314),s=n.n(a)()(o());s.push([t.id,".sectionPanel{line-height:14px;text-align:left;z-index:10}.section-horizontal-divider{height:1px;border-top:1px solid rgba(200,200,200,.8)}.section-submenu-select{display:block;position:relative;width:calc(100% - 40px);padding:10px 20px 0px 20px;opacity:.3}.section-panel:hover .section-submenu-select{opacity:.8}.section-submenu-selectlabel{position:relative;display:inline-block;padding-right:20px;padding-bottom:4px}.section-restart{margin:10px 20px 15px 20px;padding:6px 10px 6px 10px;width:calc(100% - 55px);cursor:pointer}.docking-panel:hover .section-restart{background-color:rgba(255,255,255,.12)}.docking-panel .section-restart:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}","",{version:3,sources:["webpack://./extensions/Section/Section.css"],names:[],mappings:"AAAA,cAAc,gBAAgB,CAAC,eAAe,CAAC,UAAU,CAAC,4BAA4B,UAAU,CAAC,yCAAyC,CAAC,wBAAwB,aAAa,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,0BAA0B,CAAC,UAAU,CAAC,6CAA6C,UAAU,CAAC,6BAA6B,iBAAiB,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,iBAAiB,0BAA0B,CAAC,yBAAyB,CAAC,uBAAuB,CAAC,cAAc,CAAC,sCAAsC,sCAAsC,CAAC,sCAAsC,qCAAqC,CAAC,+BAA+B,CAAC,4BAA4B,CAAC,2BAA2B,CAAC,0BAA0B,CAAC,uBAAuB",sourcesContent:[".sectionPanel{line-height:14px;text-align:left;z-index:10}.section-horizontal-divider{height:1px;border-top:1px solid rgba(200,200,200,.8)}.section-submenu-select{display:block;position:relative;width:calc(100% - 40px);padding:10px 20px 0px 20px;opacity:.3}.section-panel:hover .section-submenu-select{opacity:.8}.section-submenu-selectlabel{position:relative;display:inline-block;padding-right:20px;padding-bottom:4px}.section-restart{margin:10px 20px 15px 20px;padding:6px 10px 6px 10px;width:calc(100% - 55px);cursor:pointer}.docking-panel:hover .section-restart{background-color:rgba(255,255,255,.12)}.docking-panel .section-restart:hover{background-color:rgba(166,194,255,.7);-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}"],sourceRoot:""}]);const r=s},6314:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n="",i=void 0!==e[5];return e[4]&&(n+="@supports (".concat(e[4],") {")),e[2]&&(n+="@media ".concat(e[2]," {")),i&&(n+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),n+=t(e),i&&(n+="}"),e[2]&&(n+="}"),e[4]&&(n+="}"),n})).join("")},e.i=function(t,n,i,o,a){"string"==typeof t&&(t=[[null,t,void 0]]);var s={};if(i)for(var r=0;r0?" ".concat(h[5]):""," {").concat(h[1],"}")),h[5]=a),n&&(h[2]?(h[1]="@media ".concat(h[2]," {").concat(h[1],"}"),h[2]=n):h[2]=n),o&&(h[4]?(h[1]="@supports (".concat(h[4],") {").concat(h[1],"}"),h[4]=o):h[4]="".concat(o)),e.push(h))}},e}},1354:t=>{"use strict";t.exports=function(t){var e=t[1],n=t[3];if(!n)return e;if("function"==typeof btoa){var i=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(i),a="/*# ".concat(o," */");return[e].concat([a]).join("\n")}return[e].join("\n")}},1873:(t,e,n)=>{var i=n(9325).Symbol;t.exports=i},2552:(t,e,n)=>{var i=n(1873),o=n(659),a=n(9350),s=i?i.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":s&&s in Object(t)?o(t):a(t)}},4128:(t,e,n)=>{var i=n(1800),o=/^\s+/;t.exports=function(t){return t?t.slice(0,i(t)+1).replace(o,""):t}},4840:(t,e,n)=>{var i="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;t.exports=i},659:(t,e,n)=>{var i=n(1873),o=Object.prototype,a=o.hasOwnProperty,s=o.toString,r=i?i.toStringTag:void 0;t.exports=function(t){var e=a.call(t,r),n=t[r];try{t[r]=void 0;var i=!0}catch(t){}var o=s.call(t);return i&&(e?t[r]=n:delete t[r]),o}},9350:t=>{var e=Object.prototype.toString;t.exports=function(t){return e.call(t)}},9325:(t,e,n)=>{var i=n(4840),o="object"==typeof self&&self&&self.Object===Object&&self,a=i||o||Function("return this")();t.exports=a},1800:t=>{var e=/\s/;t.exports=function(t){for(var n=t.length;n--&&e.test(t.charAt(n)););return n}},8221:(t,e,n)=>{var i=n(3805),o=n(124),a=n(9374),s=Math.max,r=Math.min;t.exports=function(t,e,n){var c,l,h,u,p,E,d=0,m=!1,f=!1,v=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function T(e){var n=c,i=l;return c=l=void 0,d=e,u=t.apply(i,n)}function w(t){var n=t-E;return void 0===E||n>=e||n<0||f&&t-d>=h}function y(){var t=o();if(w(t))return g(t);p=setTimeout(y,function(t){var n=e-(t-E);return f?r(n,h-(t-d)):n}(t))}function g(t){return p=void 0,v&&c?T(t):(c=l=void 0,u)}function R(){var t=o(),n=w(t);if(c=arguments,l=this,E=t,n){if(void 0===p)return function(t){return d=t,p=setTimeout(y,e),m?T(t):u}(E);if(f)return clearTimeout(p),p=setTimeout(y,e),T(E)}return void 0===p&&(p=setTimeout(y,e)),u}return e=a(e)||0,i(n)&&(m=!!n.leading,h=(f="maxWait"in n)?s(a(n.maxWait)||0,e):h,v="trailing"in n?!!n.trailing:v),R.cancel=function(){void 0!==p&&clearTimeout(p),d=0,c=E=l=p=void 0},R.flush=function(){return void 0===p?u:g(o())},R}},3805:t=>{t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},346:t=>{t.exports=function(t){return null!=t&&"object"==typeof t}},4394:(t,e,n)=>{var i=n(2552),o=n(346);t.exports=function(t){return"symbol"==typeof t||o(t)&&"[object Symbol]"==i(t)}},124:(t,e,n)=>{var i=n(9325);t.exports=function(){return i.Date.now()}},9374:(t,e,n)=>{var i=n(4128),o=n(3805),a=n(4394),s=/^[-+]0x[0-9a-f]+$/i,r=/^0b[01]+$/i,c=/^0o[0-7]+$/i,l=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(a(t))return NaN;if(o(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=o(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=i(t);var n=r.test(t);return n||c.test(t)?l(t.slice(2),n?2:8):s.test(t)?NaN:+t}},5072:t=>{"use strict";var e=[];function n(t){for(var n=-1,i=0;i{"use strict";var e={};t.exports=function(t,n){var i=function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}e[t]=n}return e[t]}(t);if(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.appendChild(n)}},540:t=>{"use strict";t.exports=function(t){var e=document.createElement("style");return t.setAttributes(e,t.attributes),t.insert(e,t.options),e}},5056:(t,e,n)=>{"use strict";t.exports=function(t){var e=n.nc;e&&t.setAttribute("nonce",e)}},7825:t=>{"use strict";t.exports=function(t){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var e=t.insertStyleElement(t);return{update:function(n){!function(t,e,n){var i="";n.supports&&(i+="@supports (".concat(n.supports,") {")),n.media&&(i+="@media ".concat(n.media," {"));var o=void 0!==n.layer;o&&(i+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),i+=n.css,o&&(i+="}"),n.media&&(i+="}"),n.supports&&(i+="}");var a=n.sourceMap;a&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),e.styleTagTransform(i,t,e.options)}(e,t,n)},remove:function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(e)}}}},1113:t=>{"use strict";t.exports=function(t,e){if(e.styleSheet)e.styleSheet.cssText=t;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(t))}}}},e={};function n(i){var o=e[i];if(void 0!==o)return o.exports;var a=e[i]={id:i,exports:{}};return t[i](a,a.exports,n),a.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var i in e)n.o(e,i)&&!n.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.nc=void 0;var i={};(()=>{"use strict";n.r(i),n.d(i,{SectionExtension:()=>x});const t=n(8221);var e=null,o=Autodesk.Viewing.Private,a=function(n,i){var a,s,r=n.impl,c=["section"],l=!1,h=!1,u=!1,p=!0,E=i.tintColor,d=i.tintIntensity,m=isNaN(i.gizmoOffsetRight)?200:i.gizmoOffsetRight,f=isNaN(i.gizmoOffsetLeft)?80:i.gizmoOffsetLeft,v=isNaN(i.gizmoOffsetTop)?80:i.gizmoOffsetTop,T=isNaN(i.gizmoOffsetBottom)?80:i.gizmoOffsetBottom,w=new THREE.Vector3,y=new THREE.Vector3,g=[],R=[],x=[],M="",H="gizmo",b=null,A=!1,P=!0,S=[0,1,1,3,3,2,2,0],C=2653930,V=!0;let B,k,z,I,O=new THREE.Vector3;function X(t){B=t,k=B.clone().invert(),z=(new THREE.Matrix3).getNormalMatrix(B),I=(new THREE.Matrix3).getNormalMatrix(k)}function Y(){var t,e;let n=new THREE.Matrix4;const i=null===(t=r.get3DModels()[0])||void 0===t?void 0:t.getData();if(i&&null!==(e=i.loadOptions)&&void 0!==e&&e.applyRefPoint&&i.refPointTransform){const t=i.refPointTransform,e=new THREE.Vector3,o=new THREE.Quaternion,a=new THREE.Vector3;t.decompose(e,o,a),n.makeRotationFromQuaternion(o)}return n}X(Y());const G=t(((t,e,n)=>{o.analytics.track("viewer.section",{from:t,type:e,action:n})}),2e3);function _(){r.invalidate(!1,!1,!0)}function L(){j(),a&&a.update(),s&&s.update()}function j(){if(!a||!a.object)return;let t=function(t){const e=r.worldToClient(t),n=r.getCanvasBoundingClientRect();let i=(new THREE.Vector3).copy(e);return e.xn.width-m&&(i.x=n.width-m),e.yn.height-T&&(i.y=n.height-T),i.x!==e.x||i.y!==e.y?i:void 0}(a.position);if(t){const e=THREE.TransformControls.intersectObjects(t.x,t.y,[a.object],r.camera,!1);e&&(a.object.getWorldPosition(w),y.copy(e.point).sub(w),a.setGizmoOffset(y))}}function N(){l&&1===R.length&&(J(!0),L(),F((new THREE.Plane).setComponents(R[0].x,R[0].y,R[0].z,R[0].w)))}function Z(t){let{objectsMoved:e}=t;e&&N()}!function(){class t extends THREE.MeshBasicMaterial{constructor(t){super(),this.depthTest=!1,this.depthWrite=!1,this.side=THREE.FrontSide,this.transparent=!0,this.setValues(t),this.oldColor=this.color.clone(),this.oldOpacity=this.opacity,this.highlight=function(t){t?(this.color.setRGB(1,230/255,3/255),this.opacity=1):(this.color.copy(this.oldColor),this.opacity=this.oldOpacity)}}}class e extends THREE.LineBasicMaterial{constructor(t){super(),this.depthTest=!1,this.depthWrite=!1,this.transparent=!0,this.linewidth=1,this.setValues(t),this.oldColor=this.color.clone(),this.oldOpacity=this.opacity,this.highlight=function(t){t?(this.color.setRGB(1,230/255,3/255),this.opacity=1):(this.color.copy(this.oldColor),this.opacity=this.oldOpacity)}}}var n=function(t,e,n){const i=[];n=n||1;for(var o=0;o<=64*n;++o)"x"==e&&i.push(new THREE.Vector3(0,Math.cos(o/32*Math.PI),Math.sin(o/32*Math.PI)).multiplyScalar(t)),"y"==e&&i.push(new THREE.Vector3(Math.cos(o/32*Math.PI),0,Math.sin(o/32*Math.PI)).multiplyScalar(t)),"z"==e&&i.push(new THREE.Vector3(Math.sin(o/32*Math.PI),Math.cos(o/32*Math.PI),0).multiplyScalar(t));return(new THREE.BufferGeometry).setFromPoints(i)},i=function(t,e,n,i,o,a){return new THREE.CylinderBufferGeometry(t,e,n,i,o,a).applyMatrix4((new THREE.Matrix4).makeTranslation(0,.5,0))},o=function(t){const e=[];return"X"===t?e.push(new THREE.Vector3(0,0,0),new THREE.Vector3(1,0,0)):"Y"===t?e.push(new THREE.Vector3(0,0,0),new THREE.Vector3(0,1,0)):"Z"===t&&e.push(new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,1)),(new THREE.BufferGeometry).setFromPoints(e)};class a extends THREE.Object3D{constructor(t){super();var e=this;this.init=function(){this.handles=new THREE.Object3D,this.pickers=new THREE.Object3D,this.planes=new THREE.Object3D,this.highlights=new THREE.Object3D,this.hemiPicker=new THREE.Object3D,this.subPickers=new THREE.Object3D,this.add(this.handles),this.add(this.pickers),this.add(this.planes),this.add(this.highlights),this.add(this.hemiPicker),this.add(this.subPickers);var t=new THREE.PlaneBufferGeometry(50,50,2,2),e=new THREE.MeshBasicMaterial({wireframe:!0});e.side=THREE.DoubleSide;var n={XY:new THREE.Mesh(t,e),YZ:new THREE.Mesh(t,e),XZ:new THREE.Mesh(t,e),XYZE:new THREE.Mesh(t,e)};for(var i in this.activePlane=n.XYZE,n.YZ.rotation.set(0,Math.PI/2,0),n.XZ.rotation.set(-Math.PI/2,0,0),n)n[i].name=i,this.planes.add(n[i]),this.planes[i]=n[i],n[i].visible=!1;this.setupGizmos(),this.activeMode="",this.traverse((function(t){if(t instanceof THREE.Mesh){t.updateMatrix();const e=t.geometry.clone();e.applyMatrix4(t.matrix),t.geometry=e,t.position.set(0,0,0),t.rotation.set(0,0,0),t.scale.set(1,1,1)}}))},this.hide=function(){this.traverse((function(t){t.visible=!1}))},this.show=function(){this.traverse((function(t){t.visible=!0,t.parent!=e.pickers&&t.parent!=e.hemiPicker||(t.visible=!1),t.parent==e.planes&&(t.visible=!1)})),this.activePlane.visible=!1},this.highlight=function(t){this.traverse((function(e){e.material&&e.material.highlight&&(e.name==t?e.material.highlight(!0):e.material.highlight(!1))}))},this.setupGizmos=function(){var e=function(t,e){for(var n in t)for(var i=t[n].length;i--;){var o=t[n][i][0],a=t[n][i][1],s=t[n][i][2],r=t[n][i][3];o.name=n,a&&o.position.set(a[0],a[1],a[2]),s&&o.rotation.set(s[0],s[1],s[2]),r&&(o.visble=r),e.add(o)}};if(this.setHandlePickerGizmos(),t)for(var n=Object.keys(this.handleGizmos),i=0;iMath.abs(e.z)&&(this.activePlane=this.planes.XZ)),"Y"==t&&(this.activePlane=this.planes.XY,!n&&Math.abs(e.x)>Math.abs(e.z)&&(this.activePlane=this.planes.YZ)),"Z"==t&&(this.activePlane=this.planes.XZ,!n&&Math.abs(e.x)>Math.abs(e.y)&&(this.activePlane=this.planes.YZ)),"XYZ"==t&&(this.activePlane=this.planes.XYZE),"XY"==t&&(this.activePlane=this.planes.XY),"YZ"==t&&(this.activePlane=this.planes.YZ),"XZ"==t&&(this.activePlane=this.planes.XZ),this.hide(),this.show()},this.init()}},THREE.TransformGizmoRotate=class extends a{constructor(i){super(i),this.setHandlePickerGizmos=function(){this.handleGizmos={RX:[[new THREE.Line(n(1,"x",.5),new e({color:16711680}))]],RY:[[new THREE.Line(n(1,"y",.5),new e({color:65280}))]],RZ:[[new THREE.Line(n(1,"z",.5),new e({color:255}))]],RE:[[new THREE.Line(n(1.25,"z",1),new e({color:65535}))]],RXYZE:[[new THREE.Line(n(1,"z",1),new e({color:16711935}))]]},this.pickerGizmos={RX:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.12,4,12,Math.PI),new t({color:16711680,opacity:.25})),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],RY:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.12,4,12,Math.PI),new t({color:65280,opacity:.25})),[0,0,0],[Math.PI/2,0,0]]],RZ:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.12,4,12,Math.PI),new t({color:255,opacity:.25})),[0,0,0],[0,0,-Math.PI/2]]],RE:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1.25,.12,2,24),new t({color:65535,opacity:.25}))]],RXYZE:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.12,2,24),new t({color:16711935,opacity:.25}))]]}},this.setActivePlane=function(t){"RE"==t&&(this.activePlane=this.planes.XYZE),"RX"==t&&(this.activePlane=this.planes.YZ),"RY"==t&&(this.activePlane=this.planes.XZ),"RZ"==t&&(this.activePlane=this.planes.XY),this.hide(),this.show()},this.update=function(t,e){THREE.TransformGizmo.prototype.update.apply(this,arguments);var n=new THREE.Matrix4,i=new THREE.Euler(0,0,1),o=new THREE.Quaternion,a=new THREE.Vector3(1,0,0),s=new THREE.Vector3(0,1,0),r=new THREE.Vector3(0,0,1),c=new THREE.Quaternion,l=new THREE.Quaternion,h=new THREE.Quaternion,u=e.clone();i.copy(this.planes.XY.rotation),o.setFromEuler(i),n.makeRotationFromQuaternion(o).invert(),u.applyMatrix4(n),this.traverse((function(t){o.setFromEuler(i),"RX"==t.name&&(c.setFromAxisAngle(a,Math.atan2(-u.y,u.z)),o.multiplyQuaternions(o,c),t.quaternion.copy(o)),"RY"==t.name&&(l.setFromAxisAngle(s,Math.atan2(u.x,u.z)),o.multiplyQuaternions(o,l),t.quaternion.copy(o)),"RZ"==t.name&&(h.setFromAxisAngle(r,Math.atan2(u.y,u.x)),o.multiplyQuaternions(o,h),t.quaternion.copy(o))}))},this.init()}},THREE.TransformGizmoTranslateRotate=class extends a{constructor(e){super(e);var n=this;this.setHandlePickerGizmos=function(){var e=i(0,.05,.2,12,1,!1),n=.15;this.handleGizmos={Z:[[new THREE.Mesh(e,new t({color:16777215})),[0,0,.25],[Math.PI/2,0,0]],[new THREE.Mesh(new THREE.CylinderBufferGeometry(.015,.015,.6,4,1,!1),new t({color:16777215})),[0,0,.5],[Math.PI/2,0,0]]],RX:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.015,12,60,.3*Math.PI),new t({color:16711680})),[0,0,0],[n*Math.PI,-Math.PI/2,0]],[new THREE.Mesh(new THREE.CylinderBufferGeometry(.05,.05,.015,60,1,!1),new t({color:16711680})),[0,0,1],[Math.PI/2,0,0]]],RY:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.015,12,60,.3*Math.PI),new t({color:255})),[0,0,0],[Math.PI/2,0,.35*Math.PI]],[new THREE.Mesh(new THREE.CylinderBufferGeometry(.05,.05,.01,60,1,!1),new t({color:255})),[0,0,1]]]},this.pickerGizmos={Z:[[new THREE.Mesh(new THREE.CylinderBufferGeometry(.12,.12,.65,4,1,!1),new t({color:255,opacity:.25})),[0,0,.5],[Math.PI/2,0,0]]],RX:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.12,4,12,.3*Math.PI),new t({color:16711680,opacity:.25})),[0,0,0],[n*Math.PI,-Math.PI/2,0]]],RY:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.12,4,12,.3*Math.PI),new t({color:255,opacity:.25})),[0,0,0],[Math.PI/2,0,.35*Math.PI]]]},this.subPickerGizmos={Z:[[new THREE.Mesh(new THREE.CylinderBufferGeometry(.12,.12,.65,4,1,!1),new t({color:255,opacity:.25})),[0,0,.5],[Math.PI/2,0,0]]]},this.highlightGizmos={Z:[],RX:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.02,12,60,2*Math.PI),new t({color:16711680,opacity:1})),[0,0,0],[0,-Math.PI/2,-Math.PI/2],!1]],RY:[[new THREE.Mesh(new THREE.TorusBufferGeometry(1,.02,12,60,2*Math.PI),new t({color:255,opacity:1})),[0,0,0],[Math.PI/2,0,0],!1]]},this.hemiPickerGizmos={XYZ:[[new THREE.Mesh(new THREE.SphereBufferGeometry(1.2,8,8,0,Math.PI),new t({color:255})),null,null,!1]]}},this.setActivePlane=function(t,e,n){if("translate"==this.activeMode){var i=new THREE.Matrix4;e.applyMatrix4(i.extractRotation(this.planes.XY.matrixWorld).invert()),"X"==t&&(this.activePlane=this.planes.XY,!n&&Math.abs(e.y)>Math.abs(e.z)&&(this.activePlane=this.planes.XZ)),"Y"==t&&(this.activePlane=this.planes.XY,!n&&Math.abs(e.x)>Math.abs(e.z)&&(this.activePlane=this.planes.YZ)),"Z"==t&&(this.activePlane=this.planes.XZ,!n&&Math.abs(e.x)>Math.abs(e.y)&&(this.activePlane=this.planes.YZ))}else"rotate"==this.activeMode&&("RX"==t&&(this.activePlane=this.planes.YZ),"RY"==t&&(this.activePlane=this.planes.XZ),"RZ"==t&&(this.activePlane=this.planes.XY));this.hide(),this.show()},this.update=function(t,e){if("translate"==this.activeMode)THREE.TransformGizmo.prototype.update.apply(this,arguments);else if("rotate"==this.activeMode){THREE.TransformGizmo.prototype.update.apply(this,arguments);var n=new THREE.Matrix4,i=new THREE.Euler(0,0,1),o=new THREE.Quaternion,a=new THREE.Vector3(1,0,0),s=new THREE.Vector3(0,1,0),r=new THREE.Vector3(0,0,1),c=new THREE.Quaternion,l=new THREE.Quaternion,h=new THREE.Quaternion,u=e.clone();i.copy(this.planes.XY.rotation),o.setFromEuler(i),n.makeRotationFromQuaternion(o).invert(),u.applyMatrix4(n),this.traverse((function(t){o.setFromEuler(i),"RX"==t.name&&(c.setFromAxisAngle(a,Math.atan2(-u.y,u.z)),o.multiplyQuaternions(o,c),t.quaternion.copy(o)),"RY"==t.name&&(l.setFromAxisAngle(s,Math.atan2(u.x,u.z)),o.multiplyQuaternions(o,l),t.quaternion.copy(o)),"RZ"==t.name&&(h.setFromAxisAngle(r,Math.atan2(u.y,u.x)),o.multiplyQuaternions(o,h),t.quaternion.copy(o))}))}},this.show=function(){this.traverse((function(t){(null==n.parent||n.parent.useAllPickers||t.parent!=n.handles)&&(t.visible=!0),t.material&&(t.material.opacity=t.material.oldOpacity),t.parent!=n.pickers&&t.parent!=n.hemiPicker&&t.parent!=n.subPickers||(t.visible=!1),t.parent!=n.planes&&t.parent!=n.highlights||(t.visible=!1)})),this.activePlane.visible=!1},this.highlight=function(t){this.traverse((function(e){e.material&&e.material.highlight&&(e.name==t?(e.parent!=n.highlights&&e.parent!=n.handles||(e.visible=!0),e.material.highlight(!0)):(e.material.highlight(!1),e.material.opacity=.1))}))},this.init()}},THREE.TransformGizmoScale=class extends a{constructor(n){super(n),this.setHandlePickerGizmos=function(){var n=i(.125,.125,.125),a=o("X"),s=o("Y"),r=o("Z");this.handleGizmos={X:[[new THREE.Mesh(n,new t({color:16711680})),[.5,0,0],[0,0,-Math.PI/2]],[new THREE.Line(a,new e({color:16711680}))]],Y:[[new THREE.Mesh(n,new t({color:65280})),[0,.5,0]],[new THREE.Line(s,new e({color:65280}))]],Z:[[new THREE.Mesh(n,new t({color:255})),[0,0,.5],[Math.PI/2,0,0]],[new THREE.Line(r,new e({color:255}))]],XYZ:[[new THREE.Mesh(new THREE.BoxBufferGeometry(.125,.125,.125),new t({color:16777215,opacity:.25}))]]},this.pickerGizmos={X:[[new THREE.Mesh(new THREE.CylinderBufferGeometry(.2,0,1,4,1,!1),new t({color:16711680,opacity:.25})),[.6,0,0],[0,0,-Math.PI/2]]],Y:[[new THREE.Mesh(new THREE.CylinderBufferGeometry(.2,0,1,4,1,!1),new t({color:65280,opacity:.25})),[0,.6,0]]],Z:[[new THREE.Mesh(new THREE.CylinderBufferGeometry(.2,0,1,4,1,!1),new t({color:255,opacity:.25})),[0,0,.6],[Math.PI/2,0,0]]],XYZ:[[new THREE.Mesh(new THREE.BoxBufferGeometry(.4,.4,.4),new t({color:16777215,opacity:.25}))]]}},this.setActivePlane=function(t,e,n){var i=new THREE.Matrix4;e.applyMatrix4(i.extractRotation(this.planes.XY.matrixWorld).invert()),"X"==t&&(this.activePlane=this.planes.XY,!n&&Math.abs(e.y)>Math.abs(e.z)&&(this.activePlane=this.planes.XZ)),"Y"==t&&(this.activePlane=this.planes.XY,!n&&Math.abs(e.x)>Math.abs(e.z)&&(this.activePlane=this.planes.YZ)),"Z"==t&&(this.activePlane=this.planes.XZ,!n&&Math.abs(e.x)>Math.abs(e.y)&&(this.activePlane=this.planes.YZ)),"XYZ"==t&&(this.activePlane=this.planes.XYZE),this.hide(),this.show()},this.init()}};const s=new THREE.Vector3,r=new THREE.Vector3,c=new THREE.Raycaster;class l extends THREE.Object3D{constructor(t,e,n,i){switch(super(),e=void 0!==e?e:document,this.gizmo={},n){case"translate":this.gizmo[n]=new THREE.TransformGizmoTranslate(i);break;case"rotate":this.gizmo[n]=new THREE.TransformGizmoRotate(i);break;case"transrotate":this.gizmo[n]=new THREE.TransformGizmoTranslateRotate(i);break;case"scale":this.gizmo[n]=new THREE.TransformGizmoScale(i)}if(this.add(this.gizmo[n]),this.gizmo[n].hide(),this.object=void 0,this.snap=null,this.snapDelta=0,this.space="world",this.size=1,this.axis=null,this.useAllPickers=!0,this.unitX=new THREE.Vector3(1,0,0),this.unitY=new THREE.Vector3(0,1,0),this.unitZ=new THREE.Vector3(0,0,1),this.normal=new THREE.Vector3(0,0,1),"transrotate"===n){var o,a=[new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,1)],s=(new THREE.BufferGeometry).setFromPoints(a),r=new THREE.LineBasicMaterial({color:0,linewidth:2,depthTest:!1});this.startLine=new THREE.Line(s,r),a=[new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,1)],s=(new THREE.BufferGeometry).setFromPoints(a),r=new THREE.LineBasicMaterial({color:16770563,linewidth:2,depthTest:!1}),this.endLine=new THREE.Line(s,r),a=[new THREE.Vector3(0,-1,0),new THREE.Vector3(0,1,0)],s=(new THREE.BufferGeometry).setFromPoints(a),r=new THREE.LineDashedMaterial({color:0,linewidth:1,depthTest:!1}),this.centerLine=new THREE.Line(s,r),(o=THREE.ImageUtils.loadTexture(Autodesk.Viewing.Private.getResourceUrl("res/textures/centerMarker_X.png"))).magFilter=o.minFilter=THREE.NearestFilter,s=new THREE.CircleBufferGeometry(.1,32),r=new THREE.MeshBasicMaterial({opacity:1,side:THREE.DoubleSide,transparent:!0,map:o}),this.centerMark=new THREE.Mesh(s,r),this.centerMark.rotation.set(Math.PI/2,0,0),this.ticks={},(o=THREE.ImageUtils.loadTexture(Autodesk.Viewing.Private.getResourceUrl("res/textures/cardinalPoint.png"))).magFilter=o.minFilter=THREE.NearestFilter,r=new THREE.MeshBasicMaterial({depthTest:!1,opacity:1,transparent:!0,side:THREE.DoubleSide,map:o});var c=.25;this.ticks.RX=new THREE.Object3D,s=new THREE.PlaneBufferGeometry(.12,c);var l=new THREE.Mesh(s,r);l.position.set(0,0,-1.275),l.rotation.set(Math.PI/2,Math.PI/2,0),this.ticks.RX.add(l),(l=l.clone()).position.set(0,1.275,0),l.rotation.set(0,Math.PI/2,0),this.ticks.RX.add(l),(l=l.clone()).position.set(0,0,1.275),l.rotation.set(0,Math.PI/2,Math.PI/2),this.ticks.RX.add(l),(l=l.clone()).position.set(0,-1.275,0),l.rotation.set(0,Math.PI/2,0),this.ticks.RX.add(l),this.ticks.RY=new THREE.Object3D,(l=l.clone()).position.set(0,0,-1.275),l.rotation.set(Math.PI/2,0,0),this.ticks.RY.add(l),(l=l.clone()).position.set(-1.275,0,0),l.rotation.set(Math.PI/2,0,Math.PI/2),this.ticks.RY.add(l),(l=l.clone()).position.set(0,0,1.275),l.rotation.set(Math.PI/2,0,0),this.ticks.RY.add(l),(l=l.clone()).position.set(1.275,0,0),l.rotation.set(Math.PI/2,0,Math.PI/2),this.ticks.RY.add(l)}var h=this,u=!1,p=n,E={type:"change"},d={type:"mouseDown"},m={type:"mouseUp",mode:p},f={type:"objectChange"},v=new THREE.Vector3,T=new THREE.Vector3,w=new THREE.Vector3,y=new THREE.Vector3,g=1;this.clientScale=1;var R=new THREE.Matrix4,x=new THREE.Vector3,M=new THREE.Matrix4,H=new THREE.Vector3,b=new THREE.Quaternion,A=new THREE.Vector3,P=new THREE.Vector3,S=new THREE.Vector3,C=new THREE.Quaternion,V=new THREE.Quaternion,B=new THREE.Quaternion,k=new THREE.Quaternion,z=new THREE.Quaternion,I=new THREE.Vector3,O=new THREE.Vector3,X=new THREE.Matrix4,Y=new THREE.Matrix4,G=new THREE.Vector3,_=new THREE.Vector3,L=new THREE.Euler,j=new THREE.Matrix4,N=new THREE.Vector3;function Z(e,n){return THREE.TransformControls.intersectObjects(e.canvasX,e.canvasY,n,t,!0)}new THREE.Euler,this.attach=function(t){h.object=t,this.gizmo[p].show(),h.update(),h.updateUnitVectors()},this.detach=function(t){h.object=void 0,this.axis=null,this.gizmo[p].hide()},this.setMode=function(t){"scale"==(p=t||p)&&(h.space="local"),this.gizmo[p].show(),this.update(),h.dispatchEvent(E)},this.getPicker=function(){return h.gizmo[p].hemiPicker.children},this.setPosition=function(t){this.object.position.copy(t),this.update()},this.setNormal=function(t){b.setFromUnitVectors(this.normal,t),this.unitX.applyQuaternion(b),this.unitY.applyQuaternion(b),this.unitZ.applyQuaternion(b),this.normal.copy(t),this.object&&this.object.quaternion.multiply(b),this.update()},this.setRotation=function(t){this.object&&(this.object.quaternion.setFromRotationMatrix(t),this.update(),this.updateUnitVectors())},this.setSnap=function(t,e){h.snap=t,h.snapDelta=e},this.setSize=function(t){h.size=t,this.update(),h.dispatchEvent(E)},this.setSpace=function(t){h.space=t,this.update(),h.dispatchEvent(E)},this.update=function(n){if(void 0!==h.object){var i;if(h.object.updateMatrixWorld(),_.setFromMatrixPosition(h.object.matrixWorld),L.setFromRotationMatrix(M.extractRotation(h.object.matrixWorld)),t.updateMatrixWorld(),N.setFromMatrixPosition(t.matrixWorld),this.position.copy(_),this.gizmoOffset&&this.position.add(this.gizmoOffset),this.updateMatrixWorld(),this.quaternion.setFromEuler(L),this.normal.set(0,0,1),this.normal.applyEuler(L),t.isPerspective){var o=this.position.distanceTo(N);i=2*Math.tan(t.fov*Math.PI/360)*o}else i=t.top-t.bottom;var a=e.getBoundingClientRect();g=100*this.clientScale*i/a.height,this.scale.set(g,g,g),n&&this.gizmo[p].highlight(h.axis)}},this.setGizmoOffset=function(t){this.gizmoOffset=t||new THREE.Vector3(0,0,0),this.update()},this.updateUnitVectors=function(){this.unitX.set(1,0,0),this.unitY.set(0,1,0),this.unitZ.set(0,0,1),this.unitX.applyEuler(L),this.unitY.applyEuler(L),this.unitZ.applyEuler(L)},this.showRotationGizmos=function(t){for(var e=this.gizmo[p].handles.children,n=0;n!t.getDoNotCut())),m=[];const f=new THREE.Matrix4;D.start(p,(function(c,p,v,T){var w=v.getFragmentList();if(w.isFragVisible(c)&&(w.getWorldBounds(c,u),e.xBoxPlane(t,u))){const n=w.getGeometry(c),i=w.getMaterial(c);n&&!n.is2d&&!n.isLines&&i.cutplanes&&(h=i,w.getWorldMatrix(c,f),e.xMeshPlane(t,{geometry:n,matrixWorld:f,fragId:c},m))}if(T){if(m.length){var y=new THREE.Box3;e.convertToPlaneCoords(a,m,y);var g=new o.VertexBufferBuilder(!1,8*m.length),R=function(t){return t&&t.color||new THREE.Color(16777215)}(h),x=0|.25*R.r*255.5,M=0|.25*R.g*255.5,H=4278190080|(0|.25*R.b*255.5)<<16|M<<8|x,b=new e.EdgeSet(m,y,1e-6*y.getSize(new THREE.Vector3).length());b.snapEdges(),b.sanitizeEdges(),b.stitchContours();var A=b.triangulate({skipOpenContour:!0});if(A){for(let t=0;t{r.invalidate(!0,!0)}))}var W="Autodesk.Viewing.Extension.Section.SectionTool";r.setCutPlaneSetFor2DRendering(W);var U=[];function Q(t){function e(e){e&&e.traverse((function(e){e instanceof THREE.Mesh&&e.material&&(t?r.matman().adjustMaterialMRTSetting(e.material):e.material.needsUpdate=!0)}))}e(r.scene.getObjectByName("section3D")),e(r.sceneAfter.getObjectByName("section2D"))}function q(t,n){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;var o,a=(new THREE.Quaternion).setFromUnitVectors(new THREE.Vector3(0,0,1),t.normal);o=new THREE.PlaneBufferGeometry(i,i);var s=new THREE.MeshBasicMaterial({opacity:0,color:C,side:THREE.DoubleSide,depthTest:!1,depthWrite:!1,transparent:!0}),c=new e(o,s,t);const l=t.projectPoint(n,new THREE.Vector3);c.position.copy(l),c.quaternion.multiply(a);var h=r.currentLightPreset();h=Math.max(0,h);var u=Autodesk.Viewing.Private.LightPresets[h].bgColorGradient,p="rgb("+(255-u[0])+","+(255-u[1])+","+(255-u[2])+")",E=new THREE.LineBasicMaterial({color:p,linewidth:1,depthTest:!1,depthWrite:!1,transparent:!0}),d=c.geometry.getAttribute("position");const m=[];for(var f=0;f0){var i=n.matrixWorld.clone().invert();const t=new THREE.Vector3;e=n.geometry.getAttribute("position");for(let a=0;a0&&void 0!==arguments[0])||arguments[0];K((function(t){t instanceof e&&t.update()})),1===R.length&&F((new THREE.Plane).setComponents(R[0].x,R[0].y,R[0].z,R[0].w)),r.setCutPlaneSet(W,R,t)}function tt(t){for(var e=0;e0&&(1===R.length&&F((new THREE.Plane).setComponents(R[0].x,R[0].y,R[0].z,R[0].w)),r.setCutPlaneSet(W,R)),tt(t)}function nt(t,e){t.attach(e),t.setPosition(e.position),t.visible=!0}function it(t){if(!a||!t)return!1;var e=function(t){var e=new THREE.Vector3,n=t.geometry;return n.computeBoundingBox(),e.x=(n.boundingBox.max.x+n.boundingBox.min.x)/2,e.y=(n.boundingBox.max.y+n.boundingBox.min.y)/2,e.z=(n.boundingBox.max.z+n.boundingBox.min.z)/2,t.localToWorld(e),e}(t).sub(t.getWorldPosition(new THREE.Vector3));return a.setGizmoOffset(e),!0}function ot(t,e){let n=function(t,e){return[new THREE.Vector3(t.min.x,t.min.y,t.min.z).applyMatrix4(e),new THREE.Vector3(t.min.x,t.min.y,t.max.z).applyMatrix4(e),new THREE.Vector3(t.min.x,t.max.y,t.min.z).applyMatrix4(e),new THREE.Vector3(t.min.x,t.max.y,t.max.z).applyMatrix4(e),new THREE.Vector3(t.max.x,t.min.y,t.min.z).applyMatrix4(e),new THREE.Vector3(t.max.x,t.min.y,t.max.z).applyMatrix4(e),new THREE.Vector3(t.max.x,t.max.y,t.min.z).applyMatrix4(e),new THREE.Vector3(t.max.x,t.max.y,t.max.z).applyMatrix4(e)]}(t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:new THREE.Matrix4),i=Number.MIN_VALUE;for(let t=0;ti&&(i=o)}return i}this.setPlaneLocal=function(t){let e=t.clone().applyMatrix3(z).normalize();this.setPlane(e,void 0,!0,!0)},this.setPlane=function(t,e){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];var o=r.getVisibleBounds(),s=o.getCenter(new THREE.Vector3),c=new THREE.Group;c.applyMatrix4(B),c.updateMatrixWorld(),e||(e=this.getSectionDistance(t)),i&&function(t){return r.api.navigation.getEyeVector().dot(t)>0}(t)&&(t.negate(),e=-e),e=void 0!==e?e:-1*s.dot(t);var h=q(new THREE.Plane(t.clone().applyMatrix3(I).normalize(),e),s.clone().applyMatrix4(k),2*o.getBoundingSphere(new THREE.Sphere).radius);c.add(h),h.update(),R.push(h.planeVec),g.push(c),r.addOverlay(H,c),a&&(nt(a,h),h.material.opacity=0,it(h),a.showRotationGizmos(!0),x=a.getPicker()),$(n),l&&L()};var at,st,rt,ct,lt=(at=new THREE.Matrix3,st=new THREE.Vector3,rt=new THREE.Vector3,ct=new THREE.Vector3,function(t,e,n,i){at.set(t.normal.x,t.normal.y,t.normal.z,e.normal.x,e.normal.y,e.normal.z,n.normal.x,n.normal.y,n.normal.z);var o=at.determinant();return 0===o?null:(st.crossVectors(e.normal,n.normal).multiplyScalar(-t.constant),rt.crossVectors(n.normal,t.normal).multiplyScalar(-e.constant),ct.crossVectors(t.normal,e.normal).multiplyScalar(-n.constant),(i||new THREE.Vector3).copy(st).add(rt).add(ct).divideScalar(o))}),ht=function(t,e,n){return THREE.TransformControls.intersectObjects(t.canvasX,t.canvasY,e,r.camera,n)};function ut(){var t=r.scene.getObjectByName("section3D");t&&r.scene.remove(t);var e=r.sceneAfter.getObjectByName("section2D");e&&r.sceneAfter.remove(e)}this.isActive=function(){return l},this.getSectionDistance=function(t){var e=r.api.navigation.getEyeVector(),n=r.rayIntersect(new THREE.Ray(r.camera.position,e));return n&&n.intersectPoint&&-1*n.intersectPoint.dot(t)},this.setViewerSection=function(){let t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];var e;this.clearSection(t);var n=r.getCutPlaneSet("__set_view");if(1===n.length){a.clientScale=1;var i=n[0];e=new THREE.Vector3(i.x,i.y,i.z);var o=i.w;this.setPlane(e,o,t),M="SET_VIEW_PLANE",r.setCutPlaneSet("__set_view",void 0,t)}},this.setSection=function(t){var e;this.clearSection(),a.clientScale=1;var n=r.getCutPlaneSet("__set_view");switch(1===n.length&&"BOX"!==t&&"OBJ_SET_VIEW_PLANE"!==t&&(t="SET_VIEW_PLANE"),t){case"X":e=new THREE.Vector3(1,0,0),this.setPlaneLocal(e);break;case"Y":e=new THREE.Vector3(0,1,0),this.setPlaneLocal(e);break;case"Z":e=new THREE.Vector3(0,0,1),this.setPlaneLocal(e);break;case"OBJ_SET_VIEW_PLANE":case"SET_VIEW_PLANE":var i=n[0];e=new THREE.Vector3(i.x,i.y,i.z),this.setPlane(e,i.w);break;case"OBJ_BOX":case"BOX":!function(t){var e,n,i=[new THREE.Vector3(1,0,0),new THREE.Vector3(0,1,0),new THREE.Vector3(0,0,1),new THREE.Vector3(-1,0,0),new THREE.Vector3(0,-1,0),new THREE.Vector3(0,0,-1)],o=[[[1,2],[1,5],[2,4],[4,5]],[[3,5],[0,5],[2,3],[0,2]],[[1,3],[0,1],[3,4],[0,4]],[[1,5],[1,2],[4,5],[2,4]],[[2,3],[0,2],[3,5],[0,5]],[[0,1],[3,1],[0,4],[3,4]]],c=new THREE.Group,l=r.getVisibleBounds(),h=new THREE.Box3(l.min,l.getCenter(new THREE.Vector3)),u=h.getCenter(new THREE.Vector3),p=[],E=[],d=!1;if(t&&6===t.length){for(let e=0;e0&&void 0!==arguments[0])||arguments[0];for(a&&a.detach(),s&&s.detach();R.length>0;)R.pop();for(;g.length>0;){var e=g.pop();r.removeOverlay(H,e)}D.start(null),ut(),r.setCutPlaneSet(W,null,t)},this.isPlaneOn=function(){return p},this.showPlane=function(t){tt(t)},this.attachControl=function(t){a&&s&&(t?(nt(a,g[0].children[0]),a.highlight(),"BOX"===M&&nt(s,g[0])):(a.detach(),s.detach()))},this.resetSection=function(){this.setSection(M)},this.getNames=function(){return c},this.getName=function(){return c[0]},this.register=function(){},this.deregister=function(){this.clearSection(),A&&(r.removeOverlay(H,a),a.removeEventListener("change",_),a=null,r.removeOverlay(H,s),s.removeEventListener("change",_),s.removeEventListener("change",j),s=null,r.removeOverlayScene(H),n.removeEventListener(Autodesk.Viewing.CAMERA_CHANGE_EVENT,L),n.removeEventListener(Autodesk.Viewing.ISOLATE_EVENT,N),n.removeEventListener(Autodesk.Viewing.HIDE_EVENT,N),n.removeEventListener(Autodesk.Viewing.SHOW_EVENT,N),n.removeEventListener(Autodesk.Viewing.MODEL_TRANSFORM_CHANGED_EVENT,N),n.removeEventListener(Autodesk.Viewing.FRAGMENTS_LOADED_EVENT,N),n.removeEventListener(Autodesk.Viewing.FRAGMENTS_UNLOADED_EVENT,N),n.removeEventListener(Autodesk.Viewing.SCENE_UPDATED_EVENT,Z),A=!1)},this.getPriority=function(){return 70},this.activate=function(){X(Y()),function(){if(A)return r.addOverlay(H,a),void r.addOverlay(H,s);(a=new THREE.TransformControls(r.camera,r.canvas,"transrotate")).addEventListener("change",_),a.setSnap(Math.PI/2,Math.PI/36),(s=new THREE.TransformControls(r.camera,r.canvas,"translate")).addEventListener("change",_),s.addEventListener("change",j),void 0===r.overlayScenes[H]&&r.createOverlayScene(H),r.addOverlay(H,a),r.addOverlay(H,s),n.addEventListener(Autodesk.Viewing.CAMERA_CHANGE_EVENT,L),n.addEventListener(Autodesk.Viewing.ISOLATE_EVENT,N),n.addEventListener(Autodesk.Viewing.HIDE_EVENT,N),n.addEventListener(Autodesk.Viewing.SHOW_EVENT,N),n.addEventListener(Autodesk.Viewing.MODEL_TRANSFORM_CHANGED_EVENT,N),n.addEventListener(Autodesk.Viewing.FRAGMENTS_LOADED_EVENT,N),n.addEventListener(Autodesk.Viewing.FRAGMENTS_UNLOADED_EVENT,N),n.addEventListener(Autodesk.Viewing.SCENE_UPDATED_EVENT,Z),A=!0}(),l=!0,h=!1,P=!0,R=R||[],et(!0)},this.deactivate=function(){if(l=!1,h=!1,this.keepCutPlanesOnDeactivate){r.removeOverlay(H,a),r.removeOverlay(H,s);for(let t=0;t1?.25:0,(null===(i=g[0])||void 0===i?void 0:i.children.length)>1&&t!==n.object&&it(n.object),_(),j()}return!1},this.handleDoubleClick=function(){return!1},this.handleSingleTap=function(t){return this.handleSingleClick(t,0)},this.handleDoubleTap=function(){return!1},this.handleKeyDown=function(){return!1},this.handleKeyUp=function(){return!1},this.handleWheelInput=function(){return!1},this.handleButtonDown=function(t){return h=!0,!!s.onPointerDown(t)||a.onPointerDown(t)},this.handleButtonUp=function(t){return h=!1,u&&(u=!1,this.recomputePivot()),!!s.onPointerUp(t)||a.onPointerUp(t)},this.handleMouseMove=function(t){if(h){if(s.onPointerMove(t))return u=!0,$(),a.update(),G("Canvas","Box","translate"),!0;if(a.onPointerMove(t)){if(u=!0,$(),J(),M.includes("BOX"))G("Canvas","Box","transform");else{const t=-1!=a.axis.search("R")?"rotate":"translate";G("Canvas","Plane",t)}return!0}}if(s.visible=void 0!==s.object,"touch"!==t.pointerType){var e,n=t,i=ht(n,null===(e=g[0])||void 0===e?void 0:e.children);i&&(P=!1);var o=!!(P||i||ht(n,x,!0));a.visible=o,s.visible=s.visible&&o,tt(o)}return!!s.onPointerHover(t)||a.onPointerHover(t)},this.handleGesture=function(t){switch(t.type){case"dragstart":return b="drag",this.handleButtonDown(t,0);case"dragmove":return"drag"===b&&this.handleMouseMove(t);case"dragend":return"drag"===b&&(b=null,this.handleButtonUp(t,0))}return!1},this.handleBlur=function(){return!1},this.handleResize=function(){},this.handlePressHold=function(){return!1},this.recomputePivot=function(){var t=this.getSectionBoxValues(!0);if(t){var e=t.sectionBox;r.api.navigation.setPivotPoint(new THREE.Vector3(e[0]+.5*(e[3]-e[0]),e[1]+.5*(e[4]-e[1]),e[2]+.5*(e[5]-e[2])))}},this.getSectionBoxValues=function(t){var e=g[0];if(!e)return null;var n=e.children;if(n.length<6)return null;var i=n[0].position.x,o=n[1].position.y,a=n[2].position.z,s=n[3].position.x,c=n[4].position.y,l=n[5].position.z,h={x:0,y:0,z:0};return t||(h=r.model.getData().globalOffset||h),{sectionBox:[Math.min(s,i)+h.x,Math.min(o,c)+h.y,Math.min(a,l)+h.z,Math.max(s,i)+h.x,Math.max(o,c)+h.y,Math.max(a,l)+h.z],sectionBoxTransform:(new THREE.Matrix4).identity().toArray()}},this.getSectionPlaneValues=function(t){var e=g[0];if(!e)return null;var n=e.children;if(1!==n.length)return null;var i={x:0,y:0,z:0};t||(i=r.model.getData().globalOffset||i);var o=n[0].plane,a=o.constant-THREE.Vector3.prototype.dot.call(i,o.normal);return{sectionPlane:[o.normal.x,o.normal.y,o.normal.z,a]}},this.getSectionPlaneSet=function(){return r.getCutPlaneSet(W)},this.getSectionPlanes=function(){const t=r.getCutPlaneSet("__set_view");return t.length>0?t:r.getCutPlaneSet(W)},this.notifyCutplanesChanged=function(){var t=U.length;U.length=0;for(var e=r.getCutPlaneSets(),n=0;n2&&void 0!==arguments[2])||arguments[2];if(!t||!e)return!1;const s="OBJ_SET_VIEW_PLANE",c=-1*e.dot(t),l=new THREE.Plane(t,c);M=s;const h=[new THREE.Vector4(l.normal.x,l.normal.y,l.normal.z,l.constant)];r.setCutPlaneSet("__set_view",h),this.setSection(s),null===(n=a)||void 0===n||n.showRotationGizmos(o);const u=e.clone().sub(g[0].children[0].getWorldPosition(O));return null===(i=a)||void 0===i||i.setGizmoOffset(u),!0}};var s=n(5072),r=n.n(s),c=n(7825),l=n.n(c),h=n(7659),u=n.n(h),p=n(5056),E=n.n(p),d=n(540),m=n.n(d),f=n(1113),v=n.n(f),T=n(3412),w={};w.styleTagTransform=v(),w.setAttributes=E(),w.insert=u().bind(null,"head"),w.domAPI=l(),w.insertStyleElement=m();r()(T.A,w);T.A&&T.A.locals&&T.A.locals;const y=Autodesk.Viewing.Private,g=Autodesk.Viewing.UI,R=y.analytics;var x=function(t,e){Autodesk.Viewing.Extension.call(this,t,e),this.viewer=t,this.name="section",this.modes=["x","y","z","box"],this.buttons={},this.onViewerSetView=this.onViewerSetView.bind(this),this._onCutPlanesChanged=this._onCutPlanesChanged.bind(this),this._onShowAll=this._onShowAll.bind(this)};x.prototype=Object.create(Autodesk.Viewing.Extension.prototype),x.prototype.constructor=x;var M=x.prototype;M.load=function(){var t=this,e=this.viewer;this.tool=new a(e,{tintColor:{r:1,g:1,b:0},tintIntensity:.2}),e.toolController.registerTool(this.tool,this.setActive.bind(this)),this.sectionStyle=null,this.supportedStyles=["X","Y","Z","BOX"],this.displaySectionHatches=this.displaySectionHatches.bind(this),this.viewer.prefs.addListeners(y.Prefs3D.DISPLAY_SECTION_HATCHES,this.displaySectionHatches),e.addEventListener(Autodesk.Viewing.SET_VIEW_EVENT,this.onViewerSetView),e.addEventListener(Autodesk.Viewing.CUTPLANES_CHANGE_EVENT,this._onCutPlanesChanged),e.addEventListener(Autodesk.Viewing.SHOW_ALL_EVENT,this._onShowAll),e.addEventListener(Autodesk.Viewing.RENDER_OPTION_CHANGED_EVENT,t.tool.notifyRenderOptionChanged),this.HOTKEYS_ID="Autodesk.Section.Hotkeys";var n=[{keycodes:[Autodesk.Viewing.KeyCode.ESCAPE],onRelease:function(){if(0===t.viewer.getAggregateSelection().length)return t.deactivate()}}];return e.getHotkeyManager().pushHotkeys(this.HOTKEYS_ID,n),this.viewer.registerContextMenuCallback("Autodesk.Section",((t,e)=>{!function(t,e,n){var i;if(!n.hasSelected)return;const o=t.viewer,a=o.getAggregateSelection();if(1===a.length&&a[0].model.is2d())return;const s=o.impl.selector.getSelectionBounds(),r={title:"Section",target:[]};r.target.push({title:"Section Box",target:()=>{t.setSectionBox(s),R.track("viewer.section",{from:"Contextual",type:"Box",action:"Enable"})}});const c=a.map((t=>t.selection)).flat(),l=new Array,h=o.model.getInstanceTree();if(!h)return;c.forEach((t=>{h.enumNodeChildren(t,(t=>{0===h.getChildCount(t)&&l.push(t)}),!0)}));const u=a.map((t=>t.model.id)),p=o.impl.hitTest(n.canvasX,n.canvasY,!1,l,u);if(null!=p&&null!==(i=p.face)&&void 0!==i&&i.normal&&p.model&&-1!==l.indexOf(p.dbId)){var E;const e=new THREE.Matrix4;null===(E=p.model.getFragmentList())||void 0===E||E.getWorldMatrix(p.fragId,e);const n=(new THREE.Matrix3).getNormalMatrix(e),i=p.face.normal.clone().applyMatrix3(n).normalize();r.target.push({title:"Section Plane",target:()=>{t.setSectionPlane(i,p.point,!1),R.track("viewer.section",{from:"Contextual",type:"Plane",action:"Enable"})}})}e.push(r)}(this,t,e)})),this.viewer.loadExtension("Autodesk.CompGeom")},M.unload=function(){var t=this.viewer;return t.unregisterContextMenuCallback("Autodesk.Section"),t.getHotkeyManager().popHotkeys(this.HOTKEYS_ID),this.destroyUI(),t.removeEventListener(Autodesk.Viewing.SET_VIEW_EVENT,this.onViewerSetView),t.removeEventListener(Autodesk.Viewing.CUTPLANES_CHANGE_EVENT,this._onCutPlanesChanged),t.removeEventListener(Autodesk.Viewing.SHOW_ALL_EVENT,this._onShowAll),t.removeEventListener(Autodesk.Viewing.RENDER_OPTION_CHANGED_EVENT,this.tool.notifyRenderOptionChanged),this.viewer.prefs.removeListeners(y.Prefs3D.DISPLAY_SECTION_HATCHES,this.displaySectionHatches),t.toolController.deregisterTool(this.tool),this.tool=null,!0},M.toggle=function(){if(this.isActive())this.enableSectionTool(!1);else{var t=this.sectionStyle||"X";this.setSectionStyle(t,!0)}return this.isActive()},M.getSectionStyle=function(){return this.sectionStyle},M.setSectionStyle=function(t,e){if(-1===this.supportedStyles.indexOf(t))return!1;var n=this.isActive(),i=this.sectionStyle!==t||!e;return this.sectionStyle=t,n&&i?this.tool.setSection(t):n||(this.enableSectionTool(!0),i?this.tool.setSection(t):this.tool.attachControl(!0)),!0},M.setSectionFromPlane=function(t){if(this.deactivate(),t)this.tool.setSectionFromPlane(t),this.tool.attachControl(!1),this.isActive()||this.tool.showPlane(!1);else{this.tool.clearSection();var e=this.viewer.toolController.setIsLocked(!1);this.enableSectionTool(!1),this.viewer.toolController.setIsLocked(e)}},M.getSectionPlanes=function(){return this.tool.getSectionPlanes()},M.enableSectionTool=function(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];var n=this.viewer.toolController,i=this.tool.isActive();if(t&&!i)return n.activateTool("section"),this.sectionToolButton&&this.sectionToolButton.setState(Autodesk.Viewing.UI.Button.State.ACTIVE),!0;if(!t&&i){const t=this.tool.keepCutPlanesOnDeactivate;return this.tool.keepCutPlanesOnDeactivate=e,n.deactivateTool("section"),this.tool.keepCutPlanesOnDeactivate=t,this.sectionToolButton&&this.sectionToolButton.setState(Autodesk.Viewing.UI.Button.State.INACTIVE),!0}return t&&n.activateToolModality("section"),!1},M.getViewValues=function(t){var e=this.tool.getSectionBoxValues(t);if(e)return e;var n=this.tool.getSectionPlaneValues(t);return n||null},M.getState=function(t){const e=this.viewer.getFirstModel();if(e&&!e.is2d()){t.cutplanes=t.cutplanes||[];for(var n=this.tool.getSectionPlaneSet(),i=0;i=n&&e>=i?"x":n>e&&n>=i?"y":"z"},M.onViewerSetView=function(){this.deactivate()},M.onToolbarCreated=function(t){this.sectionToolButton=new g.ComboButton("toolbar-sectionTool"),this.sectionToolButton.setToolTip("Section analysis"),this.sectionToolButton.setIcon("adsk-icon-section-analysis"),this.createSubmenu(this.sectionToolButton);var e=t.getControl(Autodesk.Viewing.TOOLBAR.MODELTOOLSID);if(e){var n=e.getControl("toolbar-resetTool");n?e.addControl(this.sectionToolButton,{index:e.indexOf(n.getId())}):e.addControl(this.sectionToolButton,{index:0})}},M.createSubmenu=function(t){var e=this,n=this.viewer;function i(t,n){return e.buttons[n]=t,function(){var i=t.getState(),o=function(){t instanceof g.ComboButton==!1?e.activate(n):(e.enableSectionTool(!0),e.tool.attachControl(!0))};const a=-1!==n.toLowerCase().indexOf("box")?"Box":"Plane";i===g.Button.State.INACTIVE?(t.setState(g.Button.State.ACTIVE),Autodesk.Viewing.isMobileDevice()?setTimeout(o,1):o(),R.track("viewer.section",{from:"Toolbar",type:a,action:"Enable"})):i===g.Button.State.ACTIVE&&(t.setState(g.Button.State.INACTIVE),e.deactivate(),R.track("viewer.section",{from:"Toolbar",type:a,action:"Disable"})),e.sectionStyle=n.toUpperCase()}}function o(){var t,i=(t=new THREE.Vector3,function(e,n,i){return t.subVectors(e,n),t.lengthSq(){this.tool.updateCapMeshes((new THREE.Plane).setComponents(t.x,t.y,t.z,t.w))}))}},Autodesk.Viewing.theExtensionManager.registerExtension("Autodesk.Section",x)})(),Autodesk.Extensions.Section=i})(); +//# sourceMappingURL=Section.min.js.map \ No newline at end of file diff --git a/public/autodesk/extensions/Snapping/Snapping.min.js b/public/autodesk/extensions/Snapping/Snapping.min.js new file mode 100644 index 0000000..1a83029 --- /dev/null +++ b/public/autodesk/extensions/Snapping/Snapping.min.js @@ -0,0 +1,18 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var e={5439:(e,t,i)=>{"use strict";i.r(t),i.d(t,{intersectLines:()=>n,nearestPointOnCircularArc:()=>r});const r=(e,t,i,r,n,s)=>{const o=(s=s||new THREE.Vector2).copy(e).sub(t).normalize(),a=Math.atan2(o.y,o.x);if(Autodesk.Extensions.CompGeom.angleInsideArc(a,r,n))return o.multiplyScalar(i).add(t);const c=Autodesk.Extensions.CompGeom.getEllipsePoint(r,t.x,t.y,i,i),l=Autodesk.Extensions.CompGeom.getEllipsePoint(n,t.x,t.y,i,i),d=c.distanceToSquared(e)<=l.distanceToSquared(e);return s.copy(d?c:l),s},n=function(e,t,i,r,n,s){let o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1e-5;const a=(r.y-i.y)*(t.x-e.x)-(r.x-i.x)*(t.y-e.y);if(Math.abs(a)1||r<0||r>1)return null}return(s=s||new THREE.Vector2).x=e.x+c*(t.x-e.x),s.y=e.y+c*(t.y-e.y),s}},6450:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Snapper:()=>y});var r=i(4981),n=i(5439);const s=Autodesk.Viewing.MeasureCommon,o=s.EPSILON,a=s.SnapType,c=s.SnapResult;var l=.001;const d=Autodesk.Viewing,u=d.Private.VertexBufferReader;function h(e,t){return Math.abs(e-t)<=l}function p(e,t){return Math.abs(e.x-t.x)<=l&&Math.abs(e.y-t.y)<=l&&Math.abs(e.z-t.z)<=l}function g(e,t,i){if(t.equals(i))return e.distanceTo(t);var r,n,s=new THREE.Vector3,o=new THREE.Vector3;return s.subVectors(t,e),o.subVectors(i,t),n=s.dot(o),s.subVectors(i,t),(n=-n/s.dot(s))<0?r=e.distanceTo(t):n>1?r=e.distanceTo(i):(s.subVectors(e,t),o.subVectors(e,i),s.cross(o),o.subVectors(i,t),r=Math.sqrt(s.dot(s))/Math.sqrt(o.dot(o))),r}const E={Unknown:0,Line:1,CircularArc:2,EllipticalArc:3};class m{constructor(e){this.type=E.Unknown,this.viewportId=e,this.distance=0,this.lineStart=null,this.lineEnd=null,this.radius=0,this.radiusX=0,this.radiusY=0,this.center=null,this.startAngle=0,this.endAngle=0}fromLine(e,t){return this.type=E.Line,this.lineStart=e.clone(),this.lineEnd=t.clone(),this}fromCircularArc(e,t,i,r){return this.type=E.CircularArc,this.center=e.clone(),this.radius=t,this.start=i,this.end=r,this}fromEllipticalArc(e,t,i,r,n){return this.type=E.EllipticalArc,this.center=e.clone(),this.radiusX=t,this.radiusY=i,this.start=r,this.end=n,this}isLine(){return this.type===E.Line}isCircularArc(){return this.type===E.CirularArc}isEllipticalArc(){return this.type===E.EllipticalArc}getIntersection(e,t){if(this.isLine()&&e.isLine())return(0,n.intersectLines)(this.lineStart,this.lineEnd,e.lineStart,e.lineEnd,!1,t)}}const v=(e,t,i)=>{if(e.sort(((e,t)=>e.distance-t.distance)),e.length<2)return null;const r={viewportId:e[0].viewportId,snapPoint:new THREE.Vector3(0,0,t.z)},n=e[0];for(let s=1;s0?(c.faceId=h,c.applyMatrix4(n),c):null},this.faceSnapping=function(e,t){var i=new THREE.Vector3,r=new THREE.Vector3,n=new THREE.Vector3;const s=new THREE.Geometry;let o;o=t.index&&(t.index.array||t.ib);var a=t.groups;if(!a||0===a.length){let e;e=t.vb??t.attributes.position.array,a=[{start:0,count:o?o.length:e.length,index:0}]}const c=this.makeReadVertexFunc(t),l=c(e.a);for(var d=0;d0?this.getTrianglesOnSameFace(s,e,c):null},this.getTrianglesOnSameFace=function(e,t,i){const r=e.vertices,n=i(t.a),s=i(t.b),o=i(t.c),a=new THREE.Geometry,c=Math.pow(10,5),l=[],d={};let u=-1;for(let e=0;e0;){const e=h.shift();if(p.has(e))continue;p.add(e),g.push(e);const t=l[e];for(const i of t.edges)i.triangles.forEach((t=>t!==e&&h.push(t)))}const E=[];let m=0;return g.forEach((e=>{a.faces.push(new THREE.Face3(m++,m++,m++)),E.push(r[3*e]),E.push(r[3*e+1]),E.push(r[3*e+2])})),a.vertices=E,a},this.edgeSnappingWithTopology=function(e,t,r,n){let{matrixWorld:s}=n;const o=new THREE.Geometry;var a,c=Number.MAX_VALUE,l=new THREE.Vector3,d=new THREE.Vector3;if(void 0!==t.index&&null!=r){const i=this.makeReadVertexFunc(t);for(var u=0;u=c&&o.vertices.length>0&&(w=c,o.applyMatrix4(s),i.geomEdge=o)},this.extractLineGeometry=function(e,t){const i=this.makeReadVertexFunc(t),r=i(e.a),n=i(e.b),s=new THREE.Geometry;return s.vertices.push(r,n),s},this.edgeSnapping=function(e,t){const i=[],r=e.vertices.length;for(var n=!0,s=!0,o=!0,a=0;a=0;--g)t.push(i[a[g]]),t.push(i[a[g]+1]),i.splice(a[g],2)}while(a.length>0);return t},this.vertexSnappingWithTopology=function(e,t){var i=Number.MAX_VALUE,r=new THREE.Vector3;if(!e)return r;if(e.vertices.length>1){const o=e.vertices[0],a=e.vertices[e.vertices.length-1];var n=t.distanceTo(o),s=t.distanceTo(a);n<=s?(i=n,r=o.clone()):(i=s,r=a.clone())}return V=i,r},this.vertexSnapping=function(e,t){var i=Number.MAX_VALUE,r=new THREE.Vector3;const n=e.vertices.length;for(let s=0;s0&&e.y>=0?Math.atan(e.y/e.x):e.x>=0&&e.y<0?Math.atan(e.y/e.x)+2*Math.PI:e.x<0&&e.y<=0||e.x<=0&&e.y>0?Math.atan(e.y/e.x)+Math.PI:null};function b(e,t,i){this.viewer=e,this.snapper=t,this.lineGeom=new THREE.Geometry,this.circularArc=null,this.circularArcCenter,this.circularArcRadius,this.ellipticalArc=null,this.ellipticalArcCenter,this.minDist=Number.MAX_VALUE,this.matrix=new THREE.Matrix4,this.vpIdLine=null,this.vpIdCircular=null,this.vpIdElliptical=null,this.detectRadius=i,this.snapCandidates=[]}b.prototype.onLineSegment=function(e,t,i,r,n){var s=this.snapper.getIntersectPoint(),o=new THREE.Vector3(e,t,s.z),a=new THREE.Vector3(i,r,s.z);this.matrix&&(o.applyMatrix4(this.matrix),a.applyMatrix4(this.matrix));var c=g(s,o,a);c>this.detectRadius||(this.snapCandidates.push(new m(n,c).fromLine(o,a)),cthis.detectRadius)return;var h=this.snapper.angleVector2(c);let p;if(r>i&&h>=i&&h<=r)p=new THREE.CircleGeometry(s,100,i,r-i);else{if(!(r=i||h<=r)))return;p=new THREE.CircleGeometry(s,100,i,2*Math.PI-i+r)}p.vertices.splice(0,1),p.applyMatrix4((new THREE.Matrix4).makeTranslation(e,t,a.z)),this.circularArc=p,this.circularArcCenter=new THREE.Vector3(e,t,a.z),this.circularArcRadius=s,this.snapPoint=new THREE.Vector3(d.x,d.y,a.z),this.vpIdCircular=o},b.prototype.onEllipticalArc=function(e,t,i,r,n,o,a,c){var l=this.snapper.getIntersectPoint(),d=new THREE.Vector2(l.x,l.y),u=n-this.detectRadius,p=o-this.detectRadius,g=n+this.detectRadius,E=o+this.detectRadius,v=(d.x-e)*(d.x-e)/(u*u)+(d.y-t)*(d.y-t)/(p*p),y=(d.x-e)*(d.x-e)/(g*g)+(d.y-t)*(d.y-t)/(E*E),f=new THREE.Vector2(e,t);d.sub(f),d.x*=o,d.y*=n;var T=this.snapper.angleVector2(d);if(r>2*Math.PI&&(r=2*Math.PI),v>=1&&y<=1&&(r>i&&T>=i&&T<=r||r=i||T<=r))){var w=((e,t,i,r,n,s,o)=>{let a=new THREE.Geometry;for(let c=0;c1&&void 0!==arguments[1]?arguments[1]:{};if(!e)return;let{dbId:r,fragId:n,intersectPoint:s,model:o=E.model}=e;if(o.is3d())return;i.modelId=e.model?e.model.id:null,i.hasTopology=!1,i.intersectPoint=s;let c,l=1;if(E.impl.is2d||(c=o.getModelToViewerTransform(),c&&(l=c.getMaxScaleOnAxis(),i.intersectPoint=s.clone(),i.intersectPoint.applyMatrix4(o.getInverseModelToViewerTransform()))),i.radius=this.setDetectRadius(s)/l,!(null!=o.getFragmentList()))return S=!0,i.geomType=a.SNAP_VERTEX,i.geomVertex=s,void(c&&i.intersectPoint.applyMatrix4(c));var d=new b(E,this,i.radius);if(t.enumSegments){const e=i.intersectPoint.x-i.radius,r=i.intersectPoint.y-i.radius,n=i.intersectPoint.x+i.radius,s=i.intersectPoint.y+i.radius;t.enumSegments(e,r,n,s,d)}else{var h=n;if(void 0===h){if(!A)return;h=[]}else Array.isArray(h)||(h=[h]);for(var p=0;pe)))],r.forEach((e=>e.applyMatrix4(c))),i.circularArcRadius&&(i.circularArcRadius*=l),i.radius*=l}},this.snapping2DOverlay=function(e,t,r,n){i.hasTopology=!1,i.intersectPoint=e,i.radius=n||this.setDetectRadius(e);for(var s=new b(E,this,i.radius),o=0;oe.viewportId===P;e.snapCandidates=e.snapCandidates.filter(t)}const r=v(e.snapCandidates,t,e.detectRadius);if(r)return i.viewportIndex2d=r.viewportId,i.snapPoint=r.snapPoint,i.geomType=a.SNAP_INTERSECTION,i.geomVertex=r.snapPoint,void(S=!0);if(e.circularArc){if(i.viewportIndex2d=e.vpIdCircular,i.snapPoint=e.snapPoint,null!==P&&P!==i.viewportIndex2d)return;const r=e.circularArc.vertices[0],n=e.circularArc.vertices[e.circularArc.vertices.length-1];t.distanceTo(r)1e-5)return}i.intersectPoint.distanceTo(e)<2*i.radius&&(i.geomVertex=e,i.geomType=a.SNAP_MIDPOINT)}},this.setPerpendicular=function(e){i.isPerpendicular=e},this.lineStripToPieces=function(e){const t=e.vertices;for(var i=t.length-2;i>0;i--)t.splice(i,0,t[i])},this.setDetectRadius=function(e){var t=E.navigation,i=t.getCamera(),r=t.getPosition(),n=e.clone(),s=i.isPerspective?n.sub(r).length():t.getEyeVector().length(),o=t.getVerticalFov(),a=2*s*Math.tan(THREE.Math.degToRad(.5*o)),c=t.getScreenViewport(),l=this.getWindow().devicePixelRatio||1;return this.detectRadiusInPixels*a/(c.height*l)},this.handleButtonDown=function(){return R=!0,!1},this.handleButtonUp=function(){return R=!1,!1},this.handleMouseMove=function(e){return R||this.onMouseMove({x:e.canvasX,y:e.canvasY}),!1},this.handleSingleTap=function(e){return this.handleMouseMove(e)},this.handlePressHold=function(e){if(d.isMobileDevice())switch(e.type){case"press":x=!0,this.onMouseMove({x:e.canvasX,y:e.canvasY});break;case"pressup":this.onMouseMove({x:e.canvasX,y:e.canvasY}),x=!1}return!1},this.handleGesture=function(e){if(d.isMobileDevice()&&x)switch(e.type){case"dragstart":case"dragmove":this.onMouseMove({x:e.canvasX,y:e.canvasY});break;case"dragend":this.onMouseMove({x:e.canvasX,y:e.canvasY}),x=!1}return!1},this.onMouseDown=function(e){return this.onMouseMove(e)},this.onMouseMove=function(e){var t,r;this.clearSnapped();var n=E.impl.snappingHitTest(e.x,e.y,!1);if(!n&&A){var s=E.impl.clientToViewport(e.x,e.y);n={intersectPoint:E.impl.intersectGroundViewport(s)}}if(!n||!n.intersectPoint)return!1;const o=(null===(t=n.model)||void 0===t?void 0:t.isLeaflet())||E.impl.is2d&&(null===(r=E.model)||void 0===r?void 0:r.isLeaflet());if(n.face)this.snapping3D(n);else if(!n.dbId&&0!==n.dbId||o){(A||o)&&this.snappingRasterPixel(n)}else this.snapping2D(n);return this.snapMidpoint(),!(M&&!M(i))||(this.clearSnapped(),!1)}}d.GlobalManagerMixin.call(y.prototype)},4981:(e,t,i)=>{"use strict";i.r(t),i.d(t,{NullSnapperIndicator:()=>g,SnapperIndicator:()=>E,getXYZFromPos:()=>p});const r=Autodesk.Viewing.MeasureCommon,n=r.isEqualVectors,s=r.EPSILON,o=r.SnapType,a="MeasureTool-snapper-geometries",c="MeasureTool-snapper-indicator",l=.2,d=1.2;let u=null;const h=new THREE.Vector3;function p(e,t){return h.x=e.getX(t),h.y=e.getY(t),h.z=e.getZ(t),h}class g{isNull(){return!0}render(){}removeOverlay(e){}clearOverlay(e){}clearOverlays(){}addOverlay(e,t){}drawFace(e,t,i){}cylinderMesh(e,t,i,r){return new THREE.Mesh}renderGeometry(e){}renderVertexIndicator(e){}renderMidpointIndicator(e){}renderEdgeIndicator(e){}renderCircleIndicator(e){}renderPerpendicular(e){}renderPixelIndicator(e){}renderIndicator(e){}drawLine(e,t,i,r){}drawPoint(e,t,i){}drawCircle(e,t,i){}setScale(e){return 1}setPointScale(e){}setCircleScale(e){}setEdgeScale(e){}updatePointScale(e){}updateEdgeScale(e){}onCameraChange(){}destroy(){}}class E extends g{constructor(e,t){super(),this.viewer=e,this.snapper=t,this.overlayType=0,this.previewsIntersectPoint=null,this.viewer.impl.createOverlayScene(a),this.viewer.impl.createOverlayScene(c),this.geometryMaterial=new THREE.MeshPhongMaterial({color:52224,opacity:.5,transparent:!0,depthTest:!1,depthWrite:!1,side:THREE.DoubleSide}),this.indicatorMaterial=new THREE.MeshBasicMaterial({color:16742144,opacity:1,transparent:!1,depthTest:!1,depthWrite:!1,side:THREE.DoubleSide})}isNull(){return!1}render(){const e=this.snapper.getSnapResult();n(this.previewsIntersectPoint,e.intersectPoint,s)||this.clearOverlay(a),this.clearOverlay(c),e.isEmpty()||((this.snapper.renderSnappedGeometry||e.hasTopology&&this.snapper.renderSnappedTopology)&&this.renderGeometry(e),this.renderIndicator(e),this.previewsIntersectPoint=e.intersectPoint.clone())}removeOverlay(e){this.viewer.impl.clearOverlay(e,!0),this.viewer.impl.removeOverlayScene(e)}clearOverlay(e){this.removeOverlay(e),this.viewer.impl.createOverlayScene(e)}clearOverlays(){this.removeOverlay(a),this.viewer.impl.createOverlayScene(a),this.removeOverlay(c),this.viewer.impl.createOverlayScene(c),this.previewsIntersectPoint=null}addOverlay(e,t){this.viewer.impl.addOverlay(e,t)}drawFace(e,t,i){const r=new THREE.Mesh(e,t,!0);i===a&&(this.overlayType=1),this.addOverlay(i,r)}cylinderMesh(e,t,i,r){const n=(new THREE.Vector3).subVectors(t,e),s=new THREE.Matrix4;s.lookAt(e,t,(new THREE.Object3D).up),s.multiply((new THREE.Matrix4).set(1,0,0,0,0,0,1,0,0,-n.length(),0,0,0,0,0,1)),r=r||.5;let o=new THREE.CylinderGeometry(r,r,1,8,1,!0);const a=new THREE.Mesh(o,i);return o=null,a.applyMatrix4(s),a.position.x=(t.x+e.x)/2,a.position.y=(t.y+e.y)/2,a.position.z=(t.z+e.z)/2,a}renderGeometry(e){if(!n(this.previewsIntersectPoint,e.intersectPoint,s))switch(e.geomType){case o.SNAP_VERTEX:o.RASTER_PIXEL,this.drawPoint(e.geomVertex,this.geometryMaterial,a);break;case o.SNAP_EDGE:case o.SNAP_CURVEDEDGE:case o.SNAP_CIRCULARARC:case o.SNAP_MIDPOINT:this.drawLine(e.geomEdge,this.geometryMaterial,.3,a);break;case o.SNAP_FACE:case o.SNAP_CURVEDFACE:this.drawFace(e.geomFace,this.geometryMaterial,a)}}renderVertexIndicator(e){const t=r.getSnapResultPosition(e,this.viewer),i=this.setScale(t),n=d*i,s=this.viewer.navigation.getCameraRightVector().multiplyScalar(n),o=this.viewer.navigation.getCameraUpVector().multiplyScalar(n),a=new THREE.BufferGeometry,u=[],h=new THREE.Vector3;h.addVectors(t,s),h.addVectors(h,o),u[0]=h.clone(),h.subVectors(t,s),h.addVectors(h,o),u[1]=h.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.addVectors(t,s),h.subVectors(h,o),u[0]=h.clone(),h.subVectors(t,s),h.subVectors(h,o),u[1]=h.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.subVectors(t,s),h.subVectors(h,o),u[0]=h.clone(),h.subVectors(t,s),h.addVectors(h,o),u[1]=h.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.addVectors(t,s),h.subVectors(h,o),u[0]=h.clone(),h.addVectors(t,s),h.addVectors(h,o),u[1]=h.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c)}renderMidpointIndicator(e){const t=e.geomVertex,i=this.setScale(t),r=d*i,n=this.viewer.navigation.getCameraRightVector().multiplyScalar(r),s=this.viewer.navigation.getCameraUpVector().multiplyScalar(r),o=new THREE.BufferGeometry,a=[],u=new THREE.Vector3;u.addVectors(t,n),u.subVectors(u,s),a[0]=u.clone(),u.subVectors(t,n),u.subVectors(u,s),a[1]=u.clone(),o.setFromPoints(a),this.drawLine(o,this.indicatorMaterial,l,c),u.subVectors(t,n),u.subVectors(u,s),a[0]=u.clone(),u.addVectors(t,s),a[1]=u.clone(),o.setFromPoints(a),this.drawLine(o,this.indicatorMaterial,l,c),u.addVectors(t,n),u.subVectors(u,s),a[0]=u.clone(),u.addVectors(t,s),a[1]=u.clone(),o.setFromPoints(a),this.drawLine(o,this.indicatorMaterial,l,c)}renderEdgeIndicator(e){const t=r.getSnapResultPosition(e,this.viewer),i=this.setScale(t),n=d*i,s=this.viewer.navigation.getCameraRightVector().multiplyScalar(n),o=this.viewer.navigation.getCameraUpVector().multiplyScalar(n),a=new THREE.BufferGeometry,u=[],h=new THREE.Vector3;h.addVectors(t,s),h.subVectors(h,o),u[0]=h.clone(),u[1]=t.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.subVectors(t,s),h.subVectors(h,o),u[0]=h.clone(),u[1]=t.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.addVectors(t,o),u[0]=h.clone(),u[1]=t.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c)}renderCircleIndicator(e){const t=r.getSnapResultPosition(e,this.viewer);this.drawCircle(t,this.indicatorMaterial,c)}renderPerpendicular(e){const t=r.getSnapResultPosition(e,this.viewer),i=this.setScale(t),n=d*i,s=this.viewer.navigation.getCameraRightVector().multiplyScalar(n),o=this.viewer.navigation.getCameraUpVector().multiplyScalar(n),a=new THREE.BufferGeometry,u=[],h=new THREE.Vector3;u[0]=t.clone(),h.subVectors(t,s),u[1]=h.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.addVectors(t,s),h.subVectors(h,o),u[0]=h.clone(),h.subVectors(t,s),h.subVectors(h,o),u[1]=h.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.subVectors(t,s),h.subVectors(h,o),u[0]=h.clone(),h.subVectors(t,s),h.addVectors(h,o),u[1]=h.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),u[0]=t.clone(),h.subVectors(t,o),u[1]=h.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c)}renderPixelIndicator(e){const t=r.getSnapResultPosition(e,this.viewer),i=this.setScale(t),n=d*i,s=this.viewer.navigation.getCameraRightVector().multiplyScalar(n),o=this.viewer.navigation.getCameraUpVector().multiplyScalar(n),a=new THREE.BufferGeometry,u=[],h=new THREE.Vector3;h.subVectors(t,s),h.addVectors(h,o),u[0]=h.clone(),u[1]=t.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.addVectors(t,s),h.addVectors(h,o),u[0]=h.clone(),u[1]=t.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.addVectors(t,s),h.subVectors(h,o),u[0]=h.clone(),u[1]=t.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c),h.subVectors(t,s),h.subVectors(h,o),u[0]=h.clone(),u[1]=t.clone(),a.setFromPoints(u),this.drawLine(a,this.indicatorMaterial,l,c)}renderIndicator(e){if(e.isPerpendicular)this.renderPerpendicular(e);else if(e.snapToArc)e.isArc&&e.geomType===o.SNAP_CIRCULARARC&&this.viewer.model.is2d()&&!this.viewer.model.isPdf()&&this.renderVertexIndicator(e);else switch(e.geomType){case o.SNAP_VERTEX:case o.SNAP_INTERSECTION:this.renderVertexIndicator(e);break;case o.SNAP_MIDPOINT:this.renderMidpointIndicator(e);break;case o.SNAP_CIRCLE_CENTER:this.renderCircleIndicator(e);break;case o.SNAP_EDGE:case o.SNAP_CURVEDEDGE:this.renderEdgeIndicator(e);break;case o.SNAP_CIRCULARARC:this.viewer.model.is2d()?this.renderVertexIndicator(e):this.renderCircleIndicator(e);break;case o.SNAP_FACE:case o.SNAP_CURVEDFACE:this.renderVertexIndicator(e);break;case o.RASTER_PIXEL:this.renderPixelIndicator(e)}}drawLine(e,t,i,r){let n,s;r===a&&(this.overlayType=2),e instanceof THREE.Geometry?(console.warn("SnapperIndicator.drawLine(geom, material, width, overlayName): THREE.Geometry has been depecrated and the geom argument should use a THREE.BufferGeometry instead"),n=e.vertices.length):(s=e.getAttribute("position"),n=s.count);for(let o=0;o{var r=Autodesk.Viewing,n=AutodeskNamespace("Autodesk.Viewing.Extensions.Snapping");function s(t,i){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e.exports[r]=t[r],i[r]=t[r])}s(i(5439),n),s(i(6450),n),s(i(4981),n);class o extends r.Extension{constructor(e,t){super(e,t)}load(){return this.viewer.loadExtension("Autodesk.CompGeom")}unload(){return!0}activate(){return!0}deactivate(){return!1}}r.theExtensionManager.registerExtension("Autodesk.Snapping",o)}},t={};function i(r){var n=t[r];if(void 0!==n)return n.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,i),s.exports}i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r=i(2573);Autodesk.Extensions.Snapping=r})(); +//# sourceMappingURL=Snapping.min.js.map \ No newline at end of file diff --git a/public/autodesk/extensions/ViewCubeUi/ViewCubeUi.min.js b/public/autodesk/extensions/ViewCubeUi/ViewCubeUi.min.js new file mode 100644 index 0000000..413fe8e --- /dev/null +++ b/public/autodesk/extensions/ViewCubeUi/ViewCubeUi.min.js @@ -0,0 +1,18 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */(()=>{var e={4962:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var o=n(1354),i=n.n(o),r=n(6314),a=n.n(r)()(i());a.push([e.id,".viewcube,.viewcubeWrapper{display:block;position:absolute;outline:none;width:170px;height:170px;right:-1px;top:-1px;opacity:.7;margin:0;-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;-ms-transition:opacity .2s ease;-o-transition:opacity .2s ease;transition:opacity .2s ease}.viewcubeWrapper{pointer-events:none}.viewcube{pointer-events:auto}.rewindFrame{background-color:#fff;position:absolute;height:56px;width:56px;z-index:1002}.dropDownMenu{position:absolute;min-width:220px;margin:0;z-index:1001;background-color:#fff;font-family:sans-serif;font-size:14px;list-style-type:none;border:solid;border-width:1px;border-color:#979797}.dropDownMenuItem{position:relative;width:calc(100% - 24px);height:21px;padding-left:24px;padding-top:4px;background-color:#fff;cursor:pointer}.dropDownMenuCheckbox{position:relative;width:calc(100% - 4px);padding-top:4px;height:21px;margin-left:4px;background-color:#fff;cursor:pointer}.dropDownMenuCheck{padding-top:2px;cursor:pointer}.dropDownMenuCheckText{position:relative;padding-left:2px;margin:0;cursor:pointer}.dropDownMenuItemDisabled{color:#999;position:relative;width:calc(100% - 5px);height:23px;background-color:#fff;cursor:pointer}.dropDownMenuItem:hover{background-color:#e7eef6}.dropDownMenuCheckbox:hover{background-color:#e7eef6}.textBox{font-size:15px;background-color:#000;opacity:.6;padding:2px 10px;border-radius:2px;position:fixed;display:none;font-family:Monospace;color:#fff;z-index:1000}#colorCode{position:absolute;left:0px;top:0px}#text,#steeringWheel{position:absolute;left:0px;top:0px;z-index:900}.homeViewWrapper{display:block;outline:none;margin:18px 0px 0px -20px;opacity:.7;width:24px;height:24px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAYtJREFUeNrslTFrwkAUx98Vh0DOTfwC+QYuZiihVOmQJZi5LiltJic/gkuWujhdoaHQzu1WaCUdnHQxkP2+gZtBRaGvSwLXcDHaYgulDx5cjnf/3733cncEEeGQdgQHtoMDSumAEFIU2wKARjIOAOAJAKCwxIgIO/TBtixrGIbhIgzDhWVZQwCwxfV5vgvANk3zJYqiJeccOecYRdEyhRQBSkU7bzabl57nGaqqKumkqqpKr9c73mw274QQQMTHwh7kiff7/RNRXIR4nmes1+utEJKWJ9Nk2zCMi8FgcEopVbalGMfxqtPpvI1Go1sZRAawdV13GGONInER4rpuMB6P/Swkew5a+4oDAFBKFcZYQ9d1hxDSysvArNVqru/7Z+VyWfnKoZrP5yvHcV6n0ylDxOcs4HoymVxVKhUqW6xp2oP4zTk/l8XNZrO4Xq/fIGI3W6Jqnrhg7cRzLdGoyn7TQNO0rbsrMiHLQAa4S/z+O5cbIrb/1nX9c++BrNnZ+T1jPh+0/x78GuBjAFsN4U22Zd1EAAAAAElFTkSuQmCC);cursor:pointer;pointer-events:auto}.homeViewWrapper:hover{opacity:1}.homeViewWrapper.no-viewcube{position:absolute;right:12px;top:10px;margin:0}.homeViewMenu{display:none;position:absolute;right:10px;top:28px;background-color:#fff;border:1px solid #979797;z-index:1}.homeViewMenuItem{padding:5px 20px;font-family:sans-serif;font-size:14px;cursor:pointer;z-index:2}.homeViewMenuItem:hover{background-color:#e7eef6}.homeViewWrapper .homeViewMenuHandle{display:none;position:relative;left:18px;top:18px}","",{version:3,sources:["webpack://./extensions/ViewCubeUi/ViewCubeUi.css"],names:[],mappings:"AAAA,2BAA2B,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,mCAAmC,CAAC,gCAAgC,CAAC,+BAA+B,CAAC,8BAA8B,CAAC,2BAA2B,CAAC,iBAAiB,mBAAmB,CAAC,UAAU,mBAAmB,CAAC,aAAa,qBAAqB,CAAC,iBAAiB,CAAC,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,cAAc,iBAAiB,CAAC,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,cAAc,CAAC,oBAAoB,CAAC,YAAY,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,kBAAkB,iBAAiB,CAAC,uBAAuB,CAAC,WAAW,CAAC,iBAAiB,CAAC,eAAe,CAAC,qBAAqB,CAAC,cAAc,CAAC,sBAAsB,iBAAiB,CAAC,sBAAsB,CAAC,eAAe,CAAC,WAAW,CAAC,eAAe,CAAC,qBAAqB,CAAC,cAAc,CAAC,mBAAmB,eAAe,CAAC,cAAc,CAAC,uBAAuB,iBAAiB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,0BAA0B,UAAU,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,WAAW,CAAC,qBAAqB,CAAC,cAAc,CAAC,wBAAwB,wBAAwB,CAAC,4BAA4B,wBAAwB,CAAC,SAAS,cAAc,CAAC,qBAAqB,CAAC,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,cAAc,CAAC,YAAY,CAAC,qBAAqB,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAiB,aAAa,CAAC,YAAY,CAAC,yBAAyB,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,4qIAA4qI,CAAC,cAAc,CAAC,mBAAmB,CAAC,uBAAuB,SAAS,CAAC,6BAA6B,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,YAAY,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,SAAS,CAAC,kBAAkB,gBAAgB,CAAC,sBAAsB,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,wBAAwB,wBAAwB,CAAC,qCAAqC,YAAY,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ",sourcesContent:[".viewcube,.viewcubeWrapper{display:block;position:absolute;outline:none;width:170px;height:170px;right:-1px;top:-1px;opacity:.7;margin:0;-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;-ms-transition:opacity .2s ease;-o-transition:opacity .2s ease;transition:opacity .2s ease}.viewcubeWrapper{pointer-events:none}.viewcube{pointer-events:auto}.rewindFrame{background-color:#fff;position:absolute;height:56px;width:56px;z-index:1002}.dropDownMenu{position:absolute;min-width:220px;margin:0;z-index:1001;background-color:#fff;font-family:sans-serif;font-size:14px;list-style-type:none;border:solid;border-width:1px;border-color:#979797}.dropDownMenuItem{position:relative;width:calc(100% - 24px);height:21px;padding-left:24px;padding-top:4px;background-color:#fff;cursor:pointer}.dropDownMenuCheckbox{position:relative;width:calc(100% - 4px);padding-top:4px;height:21px;margin-left:4px;background-color:#fff;cursor:pointer}.dropDownMenuCheck{padding-top:2px;cursor:pointer}.dropDownMenuCheckText{position:relative;padding-left:2px;margin:0;cursor:pointer}.dropDownMenuItemDisabled{color:#999;position:relative;width:calc(100% - 5px);height:23px;background-color:#fff;cursor:pointer}.dropDownMenuItem:hover{background-color:#e7eef6}.dropDownMenuCheckbox:hover{background-color:#e7eef6}.textBox{font-size:15px;background-color:#000;opacity:.6;padding:2px 10px;border-radius:2px;position:fixed;display:none;font-family:Monospace;color:#fff;z-index:1000}#colorCode{position:absolute;left:0px;top:0px}#text,#steeringWheel{position:absolute;left:0px;top:0px;z-index:900}.homeViewWrapper{display:block;outline:none;margin:18px 0px 0px -20px;opacity:.7;width:24px;height:24px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAYtJREFUeNrslTFrwkAUx98Vh0DOTfwC+QYuZiihVOmQJZi5LiltJic/gkuWujhdoaHQzu1WaCUdnHQxkP2+gZtBRaGvSwLXcDHaYgulDx5cjnf/3733cncEEeGQdgQHtoMDSumAEFIU2wKARjIOAOAJAKCwxIgIO/TBtixrGIbhIgzDhWVZQwCwxfV5vgvANk3zJYqiJeccOecYRdEyhRQBSkU7bzabl57nGaqqKumkqqpKr9c73mw274QQQMTHwh7kiff7/RNRXIR4nmes1+utEJKWJ9Nk2zCMi8FgcEopVbalGMfxqtPpvI1Go1sZRAawdV13GGONInER4rpuMB6P/Swkew5a+4oDAFBKFcZYQ9d1hxDSysvArNVqru/7Z+VyWfnKoZrP5yvHcV6n0ylDxOcs4HoymVxVKhUqW6xp2oP4zTk/l8XNZrO4Xq/fIGI3W6Jqnrhg7cRzLdGoyn7TQNO0rbsrMiHLQAa4S/z+O5cbIrb/1nX9c++BrNnZ+T1jPh+0/x78GuBjAFsN4U22Zd1EAAAAAElFTkSuQmCC);cursor:pointer;pointer-events:auto}.homeViewWrapper:hover{opacity:1}.homeViewWrapper.no-viewcube{position:absolute;right:12px;top:10px;margin:0}.homeViewMenu{display:none;position:absolute;right:10px;top:28px;background-color:#fff;border:1px solid #979797;z-index:1}.homeViewMenuItem{padding:5px 20px;font-family:sans-serif;font-size:14px;cursor:pointer;z-index:2}.homeViewMenuItem:hover{background-color:#e7eef6}.homeViewWrapper .homeViewMenuHandle{display:none;position:relative;left:18px;top:18px}"],sourceRoot:""}]);const s=a},6314:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",o=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),o&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),o&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,o,i,r){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(o)for(var s=0;s0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=r),n&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=n):u[2]=n),i&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=i):u[4]="".concat(i)),t.push(u))}},t}},1354:e=>{"use strict";e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if("function"==typeof btoa){var o=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),i="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(o),r="/*# ".concat(i," */");return[t].concat([r]).join("\n")}return[t].join("\n")}},5072:e=>{"use strict";var t=[];function n(e){for(var n=-1,o=0;o{"use strict";var t={};e.exports=function(e,n){var o=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(n)}},540:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},5056:(e,t,n)=>{"use strict";e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},7825:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var o="";n.supports&&(o+="@supports (".concat(n.supports,") {")),n.media&&(o+="@media ".concat(n.media," {"));var i=void 0!==n.layer;i&&(o+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),o+=n.css,i&&(o+="}"),n.media&&(o+="}"),n.supports&&(o+="}");var r=n.sourceMap;r&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),t.styleTagTransform(o,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},1113:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}}},t={};function n(o){var i=t[o];if(void 0!==i)return i.exports;var r=t[o]={id:o,exports:{}};return e[o](r,r.exports,n),r.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nc=void 0;var o={};(()=>{"use strict";n.r(o),n.d(o,{ViewCubeUi:()=>U});const e=THREE;let t={uniforms:{tCube:{type:"t",value:null},tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;",e.ShaderChunk.common,e.ShaderChunk.logdepthbuf_pars_vertex,"void main() {","\tvWorldPosition = transformDirection( position, modelMatrix );","\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",e.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform samplerCube tCube;","uniform float tFlip;","varying vec3 vWorldPosition;",e.ShaderChunk.common,e.ShaderChunk.logdepthbuf_pars_fragment,"void main() {","\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );",e.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")};const i=Autodesk.Viewing,r=i.Private,a=r.DDSLoader,{createShaderMaterial:s}=r.ShaderUtils,c=r.WebGLRenderer,p=r.logger,u=i.isMobileDevice,{errorCodeString:A,ErrorCodes:l}=i,h=i.endpoint,d=i.getGlobal,m=i.GlobalManagerMixin,w=1e-5,v=e.MeshBasicMaterial;var f=function(e){return Math.abs(e-1)<1e-12},C=function(e){return!(!f(e.length())||!f(Math.abs(e.x))&&!f(Math.abs(e.y))&&!f(Math.abs(e.z)))};const g=12040636;function b(t){var n=t/2,o=16711680,r=65280,a=255,s=new e.Matrix4,c=[],p=new e.PlaneBufferGeometry(50,50),u=function(t,n){var o=i.getGlobal().document.createElement("canvas");o.width=o.height=128;var r=o.getContext("2d");r.font="128px Arial",r.fillStyle="rgba(255,255,255,1)",r.textAlign="center",r.textBaseline="middle",r.fillText(t,o.width/2,o.height/2);var a=new e.Texture(o);return a.needsUpdate=!0,new e.Mesh(p,new v({map:a,side:e.DoubleSide,transparent:!0,color:n,depthWrite:!1,depthTest:!0}))};this.triadScene=new e.Scene,this.triadLabelScene=new e.Scene;var A=new e.BoxGeometry(t,10,10),l=new e.Mesh(A,new v({color:o})),h=new e.Mesh(A,new v({color:r})),d=new e.Mesh(A,new v({color:a}));l.applyMatrix4(s.makeTranslation(5,-n,-n)),h.applyMatrix4(s.makeRotationZ(Math.PI/2)),h.applyMatrix4(s.makeTranslation(-n,5,-n)),d.applyMatrix4(s.makeRotationY(Math.PI/2)),d.applyMatrix4(s.makeTranslation(-n,-n,5)),this.triadScene.add(l),this.triadScene.add(h),this.triadScene.add(d);var m=u("X",o),w=u("Y",r),g=u("Z",a),b=function(e){var t=-(50+n)/2-20,o=n+50;m.position.set(o,t,t),w.position.set(t,o,t),g.position.set(t,t,o),e&&(m.position.applyQuaternion(e),w.position.applyQuaternion(e),g.position.applyQuaternion(e))};b(),c.push(m),c.push(w),c.push(g),this.triadLabelScene.add(m),this.triadLabelScene.add(w),this.triadLabelScene.add(g),this.orient=function(t,n){if(C(t)&&C(n)&&!(this.up&&this.front&&t.equals(this.up)&&n.equals(this.front))){this.up=t.clone(),this.front=n.clone();var o,i,r,a,s=0,c=0;t.x?(o="x",i="y",r="z",s=2*Math.PI/3):t.y?(o="y",i="z",r="x"):t.z&&(o="z",i="x",r="y",s=-2*Math.PI/3),f(-n[i])?c=Math.PI:n[r]&&(c=-n[r]*t[o]*Math.PI/2),a=f(-t[o])?Math.PI:0;var p=new e.Quaternion,u=new e.Quaternion,A=new e.Vector3(1,1,1);A.normalize(),u.setFromAxisAngle(A,s),p.setFromAxisAngle(t,c),u.multiply(p),p.setFromAxisAngle(n,a),u.multiply(p),b(u),this.triadScene.setRotationFromQuaternion(u)}},this.getSprites=function(){return c}}function x(n,o,i,f,x){var y=this;m.call(this);var V=o,M=o.camera;o.setCube(this);const B=V.center.clone().sub(M.position).normalize(),P=V.sceneFrontDirection.clone().cross(V.sceneUpDirection),E=B.dot(V.sceneUpDirection),T=B.dot(V.sceneFrontDirection),I=B.dot(P);1-Math.abs(E)0?"bottom":"top":1-Math.abs(T)0?"front":"back":1-Math.abs(Math.abs(I))0?"left":"right":y.currentFace="front",y.showTriad=x&&x.showTriad,y.localizeResourcePath=f;var k,S,R,F,D,z,L,Y,O,U,q,Q,N,W=["top,front","top right","top,left","top,back","bottom,front","bottom,right","bottom,left","bottom,back","left,front","front,right","right,back","back,left"],X=["front,top,right","back,top,right","front,top,left","back,top,left","front,bottom,right","back,bottom,right","front,bottom,left","back,bottom,left"],G=["Go Home",null,"Orthographic","Perspective","Perspective with Ortho Faces",null,"Set current view as Home","Focus and set as Home","Reset Home",null,"Set current view as Front","Set current view as Top","Reset orientation"],H=[!0,null,!0,!0,!0,null,!0,!0,!0,null,!0,!0,!0],Z=[null,null,function(){return!V.orthographicFaces&&!M.isPerspective},function(){return!V.orthographicFaces&&M.isPerspective},function(){return V.orthographicFaces},null,null,null,null,null,null,null,null],K=[];y.pcam=new e.PerspectiveCamera(45,1,1,2e3),y.ocam=new e.OrthographicCamera(-265,265,265,-265,-1e3,1e3),y.ocam.fov=y.pcam.fov,y.ocam.aspect=y.pcam.aspect,y.camera=M.isPerspective?y.pcam:y.ocam,y.camera.position.copy(M.position),y.center=new e.Vector3(0,0,0),y.camera.lookAt(y.center);var j,J,_,$,ee,te,ne,oe=[],ie=[],re=[],ae=[],se=[],ce=null,pe=null,ue=null,Ae=0,le=0,he=!0,de=!1,me=!1,we=!1,ve=-1!=navigator.userAgent.search("Chrome"),fe=-1!=navigator.platform.search("Win32"),Ce=!1,ge=!1,be=null,xe=[];this.width=0,this.height=0,this.animSpeed=500,this.animate=!0,this.compass=!1,this.viewScaleFactorCompass=1.5,this.viewScale=1,this.draggable=!0,this.wantHomeButton=!1,this.wantRollArrows=!0,this.wantContextMenu=!0,this.inactiveOpacity=.5;var ye=function(e){var t=e.getBoundingClientRect();return{x:t.left,y:t.top,w:t.width,h:t.height}},Ve=function(e){e.preventDefault(),e.stopPropagation();var t=y.getDocument();me=t.pointerLockElement===i||t.mozPointerLockElement===i||t.webkitPointerLockElement===i},Me=function(){y.renderCompass?(y.rollMesh.position.set(Ae+30,Ae+30,0),y.rollLeftMesh.position.set(Ae+30,1.5*Ae,.1),y.rollRightMesh.position.set(1.5*Ae,Ae+30,.1),y.contextMesh.position.set(1.6*Ae,-1.6*Ae,0)):(y.rollMesh.position.set(.5*Ae+20,.5*Ae+20,0),y.rollLeftMesh.position.set(.5*Ae+20,Ae+20,.1),y.rollRightMesh.position.set(Ae+20,.5*Ae+20,.1),y.contextMesh.position.set(Ae,-Ae,0))},Be=function(){V.navApi.isActionEnabled("orbit")&&(i.style.opacity="1.0",ge=!1),requestAnimationFrame(y.render)},Pe=function(e){if(ge||V.viewCubeMenuOpen||!V.navApi.isActionEnabled("orbit"))V.navApi.isActionEnabled("orbit")&&(i.style.opacity=1);else{var t=Math.max(4*Math.abs((e.clientX-ne.x)/ne.w-.5)-1,0),n=Math.max(4*Math.abs((e.clientY-ne.y)/ne.h-.5)-1,0),o=Math.max(0,Math.min(Math.sqrt(t*t+n*n),1));i.style.opacity=1-o*(1-y.inactiveOpacity)}},Ee=function(){V.viewCubeMenuOpen||(i.style.opacity=y.inactiveOpacity,ge=!0,requestAnimationFrame(y.render))},Te=function(t){var n=new Image,o=y.getWindow(),i=h.getUseCredentials()&&(-1===t.indexOf("://")||-1!==t.indexOf(o.location.host));n.crossOrigin=i?"use-credentials":"anonymous";var r=new e.Texture(n);return n.onload=function(){r.needsUpdate=!0,++le>=11&&requestAnimationFrame(y.render)},n.src=t,r},Ie=function(){var e,t,n=[],o=[];for(n[0]=Qe(0,0),n[1]=Qe(0,Math.PI/2),n[2]=Qe(0,-Math.PI/2),n[3]=Qe(0,Math.PI),n[4]=Qe(Math.PI/2,0),n[5]=Qe(Math.PI/2,Math.PI/2),n[6]=Qe(Math.PI/2,-Math.PI/2),n[7]=Qe(Math.PI/2,Math.PI),o[0]=qe(0,0,0),o[1]=qe(0,Math.PI/2,0),o[2]=qe(0,-Math.PI/2,0),o[3]=qe(0,Math.PI,0),o[4]=qe(Math.PI/2,0,0),o[5]=qe(Math.PI/2,Math.PI/2,0),o[6]=qe(Math.PI/2,-Math.PI/2,0),o[7]=qe(Math.PI/2,Math.PI,0),o[8]=qe(0,0,Math.PI/2),o[9]=qe(0,0,-Math.PI/2),o[10]=qe(-Math.PI/2,0,-Math.PI/2),o[11]=qe(-Math.PI,0,-Math.PI/2),oe.push(Ue(0,0)),oe[0].name="front",re.push(oe[0]),se.push(oe[0]),R.add(oe[0]),oe.push(Ue(0,Math.PI/2)),oe[1].name="right",re.push(oe[1]),se.push(oe[1]),R.add(oe[1]),oe.push(Ue(0,Math.PI)),oe[2].name="back",re.push(oe[2]),se.push(oe[2]),R.add(oe[2]),oe.push(Ue(0,-Math.PI/2)),oe[3].name="left",re.push(oe[3]),se.push(oe[3]),R.add(oe[3]),oe.push(Ue(Math.PI/2,0)),oe[4].name="bottom",re.push(oe[4]),se.push(oe[4]),R.add(oe[4]),oe.push(Ue(-Math.PI/2,0)),oe[5].name="top",re.push(oe[5]),se.push(oe[5]),R.add(oe[5]),e=oe.length,t=0;t0?(n.clientX=e.touches[0].clientX,n.clientY=e.touches[0].clientY,n.pageX=e.touches[0].pageX,n.pageY=e.touches[0].pageY,n.screenX=e.touches[0].screenX,n.screenY=e.touches[0].screenY,n.movementX=n.screenX-t.prevX,n.movementY=n.screenY-t.prevY,n.which=V.navApi.getUseLeftHandedInput()?3:1):n=t.prevCoords:(n.clientX=e.clientX,n.clientY=e.clientY,n.pageX=e.pageX,n.pageY=e.pageY,n.screenX=e.screenX,n.screenY=e.screenY,n.which=e.which,de?(n.movementX=e.movementX||e.mozMovementX||e.webkitMovementX||0,n.movementY=e.movementY||e.mozMovementY||e.webkitMovementY||0):(n.movementX=n.screenX-t.prevX,n.movementY=n.screenY-t.prevY)),t.prevX=n.screenX,t.prevY=n.screenY,t.prevCoords=n,n}var Fe=function(e){if(e.preventDefault(),e.stopPropagation(),V.navApi.isActionEnabled("orbit")&&!V.currentlyAnimating){var t,n=Re(e,y);ne=ye(i),i.removeEventListener("mousemove",Ye,!1),y.addDocumentEventListener("mouseup",Le,!1),y.addDocumentEventListener("touchend",Le,!1),V.navApi.getUsePivotAlways()||(V.pivot.copy(V.center),V.navApi.setPivotPoint(V.center),V.navApi.setPivotSetFlag(!1)),V.startInteraction(n.pageX,n.pageY);var o=V.navApi.getUseLeftHandedInput()?1:3;n.which!==o&&(y.animSpeed<=0?p.error("animSpeed cannot be 0 or less, use ViewCube.animate flag to turn on and off animation",A(l.VIEWER_INTERNAL_ERROR)):(t=Se(n,ne),ke(t,y.camera,se).length>0&&(Xe(),y.draggable&&(y.addDocumentEventListener("mousemove",De,!1),y.addDocumentEventListener("touchmove",De,!1),de&&(i.requestPointerLock(),we=ve&&fe)))))}},De=function(t){if(t.preventDefault(),t.stopPropagation(),y.animSpeed<=0)return y.removeDocumentEventListener("mousemove",De,!1),y.removeDocumentEventListener("touchmove",De,!1),void p.error("animSpeed cannot be 0 or less",A(l.VIEWER_INTERNAL_ERROR));if(!V.currentlyAnimating){var n=Re(t,y);de&&we&&(we=!1,n.movementX=n.movementY=0),me&&(n.movementX>300||n.movementY>300)&&(n.movementX=0,n.movementY=0),n.movementX!==n.movementY||0!==n.movementX?(he=!1,Ce=!0,V.showPivot(!0),V.currentCursor=new e.Vector2(n.pageX,n.pageY),V.orbit(V.currentCursor,V.startCursor,new e.Vector3(-n.movementX,n.movementY,0),V.startState),y.camera.lookAt(y.center),requestAnimationFrame(y.render)):V.currentlyAnimating=!1}},ze=function(e){(e||(y.removeDocumentEventListener("mouseup",Le,!1),y.removeDocumentEventListener("touchend",Le,!1)),y.removeDocumentEventListener("mousemove",De,!1),y.removeDocumentEventListener("touchmove",De,!1),i.addEventListener("mousemove",Ye,!1),me)&&y.getDocument().exitPointerLock()};this.registerOnViewTypeChangedCb=function(e){e instanceof Function&&(be=e)},this.setViewType=function(e){switch(e){case r.VIEW_TYPES.ORTHOGRAPHIC:y.camera=y.ocam;break;case r.VIEW_TYPES.PERSPECTIVE:y.camera=y.pcam;break;case r.VIEW_TYPES.PERSPECTIVE_ORTHO_FACES:y.camera=he?y.ocam:y.pcam;break;default:return}be&&be(e)};var Le=function(e){var t,n,o;if(e.preventDefault(),e.stopPropagation(),V.currentlyAnimating||Ce)return V.endInteraction(),V.showPivot(!1),Ce=!1,void ze(!1);var r=Re(e,y);if(V.viewCubeMenuOpen){var a=r.clientX-ne.x,s=r.clientY-ne.y;if(V.menuOrigin.x<=a&&a<=V.menuOrigin.x+V.menuSize.x&&V.menuOrigin.y<=s&&s<=V.menuOrigin.y+V.menuSize.y){var c=Math.floor((s-5-V.menuOrigin.y)/25),u=function(e){p.track({name:"navigation/"+e,aggregate:"count"})};switch(c){case 0:u("home"),V.goHome();break;case 1:u("setortho"),y.setViewType(c);break;case 2:u("setpersp"),y.setViewType(c);break;case 3:y.setViewType(c);break;case 4:u("sethome"),V.setCurrentViewAsHome(!1);break;case 5:u("focushome"),V.setCurrentViewAsHome(!0);break;case 6:u("resethome"),V.resetHome();break;case 7:u("setfront"),V.setCurrentViewAsFront();break;case 8:u("settop"),V.setCurrentViewAsTop();break;case 9:V.resetOrientation()}}return V.viewCubeMenuOpen=!1,V.removeDropdownMenu(i),(r.clientXne.w+ne.x||r.clientYne.h+ne.y)&&Ee(),y.mouseMoveSave&&y.processMouseMove(y.mouseMoveSave),V.endInteraction(),void ze(!1)}var A=V.navApi.getUseLeftHandedInput()?1:3;if(r.which===A)return V.viewCubeMenuOpen=!0,V.drawDropdownMenu(G,H,Z,r.clientX,r.clientY,i,ne),void ze(!0);var l=Se(r,ne);if(t=ke(l,y.camera,se),n=ke(l,Y,ie),o=ke(l,Y,ae),n.length>0&&he){for(var h,d=["top","bottom","right","left","front","back"],m=V.getOrientation(),w={front:{up:[0,1,2,3],right:[2,3,1,0],down:[1,0,3,2],left:[3,2,0,1]},right:{up:[0,1,5,4],right:[5,4,1,0],down:[1,0,4,5],left:[4,5,0,1]},left:{up:[0,1,4,5],right:[4,5,1,0],down:[1,0,5,4],left:[5,4,0,1]},back:{up:[0,1,3,2],right:[3,2,1,0],down:[1,0,2,3],left:[2,3,0,1]},top:{up:[5,4,2,3],right:[2,3,4,5],down:[4,5,3,2],left:[3,2,5,4]},bottom:{up:[4,5,2,3],right:[2,3,5,4],down:[5,4,3,2],left:[3,2,4,5]}}[y.currentFace][m],v=0;v<4;v++)if(n[0].object===ie[v]){h=d[w[v]];break}V.calculateCubeTransform(h),y.currentFace=h,V.elapsedTime=0,V.sphericallyInterpolateTransition()}if(o.length>0){if(V.elapsedTime=0,y.wantHomeButton&&o[0].object===ae[ee])return V.goHome(),void ze(!1);if(y.wantContextMenu&&o[0].object===ae[te])return V.viewCubeMenuOpen=!0,V.drawDropdownMenu(G,H,Z,r.clientX,r.clientY,i,ne),void ze(!0);if(y.wantRollArrows&&he&&(o[0].object===ae[J]||o[0].object===ae[_])){var f=o[0].object===ae[_],C={center:V.center.clone(),position:M.position.clone(),pivot:M.pivot.clone(),fov:M.fov,worldUp:V.sceneUpDirection.clone(),isOrtho:!1===M.isPerspective},g=V.center.clone().sub(M.position).normalize();f?C.up=M.up.clone().cross(g):(C.up=M.up.clone().multiplyScalar(-1),C.up.cross(g)),C.up.normalize(),V.goToView(C)}}if(t.length>0){let n=t[0].object.name;y.mouseMoveSave=e,y.cubeRotateTo(n)}ze(!1)};this.cubeRotateTo=function(e){y.currentFace=e,V.orthographicFaces&&-1!==y.currentFace.indexOf(",")&&V.setCameraOrtho(!1),V.calculateCubeTransform(y.currentFace),V.elapsedTime=0,V.sphericallyInterpolateTransition((function(){y.mouseMoveSave&&y.processMouseMove(y.mouseMoveSave)}))},this.processMouseMove=function(e){var t,n,o;if(V.viewCubeMenuOpen||V.currentlyAnimating)y.mouseMoveSave=e;else{y.mouseMoveSave=null;var i=Re(e,y),r=Se(i,ne);if(t=ke(r,y.camera,re),n=ke(r,Y,ie),o=ke(r,Y,ae),ce&&!Ce&&(ce.material.color.setHex(g),ce=null,requestAnimationFrame(y.render)),n.length>0&&!Ce){ce=n[0].object;for(var a=j.children.length;--a>=0;)if(ce===ie[a]){(ce=j.children[a]).material.color.setHex(45055);break}requestAnimationFrame(y.render)}pe&&!Ce&&(pe.material.opacity=0,pe=null,requestAnimationFrame(y.render)),t.length>0&&!Ce&&((pe=t[0].object).material.opacity=.3,requestAnimationFrame(y.render)),o.length>0&&!Ce?ue!==o[0].object&&(y.wantHomeButton&&o[0].object===ae[ee]?(ue=o[0].object,ae[ee].material.map=xe[0]):y.wantRollArrows&&o[0].object===ae[J]?(ue=o[0].object,ae[$].material.map=xe[1]):y.wantRollArrows&&o[0].object===ae[_]?(ue=o[0].object,ae[$].material.map=xe[2]):y.wantContextMenu&&o[0].object===ae[te]?(ue=o[0].object,ae[te].material.map=xe[6]):y.wantHomeButton&&ue===ae[ee]?(ue=null,ae[ee].material.map=xe[3]):!y.wantRollArrows||ue!==ae[J]&&ue!==ae[_]&&ue!==ae[$]?y.wantContextMenu&&ue===ae[te]&&(ue=null,ae[te].material.map=xe[5]):(ue=null,ae[$].material.map=xe[4]),requestAnimationFrame(y.render)):null===ue||Ce||(y.wantHomeButton&&ue===ae[ee]?(ue=null,ae[ee].material.map=xe[3]):!y.wantRollArrows||ue!==ae[J]&&ue!==ae[_]&&ue!==ae[$]?y.wantContextMenu&&ue===ae[te]&&(ue=null,ae[te].material.map=xe[5]):(ue=null,ae[$].material.map=xe[4]),requestAnimationFrame(y.render))}};var Ye=function(e){V.navApi.isActionEnabled("orbit")&&y.processMouseMove(e)},Oe=function(){ne=ye(i),y.width=i.offsetWidth,y.height=i.offsetHeight,y.pcam.aspect=y.ocam.aspect=y.width/y.height,y.pcam.updateProjectionMatrix(),y.ocam.updateProjectionMatrix(),y.camera.topFov=y.camera.bottomFov=y.camera.fov/2,y.camera.leftFov=y.camera.rightFov=y.camera.aspect*y.camera.fov/2,y.pcam.aspect=y.ocam.aspect=y.camera.aspect,y.pcam.topFov=y.ocam.topFov=y.camera.topFov,y.pcam.bottomFov=y.ocam.bottomFov=y.camera.bottomFov,y.pcam.leftFov=y.ocam.leftFov=y.camera.leftFov,y.pcam.rightFov=y.ocam.rightFov=y.camera.rightFov;const e=y.getWindow().devicePixelRatio;y.renderer.getPixelRatio()!==e?y.renderer.setPixelRatio(e):y.renderer.setSize(y.width,y.height),requestAnimationFrame(y.render)},Ue=function(t,n){var o,i=Math.floor(.45*Ae/2)||45,r=Math.floor(.6*Ae/2)||60,a=i+r,s=new e.BufferGeometry,c=new e.Vector3(0,0,0),p=new e.Vector3(r,-r,a),u=new e.Vector3(r,r,a),A=new e.Vector3(-r,r,a),l=new e.Vector3(-r,-r,a),h=new Float32Array([c.x,c.y,c.z,p.x,p.y,p.z,u.x,u.y,u.z,A.x,A.y,A.z,l.x,l.y,l.z]);s.setAttribute("position",new e.BufferAttribute(h,3));return s.index=new e.BufferAttribute(new Uint16Array([1,2,3,1,3,4]),1),s.applyMatrix4((new e.Matrix4).makeRotationX(t)),s.applyMatrix4((new e.Matrix4).makeRotationY(n)),s.computeVertexNormals(),o=new v({opacity:0,color:45055,transparent:!0}),new e.Mesh(s,o)},qe=function(t,n,o){var i,r=Math.floor(.45*Ae/2)||45,a=Math.floor(.6*Ae/2)||60,s=r+a,c=new e.BufferGeometry,p=new e.Vector3(a,s,s),u=new e.Vector3(-a,s,s),A=new e.Vector3(-a,a,s),l=new e.Vector3(a,a,s),h=new e.Vector3(a,s,a),d=new e.Vector3(-a,s,a),m=new e.Vector3(-a,s,s),w=new e.Vector3(a,s,s),f=new Float32Array([p.x,p.y,p.z,u.x,u.y,u.z,A.x,A.y,A.z,l.x,l.y,l.z,h.x,h.y,h.z,d.x,d.y,d.z,m.x,m.y,m.z,w.x,w.y,w.z]);c.setAttribute("position",new e.BufferAttribute(f,3));return c.index=new e.BufferAttribute(new Uint16Array([0,1,2,0,2,3,4,5,6,4,6,7]),1),c.applyMatrix4((new e.Matrix4).makeRotationX(t)),c.applyMatrix4((new e.Matrix4).makeRotationY(n)),c.applyMatrix4((new e.Matrix4).makeRotationZ(o)),c.computeVertexNormals(),i=new v({opacity:0,color:45055,transparent:!0}),new e.Mesh(c,i)},Qe=function(t,n){var o,i=Math.floor(.45*Ae/2)||45,r=Math.floor(.6*Ae/2)||60,a=i+r,s=new e.BufferGeometry,c=new e.Vector3(a,a,a),p=new e.Vector3(r,a,a),u=new e.Vector3(r,r,a),A=new e.Vector3(a,r,a),l=new e.Vector3(a,a,r),h=new e.Vector3(a,a,a),d=new e.Vector3(a,r,a),m=new e.Vector3(a,r,r),w=new e.Vector3(a,a,a),f=new e.Vector3(a,a,r),C=new e.Vector3(r,a,r),g=new e.Vector3(r,a,a),b=new Float32Array([c.x,c.y,c.z,p.x,p.y,p.z,u.x,u.y,u.z,A.x,A.y,A.z,l.x,l.y,l.z,h.x,h.y,h.z,d.x,d.y,d.z,m.x,m.y,m.z,w.x,w.y,w.z,f.x,f.y,f.z,C.x,C.y,C.z,g.x,g.y,g.z]);s.setAttribute("position",new e.BufferAttribute(b,3));return s.index=new e.BufferAttribute(new Uint16Array([0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11]),1),s.applyMatrix4((new e.Matrix4).makeRotationX(t)),s.applyMatrix4((new e.Matrix4).makeRotationY(n)),s.computeVertexNormals(),o=new v({opacity:0,color:45055,transparent:!0}),new e.Mesh(s,o)},Ne=function(t){var n=V.cubeFront.clone(),o=V.sceneUpDirection.clone(),i=n.clone().cross(o);o.copy(i).cross(n),n.normalize(),o.normalize(),i.normalize();var r=new e.Vector3(n.x,o.x,i.x).multiplyScalar(t.x);return r.add(new e.Vector3(n.y,o.y,i.y).multiplyScalar(t.y)),r.add(new e.Vector3(n.z,o.z,i.z).multiplyScalar(t.z)),r};this.render=function(){y.camera=M.isPerspective?y.pcam:y.ocam;var t=y.compass?y.viewScaleFactorCompass*y.viewScale:y.viewScale,n=V.center.clone().sub(M.position).normalize(),o=M.up.normalize(),i=new e.Matrix4;n=Ne(n),o=Ne(o),y.camera.position.copy(n),y.camera.position.multiplyScalar(-t/y.camera.position.length()),y.camera.up=o.normalize(),y.camera.lookAt(y.center),We();var r=y.renderTriad&&C(V.sceneUpDirection)&&C(V.sceneFrontDirection),a=y.renderer;if(a){for(var s=0;s{i.drawImage(n,0,0,y.width,y.height),r.URL.revokeObjectURL(n.src),o.toBlob((t=>{e(t)}),"image/png")}}),"image/png")}))};var We=function(){!(he=V.isFaceView())||ge||V.currentlyAnimating?Xe():Ge(),ge?He():Ze(),ge?Ke():je()},Xe=function(){z.remove(j),ae[$].material.opacity=0,ae[te].material.opacity=0},Ge=function(){z.add(j);var e=y.wantRollArrows?1:0;ae[$].material.opacity=e,ae[te].material.opacity=e},He=function(){N.material.opacity=u()?1:0},Ze=function(){N.material.opacity=y.wantContextMenu?1:0},Ke=function(){q.material.opacity=0},je=function(){q.material.opacity=y.wantHomeButton?1:0};this.refreshCube=function(){Oe()},this.setSize=function(e,t){if(y.width=e,y.height=t,i.children.length>1)for(var n=1;n0&&void 0!==arguments[0])||arguments[0];this.initCompass(),y.renderCompass!==e&&(y.prevRenderCompass=y.renderCompass,y.renderCompass=e,Me(),requestAnimationFrame(y.render))},this.setCompassRotation=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.initCompass();const t=e-y.northAngle;0!==t&&(y.northAngle=e,y.compassPointerMeshUp.rotateZ(t),y.compassPointerMeshDown.rotateZ(t),requestAnimationFrame(y.render))},this.initCompass=function(){if(y.hasCompass)return;y.hasCompass=!0,y.northAngle=0;let t="res/textures/",n=Autodesk.Viewing.Private.getResourceUrl;L=new e.Scene;const o=2.9*Ae;let i=new e.PlaneBufferGeometry(o,o,2,2),r=new v({color:0,side:e.DoubleSide,map:Te(n(t+"VCcompass-pointer-b.png")),transparent:!0}),a=new v({color:0,side:e.DoubleSide,map:Te(n(t+"VCcompass-base.png")),transparent:!0});const s=new e.Mesh(i,r),c=new e.Mesh(i,r),p=new e.Mesh(i,a);y.compassPointerMeshUp=s,y.compassPointerMeshDown=c;const u=-Math.PI/2;p.rotateX(u),s.rotateX(u),c.rotateX(u);const A=.5*-Ae-(Math.floor(.25*Ae/2)||25);p.translateZ(A),s.translateZ(A+.1),c.translateZ(A-.1),L.add(p),L.add(s),L.add(c),requestAnimationFrame(y.render)},this.showControls=function(e){e||void 0===e?Be():Ee()},this.dtor=function(){this.renderer=null,be=null},this.refreshTexture=function(n){var o=Autodesk.Viewing.Private.getResourceUrl,i=this.localizeResourcePath||"res/textures/",r=(new a).load(o(i+"VCcrossRGBA8small.dds"),n);r.minFilter=r.maxFilter=e.LinearFilter,this.texture&&this.texture.dispose(),this.texture=r;var c=this.material;c||((c=s(t)).depthWrite=!1,this.material=c);return c.uniforms.tCube.value=r,c},this.localize=function(){const e=d();this.localizeResourcePath=e.LOCALIZATION_REL_PATH,this.refreshTexture((()=>{requestAnimationFrame(this.render)}))},function(){var t=i.getBoundingClientRect();y.width=t.width,y.height=t.height,ne=ye(i),(Y=new e.PerspectiveCamera(70,y.height/y.width,1,1e4)).position.set(0,0,500),k=new e.Scene,S=new e.Scene,R=new e.Scene,F=new e.Scene,z=new e.Scene,he=!0,Ae=160,y.viewScale=4*Ae;var n=y.refreshTexture(),o=e.LinearFilter,r=Autodesk.Viewing.Private.getResourceUrl,a="res/textures/",s=new e.BoxGeometry(Ae,Ae,Ae,4,4,4),u=new e.BoxGeometry(Ae+1,Ae+1,Ae+1,4,4,4);(O=new e.Mesh(s,n)).position.set(0,0,0),S.add(O);var A=Te(r(a+"VCedge1.png"));A.minFilter=A.maxFilter=o,(U=new e.Mesh(u,new v({map:A,transparent:!0}))).position.set(0,0,0),F.add(U),D=new b(Ae+20),Array.prototype.push.apply(K,D.getSprites());var l=Ae+5,h=new e.BufferGeometry;const d=new Float32Array([-30,0,0,30,0,0,0,-30,0]);h.setAttribute("position",new e.BufferAttribute(d,3));h.index=new e.BufferAttribute(new Uint16Array([1,0,2]),1);var m=new v({color:g,depthTest:!1,depthWrite:!1,transparent:!1,opacity:1}),w=new v({color:g,depthTest:!1,depthWrite:!1,transparent:!1,opacity:1}),f=new v({color:g,depthTest:!1,depthWrite:!1,transparent:!1,opacity:1}),C=new v({color:g,depthTest:!1,depthWrite:!1,transparent:!1,opacity:1}),x=new e.PlaneBufferGeometry(.5*Ae,.3*Ae,2,2),M=new v({transparent:!0,opacity:0}),B=new e.Mesh(h,m),P=new e.Mesh(x,M);B.position.set(0,l,0),P.position.set(0,.9*l,.1);var E=new e.Mesh(h,w),T=new e.Mesh(x,M);E.position.set(0,-l,0),T.position.set(0,.9*-l,.1),E.rotation.z+=Math.PI,T.rotation.z+=Math.PI;var I=new e.Mesh(h,f),L=new e.Mesh(x,M);I.position.set(l,0,0),L.position.set(.9*l,0,.1),I.rotation.z-=Math.PI/2,L.rotation.z-=Math.PI/2;var W=new e.Mesh(h,C),X=new e.Mesh(x,M);W.position.set(-l,0,0),X.position.set(.9*-l,0,.1),W.rotation.z+=Math.PI/2,X.rotation.z+=Math.PI/2,(j=new e.Object3D).position.set(0,0,0),j.add(B),j.add(E),j.add(I),j.add(W),z.add(P),z.add(T),z.add(L),z.add(X),z.add(j),ie.push(P),ie.push(T),ie.push(L),ie.push(X);var G=new e.PlaneBufferGeometry(Ae/3,Ae/3,2,2),H=new v({map:Te(r(a+"VChome.png")),transparent:!0});(q=new e.Mesh(G,H)).position.set(-Ae,Ae,0),ee=ae.length,z.add(q),ae.push(q);var Z=new e.PlaneBufferGeometry(1.5*Ae,1.5*Ae,2,2),oe=new v({map:Te(r(a+"VCarrows.png")),depthTest:!1,depthWrite:!1,transparent:!0}),re=new e.Mesh(Z,oe);y.rollMesh=re;var se=new e.PlaneBufferGeometry(.6*Ae,.45*Ae,2,2),ce=new v({transparent:!0,opacity:0}),pe=new e.Mesh(se,ce);y.rollLeftMesh=pe;var ue=new e.PlaneBufferGeometry(.45*Ae,.6*Ae,2,2),le=new v({transparent:!0,opacity:0}),me=new e.Mesh(ue,le);y.rollRightMesh=me,z.add(re),z.add(pe),z.add(me),J=ae.length,ae.push(pe),_=ae.length,ae.push(me),$=ae.length,ae.push(re);var we=new e.PlaneBufferGeometry(Ae/2.3,Ae/2.3,2,2),ve=new v({map:Te(r(a+"VCcontext.png")),transparent:!0,depthTest:!1,depthWrite:!1});N=new e.Mesh(we,ve),y.contextMesh=N,te=ae.length,z.add(N),ae.push(N),Me();var fe=new e.BufferGeometry;const Ce=Math.floor(.2*Ae/2)||20;let ge=new Float32Array([0,0,0,-Ae/2,-Ae/2-Ce,-Ae/2,Ae/2,-Ae/2-Ce,-Ae/2,Ae/2,-Ae/2-Ce,Ae/2,-Ae/2,-Ae/2-Ce,Ae/2]);fe.setAttribute("position",new e.BufferAttribute(ge,3));var be;if(fe.index=new e.BufferAttribute(new Uint16Array([4,3,2,4,2,1]),1),be=new v({color:0,transparent:!0,opacity:.5}),Q=new e.Mesh(fe,be),k.add(Q),Ie(),"CANVAS"===V.renderer.toUpperCase()?y.renderer=new e.CanvasRenderer:"WEBGL"===V.renderer.toUpperCase()?(y.renderer=new c({alpha:!0,antialias:!1}),y.renderer.name="ViewCubeRenderer"):(p.warn("Incorrect use of Autocam.renderer property"),y.renderer=new e.CanvasRenderer),y.useTransparency(!0),y.setSize(y.width,y.height),y.camera.topFov=y.camera.bottomFov=y.camera.fov/2,y.camera.leftFov=y.camera.rightFov=y.camera.aspect*y.camera.fov/2,y.pcam.topFov=y.ocam.topFov=y.camera.topFov,y.pcam.bottomFov=y.ocam.bottomFov=y.camera.bottomFov,y.pcam.leftFov=y.ocam.leftFov=y.camera.leftFov,y.pcam.rightFov=y.ocam.rightFov=y.camera.rightFov,y.renderer.autoClear=!1,y.renderer.setSize(y.width,y.height),y.renderer.sortObjects=!1,i.appendChild(y.renderer.domElement),i.addEventListener("touchstart",Fe,!1),i.addEventListener("mousedown",Fe,!1),i.addEventListener("mousemove",Ye,!1),de=!1){var Be=y.getDocument();Be.exitPointerLock=Be.exitPointerLock||Be.mozExitPointerLock||Be.webkitExitPointerLock,i.requestPointerLock=i.requestPointerLock||i.mozRequestPointerLock||i.webkitRequestPointerLock,y.addDocumentEventListener("pointerlockchange",Ve,!1),y.addDocumentEventListener("mozpointerlockchange",Ve,!1),y.addDocumentEventListener("webkitpointerlockchange",Ve,!1)}xe.push(Te(r(a+"VChomeS.png"))),xe.push(Te(r(a+"VCarrowsS0.png"))),xe.push(Te(r(a+"VCarrowsS1.png"))),xe.push(Te(r(a+"VChome.png"))),xe.push(Te(r(a+"VCarrows.png"))),xe.push(Te(r(a+"VCcontext.png"))),xe.push(Te(r(a+"VCcontextS.png")))}()}r.ViewCube=x;var y=n(5072),V=n.n(y),M=n(7825),B=n.n(M),P=n(7659),E=n.n(P),T=n(5056),I=n.n(T),k=n(540),S=n.n(k),R=n(1113),F=n.n(R),D=n(4962),z={};z.styleTagTransform=F(),z.setAttributes=I(),z.insert=E().bind(null,"head"),z.domAPI=B(),z.insertStyleElement=S();V()(D.A,z);D.A&&D.A.locals&&D.A.locals;const L=Autodesk.Viewing,Y=Autodesk.Viewing.Private,O=L.getGlobal();function U(e,t){L.Extension.call(this,e,t),this.container=null,this.cube=null,this.viewcube=null,this.homeViewContainer=null,this._created=!1,this._initTriadVisibility=!1,this.refreshCube=this.refreshCube.bind(this),this.displayViewCube=this.displayViewCube.bind(this),this.setViewType=this.setViewType.bind(this),this._updateView=this._updateView.bind(this),this._onModelAdded=this._onModelAdded.bind(this)}U.prototype=Object.create(Autodesk.Viewing.Extension.prototype),U.prototype.constructor=U,Object.assign(U.prototype,{load:function(){if(this.create(),this._displayViewCube(this.viewer.impl.is2d),this.localize(),this.viewer.dispatchEvent({type:L.VIEW_CUBE_CREATED_EVENT}),this.viewer.addEventListener(L.VIEWER_RESIZE_EVENT,this.refreshCube),this.viewer.prefs.addListeners(Y.Prefs3D.VIEW_CUBE,this.displayViewCube),this.viewer.prefs.addListeners(Y.Prefs3D.VIEW_TYPE,this.setViewType),this.viewer.model){const e=this.viewer.getVisibleModels().filter((e=>!!this.viewer.impl.is2d===e.is2d()));this._onModelAdded({model:e[0]})}return this.viewer.addEventListener(L.MODEL_ADDED_EVENT,this._onModelAdded),this._setDefaultView(),!0},unload:function(){return this.viewer.prefs.removeListeners(Y.Prefs3D.VIEW_CUBE,this.displayViewCube),this.viewer.prefs.removeListeners(Y.Prefs3D.VIEW_TYPE,this.setViewType),this.viewer.removeEventListener(L.VIEWER_RESIZE_EVENT,this.refreshCube),this.viewer.removeEventListener(L.MODEL_ADDED_EVENT,this._onModelAdded),this.container&&(this.viewer.container.removeChild(this.container),this.viewcube=null),this.cube&&(this.cube.dtor(),this.cube=null),this.homeViewContainer=null,this.hideHomeViewMenu=null,this.viewer=null,!0},create:function(){this._created||(this.initContainer(),this.initHomeButton(),this._created=!0)},initContainer:function(){var e=this.getDocument();this.container=e.createElement("div"),this.container.className="viewcubeWrapper",this.viewer.container.appendChild(this.container)},initHomeButton:function(){if(!this.homeViewContainer){var e=this.getDocument().createElement("div");e.className="homeViewWrapper",this.container.appendChild(e),this.homeViewContainer=e;var t=this;e.addEventListener("click",(function(){t.viewer.navigation.setRequestHomeView(!0)}))}},setVisible:function(e){this.container.style.display=e?"block":"none"},_setDefaultView:function(){this.viewer.impl.is2d||this.viewer.impl.getModelCamera(this.viewer.model)||this.viewer.prefs.dispatchEvent(Y.Prefs3D.VIEW_TYPE)},_updateView:function(e){if(!this.viewer.impl.is2d&&!this.viewer.prefs.set(Y.Prefs3D.VIEW_TYPE,e)){e!==this.viewer.autocam.getViewType()&&this.viewer.prefs.dispatchEvent(Y.Prefs3D.VIEW_TYPE)}},setViewType:function(e){!this.viewer.impl.is2d&&this.cube&&this.cube.setViewType(e)},showTriad:function(e){this.cube?this.cube.showTriad(e):this._initTriadVisibility=e},setViewCube:function(e){this.cube&&this.cube.cubeRotateTo(e)},displayHomeButton:function(e){this.homeViewContainer&&(this.homeViewContainer.style.display=e?"":"none")},displayViewCube:function(e,t){if(t&&this.viewer.prefs.set(Y.Prefs3D.VIEW_CUBE,e),!e||this.cube||this.viewer.impl.is2d){if(!this.cube)return void this._positionHomeButton()}else{var n=this.getDocument();this.viewcube=n.createElement("div"),this.viewcube.className="viewcube",this.container.appendChild(this.viewcube),this.cube=new x("cube",this.viewer.autocam,this.viewcube,O.LOCALIZATION_REL_PATH),this.cube.registerOnViewTypeChangedCb(this._updateView),this.cube.setGlobalManager(this.globalManager),this.container.appendChild(this.homeViewContainer),this._initTriadVisibility&&this.showTriad(!0),delete this._initTriadVisibility}this.viewcube.style.display=e?"block":"none",this._positionHomeButton(),e&&this.viewer.autocam.refresh()},localize:function(){this.cube&&this.cube.localize()},showCompass:function(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.cube&&this.cube.showCompass(e)},setCompassRotation:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.cube&&this.cube.setCompassRotation(e)},_initCompass:function(e){var t;const n=e&&e.getData(),o=n&&n.metadata;let i=o&&o["world north vector"];if(i=i&&i.XYZ,i=i&&new THREE.Vector3(i[0],i[1],i[2]),!i)return;const r=o&&o["custom values"],a=this.viewer.autocam.sceneFrontDirection.clone(),s=this.viewer.autocam.sceneUpDirection.clone();let c=new THREE.Vector3;c.crossVectors(a,i);const p=i.angleTo(a)*(c.dot(s)<0?-1:1);let u=r&&r.angleToTrueNorth||0;u*=Math.PI/180;const A=null!=n&&null!==(t=n.loadOptions)&&void 0!==t&&t.applyRefPoint?0:p+u;this.cube.initCompass(),this.setCompassRotation(A),this.showCompass(!!this.viewer.prefs.get(Y.Prefs3D.VIEW_CUBE_COMPASS))},_displayViewCube:function(e){const t=!e&&this.viewer.prefs.get(Y.Prefs3D.VIEW_CUBE);this.displayViewCube(t)},_onModelAdded:function(e){this._displayViewCube(this.viewer.impl.is2d),!this.cube||this.cube.hasCompass||this.viewer.impl.is2d||this._initCompass(e.model)},_positionHomeButton:function(){this.homeViewContainer&&(this.cube&&this.viewcube&&"block"===this.viewcube.style.display?this.homeViewContainer.classList.remove("no-viewcube"):this.homeViewContainer.classList.add("no-viewcube"))},refreshCube:function(){this.cube&&this.cube.refreshCube()}}),L.theExtensionManager.registerExtension("Autodesk.ViewCubeUi",U)})(),Autodesk.Extensions.ViewCubeUi=o})(); +//# sourceMappingURL=ViewCubeUi.min.js.map \ No newline at end of file diff --git a/public/autodesk/lmvworker.min.js b/public/autodesk/lmvworker.min.js new file mode 100644 index 0000000..55f4ecf --- /dev/null +++ b/public/autodesk/lmvworker.min.js @@ -0,0 +1,2 @@ +var LMV;(()=>{var t={6247:(t,e,r)=>{"use strict";function n(t){return t[t.LMV_APP_NAMESPACE]=t[t.LMV_APP_NAMESPACE]||{}}function i(){const t="undefined"!=typeof window&&null!==window?window:"undefined"!=typeof self&&null!==self?self:r.g;return t.USE_LMV_APP_NAMESPACES?(t.globalProxy||(t.globalProxy=new Proxy({},{get(e,r){let n=t[r];return"function"==typeof n?function(t,e){return new Proxy(e,{get:(t,e)=>t[e],apply:(e,r,n)=>e.call(t||r,...n)})}(t,n):n},set:(e,r,i)=>(Object.prototype.hasOwnProperty.call(t,r)?t[r]!==i&&(t[r]=i):(n(t)[r]=i,Object.defineProperty(t,r,{get:()=>n(t)[r],set:e=>{n(t)[r]=e}})),!0)})),t.globalProxy):t}var s;r.d(e,{mS:()=>i,Xb:()=>f,Gz:()=>u,nr:()=>d,CN:()=>c});const o=i(),a=(o&&o.document,"undefined"!=typeof navigator),u=function(){return!a};function c(){return"undefined"!=typeof window&&("ontouchstart"in window||navigator.maxTouchPoints>0)}a&&navigator.userAgent.match(/Edge|Trident\/7\./),a&&navigator.userAgent.match(/Trident\/7\./);const h=a&&(/ip(ad|hone|od)/.test(navigator.userAgent.toLowerCase())||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1||/^ip(ad|hone|od)$/.test(null===(s=navigator.platform)||void 0===s?void 0:s.toLowerCase()));const l=a&&-1!==navigator.userAgent.toLowerCase().indexOf("android");function f(){return!!a&&(h||l)}function d(){if(!a)return!1;var t=navigator.userAgent.toLowerCase();return-1!==t.indexOf("safari")&&-1===t.indexOf("chrome")}},3293:(t,e,r)=>{"use strict";r.d(e,{z:()=>l});var n=r(2759),i=new ArrayBuffer(8),s=new Uint8Array(i),o=new Uint16Array(i),a=new Int32Array(i),u=new Uint32Array(i),c=new Float32Array(i),h=new Float64Array(i);function l(t){this.buffer=t,this.offset=0,this.byteLength=t.length}l.prototype.seek=function(t){this.offset=t},l.prototype.getBytes=function(t){var e=new Uint8Array(this.buffer.buffer,this.offset,t);return this.offset+=t,e},l.prototype.getVarints=function(){var t,e=0,r=0;do{e|=(127&(t=this.buffer[this.offset++]))<32767&&(t|=4294901760),t},l.prototype.getInt32=function(){var t=this.buffer,e=s,r=this.offset;return e[0]=t[r],e[1]=t[r+1],e[2]=t[r+2],e[3]=t[r+3],this.offset+=4,a[0]},l.prototype.getUint32=function(){var t=this.buffer,e=s,r=this.offset;return e[0]=t[r],e[1]=t[r+1],e[2]=t[r+2],e[3]=t[r+3],this.offset+=4,u[0]},l.prototype.getFloat32=function(){var t=this.buffer,e=s,r=this.offset;return e[0]=t[r],e[1]=t[r+1],e[2]=t[r+2],e[3]=t[r+3],this.offset+=4,c[0]},l.prototype.getIndicesArray=function(t,e,r){for(var n=this.buffer,i=new Uint8Array(t,e,2*r),s=this.offset,o=0,a=2*r;o{"use strict";r.d(e,{J:()=>h});var n,i,s,o,a,u=r(3293),c=r(7365);function h(t){var e=this.stream=new u.z(t),r=e.getInt32();this.type=e.getString(r),this.version=e.getInt32(),this.types=null,this.entryOffsets=[];var n=e.offset;e.seek(e.byteLength-8);var i=e.getUint32();this.typesOffset=e.getUint32(),e.seek(this.typesOffset);var s=this.readU32V();this.types=[];for(var o=0;o=this.getEntryCounts())return null;this.stream.seek(this.entryOffsets[t]);var e=this.stream.getUint32();return e>=this.types.length?null:this.types[e]},h.prototype.readPathID=function(){let t,e=this.stream;if(this.version<2){let r=e.getUint16();if(!r)return null;if(e.getUint16(),1==r)return"";t=e.getUint16();for(let n=2;n{"use strict";function n(t,e,r){var n,i,s,o,a,u;for(n="",s=r,i=0;i>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n+=String.fromCharCode(o);break;case 12:case 13:a=t[e+i++],n+=String.fromCharCode((31&o)<<6|63&a);break;case 14:a=t[e+i++],u=t[e+i++],n+=String.fromCharCode((15&o)<<12|(63&a)<<6|63&u)}return n}function i(t,e,r){var n,i,s,o=r||0;if(i=t.length,e)for(n=0;n=1&&s<=127?e[o++]=s:s>2047?(e[o++]=224|s>>12&15,e[o++]=128|s>>6&63,e[o++]=128|63&s):(e[o++]=192|s>>6&31,e[o++]=128|63&s);else for(n=0;n=1&&s<=127?o++:o+=s>2047?3:2;return o-(r||0)}r.d(e,{$d:()=>c,GB:()=>l,Pd:()=>f,TN:()=>u,WC:()=>i,_f:()=>h,jI:()=>n,xH:()=>a});var s=!0,o=1048576;function a(t,e,r){if(void 0===e&&(e=0),void 0===r&&(r=t.length),s)return r>o?function(t,e,r){var n,i,s,o,a,u,c,h;for(n="",a=[],s=r,u=0,i=0;i>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:a.push(String.fromCharCode(o));break;case 12:case 13:c=t[e+i++],a.push(String.fromCharCode((31&o)<<6|63&c));break;case 14:c=t[e+i++],h=t[e+i++],a.push(String.fromCharCode((15&o)<<12|(63&c)<<6|63&h))}(++u>=32768||i>=s)&&(n+=a.join(""),a.length=0,u=0)}return n}(t,e,r):n(t,e,r);for(var i="",a=e,u=e+r;a=48&&i<=57&&(r=10*r+(i-48)),n++}return r}function l(t,e){for(var r=0,n=0,i=t.length;n=48&&c<=57?(u=10*u+(c-48),a=!0):44==c||93==c?a&&(s[r++]=u,a=!1,u=0):(a=!1,u=0),n++}return s}function f(t){for(var e=0,r=t.length-1,n=0;n{"use strict";r.d(e,{s:()=>n});const n={deduceUVRepetition:function(t){for(var e in t.vblayout)if(0==e.indexOf("uv")&&0!=e.indexOf("uvw"))for(var r=t.vblayout[e].offset,n=t.vbstride,i=t.vb,s=t.vb.length/n,o=0,a=r;o2||u<0||c>2||c<0){t.vblayout[e].isPattern=!0;break}}},computeBounds3D:function(t){var e,r,n,i,s,o=1/0,a=1/0,u=1/0,c=-1/0,h=-1/0,l=-1/0,f=t.vbstride,d=t.vblayout.position.offset,p=t.vb,m=t.vb.length/f;for(e=0,r=d;e(n=p[r])&&(o=n),a>(i=p[r+1])&&(a=i),u>(s=p[r+2])&&(u=s),cx&&(x=A)}b.radius=Math.sqrt(x)},bboxUnion:function(t,e){e.min.xt.max.x&&(t.max.x=e.max.x),e.max.y>t.max.y&&(t.max.y=e.max.y),e.max.z>t.max.z&&(t.max.z=e.max.z)}}},8661:(t,e,r)=>{"use strict";r.d(e,{nW:()=>b,d$:()=>g,xL:()=>v,uq:()=>y});var n=2*Math.PI,i=[0,1,3,0,3,2];function s(t,e,r,n){var i=e||65536;this.FULL_COUNT=0|(r||32767),this.useInstancing=t,this.useCompactBuffers=n,this.stride=10,this.allocVcount=4*(this.useInstancing?i/4:i),this.vb=new ArrayBuffer(this.stride*this.allocVcount),this.vbf=new Float32Array(this.vb),this.vbi=new Int32Array(this.vb),this.ib=this.useInstancing?null:new Uint16Array(i),this.minLineWidth=Number.MAX_VALUE,this.reset(0)}s.FORCE_BUTT_CAPS_FOR_TESTING=!1,s.prototype.reset=function(t){this.vcount=t,this.icount=0,this.minx=this.miny=1/0,this.maxx=this.maxy=-1/0,this.dbIds={},this.lastDbId=null,this.colors={},this.numEllipticals=0,this.numCirculars=0,this.numTriangleGeoms=0,this.numMiterLines=0,this.hasLineStyles=!1,this.changeTracking={},this.stride=10},s.prototype.expandStride=function(){var t=this.stride;if(!(t>=12)){for(var e=this.stride+2,r=new ArrayBuffer(e*this.allocVcount),n=new Uint8Array(this.vb),i=new Uint8Array(r),s=0,o=this.vcount;sthis.maxx&&(this.maxx=t),ethis.maxy&&(this.maxy=e)},s.prototype.addToBoundsWithLineWidth=function(t,e,r,n,i){if(i<0)return this.addToBounds(t,e),void this.addToBounds(r,n);const s=[Math.min(t,r)-.5*i,Math.max(t,r)+.5*i],o=[Math.min(e,n)-.5*i,Math.max(e,n)+.5*i];this.addToBounds(s[0],o[0]),this.addToBounds(s[1],o[1])};var o=new Int32Array(1);function a(t){return o[0]=t,o[0]}s.prototype.trackChanges=function(t,e,r,n,i,s){if(r!==this.lastDbId&&(this.dbIds[a(r)]=1,this.lastDbId=r),s&&(this.hasLineStyles=!0),this.useCompactBuffers){var o=this.changeTracking;u("geomType",t),u("color",e),u("dbId",r),u("layerId",n),u("viewportId",i),u("linePattern",s),this.colors[a(e)]=1}function u(e,r){void 0===o[e]?o[e]=t:o[e]===r&&(o[e+"Varies"]=!0)}},s.prototype.setCommonVertexAttribs=function(t,e,r,n,i,s,o,a){this.trackChanges(r,n,i,s,o,a),e&=255,r&=255,a&=255,s&=65535,o&=65535,this.vbi[t+8]=e|r<<8|a<<16,this.vbi[t+6]=n,this.vbi[t+7]=i,this.vbi[t+9]=s|o<<16},s.prototype.addVertexTriangleGeom=function(t,e,r,n,i,s,o,a,u,c){for(var h=this.vcount,l=this.vbf,f=this.useInstancing?1:4,d=0;d=0&&a>0&&i>0&&(this.minLineWidth=Math.min(this.minLineWidth,a)),s.FORCE_BUTT_CAPS_FOR_TESTING&&(d=!0,p=!0);var v=1;d&&p?v=8:d?v=9:p&&(v=10);for(var y=this.useInstancing?1:4,b=0;b=0&&u>0&&(this.minLineWidth=Math.min(this.minLineWidth,u));for(var g=this.useInstancing?1:4,v=0;v6&&void 0!==arguments[6]?arguments[6]:0;if(!this.useInstancing){var a=this.vcount,u=this.stride*a,c=this.vbf;return c[u]=t,c[u+1]=e,this.setCommonVertexAttribs(u,0,o,r,n,i,s,0),this.vcount++,a}},s.prototype.addVertexPolytriangle=function(t,e,r,n,i,s){this.useInstancing||(this.addVertex(t,e,r,n,i,s),this.addToBounds(t,e))},s.prototype.addVertexMSDFPolytriangle=function(t,e,r,n,i,s,o,a){this.addVertexTexPolytriangle(t,e,r,n,i,s,o,a,6)},s.prototype.addIndices=function(t,e){if(!this.useInstancing){var r=this.ib,n=this.icount;if(n+t.length>=r.length){var i=new Uint16Array(2*Math.max(t.length,r.length));for(let t=0;t1e-4&&Math.abs(m-n)>1e-4){var g=t+s*Math.cos(r),v=e+o*Math.sin(r);this.addSegment(g,v,g,v,0,c,h,l,f,d);var y=t+s*Math.cos(i),b=e+o*Math.sin(i);this.addSegment(y,b,y,b,0,c,h,l,f,d)}else this.addToBoundsWithLineWidth(t-s,e-o,t+s,e+o,c);const a=33554431;var x=this.addVertexLine(t,e,0,1e-4,0,0,a,l,f,d);this.finalizeQuad(x)}var w=this.addVertexArc(t,e,r,i,s,o,a,c,h,l,f,d);this.finalizeQuad(w)},s.prototype.addTexturedQuad=function(t,e,r,n,i,s,o,a,u){var c=this.addVertexTexQuad(t,e,r,n,i,s,o,a,u);this.finalizeQuad(c);var h=.5*Math.cos(i),l=.5*Math.sin(i),f=Math.abs(r*h)+Math.abs(n*l),d=Math.abs(r*l)+Math.abs(n*h);this.addToBounds(t-f,e-d),this.addToBounds(t+f,e+d)},s.prototype.addVertexImagePolytriangle=function(t,e,r,n,i,s,o,a){return this.addVertexTexPolytriangle(t,e,r,n,i,s,o,a,7)},s.prototype.addVertexTexPolytriangle=function(t,e,r,n,i,s,o,a,u){if(this.useInstancing)return;let c=this.vcount,h=this.vbf;this.addVertex(t,e,i,s,o,a,u),h[c*this.stride+2]=r,h[c*this.stride+3]=n,this.addToBounds(t,e)},s.prototype.isFull=function(t){t=t||3;var e=this.useInstancing?4:1;return this.vcount*e+t>this.FULL_COUNT},s.prototype.makeCompactVertexLayout=function(){var t=Object.keys(this.colors),e=Object.keys(this.dbIds);if(10!==this.stride)return null;var r=t.length+e.length;if(t.length+e.length>65536)return null;var n=new Int32Array(r+1);n[0]=0;var i=1;for(let e=0;e>8&255){case 0:a[w]=d(this.vbf[b]),a[w+1]=p(this.vbf[b+1]);break;case 1:case 8:case 9:case 10:a[w]=d(this.vbf[b]),a[w+1]=p(this.vbf[b+1]),a[w+2]=g(this.vbf[b+2]),a[w+3]=m(this.vbf[b+3]),a[w+4]=v(this.vbf[b+4]);break;case 2:a[w]=d(this.vbf[b]),a[w+1]=p(this.vbf[b+1]),a[w+2]=g(this.vbf[b+2]),a[w+3]=g(this.vbf[b+3]),a[w+4]=v(this.vbf[b+4]),a[w+5]=m(this.vbf[b+5]);break;case 3:case 11:break;case 4:a[w]=d(this.vbf[b]),a[w+1]=p(this.vbf[b+1]),a[w+2]=g(this.vbf[b+2]),a[w+3]=m(this.vbf[b+3]),a[w+4]=m(this.vbf[b+4]);break;case 5:a[w]=d(this.vbf[b]),a[w+1]=p(this.vbf[b+1]),a[w+2]=d(this.vbf[b+2]),a[w+3]=p(this.vbf[b+3]),a[w+4]=d(this.vbf[b+4]),a[w+5]=p(this.vbf[b+5]);break;default:console.error("Unknown geometry type")}a[w+6]=this.colors[this.vbi[b+6]]||0,a[w+7]=this.dbIds[this.vbi[b+7]]||0,o[x+4]=this.vbi[b+8],o[x+5]=this.vbi[b+9]}var _={};_.vb=new Float32Array(s),_.vbstride=6;var I=this.useInstancing?1:0;return _.vblayout={fields1:{offset:0,itemSize:2,bytesPerItem:2,divisor:I,normalized:!0},fields2:{offset:1,itemSize:4,bytesPerItem:2,divisor:I,normalized:!0},uvIdColor:{offset:3,itemSize:2,bytesPerItem:2,divisor:I,normalized:!1},flags4b:{offset:4,itemSize:4,bytesPerItem:1,divisor:I,normalized:!1},layerVp4b:{offset:5,itemSize:4,bytesPerItem:1,divisor:I,normalized:!1}},_.unpackXform={x:u,y:c,z:h,w:l},_.texData=n,_},s.prototype.makeWideVertexLayout=function(){var t={};t.vb=new Float32Array(this.vb.slice(0,this.vcount*this.stride*4)),t.vbstride=this.stride;var e=this.useInstancing?1:0;return t.vblayout={fields1:{offset:0,itemSize:2,bytesPerItem:4,divisor:e,normalized:!1},fields2:{offset:2,itemSize:4,bytesPerItem:4,divisor:e,normalized:!1},color4b:{offset:6,itemSize:4,bytesPerItem:1,divisor:e,normalized:!0},dbId4b:{offset:7,itemSize:4,bytesPerItem:1,divisor:e,normalized:!1},flags4b:{offset:8,itemSize:4,bytesPerItem:1,divisor:e,normalized:!1},layerVp4b:{offset:9,itemSize:4,bytesPerItem:1,divisor:e,normalized:!1}},t.vblayout.extraParams={offset:this.stride-2,itemSize:2,bytesPerItem:4,divisor:e,normalized:!1},t},s.prototype.toMesh=function(){var t=null;if(this.useCompactBuffers&&(t=this.makeCompactVertexLayout()),t||(t=this.makeWideVertexLayout()),this.useInstancing){t.numInstances=this.vcount;var e=new Int32Array([0,1,2,3]);t.vblayout.instFlags4b={offset:0,itemSize:4,bytesPerItem:1,divisor:0,normalized:!1},t.vblayout.instFlags4b.array=e.buffer,t.indices=new Uint16Array(i)}else t.indices=new Uint16Array(this.ib.buffer.slice(0,2*this.icount));t.dbIds=this.dbIds;var r=this.maxx-this.minx,n=this.maxy-this.miny,s=Math.max(r,n);return t.boundingBox={min:{x:this.minx,y:this.miny,z:.001*-s},max:{x:this.maxx,y:this.maxy,z:.001*s}},t.boundingSphere={center:{x:.5*(this.minx+this.maxx),y:.5*(this.miny+this.maxy),z:0},radius:.5*Math.sqrt(r*r+n*n)},t};var u=function(t,e){function r(){function r(t,e){return Math.abs(t-e)<.001}r(t,0)&&(t=0),r(e,0)&&(e=0),r(t,n)&&(t=n),r(e,n)&&(e=n)}if(r(),t>e)for(;t>n;)t-=n,e-=n;else for(;e>n;)t-=n,e-=n;return r(),t<0&&e>0&&(t+=n),{start:t,end:e}},c=r(1706),h=r(6118),l=r(2816),f=r(3293),d=r(6916),p=r(7480),m=16383,g={dt_object:0,dt_void:1,dt_byte:2,dt_int:3,dt_float:4,dt_double:5,dt_varint:6,dt_point_varint:7,dt_byte_array:32,dt_int_array:33,dt_float_array:34,dt_double_array:35,dt_varint_array:36,dt_point_varint_array:37,dt_arc:38,dt_circle:39,dt_circular_arc:40,dt_string:63,dt_last_data_type:127},v={st_object_member:0,st_fill:1,st_fill_off:2,st_clip_off:3,st_layer:4,st_link:5,st_line_weight:6,st_miter_angle:7,st_miter_length:8,st_line_pattern_ref:9,st_back_color:10,st_color:11,st_markup:12,st_object_id:13,st_markup_id:14,st_reset_rel_offset:15,st_font_ref:16,st_begin_object:32,st_clip:33,st_line_caps:34,st_line_join:35,st_line_pattern_def:36,st_font_def:37,st_viewport:38,st_sheet:42,st_arc:43,st_polyline:44,st_raster:45,st_text:46,st_polytriangle:47,st_dot:48,st_end_object:63,st_last_semantic_type:127};function y(t){return 1&t?-(t>>>1):t>>>1}function b(t,e,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(this.metadata=t,this.scaleX=1,this.scaleY=1,this.bbox={min:{x:0,y:0,z:0},max:{x:0,y:0,z:0}},this.is2d=!0,this.layersMap={},this.fontDefs={},this.fontCount=0,this.fontId=0,this.manifestAvailable=!1,this.geomMetricsSum=0,this.objectMemberQueue=[],this.propertydb={attrs:[],avs:[],ids:[],values:[],offsets:[],viewables:[]},t){var i=t.page_dimensions;this.paperWidth=i.page_width,this.paperHeight=i.page_height,this.scaleX=this.paperWidth/i.plot_width,this.scaleY=this.paperHeight/i.plot_height,this.hidePaper=i.hide_paper;var o=this.paperWidth,a=this.paperHeight;this.bbox.max.x=o,this.bbox.max.y=a;var u=t.page_dimensions||{};if(isFinite(u.paper_rotation)&&0!==u.paper_rotation){var h=u.paper_rotation*Math.PI/180,l=Math.cos(h),f=Math.sin(h),d=o*l,p=o*f,g=-a*f,v=a*l;this.bbox.min.x=Math.min(0,d,g,d+g),this.bbox.max.x=Math.max(0,d,g,d+g),this.bbox.min.y=Math.min(0,p,v,p+v),this.bbox.max.y=Math.max(0,p,v,p+v)}isFinite(u.paper_offset_x)&&0!==u.paper_offset_x&&(this.bbox.min.x+=u.paper_offset_x,this.bbox.max.x+=u.paper_offset_x),isFinite(u.paper_offset_y)&&0!==u.paper_offset_y&&(this.bbox.min.y+=u.paper_offset_y,this.bbox.max.y+=u.paper_offset_y);var y=0;for(var b in this.layersMap[0]=y++,t.layers){var x=parseInt(b);this.layersMap[x]=y++}if(this.layerCount=y,this.createLayerGroups(t.layers),t.geom_metrics){var w=Object.keys(t.geom_metrics).map((function(e){return t.geom_metrics[e]}));this.geomMetricsSum=w.reduce(((t,e)=>t+e))}}this.hidePaper=this.hidePaper||n.modelSpace,this.noShadow=!!n.noShadow,this.hasPageShadow=!1,this.opCount=0,this.excludeTextGeometry=n.excludeTextGeometry,this.extendStringsFetching=n.extendStringsFetching,this.fontFaces=[],this.fontFamilies=[],this.viewports=[{}],this.currentVpId=0,this.viewports[0].geom_metrics=this.currentGeomMetrics={arcs:0,circles:0,circ_arcs:0,viewports:0,clips:0,colors:0,db_ids:0,dots:0,fills:0,layers:0,line_caps:0,line_joins:0,line_patterns:0,line_pat_refs:0,plines:0,pline_points:0,line_weights:0,links:0,miters:0,ptris:0,ptri_indices:0,ptri_points:0,rasters:0,texts:0,strings:[]},this.clips=[0],this.strings=[],this.stringDbIds=[],this.stringBoxes=[],this.extendStringsFetching&&(this.stringCharWidths=[],this.stringAngles=[],this.stringPositions=[],this.stringHeights=[]),this.currentStringNumber=-1,this.currentStringBox=new c.K,this.linkBoxes=[],this.currentLinkBox=new c.K,this.objectNumber=0,this.currentFakeId=-2,this.imageNumber=0,this.linkNumber=0,this.maxObjectNumber=0,this.objectStack=[],this.objectNameStack=[],this.parseObjState={polyTriangle:{},viewport:{},clip:{},raster:{},text:{},fontDef:{},uknown:{}},this.layer=0,this.bgColor="number"==typeof n.bgColor?n.bgColor:4294967295,this.contrastColor=this.color=this.fillColor=4278190080,this.hidePaper&&(this.contrastColor=4294967040),this.isMobile=n&&!!n.isMobile;var _=this.isMobile,I=this.isMobile;if(this.max_vcount=this.isMobile?m:void 0,this.currentVbb=new s(_,void 0,this.max_vcount,I),this.meshes=[],this.numCircles=this.numEllipses=this.numPolylines=this.numLineSegs=0,this.numPolytriangles=this.numTriangles=0,this.error=!1,this.offsetX=0,this.offsetY=0,e){this.manifestAvailable=!0,this.imageId2URI={};for(var A=e.assets,O=0,S=A.length;O>16&255,r=t>>8&255,n=255&t;return(t>>24&255)<<24|(e=255-e)<<16|(r=255-r)<<8|255-n},b.prototype.mapColor=function(t,e){if(!this.hidePaper||0!==this.bgColor)return t;var r=255&t;return r<127||r===(65280&t)>>8&&r===(16711680&t)>>16&&e&&(t&=1442840575),t},b.prototype.parsePointPositions=function(){var t=this.stream.getVarints(),e=this.stream.getVarints();return t=y(t),e=y(e),t+=this.offsetX,e+=this.offsetY,this.offsetX=t,this.offsetY=e,[this.tx(t),this.ty(e)]},b.prototype.parserAssert=function(t,e,r){return t!=e&&(d.vF.warn("Expect "+e+"; actual type is "+t+"; in function "+r),this.error=!0,!0)},b.prototype.unhandledTypeWarning=function(t,e){d.vF.warn("Unhandled semantic type : "+e+" in function "+t)},b.prototype.parseObject=function(){var t=this.stream.getVarints();switch(this.objectStack.push(t),t){case v.st_sheet:this.objectNameStack.push("sheet"),this.objectMemberQueue.unshift("paperColor");break;case v.st_viewport:this.objectNameStack.push("viewport"),this.objectMemberQueue.unshift("units","transform");break;case v.st_clip:this.objectNameStack.push("clip"),this.objectMemberQueue.unshift("contourCounts","points","indices");break;case v.st_polytriangle:this.objectNameStack.push("polyTriangle"),this.objectMemberQueue.unshift("points","indices","colors");break;case v.st_raster:this.objectNameStack.push("raster"),this.objectMemberQueue.unshift("position","width","height","imageId");break;case v.st_text:this.currentStringNumber=this.strings.length,0===this.objectNumber&&(this.objectNumber=this.currentFakeId--),this.currentStringBox.makeEmpty(),this.objectNameStack.push("text"),this.objectMemberQueue.unshift("string","position","height","widthScale","rotation","oblique","charWidths");break;case v.st_font_def:this.objectNameStack.push("fontDef"),this.objectMemberQueue.unshift("name","fullName","flags","spacing","panose");break;case v.st_end_object:if(this.objectStack.pop(),this.objectStack.length){switch(this.objectStack.pop()){case v.st_polytriangle:this.actOnPolyTriangle();break;case v.st_viewport:this.actOnViewport();break;case v.st_clip:this.actOnClip();break;case v.st_raster:this.actOnRaster();break;case v.st_text:this.actOnText();break;case v.st_font_def:this.actOnFontDef()}var e=this.objectNameStack.pop(),r=this.parseObjState[e];for(var n in r)r[n]=null}else this.parserAssert(0,1,"parseEndObject (Stack Empty)");this.objectMemberQueue.length=0;break;default:this.objectNameStack.push("unknown"),this.error=!0,this.unhandledTypeWarning("parseObject",t)}},b.prototype.initSheet=function(t){if(!this.hidePaper&&(this.bgColor=t,this.metadata)){var e=this.paperWidth,r=this.paperHeight,n={x:0,y:0},i={x:e,y:0},s={x:0,y:r},o=this.metadata.page_dimensions||{};if(isFinite(o.paper_rotation)&&0!==o.paper_rotation){var a=o.paper_rotation*Math.PI/180,u=Math.cos(a),c=Math.sin(a);i.y=e*c,i.x=e*u,s.x=-r*c,s.y=r*u}isFinite(o.paper_offset_x)&&0!==o.paper_offset_x&&(n.x=o.paper_offset_x),isFinite(o.paper_offset_y)&&0!==o.paper_offset_y&&(n.y=o.paper_offset_y);var h=this.currentVbb,l=[n.x,n.y,n.x+i.x,n.y+i.y,n.x+i.x+s.x,n.y+i.y+s.y,n.x+s.x,n.y+s.y],f=[t,t,t,t],d=[0,1,2,0,2,3];if(!this.noShadow){var p=.0075*e,m={x:i.x*p/e,y:i.y*p/e},g={x:s.x*p/r,y:s.y*p/r},v={x:n.x+m.x,y:n.y+m.y},y={x:n.x+i.x,y:n.y+i.y},b=4283782485;l=l.concat([v.x-g.x,v.y-g.y,v.x-g.x+i.x,v.y-g.y+i.y,v.x+i.x,v.y+i.y,v.x,v.y,y.x,y.y,y.x+m.x,y.y+m.y,y.x+m.x-g.x+s.x,y.y+m.y-g.y+s.y,y.x-g.x+s.x,y.y-g.y+s.y]),f=f.concat([b,b,b,b,b,b,b,b]),d=d.concat([4,5,6,4,6,7,8,9,10,8,10,11]),this.hasPageShadow=!0}this.addPolyTriangle(l,f,d,4294967295,-1,0,!1),h.addSegment(n.x,n.y,n.x+i.x,n.y+i.y,0,1e-6,4278190080,-1,0,this.currentVpId),h.addSegment(n.x+i.x,n.y+i.y,n.x+i.x+s.x,n.y+i.y+s.y,0,1e-6,4278190080,-1,0,this.currentVpId),h.addSegment(n.x+i.x+s.x,n.y+i.y+s.y,n.x+s.x,n.y+s.y,0,1e-6,4278190080,-1,0,this.currentVpId),h.addSegment(n.x+s.x,n.y+s.y,n.x,n.y,0,1e-6,4278190080,-1,0,this.currentVpId)}},b.prototype.setObjectMember=function(t){if(!this.objectMemberQueue.length)return d.vF.warn("Unexpected object member. "+t+" on object "+this.objectNameStack[this.objectNameStack.length-1]),!1;var e=this.objectMemberQueue.shift(),r=this.objectNameStack[this.objectNameStack.length-1];return"sheet"==r&&"paperColor"==e?(this.initSheet(t),!0):!!r&&(this.parseObjState[r][e]=t,!0)},b.prototype.parseString=function(){var t=this.stream,e=t.getVarints(),r=t.getVarints(),n=t.getString(r);if(e===v.st_object_member){if(this.setObjectMember(n))return}else d.vF.info("Unexpected opcode semantic type for string.");return n},b.prototype.actOnFontDef=function(){var t=this.parseObjState.fontDef;this.fontDefs[++this.fontCount]=t,this.fontId=this.fontCount},b.prototype.parsePoint=function(){var t=this.stream.getVarints(),e=this.parsePointPositions();if(t===v.st_object_member){if(this.setObjectMember(e))return}else d.vF.info("Unexpected opcode semantic type for point.");return e},b.prototype.parsePointsArray=function(){var t=this.stream,e=t.getVarints(),r=t.getVarints();if(r){r/=2;for(var n,i=[],s=0;se){var r=t;t=e,e=r}if(u[t]){var n=u[t],i=n.lastIndexOf(e);-1==i?n.push(e):n[i]=-1}else u[t]=[e]}function l(r,o){if(r>o){var h=r;r=o,o=h}var l=u[r];l&&-1!=l.indexOf(o)&&(a.flushBuffer(4),a.currentVbb.addSegment(t[2*r],t[2*r+1],t[2*o],t[2*o+1],0,c,a.mapColor(e?e[r]:n,!0),i,s,a.currentVpId),e&&e[r]!=e[o]&&d.vF.warn("Gouraud triangle encountered. Will have incorrect antialiasing."))}if(this.objectStack[this.objectStack.length-1]==v.st_text&&(c=-.5),o){u=new Array(t.length/2);for(let t=0,e=r.length;t1)for(var h=0;h{const e=new Array(256);for(let t=0;t<256;t++){let r=t.toString(16);1===r.length&&(r="0"+r),e[t]=r}var r=new Array(20),n=new Array(10);t.exports={binToPackedString:function(t,e,r){for(var i=20===r?n:[],s=0;s>8&255]}return n.join("")},packedToBin:function(t,e,r){for(let n=0;n>8&255}}}},3314:(t,e,r)=>{const{WebSocketBase:n,STATE:i}=r(4318),s=r(5982).packedToBin,o=r(5982).binToPackedString;class a extends n{clone(){let t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];const e=new a(this.url,this.queryParams,this.headers,this.onResourcesReceived,this.onResourceFailed,this.onConnectionFailed);return this.authorizeUrns.forEach((r=>{e.addAuthorizeUrn(r,t)})),e}_decodeMessage(t){const e=new Int32Array(t,0,3);if(827019343!==e[0])return void console.error("Invalid message format",e[0].toString(16),e[1],t);const r=String.fromCharCode(255&e[1]),n=e[2],i=new Int32Array(t,12,n),s=new Uint8Array(t,12+4*n),a=[],u=[],c=[];for(let t=0;t{const n=r(169),i="undefined"!=typeof navigator,s=function(){return!i},o=Object.freeze({CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3});t.exports.WebSocketBase=class{constructor(t,e,r,i,s,o){this.ws=null,this.url=t,this.queryParams=e,this.headers=r,this.numRequestsSent=0,this.numRequestsReceived=0,this.authorizeUrns=new Set,this._retriedOpen=0,this.retryEvent=null,this.hasPermanentError=void 0===n||!this.url,this.lastError=null,this.lastErrorNumInFlight=null,this.onResourcesReceived=i,this.onResourceFailed=s,this.onConnectionFailed=o,this._pendingSends=new Map,this._numPendingSends=0,this.inFlightRequests=new Map,this.msgBuffer=new Uint8Array(201)}addAuthorizeUrn(t){var e;let r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.authorizeUrns.has(t)||this.hasPermanentError||(r&&this._openWebSocket(),(null===(e=this.ws)||void 0===e?void 0:e.readyState)===o.OPEN&&this.ws.send("/auth/"+t),this.authorizeUrns.add(t))}_openWebSocket(){if(this.ws||this.hasPermanentError)return;let t=this.url.replace("https:","wss:").replace("http:","ws:").replace(":7124",":7125");this.queryParams&&(t+="?"+this.queryParams),this.ws=new n(t,void 0,s()?{headers:this.headers}:{}),this.ws.onopen=()=>{this.accountIdSent=null,this.ws.binaryType="arraybuffer",s()||this.ws.send("/headers/"+JSON.stringify(this.headers)),this.ws.send("/options/"+JSON.stringify({batch_responses:!0,report_errors:!0}));for(const t of this.authorizeUrns)this.ws.send("/auth/"+t)},this.ws.onmessage=t=>this._decodeMessage(t.data),this.ws.onclose=t=>{1e3!==t.code||0!==this.inFlightRequests.size?(console.warn("Abnormal socket close.","pending sends:",this._numPendingSends,"in flight",this.inFlightRequests.size,"event:",t),this._pendingSends=new Map,this._numPendingSends=0,this._retriedOpen<3?(console.warn("Retrying"),this._retriedOpen++,this.retryEvent=setTimeout((()=>{this.retryEvent=null,this.ws=null,this._openWebSocket()}),2e3)):(console.error("Too many WebSocket failures. Giving up."),this.hasPermanentError=!0,this.lastError=t,this.lastErrorNumInFlight=this.inFlightRequests.size),this.onConnectionFailed(this.inFlightRequests),this.inFlightRequests.clear()):this.closeWebSocket()}}closeWebSocket(){if(!this.ws)return;console.assert(0===this.inFlightRequests.size,"closeWebSocket called even though there are requests in flight"),this.retryEvent&&(clearTimeout(this.retryEvent),this.retryEvent=null),this.ws.onclose=null;const t=this.ws;this.ws.readyState===o.CONNECTING?this.ws.onopen=()=>t.close(1e3,"no more work expected"):this.ws.close(1e3,"no more work expected"),this.ws=null}_decodeMessage(t){throw new Error("Implement!")}_flushSendQueue(){throw new Error("Implement!")}requestResource(){throw new Error("Implement!")}},t.exports.STATE=o},7480:(t,e,r)=>{"use strict";r.d(e,{$f:()=>i,tG:()=>n});const n={UNKNOWN_FAILURE:1,BAD_DATA:2,NETWORK_FAILURE:3,NETWORK_ACCESS_DENIED:4,NETWORK_FILE_NOT_FOUND:5,NETWORK_SERVER_ERROR:6,NETWORK_UNHANDLED_RESPONSE_CODE:7,BROWSER_WEBGL_NOT_SUPPORTED:8,BAD_DATA_NO_VIEWABLE_CONTENT:9,BROWSER_WEBGL_DISABLED:10,BAD_DATA_MODEL_IS_EMPTY:11,UNSUPORTED_FILE_EXTENSION:13,VIEWER_INTERNAL_ERROR:14,WEBGL_LOST_CONTEXT:15,LOAD_CANCELED:16};function i(t){return"ErrorCode:"+t+"."}},1136:(t,e,r)=>{"use strict";r.d(e,{PG:()=>h}),r(4423),r(9479),r(8845),r(7656),r(5105),r(7467),r(586),r(1517),r(3777),r(4190),r(2359),r(6097),r(9172),r(7019),r(7273),r(1723),r(7415),r(9929),r(7583),r(5122),r(6385),r(230),r(7268),r(9733),r(8179),r(456),r(4017),r(9310),r(3062),r(6369),r(5637),r(2848),r(4842),r(4746),r(3454),r(6660),r(5941),r(2101),r(2917),r(7628),r(5186),r(2978),r(2527),r(9852),r(2376),r(617),r(3067),r(6820),r(8288),r(5509),r(5223),r(321),r(1927),r(1632),r(4377),r(9522),r(6771),r(2516),r(8931),r(2514),r(5694),r(2774),r(3283),r(9536),r(1926),r(4483),r(6215),r(8898),r(4176),r(3275),r(2793),r(7208),r(7348),r(6957),r(9732),r(3742),r(6422),r(2451),r(6270),r(9848);var n=r(6916),i=r(7480),s=r(2759),o=r(577),a=r(6247),u=r(4406),c=r(9861);let h={WORKER_REGISTER_FILE_PORT:"REGISTER_FILE_PORT",WORKER_READ_FILE:"READ_FILE"};var l=!1;function f(t){var e=t.split("/");if(0==e.length)return t;for(var r=[],n=0;n=200&&t.statusCode<400),s=t;!r&&function(t,e){return!!("gzip"===t.headers["content-encoding"]||e.endsWith(".json.gz")||e.endsWith("FragmentList.pack")||e.endsWith("LightList.bin")||e.endsWith("CameraList.bin")||e.endsWith("CameraDefinitions.bin")||e.endsWith("LightDefinitions.bin"))}(t,b.pathname)&&(s=t.pipe(e.createGunzip())),"json"!==v.responseType&&"text"!==v.responseType&&v.responseType||s.setEncoding("utf8");var o=[],a=(Buffer.allocUnsafe(65536),0);s.on("data",(function(t){o.push(t),v.ondata&&v.ondata(t)})),s.on("end",(function(){if(t.statusCode>=200&&t.statusCode<400){if("json"===v.responseType){var r=JSON.parse(o.join(""));return void m(r)}if("text"===v.responseType||""===v.responseType){var s=o.join("");return void m(s)}var u=Buffer.concat(o);if(31===u[0]&&139===u[1]){n.vF.warn("An LMV resource ("+p+") was double compressed, or Content-Encoding header missing");try{u=e.gunzipSync(u),a=u.length}catch(t){g(i.tG.BAD_DATA,"Malformed data received when requesting file",{url:p,exception:t.toString(),stack:t.stack})}}200===_.status&&v.range&&(u=new Uint8Array(u,v.range.min,v.range.max-v.range.min)),m(u,a)}else g&&g(t.statusCode,t.statusMessage,{url:p})}))}));_.on("error",(function(t){g&&g(t.code,t.message,{url:p})})),v.postData&&_.write(v.postData),_.end()}else!function(r,n,i,s){function o(t){if("json"===s.responseType)try{return JSON.parse(t.toString("utf8"))}catch(t){i(t)}return t}0===r.indexOf("file://")&&(r=r.substr(7)),t.readFile(r,(function(t,a){t?i(0,0,{httpStatusText:t,url:r}):31===a[0]&&139===a[1]?e.gunzip(a,null,(function(t,e){t?i(0,0,{httpStatusText:t,url:r}):(e=o(e),s.ondata&&s.ondata(e),n(e))})):(a=o(a),s.ondata&&s.ondata(a),n(a))}))}(p,m,g,v)}}();else{var p=new(r(1436));p.max=25;var m={},g={},v={};h.registerProtocolPort=function(t,e){/^(http(s)?|file):/gi.test(t)?console.warn("http(s) or file protocol were not allowed to be handled"):e?(m[t]=e,e.onmessage=function(t){var e=t.data.url;if(g[e]){var r=g[e];if(t.data.error)r.onFailureWrapped(i.tG.BAD_DATA,"Malformed data received when requesting file",{url:e,exception:t.data.error.message,stack:t.data.error.stack});else{var n=t.data.buffer;if(g[e]=void 0,31===n[0]&&139===n[1]&&e.match(/(.f2d|.gz)$/gi))try{n=(0,c.Wt)(n),r.options&&r.options.ondata&&r.options.ondata(n),r.onSuccessWrapped(n)}catch(t){r.onFailureWrapped(i.tG.BAD_DATA,"Malformed data received when requesting file",{url:e,exception:t.toString(),stack:t.stack})}else r.onSuccessWrapped(n)}}else if(v[e]){var s=[];t.data&&t.data.buffer&&t.data.buffer.buffer instanceof ArrayBuffer&&s.push(t.data.buffer.buffer),v[e].postMessage(t.data,s),v[e]=void 0}}):m[t]&&m[t]instanceof MessagePort&&(m[t].onmessage=void 0,m[t]=void 0)},h.handlerProtocol=function(t,e,r,n,i){var s=m[t];g[e]={onSuccessWrapped:r,onFailureWrapped:n,options:i},s.postMessage({operation:h.WORKER_READ_FILE,url:e})},h.forwardProtocolHandlerToWorker=function(t){var e={},r=new MessageChannel;for(var n in r.port1.onmessage=function(t){var e=new URL(t.data.url);m[e.protocol].postMessage(t.data),v[e]=r.port1},m)m[n]instanceof MessagePort&&(e[n]=r.port2);t.doOperation({operation:h.WORKER_REGISTER_FILE_PORT,protocolPortMap:e},[r.port2])},h.rawGet=function(t,e,r,i,s,o){p.go((a=>{let u=function(){a();for(var t=arguments.length,e=new Array(t),r=0;r=500);if((arguments.length<=2?void 0:arguments[2]).aborted&&(s=!1),s){const s=arguments.length<=3?void 0:arguments[3];let a=100,l=5,f=!1;if(429!==i&&503!==i||null==s||!s.getResponseHeader("Retry-After")?0===i&&(f=3,l=2):f=s.getResponseHeader("Retry-After"),f){const t=Number(f);a=!isNaN(t)&&1e3*t||Date.parse(f)-(new Date).getTime(),a=a>100?a:100}h._retryRequest(t,e,r,o,a,l).then((t=>{n.vF.warn(`request ${r} successful after retries.`),c(...t)})).catch((t=>{n.vF.warn(`request ${r} unsuccessful after retries.`),u(...t)}))}else u(...arguments)}),o)}}))},h._retryRequest=function(t,e,r,i,s,o){const a={delayFirstAttempt:!0,startingDelay:s,numOfAttempts:4,retry:(t,e)=>{let[r,i,{url:s}]=t;return n.vF.warn(`request ${s} failed with status ${r} ${i}. Attempt ${e}`),!0},timeMultiple:o};return(0,u.backOff)((()=>new Promise(((n,s)=>{let o=h._rawGet;null!=i&&i.useFetch&&(o=h._rawGetFetch),o(t,e,r,(function(){for(var t=arguments.length,e=new Array(t),r=0;r{const r=t.indexOf("?acmsession=");-1!==r&&(t=t.substring(0,r)),t+="/signeds3download?useCdn=true";const n=new XMLHttpRequest;n.open("GET",t),n.setRequestHeader("Authorization",o.sR.HTTP_REQUEST_HEADERS.Authorization),n.responseType="json",n.send();const i=()=>{e(null)};n.onload=t=>{const r=t.currentTarget.response;e(r.url)},n.onerror=i,n.ontimeout=i,n.onabort=i}))},h._rawGet=async function(t,e,r,o,a,u){u=u||{},r=h.generateUrl(t,e,r,u.apiData,u.escapeOssObjects,u.guid);let f=!1;if(h.isOSSUrl(r)){const t=await h.getSignedS3DownloadUrl(r);t?(r=t,f=!0):console.warn("Failed getting signed URL - Fallback to direct OSS resource.")}if(u.queryParams&&!f){var d=-1===r.indexOf("?")?"?":"&";r=r+d+u.queryParams}var p=new XMLHttpRequest;function m(t){a&&a(p.status,p.statusText,{url:r},p)}function g(t){if("json"===u.responseType)try{if(t instanceof Uint8Array)return(0,s.TN)(t);if("string"==typeof t)return JSON.parse(t)}catch(t){}return t}function v(t){if(p.status>=200&&p.status<400)if(p.response&&p.response instanceof ArrayBuffer){var e;if(31===(e=200===p.status&&u.range?new Uint8Array(p.response,u.range.min,u.range.max-u.range.min):new Uint8Array(p.response))[0]&&139===e[1]){l||(l=!0,n.vF.warn("An LMV resource ("+r+") was not uncompressed by the browser. This hurts performance. Check the Content-Encoding header returned by the server and check whether you're getting double-compressed streams. The warning prints only once but it's likely the problem affects multiple resources."));try{e=(0,c.Wt)(e)}catch(t){a(i.tG.BAD_DATA,"Malformed data received when requesting file",{url:r,exception:t.toString(),stack:t.stack},p)}}o&&o(g(e))}else{var s=p.response;s||u.responseType&&"text"!==u.responseType||(s=p.responseText),o&&o(g(s))}else m()}try{var y=!Object.prototype.hasOwnProperty.call(u,"asynchronous")||u.asynchronous;if(p.open(u.method||(u.noBody?"HEAD":"GET"),r,y),Object.prototype.hasOwnProperty.call(u,"responseType")&&(p.responseType=u.responseType),u.range&&p.setRequestHeader("Range","bytes="+u.range.min+"-"+u.range.max),!f&&(p.withCredentials=!0,Object.prototype.hasOwnProperty.call(u,"withCredentials")&&(p.withCredentials=u.withCredentials),u.headers))for(var b in u.headers)p.setRequestHeader(b,u.headers[b]),"authorization"===b.toLocaleLowerCase()&&(p.withCredentials=!1);y&&(p.onload=v,p.onerror=m,p.ontimeout=m,p.onabort=function(t){a&&a(p.status,"request was aborted",{url:r,aborted:!0},p)},u.ondata&&(p.overrideMimeType("text/plain; charset=x-user-defined"),u._dlProgress={streamOffset:0},p.onreadystatechange=function(){if(p.readyState>2&&200===p.status&&u.ondata){var t=p.responseText;if(u._dlProgress.streamOffset>=t.length)return;var e=function(t,e){for(var r=t.length-e,n=new ArrayBuffer(r),i=new Uint8Array(n,0),s=0,o=e;s{var r;return null==t||null===(r=t.headers)||void 0===r?void 0:r.get(e)}}}try{const t={method:s.method||(s.noBody?"HEAD":"GET"),body:s.postData,headers:s.headers||{},signal:s.abortSignal};if(s.range&&(t.headers.Range="bytes="+s.range.min+"-"+s.range.max),!o&&(t.credentials="include",Object.prototype.hasOwnProperty.call(s,"withCredentials")&&!1===s.withCredentials&&(t.credentials="omit"),s.headers))for(var f in s.headers)"authorization"===f.toLocaleLowerCase()&&(t.credentials="omit");if(!(u=await fetch(c,t)).ok){let t=await u.text();return void i(u.status,t,{url:r},l(u))}if(s.ondata){const t=u.body.getReader();for(;;){let{done:e,value:r}=await t.read();if(e)return void(n&&n(null));s.ondata(r)}}else{let t;s.responseType&&"text"!==s.responseType?"json"===s.responseType?t=await u.json():(t=await u.arrayBuffer(),200===c.status&&s.range&&(t=new Uint8Array(t,s.range.min,s.range.max-s.range.min))):t=await u.text(),n&&n(t)}}catch(t){"AbortError"===t.name?i(0,"request was aborted",{url:r,aborted:!0},l(u)):u?i(u.status,u.statusText,{url:r,exception:t},l(u)):i(0,"network error",{url:r,exception:t})}}}function y(t,e){Object.prototype.hasOwnProperty.call(e,"responseType")||(e.responseType="arraybuffer"),Object.prototype.hasOwnProperty.call(e,"withCredentials")||(e.withCredentials=!!t.auth),e.headers=t.headers,e.queryParams=t.queryParams,e.endpoint=t.endpoint,e.escapeOssObjects=t.escapeOssObjects}h.defaultFailureCallback=function(t,e,r){403==t?this.raiseError(i.tG.NETWORK_ACCESS_DENIED,"Access denied to remote resource",{url:r.url,httpStatus:t,httpStatusText:e}):404==t?this.raiseError(i.tG.NETWORK_FILE_NOT_FOUND,"Remote resource not found",{url:r.url,httpStatus:t,httpStatusText:e}):0===t&&r.aborted?this.raiseError(i.tG.LOAD_CANCELED,"Request aborted",{url:r.url,httpStatus:t,httpStatusText:e}):t>=500&&t<600?this.raiseError(i.tG.NETWORK_SERVER_ERROR,"Server error when accessing resource",{url:r.url,httpStatus:t,httpStatusText:e}):r.exception?this.raiseError(i.tG.NETWORK_FAILURE,"Network failure",{url:r.url,exception:r.exception.toString(),stack:r.exception.stack}):this.raiseError(i.tG.NETWORK_UNHANDLED_RESPONSE_CODE,"Unhandled response code from server",{url:r.url,httpStatus:t,httpStatusText:e,data:r})},h.getItem=function(t,e,r,n,i){if(y(t,i=i||{}),i.range&&!t.supportsRangeRequests){let t="start="+i.range.min+"&end="+i.range.max;i.queryParams?i.queryParams+="&"+t:i.queryParams=t,i.range=void 0}h.rawGet(t.endpoint,"items",e,r,n,i)},h.getManifest=function(t,e,r,n,i){i=i||{},Object.prototype.hasOwnProperty.call(i,"responseType")||(i.responseType="json"),y(t,i),h.rawGet(t.endpoint,"bubbles",e,r,n,i)},h.getProperties=function(t,e,r,n,i,s){const o={};y(t,o),o.responseType="json",o.guid=r,o.method="POST",o.postData=JSON.stringify(n),o.headers["Content-Type"]="application/json",o.headers.accept="application/json",o.headers["Access-Control-Allow-Origin"]="*",h.rawGet(t.endpoint,"properties",e,i,s,o)},h.getThumbnail=function(t,e,r,n,i){y(t,i=i||{});var s=i.queryParams||"",o=[];if(-1===s.indexOf("guid=")&&i.guid&&o.push("guid="+encodeURIComponent(i.guid)),-1===s.indexOf("role=")){var a=i.role||"rendered";o.push("role="+a)}if(-1===s.indexOf("width=")){let t=i.size||400;o.push("width="+t)}if(-1===s.indexOf("height=")){let t=i.size||400;o.push("height="+t)}-1===s.indexOf("acmsession=")&&i.acmsession&&o.push("acmsession="+i.acmsession);var u=o.join("&");i.queryParams?i.queryParams=i.queryParams+"&"+u:i.queryParams=u,h.rawGet(t.endpoint,"thumbnails",e,r,n,i)},h.getACMSession=function(t,e,r,i){const s={numOfAttempts:4,timeMultiple:5,retry:(t,e)=>(n.vF.warn(`acmsession request failed. Attempt #${e}`),!0)};(0,u.backOff)((()=>new Promise(((r,n)=>{h._getACMSession(t,e,r,n)}))),s).then((function(){return r(...arguments)})).catch((function(){return i(...arguments)}))},h._getACMSession=function(t,e,r,n){var i,s={};for(var o in e)"oauth2AccessToken"===o?i=e[o]:-1!==o.indexOf("x-ads-acm")&&(s[o]=e[o]);s.application="autodesk";var a=new XMLHttpRequest;a.open("POST",t+"/oss-ext/v2/acmsessions",!0),a.setRequestHeader("Content-Type","application/json"),a.setRequestHeader("Authorization","Bearer "+i),a.responseType="json",a.onload=function(){if(200===a.status&&a.response){var t="string"==typeof a.response?JSON.parse(a.response):a.response;t&&t.acmsession?r(t.acmsession):n(a.status,"Can't get acm session from response.")}else n(a.status)},a.onerror=n,a.ontimeout=n,a.send(JSON.stringify(s)),delete s.application}},577:(t,e,r)=>{"use strict";r.d(e,{sR:()=>x,_$:()=>v,aK:()=>b});var n=r(6247),i=(0,n.mS)(),s=i;s&&s.document,i.LOCALIZATION_REL_PATH="",i.LMV_VIEWER_VERSION="7.99.1",i.LMV_BUILD_TYPE="Production",i.LMV_RESOURCE_ROOT="",i.LMV_IS_FLUENT_BUILD=!1,i.USE_OTG_DS_PROXY=!1,i.LMV_THIRD_PARTY_COOKIE=!(0,n.Gz)()&&void 0,"v"===i.LMV_VIEWER_VERSION.charAt(0)&&(i.LMV_VIEWER_VERSION=i.LMV_VIEWER_VERSION.substr(1)),i.LMV_VECTOR_PDF=!1,i.LMV_RASTER_PDF=!0;const o=(0,n.mS)();var a={},u=null;a.ENDPOINT_API_DERIVATIVE_SERVICE_V2="derivativeV2",a.ENDPOINT_API_MODEL_DERIVATIVE_V2="modelDerivativeV2",a.ENDPOINT_API_FLUENT="fluent",a.ENDPOINT_API_D3S="D3S",a.ENDPOINT_API_DERIVATIVE_STREAMING="streamingV2";var c,h={derivativeV2:{baseURL:"/derivativeservice/v2",itemURL:"/derivativeservice/v2/derivatives/:derivativeurn",manifestURL:"/derivativeservice/v2/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",propertyQueryURL:"/modelderivative/v2/designdata/:urn/metadata/:guid/properties:query"},derivativeV2_EU:{baseURL:"/derivativeservice/v2/regions/eu",itemURL:"/derivativeservice/v2/regions/eu/derivatives/:derivativeurn",manifestURL:"/derivativeservice/v2/regions/eu/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/eu/thumbnails/:urn"},derivativeV2_APAC:{baseURL:"/derivativeservice/v2/regions/apac",itemURL:"/derivativeservice/v2/regions/apac/derivatives/:derivativeurn",manifestURL:"/derivativeservice/v2/regions/apac/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/apac/thumbnails/:urn"},derivativeV2_Fedramp:{baseURL:"/derivativeservice/v2",itemURL:"/derivativeservice/v2/derivatives/:derivativeurn",manifestURL:"/derivativeservice/v2/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn"},modelDerivativeV2:{baseURL:"/modelderivative/v2/",itemURL:"/modelderivative/v2/designdata/:urn/manifest/:derivativeurn",manifestURL:"/modelderivative/v2/designdata/:urn/manifest",thumbnailsURL:"/modelderivative/v2/designdata/:urn/thumbnail",propertyQueryURL:"/modelderivative/v2/designdata/:urn/metadata/:guid/properties:query"},fluent:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},D3S:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},D3S_EU:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/eu/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},D3S_APAC:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/APAC/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},streamingV2:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},streamingV2_EU:{baseURL:"/regions/eu/modeldata",itemURL:"/regions/eu/modeldata/file/:derivativeurn",manifestURL:"/regions/eu/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/eu/thumbnails/:urn",cdnURL:"/regions/eu/cdn",cdnWS:"/regions/eu/cdnws"},streamingV2_APAC:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},streamingV2_Fedramp:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"}},l="",f=a.ENDPOINT_API_DERIVATIVE_SERVICE_V2,d=!1,p=!1,m="",g=!1;function v(){return c}a.HTTP_REQUEST_HEADERS={},a.queryParams={},a.setEndpointAndApi=function(t,e){null!=t&&(l=t),e&&(f=e,e.startsWith("D3S")&&console.warn(`api=${e} is deprecated and will be removed in a future release. Use streamingV2 or streamingV2_EU (europe region) instead`))},a.getEndpointAndApi=function(){return l+h[f].baseURL},a.getApiEndpoint=function(){return l},a.getApiFlavor=function(){return f},a.getCdnUrl=function(){return u||(l?l+h[f].cdnURL:void 0)},a.getCdnWebSocketEndpoint=function(){return l+(h[f].cdnWS||"")},a.setCdnUrl=function(t){u=t},a.getCdnRedirectUrl=function(){var t=h[f].cdnRedirectURL;return t?l+t:null},a.setAcmSession=function(t){m=t},a.getAcmSession=function(){return m},a.getManifestApi=function(t,e,r){var n=t||l;return e=e||"",(n+=h[r=r||f].manifestURL).replace(":urn",e)},a.getItemApi=function(t,e,r){var n=r||f,i=(t||l)+h[n].itemURL;e=e||"";var s=decodeURIComponent(e);if(-1!==i.indexOf(":urn")){var o=s.split("/")[0]||"";o=(o=o.split(":"))[o.length-1]||"",i=i.replace(":urn",o)}return n===a.ENDPOINT_API_MODEL_DERIVATIVE_V2&&(e=encodeURIComponent(s)),i.replace(":derivativeurn",e)},a.getThumbnailApi=function(t,e,r){return((t||l)+h[r||f].thumbnailsURL).replace(":urn",e||"")},a.getPropertyQueryApi=function(t,e,r,n){let i=(t||l)+h[r||f].propertyQueryURL;return i=i.replace(":urn",e||""),i.replace(":guid",n||"")},a.getUseCredentials=function(){return d},a.getDomainParam=function(){return console.warn("getDomainParam is deprecated, switch to getQueryParams instead."),this.getUseCredentials()&&!(0,n.Gz)()?"domain="+encodeURIComponent(o.location.origin):""},a.addQueryParam=function(t,e){this.queryParams[t]=e},a.deleteQueryParam=function(t){delete this.queryParams[t]},a.getQueryParams=function(t){let e=this.getUseCredentials()&&!(0,n.Gz)()?"domain="+encodeURIComponent(o.location.origin):"";var r;r="bypassds","undefined"!=typeof window&&function(t,e){t=t.replace(/[[]/,"\\[").replace(/[\]]/,"\\]");var r=new RegExp("[\\?&]"+t+"=([^&#]*)").exec(e);return null==r?"":decodeURIComponent(r[1].replace(/\+/g," "))}(r,s.location.href)&&(e=e?e+"&bypassds=1":"bypassds=1");let i=[];for(let t in this.queryParams)i.push(encodeURIComponent(t)+"="+encodeURIComponent(this.queryParams[t]));return i.length&&(e?e+="&"+i.join("&"):e=i.join("&")),e&&t&&(t.queryParams?t.queryParams+="&"+e:t.queryParams=e),e},a.setUseCredentials=function(t){d=t},a.setUseCookie=function(t){p=t},a.getUseCookie=function(){return p},a.isOtgBackend=function(){return this.getApiFlavor()===this.ENDPOINT_API_FLUENT},a.isSVF2Backend=function(){let t=this.getApiFlavor();return t.startsWith(this.ENDPOINT_API_D3S)||t.startsWith(this.ENDPOINT_API_DERIVATIVE_STREAMING)},a.setEscapeOssObjects=function(t){g=t},a.getEscapeOssObjects=function(){return g},a.initLoadContext=function(t){for(var e in(t=t||{}).auth=this.getUseCredentials(),t.endpoint||(t.endpoint=this.getApiEndpoint()),t.api||(t.api=this.getApiFlavor()),t.headers||(t.headers={}),this.HTTP_REQUEST_HEADERS)t.headers[e]=this.HTTP_REQUEST_HEADERS[e];return t.api,this.ENDPOINT_API_FLUENT,this.getQueryParams(t),t.otg_cdn=u||this.getCdnUrl(),t.otg_ws=this.getCdnWebSocketEndpoint(),t.escapeOssObjects=this.getEscapeOssObjects(),t};var y=!1;function b(){return y}let x=a;a.initLoadContext.bind(a)},7676:(t,e,r)=>{"use strict";r.d(e,{k:()=>s});var n=r(5468);function i(t){var e=new n.iD(t.fragments);e.finfo.wantSort=t.fragments.wantSort,e.build(t.bvhOptions);var r={nodes:e.nodes.getRawData(),primitives:e.primitives};t.worker.postMessage({bvh:r,modelId:t.modelId,jobId:t.jobId},[r.nodes,r.primitives.buffer])}function s(t){t.register("COMPUTE_BVH",{doOperation:i})}},1711:(t,e,r)=>{"use strict";r.d(e,{k:()=>d});var n=r(7365),i=r(6118),s=1;function o(){this.vb=null,this.vbstride=0,this.posOffset=0,this.normalOffset=0,this.matrices=null,this.ranges=null,this.dbIds=null,this.id=s++}function a(t){t.x=.5*(1+Math.atan2(t.y,t.x)/Math.PI),t.y=.5*(1+t.z),t.z=0}function u(t,e,r){e[r++]=255&t,e[r++]=t>>8&255,e[r++]=t>>16&255,e[r]=0}var c=function(t,e,r,n,i,s,o){for(var u,c,h,l,f,d,p,m=t.posOffset,g=n;g{"use strict";r.d(e,{k:()=>d});var n=r(8661);class i{constructor(){this.numPolyLine=0,this.numEllipticals=0,this.numCirculars=0,this.numSegments=0,this.geometries=[]}addPolyLine(t,e,r){this.numPolyLine++;const n=t.length/2,i=[];for(let e=0;e({type:"polyLine",vertices:t,fillColor:e,dbId:r}))(i,e,r);this.geometries.push(s)}addSegment(t,e,r){this.numSegments++;const n=((t,e,r)=>({type:"lineSegment",from:t,to:e,dbId:r}))(t,e,r);this.geometries.push(n)}addCircularArc(t,e,r,n,i,s){this.numCirculars++;const o=((t,e,r,n,i)=>({type:"circularCurve",circle:{center:t,radius:e},startInRadians:r,endInRadians:n,dbId:i}))([t,e],r,n,i,s);this.geometries.push(o)}addEllipticalArc(t,e,r,n,i,s,o){this.numEllipticals++;const a={ellipse:{center:[t,e],majorAxis:i,minorAxis:s,tiltInRadians:r},startInRadians:n,endInRadians:o,dbId:void 0};this.geometries.push(a)}}var s=r(3293),o=r(6916),a=r(7480);class u{constructor(t,e){if(this.metadata=t,this.scaleX=1,this.scaleY=1,this.bbox={min:{x:0,y:0,z:0},max:{x:0,y:0,z:0}},this.fillColor=null,t){const e=t.page_dimensions;this.setScale(e)}this.excludeTextGeometry=e.excludeTextGeometry||!0,this.dbId=0,this.maxDbId=0,this.geometry=new i,this.error=!1,this.offsetX=0,this.offsetY=0}setScale(t){this.paperWidth=t.page_width,this.paperHeight=t.page_height,this.scaleX=this.paperWidth/t.plot_width,this.scaleY=this.paperHeight/t.plot_height}load(t,e){e instanceof Uint8Array||(e=new Uint8Array(e)),this.data=e,this.parse(),t.loadDoneCB(!0)}loadFrames(t){this.loadContext=t;let e=t.data;e?(e instanceof Uint8Array||(e=new Uint8Array(e)),this.data=e):t.finalFrame&&(this.data=null),this.probeFrames(t.finalFrame),t.loadDoneCB(!0)}sx(t){return t*this.scaleX}sy(t){return t*this.scaleY}parserAssert(t,e,r){return t!=e&&(o.vF.warn("Expect "+e+"; actual type is "+t+"; in function "+r),this.error=!0,!0)}parseDataType(){const t=this.stream.getVarints();switch(t){case n.d$.dt_void:this.parseVoid();break;case n.d$.dt_int:this.parseInt();break;case n.d$.dt_object:this.parseObject();break;case n.d$.dt_varint:this.parseVarint();break;case n.d$.dt_point_varint:this.parsePoint();break;case n.d$.dt_float:this.parseFloat();break;case n.d$.dt_point_varint_array:this.parsePointsArray();break;case n.d$.dt_circular_arc:this.parseCircularArc();break;case n.d$.dt_circle:this.parseCircle();break;case n.d$.dt_arc:this.parseArc();break;case n.d$.dt_int_array:this.parseIntArray();break;case n.d$.dt_varint_array:this.parseVarintArray();break;case n.d$.dt_byte_array:this.parseByteArray();break;case n.d$.dt_string:this.parseString();break;case n.d$.dt_double_array:this.parseDoubleArray();break;default:this.error=!0,o.vF.info("Data type not supported yet: "+t)}}readHeader(){const t=this.stream=new s.z(this.data),e=t.getString(3);if("F2D"!==e)return o.vF.error("Invalid F2D header : "+e,(0,a.$f)(a.tG.BAD_DATA)),!1;const r=t.getString(2);return"01"!==r?(o.vF.error("Only support f2d major version 1; actual version is : "+r,(0,a.$f)(a.tG.BAD_DATA)),!1):"."!==t.getString(1)?(o.vF.error("Invalid version delimiter.",(0,a.$f)(a.tG.BAD_DATA)),!1):(t.getString(2),!0)}probe(){const t=this.stream;this.error=!1;try{for(;t.offset{"use strict";r.d(e,{k:()=>v});var n=r(1136);function i(t){this.buffer=t,this.offset=0,this.byteLength=t.length,this.convBuf=new ArrayBuffer(8),this.convUint8=new Uint8Array(this.convBuf),this.convUint16=new Uint16Array(this.convBuf),this.convInt32=new Int32Array(this.convBuf),this.convUint32=new Uint32Array(this.convBuf)}function s(t){this.offset=t,this.message="try to access an offset that is out of bounds: "+this.offset,this.toString=function(){return this.message}}i.prototype.boundsCheck=function(t){if(t>=this.byteLength)throw new s(t)},i.prototype.seek=function(t){this.boundsCheck(t),this.offset=t},i.prototype.getBytes=function(t){this.boundsCheck(this.offset+t);var e=new Uint8Array(this.buffer.buffer,this.offset,t);return this.offset+=t,e},i.prototype.skipBytes=function(t){this.boundsCheck(this.offset+t),this.offset+=t},i.prototype.getVarints=function(){var t,e=0,r=0;do{this.boundsCheck(this.offset),e|=(127&(t=this.buffer[this.offset++]))<32767&&(t|=4294901760),t},i.prototype.getInt32=function(){this.boundsCheck(this.offset+4);var t=this.buffer,e=this.convUint8,r=this.offset;return e[0]=t[r],e[1]=t[r+1],e[2]=t[r+2],e[3]=t[r+3],this.offset+=4,this.convInt32[0]},i.prototype.getUint32=function(){this.boundsCheck(this.offset+4);var t=this.buffer,e=this.convUint8,r=this.offset;return e[0]=t[r],e[1]=t[r+1],e[2]=t[r+2],e[3]=t[r+3],this.offset+=4,this.convUint32[0]},i.prototype.skipUint32=function(){this.boundsCheck(this.offset+4),this.offset+=4},i.prototype.getFloat32=function(){return this.boundsCheck(this.offset+4),this.offset+=4,0},i.prototype.getFloat64=function(){return this.boundsCheck(this.offset+8),this.offset+=8,0},i.prototype.skipFloat64=function(){this.boundsCheck(this.offset+8),this.offset+=8},i.prototype.reset=function(t){this.buffer=t,this.offset=0,this.byteLength=t.length};var o=r(8661),a=r(7480),u=r(6916);function c(){this.data=null,this.frameStart=0,this.frameEnd=0,this.stream=null,this.opCount=0,this.marker={frameStart:this.frameStart,frameEnd:this.frameEnd}}c.prototype.load=function(t){return this.data=t,this.frameStart=0,this.stream?(this.stream.reset(this.data),this.stream.seek(0),this.frameEnd=0):(this.stream=new i(this.data),this.stream.seek(8),this.frameStart=8,this.frameEnd=8),this.probe(),this.marker.frameStart=this.frameStart,this.marker.frameEnd=this.frameEnd,this.marker};var h=o.d$,l=o.xL;c.prototype.readColor=function(){var t=this.stream;t.getVarints(),t.getVarints(),t.skipUint32()},c.prototype.parsePointPositions=function(){this.stream.getVarints(),this.stream.getVarints()},c.prototype.unhandledTypeWarning=function(t,e){u.vF.warn("Unhandled semantic type when probing F2d : "+e+" in function "+t)},c.prototype.parseObject=function(){this.stream.getVarints()},c.prototype.parseString=function(){var t=this.stream;t.getVarints();var e=t.getVarints();t.skipBytes(e)},c.prototype.parsePoint=function(){this.stream.getVarints(),this.parsePointPositions()},c.prototype.parseVarintArray=function(){var t=this.stream;t.getVarints();for(var e=t.getVarints(),r=0;r0&&(m=y);var w=new c,_=!0,I=0,A=!1;function O(i){if(n.postMessage({type:"F2DAssetURL",urls:f}),f=null,p){let s={type:"F2DSTREAM",finalFrame:!0,finished:!0,progress:1};return A||(s.manifest=e,s.metadata=r,s.basePath=t.basePath,s.f2dSize=m,A=!0),n.debug("Total text bytes count : "+i.length),void n.postMessage(s)}var a;if(s.length>o&&(s=new Uint8Array(s.buffer.slice(0,o))),31==s[0]&&139==s[1])try{a=new Uint8Array(s.buffer,0,o),a=(0,d.Wt)(a)}catch(t){console.error(t)}var u={type:"F2DBLOB",metadata:r,manifest:e,f2dSize:m,basePath:t.basePath,progress:1,buffer:a.buffer},c=[];c.push(a.buffer),n.postMessage(u,c)}function S(){if(p){if(_&&(_=!1,31==s[0]&&139==s[1]))return u.vF.error("F2D streaming broken by non-streaming unzip!",(0,a.$f)(a.tG.BAD_DATA)),void(p=!1);var i=new Uint8Array(s.buffer,I,o-I);try{var c=w.load(i);if(c.frameEnd>c.frameStart){var h=s.buffer.slice(I+c.frameStart,I+c.frameEnd);I+=c.frameEnd;var l=[];l.push(h);let i={type:"F2DSTREAM",frames:h,finalFrame:!1};m&&(i.progress=I/m),A||(i.manifest=e,i.metadata=r,i.f2dSize=m,i.basePath=t.basePath,A=!0),n.postMessage(i,l)}}catch(t){n.debug(t)}}}v=O,g=function(t){l(t),S()},o>0&&S(),null!=h&&O(h)}n.PG.getItem(t,t.url,(function(t){v(t)}),t.onFailureCallback,{ondata:function(t){g(t)},responseType:""}),m(t,"metadata.json.gz",(function(n){try{e=JSON.parse((0,f.xH)(n)),i++}catch(t){self.raiseError(a.tG.BAD_DATA,"")}2===i&&y(t,r,e)})),m(t,"manifest.json.gz",(function(n){try{n&&(r=JSON.parse((0,f.xH)(n))),i++}catch(t){}2===i&&y(t,r,e)}))}function v(t){t.register("STREAM_F2D",{doOperation:g})}},574:(t,e,r)=>{"use strict";r.d(e,{k:()=>N});var n=r(8983),i=r(6247),s=r(2816),o=new Float32Array(3),a=1/Math.PI,u=Math.atan2;(0,i.Gz)()||(u=function(t,e){var r=Math.abs(e),n=Math.abs(t),i=Math.min(r,n)/Math.max(r,n),s=i*i,o=((-.0464964749*s+.15931422)*s-.327622764)*s*i+i;return n>r&&(o=1.57079637-o),e<0&&(o=3.14159274-o),t<0&&(o=-o),o});var c=function(t,e,r,n,i){var s={x:e[t*n],y:e[t*n+1],z:e[t*n+2]},o={x:s.x-e[t*i],y:s.y-e[t*i+1],z:s.z-e[t*i+2]},a=r[n].next==i?r[n].prev:r[n].next;return{pos:s,next:o,prev:a<0?{x:o.x,y:o.y,z:o.z}:{x:e[t*a]-s.x,y:e[t*a+1]-s.y,z:e[t*a+2]-s.z}}},h=function(t,e,r,n,i){if("OCTM"!=t.getString(4))return null;if(5!=t.getInt32())return null;var c=t.getString(3);t.getUint8();var h={stream:null,vertices:null,indices:null,normals:null,colors:null,uvs:[],attrs:[]};h.vertexCount=t.getInt32(),h.triangleCount=t.getInt32(),h.texMapCount=t.getInt32(),h.attribMapCount=t.getInt32(),h.flags=t.getInt32(),h.comment=t.getString(t.getInt32());var l=i;h.vbstride=3,1&h.flags&&(h.vbstride+=l?1:3),h.vbstride+=2*(h.texMapCount||0),h.vbstride+=3*(h.attribMapCount||0),h.vblayout={};var f=0;if(h.vblayout.position={offset:f,itemSize:3},f+=3,1&h.flags&&(h.vblayout.normal={offset:f,itemSize:l?2:3,bytesPerItem:l?2:4,normalized:l},f+=l?1:3),h.texMapCount)for(var d=0;d1?(a.vertexCount=t.readU16(),i=t.readU16(),o=t.readU16(),e.version>2&&(a.lineWidth=t.readF32())):(a.vertexCount=t.readU32V(),i=t.readU32V(),o=t.readU32V()),a.isLines=!0):(a.vertexCount=t.readU16(),i=t.readU16(),a.pointSize=t.readF32(),a.isPoints=!0);var u=0!=t.stream.getUint8();a.vbstride=3,u&&(a.vbstride+=3),a.vblayout={};var h=0;a.vblayout.position={offset:h,itemSize:3},h+=3,u&&(a.vblayout.color={offset:h,itemSize:3}),a.vb=new Float32Array(a.vertexCount*a.vbstride);var l,f,d=a.vb,p=a.vbstride,m=t.stream;if(m.getVector3Array(d,a.vertexCount,a.vblayout.position.offset,p),u)for(l=0,h=a.vblayout.color.offset,f=a.vertexCount;l1?(v=new Uint16Array(g(m.getBytes(2*i))),y=new Uint16Array(g(m.getBytes(2*o)))):(v=new Int32Array(g(m.getBytes(4*i))),y=new Int32Array(g(m.getBytes(4*o))));var b=y[o-1]-o+1;a.indices=new Uint16Array(2*b);for(var x=0,w=0;w+1=0&&++l,f[h].prev=u,f[h].prev_seg=o,f[h].next>=0&&++l;var d=2*n,p=new Array(d),m=new Uint16Array(6*(n+l)),g=0;for(o=0;o=0&&(h=2*f[u].prev_seg+1,u=a,m[g++]=2*h,m[g++]=2*u,m[g++]=2*h+1,m[g++]=2*u+1,m[g++]=2*u,m[g++]=2*h);t.indices=m;var v=2*d;t.vb=new Float32Array(v*t.vbstride),i=t.vblayout.position.offset;for(var y=0;y0?(this.precisionTolerance=r,this.scale=1/this.precisionTolerance):(this.precisionTolerance=-r*this.boxSize,this.scale=1/this.precisionTolerance),this.snapBaseX=this.bbox.min.x,this.snapBaseY=this.bbox.min.y,this.snapBaseZ=this.bbox.min.z,this.xymap={}}findOrAddPoint(t,e,r,n){let i,s=0|(t-this.snapBaseX)*this.scale,o=0|(e-this.snapBaseY)*this.scale,a=0|(r-this.snapBaseZ)*this.scale,u=1/0;for(let n=s-1;n<=s+1;n++){let s=this.xymap[n];if(s)for(let n=o-1;n<=o+1;n++){let o=s[n];if(o)for(let n=a-1;n<=a+1;n++){let s=o[n];if(void 0===s)continue;this.getVertex(s,M);let a=M,c=(a.x-t)*(a.x-t)+(a.y-e)*(a.y-e)+(a.z-r)*(a.z-r);cthis.precisionTolerance&&(i=void 0),void 0===i){let t=this.xymap[s];t||(t=this.xymap[s]={});let e=t[o];return e||(e=t[o]={}),e[a]=n,n}return i}}let F=new S.S,R=new S.S,z=new S.S,V=new S.S,U=new S.S;class D{constructor(t,e,r){let n=t.boundingBox||r,i=new T.K;n&&i.copy(n),this.geom=t,this.myVerts=function(t,e){var r=new Float32Array(3*P(t));return function(t,e,r){t.attributes,m||(m=new S.S,g=new S.S,new S.S),r&&(v||(v=new THREE.Matrix3),v.getNormalMatrix(r));const{positions:n,stride:i,poffset:s}=k(t),{normals:o,noffset:a}=C(t);if(n)for(var u=P(t),c=s,h=a,l=0;lu){var l=a;a=u,u=l,h=!0}var f=s[a];if(f){var d=f[u];if(void 0===d)f[u]=h?-r-1:r;else{if(n)o.push(t),o.push(e);else{i.getNormal(t,e,r,V),d<0?i.getNormal(u,a,i.remap[-d-1],U):i.getNormal(a,u,i.remap[d],U);var p=V.dot(U);Math.abs(p)<.25&&(o.push(t),o.push(e))}delete f[u]}}else s[a]={},s[a][u]=r}}for(var u in function(t,e){var r,n,i;y||(y=new S.S,b=new S.S,x=new S.S,w=new S.S,_=new S.S,I=new S.S);const{positions:s,stride:o,poffset:a}=k(t),{normals:u,noffset:c}=C(t),h=function(t){return t.ib||t.indices||(t.index?t.index.array:null)}(t);if(s)if(h){var l=t.groups;l&&0!==l.length||(l=[{start:0,count:h.length,index:0}]);for(var f=0,d=l.length;f>5];return!(e&&e&1<<(31&t))};for(i=0;i{"use strict";r.d(e,{k:()=>h});var n=r(1136),i=r(5468),s=r(1706);function o(t,e){this.min.x=t[e],this.min.y=t[e+1],this.min.z=t[e+2],this.max.x=t[e+3],this.max.y=t[e+4],this.max.z=t[e+5]}function a(t,e){t[e]=this.min.x,t[e+1]=this.min.y,t[e+2]=this.min.z,t[e+3]=this.max.x,t[e+4]=this.max.y,t[e+5]=this.max.z}function u(t,e){var r=t[1]<<8|t[0];r||(r=28),this.boxStride=r/4,this.count=t.byteLength/r-1;let n=e.globalOffset||{x:0,y:0,z:0},i=e.fragmentTransformsOffset||{x:0,y:0,z:0};if(this.count){this.boxes=new Float32Array(t.buffer,r),this.flags=new Int32Array(t.buffer,r);var u=this.boxes;if(e.placementTransform){var c=new s.K,h=0;for(let t=0;t{"use strict";r.d(e,{k:()=>E});var n=r(1136),i=r(6247);const s="otg",o="otg-content",a="otg-lru",u=25e4;class c{constructor(t){this.db=null,this.readTransaction=null,this.loaded=!1,this.opening=!1,this.dbDisabled=this._isDbDisabled(t),!(0,i.Gz)()&&this.dbDisabled&&console.log("IndexedDb disabled"),this.storeName=o,this.storeNameTimestamp=a,this.bothStoreNames=[this.storeName,this.storeNameTimestamp],this.pendingTimestampUpdates={},this.pendingTimestampCount=0,this.pendingStores=[],this._pendingCallbacks=[]}_isDbDisabled(t){return t||(0,i.Gz)()||(0,i.nr)()||(0,i.Xb)()||"undefined"==typeof indexedDB}notifyPendingCallbacks(t){this._pendingCallbacks.forEach((e=>e(t,this.db))),this._pendingCallbacks=[]}open(t){if(this.dbDisabled)return void(t&&t());if(this.loaded)return void(t&&t(null,this.db));if(t&&this._pendingCallbacks.push(t),this.opening)return;this.opening=!0;let e=indexedDB.open(s,1);e.onerror=t=>{console.error("Failed to open or create cache database."),this.dbDisabled=!0,this.notifyPendingCallbacks(t)},e.onsuccess=t=>{this.opening=!1,this.db=t.target.result,this.db.onerror=function(t){console.error("Database error",t)},this.loaded=!0,this.notifyPendingCallbacks()},e.onupgradeneeded=t=>{console.log("Db upgrade",this.storeName);let e=t.target.result;e.createObjectStore(o),e.createObjectStore(a).createIndex(a+"-index","t",{unique:!1})}}deleteOld(t){if(!this.db)return void t();if(this.deleteInProgress)return;this.deleteInProgress=!0;let e=IDBKeyRange.upperBound(Date.now()-3e5,!0),r=[];this.db.transaction([this.storeNameTimestamp]).objectStore(this.storeNameTimestamp).index(this.storeNameTimestamp+"-index").openCursor(e).onsuccess=e=>{let n=e.target.result;if(n&&r.length<200)return r.push(n.primaryKey),void n.continue();if(r.length){console.log("Deleting old objects.",r.length);let e=this.db.transaction(this.bothStoreNames,"readwrite");e.oncomplete=e=>{this.deleteInProgress=!1,console.log("Delete done"),t&&t()},e.onerror=t=>{this.deleteInProgress=!1,console.error("Transaction error.",t)},e.onabort=t=>{this.deleteInProgress=!1;let e=t.target.error;console.log("Failed to delete cached objects",e)};let n=e.objectStore(this.storeName),i=e.objectStore(this.storeNameTimestamp);for(let t=0;t{t()}),e.onerror=e=>{console.error("Transaction error.",e),t&&t(e.target.error)},e.onabort=e=>{"QuotaExceededError"===e.target.error.name&&this.deleteOld((()=>{})),t&&t(e.target.error)},this.writeTransaction=e}for(var e=0;e{console.error("Object store error.",t)},this.writeTransaction.objectStore(this.storeNameTimestamp).put({t:Date.now()},r)}this.pendingStores=[],this.writeTransaction=null}else t&&t()}store(t,e,r){this.db?(e=e.slice(),this.pendingStores.push(t),this.pendingStores.push(e),this.pendingStores.length<200||this.deleteInProgress?r&&r():this.flush(r)):r&&r()}flushTimestamps(t){let e=this.db.transaction([this.storeNameTimestamp],"readwrite");t&&(e.oncomplete=e=>{t()}),e.onerror=e=>{console.error("Transaction error.",e),t&&t(e.target.error)},e.onabort=e=>{"QuotaExceededError"===e.target.error.name&&(console.log("Quota exceeded"),this.deleteOld((()=>{}))),t&&t(e.target.error)};let r=e.objectStore(this.storeNameTimestamp);for(let t in this.pendingTimestampUpdates)r.put({t:this.pendingTimestampUpdates[t]},t);this.pendingTimestampUpdates={},this.pendingTimestampCount=0}_createReadTransaction(){let t=this.readTransaction=this.db.transaction(this.storeName);t.oncomplete=t=>{this.readTransaction=null},t.onerror=t=>{console.error("Transaction error.",t),this.readTransaction=null},t.onabort=t=>{console.warn("Transaction abort",t),this.readTransaction=null}}get(t,e){if(this.opening)return console.error("Tried to get IndexedDb resource while database was still opening"),void e(-1,null);if(!this.db)return void e(-1,null);let r;this.readTransaction||this._createReadTransaction();try{r=this.readTransaction.objectStore(this.storeName).get(t)}catch(e){this._createReadTransaction(),r=this.readTransaction.objectStore(this.storeName).get(t)}r.onsuccess=r=>{if(!r.target.result)return void e(-1,null);let n=r.target.result;e(null,n),this.pendingTimestampUpdates[t]=Date.now(),this.pendingTimestampCount++},r.onerror=t=>{e(t.target.errorCode)}}flushStoresAndTimestamps(){this.db&&this.flush((t=>{t||this.flushTimestamps()}))}size(t){if(!this.db)return void t();let e=0,r=0,n=this.db.transaction([this.storeName]).objectStore(this.storeName).openCursor();n.onsuccess=n=>{let i=n.target.result;if(i){let t=i.value;e+=t.length,r++,i.continue()}else t(null,{size:e,items:r})},n.onerror=function(e){t(e)}}estimateCachedHashCount(t){if(this.opening)return console.error("Tried to get IndexedDb resource while database was still opening"),void t(void 0);if(!this.db)return void t(void 0);let e,r=this.db.transaction(this.storeNameTimestamp);try{e=r.objectStore(this.storeNameTimestamp).openKeyCursor()}catch(e){return void t(void 0)}let n=2;e.onsuccess=e=>{const i=e.target.result;if(i)if(--n>0)i.advance(999);else{const e=i.key.charCodeAt(0);t(65536e3/e),r.abort()}else t(2==n?0:1==n?1e3:void 0)},e.onerror=e=>{t(void 0)}}readAllCachedHashes(t){if(this.opening)return console.error("Tried to get IndexedDb resource while database was still opening"),void t([]);if(!this.db)return void t([]);let e,r=this.db.transaction(this.storeNameTimestamp);try{e=r.objectStore(this.storeNameTimestamp).getAllKeys()}catch(e){return void t([])}e.onsuccess=e=>{t(e.target.result)},e.onerror=e=>{t([])}}}var h=r(8914),l=r(9861),f=r(3314),d=r(4318);r(6916);(class{MAX_SIZE=2e3;#t=0;totalBytes=0;head;tail;get count(){return this.#t}constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2e3,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(t,e)=>this.count>this.MAX_SIZE;this.MAX_SIZE=t,this.trimEval=e}clear(){this.#t=0,this.totalBytes=0,this.head=null,this.tail=null}onReceived(t,e){this.addNode(new p(t),e)}addNode(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;for(0===this.#t?this.head=t:1===this.#t?(this.tail=t,this.head.setNext(t)):(this.tail.setNext(t),this.tail=t),this.#t+=e;this.trimEval(this.head,this.tail);){var r;const t=this.head.next;this.head.unlink(),this.totalBytes-=this.head.size,this.#t-=(null===(r=this.head.data)||void 0===r?void 0:r.count)||1,this.head=t}this.totalBytes+=t.size}}).prototype[Symbol.iterator]=function*(){let t=this.tail;for(;t;)yield t,t=t.prev};class p{data;size=0;prev;next;timestamp;constructor(t){this.data=t,t.size&&(this.size=t.size),this.timestamp=Date.now()}setNext(t){return this.next=t,t&&(this.next.prev=this),this}setPrev(t){return this.prev=t,t&&(this.prev.next=this),this}unlink(){var t,e;null===(t=this.prev)||void 0===t||t.setNext(this.next),null===(e=this.next)||void 0===e||e.setPrev(this.prev),this.prev=null,this.next=null}}const m=2,g=20,v=400;function y(t){return t.worker.ctx||(t.worker.ctx={otgws:[],localDbCache:null,opfsCache:null,numRequests:0,pendingForNetwork:[],_pendingGeomHashes:[],_pendingGeoms:[],_pendingFromCache:[],_pendingTransferList:[],_requestsSent:0,_requestsReceived:0,decoderPorts:[],nextPortIndex:0,analyticsForHttpFallbackSent:!1}),t.worker.ctx}function b(t){var e=y(t);if(!t.disableWebSocket){const r=(e,r,n,i)=>I(t,e,r,n,!1,i),n=(e,r,n)=>function(t,e,r,n){t.raiseError(null,n,{hash:e,resourceType:r}),O(t)}(t,e,r,n),i=e=>function(t,e){for(const[r,n]of e)t.queryParams=n.queryParams,S(t,[r],[n.url],[n.lineageUrn],n.type)}(t,e);for(let s=0;s{t.worker.postMessage({event:e,properties:r})};e.opfsCache=new h.x(r),t.clearIndexedDbIfItsLarge&&async function(){if(!indexedDB.databases)return;if(await new Promise((t=>setTimeout(t,2e4))),!(await indexedDB.databases()).find((t=>{let{name:e}=t;return e===s})))return;let t=indexedDB.open(s,1);t.onerror=t=>{console.error("Failed to open cache database for cleanup.",t)},t.onsuccess=t=>{const e=t.target.result,r=e.transaction(o).objectStore(o).count();r.onsuccess=t=>{if(t.target.result>u){console.log("OPFS cache is enabled and the old IndexedDb cache is taking up storage space. Deleting IndexedDb cache."),e.close();const t=indexedDB.deleteDatabase(s);t.onsuccess=()=>{console.log("IndexedDb cache deleted")},t.onerror=t=>{console.error("Failed to delete IndexedDb cache",t)}}},r.onerror=t=>{console.error("Failed to get count from IndexedDb",t)}}}()}else e.localDbCache=new c(t.disableIndexedDb),e.localDbCache.open(null);e.decoderPorts=t.ports}function x(t){var e=y(t);for(const r of e.otgws)r.addAuthorizeUrn(t.modelUrn);t.useOpfs&&e.opfsCache.open(t.lineageUrn),e.flushMessages||(e.flushMessages=setInterval((()=>{!function(t){var e=y(t);if(0===e.pendingForNetwork.length)return;let r=[],i=0,s=0;for(const t of e.otgws){var o;t.hasPermanentError||i++,(null===(o=t.ws)||void 0===o?void 0:o.readyState)===d.STATE.OPEN?(r.push(t),s+=t.inFlightRequests.size):t._openWebSocket()}if(0===i){e.analyticsForHttpFallbackSent||(e.analyticsForHttpFallbackSent=!0,t.worker.postMessage({event:"OTG_FALLBACK_TO_HTTP",properties:{wsStates:e.otgws.map((t=>{var e;return null===(e=t.ws)||void 0===e?void 0:e.readyState})),wsLastErrorNumInFlight:e.otgws.map((t=>t.lastErrorNumInFlight)),wsLastErrorReasons:e.otgws.map((t=>{var e;return null===(e=t.lastError)||void 0===e?void 0:e.reason})),wsLastErrorCodes:e.otgws.map((t=>{var e;return null===(e=t.lastError)||void 0===e?void 0:e.code}))}}));for(const[r,i,s,o,a]of e.pendingForNetwork)t.queryParams=a,n.PG.getItem(t,i,(e=>I(t,[r],[s],[e],!1,o)),w(t,r,o),{responseType:"arraybuffer",withCredentials:!0});return void(e.pendingForNetwork=[])}if(r.length<=0)return;const a=r.sort(((t,e)=>t.inFlightRequests.size-e.inFlightRequests.size));let u=e.pendingForNetwork.length,c=a[0].inFlightRequests.size;for(let t=1;t=0;t--){const r=a[t],n=c-r.inFlightRequests.size;if(!(n50&&A(t)}O(t,e.length)}function A(t){var e=y(t);if(!e._pendingGeomHashes.length)return;const r=e.decoderPorts[e.nextPortIndex];e.nextPortIndex=++e.nextPortIndex%e.decoderPorts.length,r.postMessage({operation:"DECODE_GEOMETRIES",hashes:e._pendingGeomHashes,arrays:e._pendingGeoms,fromCache:e._pendingFromCache},e._pendingTransferList),e._pendingGeomHashes=[],e._pendingGeoms=[],e._pendingFromCache=[],e._pendingTransferList=[]}function O(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const r=y(t);r.numRequests-=e,r._requestsReceived+=e,!r.flushCacheAndDisconnectRequested||r.numRequests||r._pendingGeomHashes.length||(function(t){var e,r,n=y(t);(n.numRequests||n._pendingGeomHashes.length)&&(console.error("OtgLoadWorker disconnect requested even though there are requests in flight"),A(t));for(const t of n.otgws)t.closeWebSocket();clearInterval(n.flushMessages),n.flushMessages=null,null===(e=n.localDbCache)||void 0===e||e.open((()=>n.localDbCache.flushStoresAndTimestamps())),null===(r=n.opfsCache)||void 0===r||r.close()}(t),r.flushCacheAndDisconnectRequested=!1)}function S(t,e,r,n,i,s){var o=y(t);if(o._requestsSent+=e.length,o.opfsCache)o.opfsCache.get(e,n).then((s=>{for(let a=0;ao.localDbCache.get(a,(function(e,r){r?I(t,[a],[""],[r],!0,i):o.pendingForNetwork.push([a,u,"",i,t.queryParams])})))):o.pendingForNetwork.push([a,u,"",i,t.queryParams])}}function P(t){var e=y(t);S(t,t.hashes,t.urls,t.lineageUrns,t.type,t.couldBeInCache),e.numRequests+=t.urls.length}function k(t){y(t).flushCacheAndDisconnectRequested=!0,O(t,0)}function C(t){const e=y(t);if(!(t.count<=e.otgws.length))for(let r=e.otgws.length;rt.numRequestsSent)),wsReceived:e.otgws.map((t=>t.numRequestsReceived))};console.log("WorkerState: ",r)}function E(t){t.register("INIT_WORKER_OTG",{doOperation:b}),t.register("ADD_MODEL_OTG",{doOperation:x}),t.register("LOAD_CDN_RESOURCE_OTG",{doOperation:P}),t.register("FLUSH_CACHE_AND_DISCONNECT_OTG",{doOperation:k}),t.register("CLEAR_OPFS_CACHE",{doOperation:T}),t.register("REPORT_LOADING_STATE",{doOperation:M}),t.register("SET_OTGWS_COUNT",{doOperation:C})}},6324:(t,e,r)=>{"use strict";r.d(e,{k:()=>$});var n=r(1136),i=r(2759);function s(t,e){let r,n=0,i=t.length-1;for(;n<=i;){if(r=(n+i)/2|0,e===t[r])return r;e-1||i.indexOf(c[5])>-1)))if(t==g){var h=A.getAttrValue(t,u);a=!0,o.name=h}else{var f=A.attributeHidden(t);if(n&&f)return;var d=A._getObjectProperty(t,u);o.properties.push(d)}}else{var p=A.getObjectProperties(A.getAttrValue(t,u),r,!0,i,s);p&&p.properties&&(l=p)}})),l){var f={},d=o.properties;for(let t=0;t0?t:e},this.nodeHasChild=function(t){let e=!1;return this.enumObjectProperties(t,(function(t){if(t===p)return e=!0,!0})),e},this.getNodeNameAndChildren=function(t,e){var r,n,i=t.dbId;if(this.enumObjectProperties(i,(function(i,s){var o;if(i===m);else if(i!=p||e)i===g?t.name=A.getAttrValue(i,s):i===x?t.flags=A.getAttrValue(i,s,!0):i===v&&(n=s);else if((o=A.getAttrValue(i,s,!0))!==t.dbId){var a={dbId:o,parent:t.dbId};r?r.push(a):r=[a]}})),(!t.name||!t.flags)&&n){const e=A.getAttrValue(v,n,!0);let r=P[e];r||(P[e]=r={dbId:e,name:null,flags:null},A.getNodeNameAndChildren(r,!0)),r.name&&!t.name&&(t.name=r.name),"number"!=typeof t.flags&&"number"==typeof r.flags&&(t.flags=r.flags)}return r},this.buildDbIdToFragMap=T,this.buildObjectTree=function(t,e,r,n){var i;e&&(i=T(e)),_={},I=0;var s=this.buildObjectTreeRec(t,0,i,0,r,n);return I>0&&console.warn("Property database integrity not guaranteed ("+I+")."),_=null,P={},s},this.buildObjectTreeRec=function(t,e,r,n,i,s){if(_[t])return I++,0;_[t]=e||t,n>i[0]&&(i[0]=n);var o,a={dbId:t},u=this.getNodeNameAndChildren(a),c=[];if(u)for(var h=0;h1&&n.push(e[r]);return n},this.bruteForceSearch=function(t,r,n){const i=this.getSearchTerms(t);if(0===i.length)return[];var o=[];const a=null==n?void 0:n.searchHidden,u=null==n?void 0:n.includeInherited,c={};for(let t=0;t{const r=new Set(t);for(let n=0;n7?r[7]:0}},this.enumAttributes=function(t){for(var r=1;r=1;for(let t=0;tg,w=void 0;void 0===g||g>y?((w=u._getObjectProperty(y,b)).displayValueB=w.displayValue,w.displayValue=void 0,r++):x?((w=a._getObjectProperty(g,v)).displayValueB=void 0,e++):((w=a._getObjectProperty(g,v)).displayValueB=A.getAttrValue(y,b),e++,r++),d||(d=[]),d.push(w)}else e++,r++}i&&(n.changedIds.push(t),s&&n.propChanges.push(d))}},p=-1,m=function(t,e){var n=Math.floor(100*t/e);n!=p&&(r&&r(n),p=n)};if(i)for(var g=0;gthis.customAttrs=t,this._attributeIsBlacklisted=t=>this._impl._attributeIsBlacklisted(t),this._getAttributeAndValueIds=(t,e,r,n)=>this._impl._getAttributeAndValueIds(t,e,r,n),this._ignoreAttribute=t=>this._impl._ignoreAttribute(t),this.attributeHidden=t=>this._impl.attributeHidden(t),this.setIdsBlob=t=>this._impl.setIdsBlob(t),this.getObjectCount=()=>this._impl.getObjectCount(),this.getIdAt=t=>this._impl.getIdAt(t),this.externalIdsLoaded=()=>this._impl.externalIdsLoaded(),this.getExternalIdMapping=t=>this._impl.getExternalIdMapping(t),this.findRootNodes=()=>this._impl.findRootNodes(),this.nodeHasChild=t=>this._impl.nodeHasChild(t),this.getNodeNameAndChildren=(t,e)=>this._impl.getNodeNameAndChildren(t,e),this.buildDbIdToFragMap=t=>this._impl.buildDbIdToFragMap(t),this.buildObjectTree=(t,e,r,n)=>this._impl.buildObjectTree(t,e,r,n),this.buildObjectTreeRec=(t,e,r,n,i,s)=>this._impl.buildObjectTreeRec(t,e,r,n,i,s),this.getSearchTerms=t=>this._impl.getSearchTerms(t),this.bruteForceSearch=(t,e,r)=>this._impl.bruteForceSearch(t,e,r),this.bruteForceFind=t=>this._impl.bruteForceFind(t),this.getLayerToNodeIdMapping=()=>this._impl.getLayerToNodeIdMapping(),this.findLayers=()=>this._impl.findLayers(),this.enumObjects=(t,e,r)=>this._impl.enumObjects(t,e,r),this.getAttrChild=()=>this._impl.getAttrChild(),this.getAttrParent=()=>this._impl.getAttrParent(),this.getAttrName=()=>this._impl.getAttrName(),this.getAttrLayers=()=>this._impl.getAttrLayers(),this.getAttrInstanceOf=()=>this._impl.getAttrInstanceOf(),this.getAttrViewableIn=()=>this._impl.getAttrViewableIn(),this.getAttrXref=()=>this._impl.getAttrXref(),this.getAttrNodeFlags=()=>this._impl.getAttrNodeFlags(),this.findParent=t=>this._impl.findParent(t),this.findDifferences=(t,e,r)=>this._impl.findDifferences(t,e,r),this.numberOfAttributes=()=>this._impl.numberOfAttributes(),this.numberOfValues=()=>this._impl.numberOfValues(),this.dtor=()=>this._impl.dtor(),this._customAttrIdOffset=this._impl.numberOfAttributes(),this._customValueIdOffset=this._impl.numberOfValues(),this.getObjectCustomProperties=(t,e)=>{var r;return(null===(r=this.customAttrs)||void 0===r?void 0:r.getObjectProperties(t,e,this._customAttrIdOffset,this._customValueIdOffset))??[]},this.getValueAt=t=>{const e=t-this._customValueIdOffset;return e>=0?this.customAttrs.getValueAt(e):this._impl.getValueAt(t)},this.getIntValueAt=t=>{const e=t-this._customValueIdOffset;return e>=0?this.customAttrs.getValueAt(e):this._impl.getIntValueAt(t)},this.getAttrValue=(t,e,r)=>t-this._customAttrIdOffset>=0?this.customAttrs.getValueAt(e-this._customValueIdOffset):this._impl.getAttrValue(t,e,r),this._getObjectProperty=(t,e)=>{const r=t-this._customAttrIdOffset;return r>=0?this.customAttrs._getObjectProperty(r,e-this._customValueIdOffset):this._impl._getObjectProperty(t,e)},this.getObjectProperties=(t,e,r,n,i)=>{var s;const o=this._impl.getObjectProperties(t,e,r,n,i)??{};return null===(s=this.customAttrs)||void 0===s||s.enumObjectProperties(t,((t,r)=>{const s=this.customAttrs.getAttributeAt(t);e&&-1===e.indexOf(s.name)&&-1===e.indexOf(s.displayName)||i&&-1===i.indexOf(s.category)||n&&(n.indexOf(s.name)>-1||n.indexOf(s.displayName)>-1)||o.properties.push(this.customAttrs._getObjectProperty(t,r))}),0,0),o},this.getAttributeDef=t=>{const e=t-this._customAttrIdOffset;return e>=0?this.customAttrs.getAttributeAt(e):this._impl.getAttributeDef(t)},this.enumAttributes=t=>{var e;this._impl.enumAttributes(t),null===(e=this.customAttrs)||void 0===e||e.enumAttributes(t,this._customAttrIdOffset)},this.enumObjectProperties=(t,e)=>{var r;this._impl.enumObjectProperties(t,e),null===(r=this.customAttrs)||void 0===r||r.enumObjectProperties(t,e,this._customAttrIdOffset,this._customValueIdOffset)},this.getPropertiesSubsetWithInheritance=(t,e,r)=>{var n;const i=this._impl.getPropertiesSubsetWithInheritance(t,e,r);return null===(n=this.customAttrs)||void 0===n||n.enumObjectProperties(t,((t,n)=>{e&&!e[t]||(i.push(t,n),r&&(r[t]=n))}),this._customAttrIdOffset,this._customValueIdOffset),i}}d.prototype.getIndex=function(t){var e=this.dbIdToIndex[t];if(e)return e;e=this.nextNode++,this.nodes.push(t);for(var r=1;rthis.children.length&&console.error("Child index out of bounds -- should not happen"),this.processName(a,r)},d.prototype.processName=function(t,e){var r,n,i=-1,s=-1;if(e&&(s=e.lastIndexOf("]"),-1!==(i=e.lastIndexOf("["))&&-1!==s||(i=e.lastIndexOf(":"),s=e.length)),i>=0&&s>i){r=e.slice(0,i+1);var o=e.slice(i+1,s);(n=parseInt(o,10))&&n+""===o||(r=e,n=0)}else r=e,n=0;var a=this.s2i[r];void 0===a&&(a=this.strings.add(r),this.s2i[r]=a),this.names[t]=a,this.nameSuffixes[t]=n},d.prototype.flatten=function(){this.nodes=p(this.nodes),this.children=p(this.children),this.names=p(this.names),this.nameSuffixes=p(this.nameSuffixes),this.strings.flatten(),this.s2i=null},m.prototype.dtor=function(){this.nodes=null,this.children=null,this.dbIdToIndex=null,this.names=null,this.nameSuffixes=null,this.strings=null,this.visibleIds=null,this.nodeBoxes=null},m.prototype.getNumNodes=function(){return this.numNodes},m.prototype.getIndex=function(t){return this.dbIdToIndex[t]},m.prototype.name=function(t,e){var r,n=this.dbIdToIndex[t],i=this.strings.get(this.names[n]),s=this.nameSuffixes[n];return r=s?"["===i.charAt(i.length-1)?i+s+"]":i+s:i,e&&(this.childCounts||this.computeChildCounts(),this.childCounts[t]>0&&(r+=" ("+this.childCounts[t]+")")),r},m.prototype.getParentId=function(t){var e=this.dbIdToIndex[t];return this.nodes[e*f+1]},m.prototype.getNodeFlags=function(t){var e=this.dbIdToIndex[t];return this.nodes[e*f+4]},m.prototype.setNodeFlags=function(t,e){var r=this.dbIdToIndex[t];r&&(this.nodes[r*f+4]=e)},m.prototype.getNumChildren=function(t){var e=this.dbIdToIndex[t],r=this.nodes[e*f+3];if(r>=0)return r;var n=this.nodes[e*f+2];r=Math.abs(r);for(var i=0,s=0;s=0)return 0;for(var n=this.nodes[e*f+2],i=0,s=(r=Math.abs(r))-1;s>=0&&!(this.children[n+s]>=0);s--)i++;return i},m.prototype.getNodeBox=function(t,e){for(var r=6*this.getIndex(t),n=0;n<6;n++)e[n]=this.nodeBoxes[r+n]},m.prototype.getVisibleIds=function(){return this.visibleIds||(this.visibleIds=Object.keys(this.dbIdToIndex).map((function(t){return parseInt(t)}))),this.visibleIds},m.prototype.enumNodeChildren=function(t,e){var r=this.dbIdToIndex[t],n=this.nodes[r*f+2],i=this.nodes[r*f+3];i=Math.abs(i);for(var s=0;s0)&&e(-o-1,t,r))return t}}},m.prototype.computeBoxes=function(t){this.nodeBoxes||(this.nodeBoxes=new Float32Array(6*this.numNodes));var e=this,r=e.getIndex(e.rootId),n=e.nodeBoxes;function i(t,r,i){var s=e.getIndex(t);o(t,s);for(var a=6*i,u=6*s,c=0;c<3;c++)n[a+c]>n[u+c]&&(n[a+c]=n[u+c]),n[a+c+3]t[s+a]&&(n[o+a]=t[s+a]),n[o+a+3]{e[n]+=r(t)}),!0),t.getNumFragments(n)&&(i=1)),e[n]+i}(t.rootId)},m.prototype.dbIdToIndexFiltered=function(t){const e={},r=this,n=i=>{let s=t(i);return r.enumNodeChildren(i,(t=>{n(t)&&(s=!0)})),s&&(e[i]=r.dbIdToIndex[i]),s};return n(this.rootId),e};const v={Boolean:1,Integer:2,Double:3,Float:4,Blob:10,DbKey:11,String:20,LocalizableString:21,DateTime:22,GeoLocation:23,Position:24},y=[];class b{constructor(){this.lastUpdated=new Date(0),this.lastFetched=new Date(0),this.customValueIds=new Map([["",1]]),this.customValues=[null,""],this.customAttributeValues=new Map}hasObjectProperties(t){return void 0!==this.customAttributeValues.get(t)}enumObjectProperties(t,e,r,n,i){const s=this.customAttributeValues.get(e)??y;for(let e=0;e{r&&this.customAttributeValues.clear();for(const r of e.results){const e=t.customAttrIds.get(r.propId);if(void 0===e)continue;const n=r.svf2Id;let i=this.customAttributeValues.get(n);void 0===i&&(i=[],this.customAttributeValues.set(n,i)),null!==r.value&&i.push(e,this.internValue(r.value))}n&&(this.lastUpdated=Date.parse(e.lastModifiedAt))};await async function(t,e){const{onPage:r}=e??{},n=[];let i=!0;for(;t;){var s;const o=await fetch(t,e);if(!o.ok)throw new Error(o.statusText);const a=await o.json();t=null===(s=a.pagination)||void 0===s?void 0:s.nextUrl,r?await r(a,i,!t):n.push(a),i=!1}return n}(a,{headers:{"Content-Type":"application/json",...n},onPage:e})}catch(t){throw console.error(t),t}return this.lastFetched=Date.now(),this}async setCustomPropertiesValues(t,e){let{baseUrl:r,headers:n,projectId:i,seedFileUrn:s,selection:o,props:a}=e;const u=`${r}/v2/projects/${i}/versions/${encodeURIComponent(s)}/custom-properties`,c={},h={},l=[];for(const[t,e]of Object.entries(a))void 0===e||""===e?l.push(t):h[t]=e;Object.entries(h).length>0&&(c.assignments=[{svf2Ids:o,props:h}]),l.length>0&&(c.removals=[{svf2Ids:o,propIds:l}]);var f=await fetch(u,{method:"POST",body:JSON.stringify(c),headers:{"Content-Type":"application/json",...n}});if(!f.ok)throw new Error(f.statusText);const d=await f.json();if("FAILED"===d.status)return d;const p=Object.entries(a);for(const e of d.successfulSvf2Ids)for(const[r,n]of p){const i=t.customAttrIds.get(r);if(void 0===i)continue;let s=this.customAttributeValues.get(e);void 0===s&&(s=[],this.customAttributeValues.set(e,s));let o=-1;for(let t=0;t=0&&s.splice(o,2);else{const t=this.internValue(n);o<0?s.push(i,t):s[o+1]=t}0===s.length&&this.customAttributeValues.delete(e)}return d}}class x{constructor(){const t=new Date(0);this.attributes={lastFetched:t,lastUpdated:t,customAttrIds:new Map,customAttrs:[]},this.values=null}getValueAt(t){return this.values.customValues[t]}getAttributeAt(t){return this.attributes.customAttrs[t]}_getObjectProperty(t,e){const r=this.getAttributeAt(t);return{displayName:r.displayName??r.name,displayValue:this.getValueAt(e),displayCategory:r.category,attributeName:r.name,type:r.dataType,units:r.dataTypeContext,hidden:!1,precision:r.precision,propType:r.propType,propertyHash:r.propertyHash}}hasObjectProperties(t){var e;return null===(e=this.values)||void 0===e?void 0:e.hasObjectProperties(t)}enumAttributes(t,e){this.attributes.customAttrs.forEach(((r,n)=>{t(n+e,r)}))}enumObjectProperties(t,e,r,n){var i;return null===(i=this.values)||void 0===i?void 0:i.enumObjectProperties(this.attributes.customAttrs,t,e,r,n)}async parseResponse(t,e){const r=t.body.getReader(),n=new TextDecoder;let{value:i,done:s}=await r.read(),o=i?n.decode(i):"";const a=/\r\n|\n|\r/g;let u=0,c=null;for(;;)if(c=a.exec(o),c)e(o.substring(u,c.index)),u=a.lastIndex;else{if(s)break;const t=o.substring(u);({value:i,done:s}=await r.read()),o=t+(i?n.decode(i):""),u=a.lastIndex=0}u{if(null==t)return null;let e=c.get(t);return void 0===e&&(e=t,c.set(t,t)),e};await this.parseResponse(u,(t=>{try{const r=JSON.parse(t);if(s&&!s.has(r.key))return;const n={propertyHash:r.key,category:f(r.category),name:r.name,displayName:r.displayName,dataType:v[r.type]??0,dataTypeContext:f(r.uom)??"",flags:0,precision:f(r.precision)??0,propType:f(r.propType),parameterId:r.parameterId,parameterTypeId:f(r.parameterTypeId),defaultValue:f(r.defaultValue),applicableTo:r.applicableTo};var e=h.get(n.propertyHash);e||(e=l.length,l.push(n)),h.set(n.propertyHash,e)}catch(e){throw console.error(e),console.log(t),e}}));const d=this.attributes;return d.customAttrIds=h,d.customAttrs=l,d.lastFetched=Date.now(),this}async acquireValues(t){let{baseUrl:e,headers:r,projectId:n,seedFileUrn:i,worker:s,dbPath:o,limit:a}=t,u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3,c=this.values;try{var h;if(c instanceof Promise)c=await c;else if(null===c||u&&Date.now()-c.lastFetched>u){c??=new b;const t=c.refreshCustomPropertiesValues(this.attributes,{baseUrl:e,headers:r,projectId:n,seedFileUrn:i,limit:a});this.values=t,await t,this.values=c}var l=null===(h=s.pdbCache)||void 0===h||null===(h=h.get(o))||void 0===h?void 0:h.pdb;l&&"setCustomAttrs"in l&&l.setCustomAttrs(this)}catch(t){throw this.values=null,t}return c}async setCustomPropertiesValues(t){let{baseUrl:e,headers:r,projectId:n,seedFileUrn:i,selection:s,props:o,worker:a,dbPath:u,limit:c}=t;const h=await this.acquireValues({baseUrl:e,headers:r,projectId:n,seedFileUrn:i,worker:a,dbPath:u,limit:c},0);return await h.setCustomPropertiesValues(this.attributes,{baseUrl:e,headers:r,projectId:n,seedFileUrn:i,selection:s,props:o})}async applyDefinitions(t){let{baseUrl:e,headers:r,projectId:n,seedFileUrn:i,bindings:s,limit:o}=t;const a=`${e}/v2/projects/${n}/lineages/${encodeURIComponent(i)}/custom-properties/bindings`,u={method:"POST",body:JSON.stringify(s),headers:{"Content-Type":"application/json",...r}};delete u.headers["x-use-contingency"];var c=await fetch(a,u);if(c.ok){const t=new Set(this.attributes.customAttrIds.keys());return s.forEach((e=>{let{propId:r,isDeleted:n}=e;return n?t.delete(r):t.add(r)})),await this.refreshCustomProperties({baseUrl:e,headers:r,projectId:n,seedFileUrn:i,propertyFilter:t,limit:o}),await this.values.refreshCustomPropertiesValues(this.attributes,{baseUrl:e,headers:r,projectId:n,seedFileUrn:i,limit:o}),this}throw new Error(c.statusText)}}class w{constructor(){this._cache={}}delete(t){delete this._cache[t]}async acquireDefinitions(t){let{baseUrl:e,headers:r,projectId:n,seedFileUrn:i,dbPath:s}=t,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3e4,a=this._cache[s];try{if(a instanceof Promise)a=await a;else if(void 0===a||o>0&&Date.now()-a.attributes.lastFetched>o){a??=new x;const t=a.refreshCustomProperties({baseUrl:e,headers:r,projectId:n,seedFileUrn:i});this._cache[s]=t,await t,this._cache[s]=a}}catch(t){throw delete this._cache[s],t}return a}async applyDefinitions(t){let{baseUrl:e,headers:r,projectId:n,seedFileUrn:i,dbPath:s,bindings:o,limit:a}=t,u=this._cache[s]??=new x;return u instanceof Promise&&(u=await u),await u.applyDefinitions({baseUrl:e,headers:r,projectId:n,seedFileUrn:i,dbPath:s,bindings:o,limit:a}),u}}function _(t){let e=t.customPropsCache;return e||(t.customPropsCache=e=new w),e}function I(t,e){this.pdb=null,this.waitingCallbacks=[],this.error=!1,this.dbPath=t,this.dbFiles=null,this.isShared=e,this.timestamp=Date.now()}function A(t){this.data=t,this.refCount=1}class O{constructor(){this.pdbCache={},this.fileCache={}}get(t){let e=this.pdbCache[t];return e&&(e.timestamp=Date.now()),e}set(t,e){let r=new I(t,e);return this.pdbCache[t]=r,r}getFile(t){let e=this.fileCache[t];return e&&(e.timestamp=Date.now()),e}setFile(t,e){this.fileCache[t]=new A(e)}delete(t){var e=this.get(t);if(e&&e.pdb&&(e.pdb.refCount--,0===e.pdb.refCount&&(e.isShared||delete this.pdbCache[t],!e.isShared)))for(var r in e.dbFiles){var n=e.dbFiles[r];this.unrefFileCacheEntry(n.storage)}}unrefFileCacheEntry(t){for(var e in t){var r=this.fileCache[e];r&&(r.refCount--,0===r.refCount&&delete this.fileCache[e])}}}function S(t,e,r,i,s){var o;if(-1!==t.indexOf("://")||0===t.indexOf("urn:"))o=t;else{if(!e.dbPath)return void r(null);o=`${e.dbPath}${t}`}var a=n.PG.generateUrl(e.endpoint,"items",o),u=function(t){s&&e.worker.pdbCache&&e.worker.pdbCache.setFile(a,t),i[a]=t,r(t)},c=e.worker.pdbCache&&e.worker.pdbCache.getFile(a);c?(c.refCount++,u(c.data)):n.PG.getItem(e,o,u,(function(t,n,i){404!==t&&e.onFailureCallback(t,n,i),r(null)}))}function P(t,e,r,n){var i,s=t.dbId,o=t.children,a=[];if(o)for(var u=0;udbid mapping!.");else console.warn("ID remap required, but not loaded.");var y=r.idroots;if(y&&y.length){if(o=new d,1==y.length&&r.nodeHasChild(y[0]))s=y[0],r.buildObjectTree(s,h,a,o);else{s=-1e10;var b=[];for(let t=0;t0)){if(e==t.dbId)return r.name=t.name,void(r.dbId=e);var n=t.children;if(n)for(var i=0;i"ElementId"===t.attributeName));if(e&&(t=e.displayValue),s.externalId&&!t){const e=s.externalId.split("-");e.length&&(t=parseInt(e[e.length-1],16))}t&&!s.name.includes(t)&&(s.name+=` [${t}]`)}catch(t){console.warn(`Caught error in updating ElementIds, object with dbId ${s.dbId} skipped`,t)}o.forEach((function(t){"Name"!==t.displayName||t.displayCategory||n.push(s.name);var e=t.displayCategory?`${t.displayCategory}/${t.displayName}`:t.displayName;Object.prototype.hasOwnProperty.call(r,e)||(r[e]=[]),t.parentName=s.name,t.dbId=s.dbId,r[e].push(t)})),Object.prototype.hasOwnProperty.call(s,"name")&&-1===n.indexOf(s.name)&&(Object.prototype.hasOwnProperty.call(r,"Name")||(r.Name=[]),r.Name.push({displayName:"Name",displayValue:s.name,displayCategory:null,attributeName:"Name",type:20,units:null,hidden:!1,precision:0,dbId:s.dbId,parentName:s.name}))}n=[],r.__selected_dbIds__=t.dbIds,t.worker.postMessage({cbId:t.cbId,result:r})}function D(t){var e=t.worker,r=e.pdbCache&&e.pdbCache.get(t.dbPath);if(r&&r.pdb){var n=r.pdb.getExternalIdMapping(t.extIdFilter);e.postMessage({cbId:t.cbId,result:n})}}function L(t){var e=t.worker,r=e.pdbCache&&e.pdbCache.get(t.dbPath);if(r&&r.pdb){var n=r.pdb.getLayerToNodeIdMapping();e.postMessage({cbId:t.cbId,result:n})}}function j(t){var e=t.worker;if(t.clearCaches)return e.pdbCache=null,void(e.customPropsCache=null);e.pdbCache&&e.pdbCache.delete(t.dbPath),e.customPropsCache&&e.customPropsCache.delete(t.dbPath)}function N(t){var e=t.worker,r=t.idsFile||{path:"objects_ids.json.gz"},n={},i=e.pdbCache.get(t.dbPath);i?i.pdb&&i.pdb.externalIdsLoaded()?e.postMessage({cbId:t.cbId}):S(r.path,t,(function(s){if(!s)return;let o=e.pdbCache;(i=o.get(t.dbPath))&&i.pdb||(o.unrefFileCacheEntry(n),e.postMessage({cbId:t.cbId,error:{propDbWasUnloaded:!0}})),i.pdb.setIdsBlob(s),i.byteSize+=s.byteLength;var a={filename:r.path,storage:n};i.dbFiles.push(a),e.postMessage({cbId:t.cbId})}),n,r.isShared):console.error("Delay-loading of externalIDs requires to load the propDb first.")}function B(t){var e=t.worker;if(t.userFunction)try{importScripts(t.userFunction)}catch(r){return console.error(r),void e.postMessage({cbId:t.cbId,error:{msg:"Error while importing 'userFunction'."}})}if(self.userFunction){var r=e.pdbCache&&e.pdbCache.get(t.dbPath);if(r&&r.pdb){var n;try{n=self.userFunction(r.pdb,t.userData)}catch(r){return console.error(r),void e.postMessage({cbId:t.cbId,error:{msg:"Error while executing 'userFunction'."}})}finally{self.userFunction=void 0}e.postMessage({cbId:t.cbId,result:n})}}else e.postMessage({cbId:t.cbId,error:{msg:"function 'userFunction' was not found."}})}async function W(t){const e=t.worker,r=_(e);let n,i;try{var s;n=null===(s=(await r.acquireDefinitions(t)).attributes)||void 0===s?void 0:s.lastFetched}catch(t){i={msg:t.message,error:t}}e.postMessage({cbId:t.cbId,result:n,error:i})}async function G(t){const e=t.worker,r=_(e);let n,i;try{var s;await r.applyDefinitions(t),n=null===(s=(await r.acquireDefinitions(t)).attributes)||void 0===s?void 0:s.lastFetched}catch(t){i={msg:t.message,error:t}}e.postMessage({cbId:t.cbId,result:n,error:i})}async function q(t){const e=t.worker,r=_(e);let n,i;try{const e=await r.acquireDefinitions(t);n=(await e.acquireValues(t,1e3)).lastFetched}catch(t){i={msg:t.message,error:t}}e.postMessage({cbId:t.cbId,result:n,error:i})}async function H(t){const e=t.worker,r=_(e);let n,i;try{const e=await r.acquireDefinitions(t,0);n=(await e.setCustomPropertiesValues(t)).lastUpdated}catch(t){i={msg:t.message,error:t}}e.postMessage({cbId:t.cbId,result:n,error:i})}function $(t){t.register("BUILD_EXTERNAL_ID_MAPPING",{doOperation:D}),t.register("BUILD_LAYER_TO_NODE_ID_MAPPING",{doOperation:L}),t.register("GET_PROPERTIES",{doOperation:V}),t.register("GET_PROPERTY_SET",{doOperation:U}),t.register("SEARCH_PROPERTIES",{doOperation:T}),t.register("DIFF_PROPERTIES",{doOperation:M}),t.register("FIND_PROPERTY",{doOperation:E}),t.register("FIND_LAYERS",{doOperation:F}),t.register("LOAD_PROPERTYDB",{doOperation:C}),t.register("CREATE_TREE",{doOperation:k}),t.register("UNLOAD_PROPERTYDB",{doOperation:j}),t.register("USER_FUNCTION",{doOperation:B}),t.register("LOAD_EXTERNAL_IDS",{doOperation:N}),t.register("REFRESH_CUSTOM_PROPERTIES",{doOperation:W}),t.register("REFRESH_CUSTOM_PROPERTIES_VALUES",{doOperation:q}),t.register("APPLY_CUSTOM_PROPERTIES",{doOperation:G}),t.register("SET_CUSTOM_PROPERTIES_VALUES",{doOperation:H})}},3870:(t,e,r)=>{"use strict";r.d(e,{k:()=>z});var n=r(6247),i=r(5468),s=r(6118),o=r(1136),a=r(3293),u=r(8983),c=r(1706),h=r(7365);var l=((0,n.Xb)(),null);function f(){this.length=0,this.numLoaded=0,this.boxes=null,this.transforms=null,this.materials=null,this.packIds=null,this.entityIndexes=null,this.fragId2dbId=null,this.topoIndexes=null,this.visibilityFlags=null}var d=new s.S;function p(t,e,r,n){var i=t.seekToEntry(e);return i?i.version>2?null:(i.version>1&&t.readU8(),{definition:t.stream.getUint32(),transform:t.readTransform(void 0,void 0,void 0,r,n),instanceNodePath:t.readPathID()}):null}function m(t){switch(t){case"meter":case"meters":case"m":default:return 1;case"feet and inches":case"foot":case"feet":case"ft":return.3048;case"inch":case"inches":case"in":return.0254;case"centimeter":case"centimeters":case"cm":return.01;case"millimeter":case"millimeters":case"mm":return.001}}function g(t,e){var r=t.globalOffset;if(r.x||r.y||r.z){if(e){var n=new h.T(!0);n.copy(e),(e=n).elements[12]-=r.x,e.elements[13]-=r.y,e.elements[14]-=r.z}else(e=new h.T(!0)).makeTranslation(-r.x,-r.y,-r.z);t.placementWithOffset=e}else t.placementWithOffset=e}function v(t,e){t[0]-=e.x,t[1]-=e.y,t[2]-=e.z}function y(t,e){if(e&&(e.transformPoint(t.position),e.transformPoint(t.target),e.transformDirection(t.up),isFinite(t.orthoScale))){const r=e.getMaxScaleOnAxis();t.orthoScale*=r}}function b(t,e){var r=e.definition,n=t.seekToEntry(r);if(!n)return null;if(n.version>2)return null;var i=t.stream,s={isPerspective:!i.getUint8(),position:t.readVector3f(),target:t.readVector3f(),up:t.readVector3f(),aspect:i.getFloat32(),fov:i.getFloat32()*(180/Math.PI)};return n.version<2&&(i.getFloat32(),i.getFloat32()),s.orthoScale=i.getFloat32(),s}function x(t,e){var r=t.seekToEntry(e);if(!r)return null;if(r.version>1)return null;var n=t.stream;return{position:t.readVector3f(),dir:t.readVector3f(),r:n.getFloat32(),g:n.getFloat32(),b:n.getFloat32(),intensity:n.getFloat32(),spotAngle:n.getFloat32(),size:n.getFloat32(),type:n.getUint8()}}const w={NI_Inner:0,NI_Leaf:1};function _(t){const e=t.readString();let r=function(t){let e="";for(let r=0;r<16;r++)e+=t.readU8();return e}(t);const n=t.readU8();if(n===w.NI_Leaf)return{name:e,entry:t.readVarint(),uuid:r};if(n===w.NI_Inner){const r=t.readVarint(),n=[];for(let e=0;et.name===e})[e];if(!r)throw new Error("Error while extracting "+e);return r}function C(t){this.zipPack=t,this.manifest=null,this.materials=null,this.metadata=null,this.fragments=null,this.geompacks=[],this.instances=[],this.cameras=[],this.lights=[],this.viewpoints=[],this.overrideSets=[],this.propertydb={attrs:[],avs:[],ids:[],values:[],offsets:[]},this.bbox=null,this.animations=null,this.pendingRequests=0,this.globalOffset={x:0,y:0,z:0},this.topologyPath=null}C.prototype.loadAsyncResource=function(t,e,r,n){if(r)n(r);else{var i=this;this.pendingRequests++,o.PG.getItem(t,t.basePath+e,(function(e){i.pendingRequests--,n(e),0==i.pendingRequests&&i.postLoad(t)}),t.onFailureCallback)}},C.prototype.loadManifest=function(t){const e=k(this.zipPack,"manifest.json"),r=new a.z(e);this.manifest=JSON.parse(r.getString(e.byteLength))},C.prototype.applyLargeBoxOffset=function(t){!t||t.x===this.globalOffset.x&&t.y===this.globalOffset.y&&t.z===this.globalOffset.z||(this.bbox.isEmpty()||this.bbox.translate({x:this.globalOffset.x-t.x,y:this.globalOffset.y-t.y,z:this.globalOffset.z-t.z}),this.verylargebbox=!0,this.globalOffset.copy(t),g(this,this.placementTransform))},C.prototype.parseFragmentList=function(t,e,r,n){var i=this;this.loadAsyncResource(e,r,n,(function(t){var r=new u.J(t),n=function(t,e,r,n,i,o,a,u){var f=function(t,e){var r=[];if(!e)return r;for(var n=t.getEntryCounts(),i=t.stream,s=0;s5)return;o.version>4&&t.readU8(),t.readU32V(),o.version>2||t.readString(),t.readU32V(),t.readTransform(s,null,12*s);for(var a=0;a<6;a++)i.getFloat32();if(o.version>1){var u=t.readU32V();e.indexOf(u)>=0&&r.push(s)}}return r}(t,void 0),p=f.length?f.length:t.getEntryCounts(),m=t.stream;l&&p>l&&(p=l),e.totalLength=t.getEntryCounts(),e.length=p,e.numLoaded=0;var g,v,y=e.boxes=i?new Float64Array(6*p):new Float32Array(6*p),b=e.transforms=i?new Float64Array(12*p):new Float32Array(12*p),x=e.materials=new Int32Array(p),w=e.packIds=new Int32Array(p),_=e.entityIndexes=new Int32Array(p),I=e.geomDataIndexes=new Int32Array(p),A=e.fragId2dbId=new Int32Array(p),O=e.visibilityFlags=new Uint16Array(p),S=[0,0,0];n&&(g=new c.K,v=new h.T(!0).fromArray(n.elements));var P=!r&&a,k=b,C=12,T=9;function M(t){if(n){var e=6*t;g.setFromArray(y,e),g.applyMatrix4(v),g.copyToArray(y,e)}}function E(t){for(var e=6*t,r=0;r<6;r++)y[e++]=m.getFloat32()}function F(t,e){for(var r=6*t,n=0;n<6;n++)y[r++]=m.getFloat32()+e[n%3]}P&&(i||(y=new Float64Array(6*p),k=new Float64Array(3*p),C=3,T=0));for(var R=0,z=e.length;R5)return;var U=!0;if(V.version>4&&(U=!!(1&t.readU8())),O[R]=U?1:0,x[R]=t.readU32V(),V.version>2?I[R]=t.readU32V():(w[R]=parseInt(t.readString()),_[R]=t.readU32V()),t.readTransform(R,b,12*R,n,r,S),P&&k!==b&&k.set(S,R*C+T),V.version>3?F(R,S):E(R),M(R),r){var D=6*R;y[D++]-=r.x,y[D++]-=r.y,y[D++]-=r.z,y[D++]-=r.x,y[D++]-=r.y,y[D++]-=r.z}V.version>1&&(A[R]=t.readU32V())}if(P){var L=-1,j=-1,N=-1,B=y.length;for(let t=0;t100*L||W.y>100*j||W.z>100*N){var G=0,q=0,H=0;for(let t=0;t2){var f=n.getInt32();if(-1!=f&&void 0===i){i=e.topoIndexes=new Int32Array(r);for(var d=0;d=5&&a.getUint8(),e>=3&&(n[o]=a.getVarints()),o)switch(u){case 0:break;case 1:if(e<2){let t=a.getUint16();if(1===t)i[o]=a.getUint32();else if(t>0){let e=[];for(let r=0;r0){let e=[];for(let r=0;r3&&0!==o[3]&&(this.metadata=JSON.parse(l.getString(o.byteLength)).metadata,function(t,e){if(t.metadata){var r=t.metadata["world bounding box"],n=new s.S(r.minXYZ[0],r.minXYZ[1],r.minXYZ[2]),i=new s.S(r.maxXYZ[0],r.maxXYZ[1],r.maxXYZ[2]);t.bbox=new c.K(n,i),t.modelSpaceBBox=t.bbox.clone();var o=function(t,e){var r=t.metadata["custom values"];if(t.placementTransform=e.placementTransform,e.applyScaling){var n="m";t.metadata["distance unit"]&&(n=t.metadata["distance unit"].value),t.scalingUnit=n,"object"==typeof e.applyScaling?(e.applyScaling.from&&(n=e.applyScaling.from),e.applyScaling.to&&(t.scalingUnit=e.applyScaling.to)):t.scalingUnit=e.applyScaling;var i=m(n)/m(t.scalingUnit);if(1!=i){var s=new h.T(!0),o=new h.T(!0);o.elements[0]=i,o.elements[5]=i,o.elements[10]=i,e.placementTransform&&s.copy(e.placementTransform),e.applyPlacementInModelUnits?e.placementTransform=o.multiply(s):e.placementTransform=s.multiply(o),t.placementTransform=e.placementTransform,t.scalingFactor=i}}if(r&&r.refPointTransform){t.refPointTransform=new h.T(!0);var a=t.refPointTransform.elements,u=r.refPointTransform;a[0]=u[0],a[1]=u[1],a[2]=u[2],a[4]=u[3],a[5]=u[4],a[6]=u[5],a[8]=u[6],a[9]=u[7],a[10]=u[8],a[12]=u[9],a[13]=u[10],a[14]=u[11]}else{var c=t.metadata.georeference,l=c&&c.refPointLMV,f=0;if(r&&Object.prototype.hasOwnProperty.call(r,"angleToTrueNorth")&&(f=Math.PI/180*r.angleToTrueNorth),l||f){var d=new h.T(!0),p=d.elements;p[0]=p[5]=Math.cos(f),p[1]=-Math.sin(f),p[4]=Math.sin(f);var g=new h.T(!0);p=g.elements,l&&(p[12]=-l[0],p[13]=-l[1],p[14]=-l[2]),t.refPointTransform=d.multiply(g)}}if(e.applyRefPoint&&t.refPointTransform){var v=new h.T(!0);e.placementTransform&&v.copy(e.placementTransform),v.multiply(t.refPointTransform),t.placementTransform=e.placementTransform=v}else!e.applyRefPoint&&e.placementTransform&&(t.placementTransform=new h.T(!0).copy(e.placementTransform));return t.placementTransform&&function(t){for(var e=t.elements,r=0;r<4;r++)for(var n=0;n<4;n++)if(r===n){if(1!==e[4*r+n])return!1}else if(0!==e[4*r+n])return!1;return!0}(t.placementTransform)&&(t.placementTransform=null),t.placementTransform}(t,e);o&&!t.bbox.isEmpty()&&t.bbox.applyMatrix4(o),e.globalOffset?t.globalOffset=e.globalOffset:t.globalOffset=t.bbox.getCenter(new s.S),g(t,o),t.bbox.isEmpty()||(t.bbox.min.sub(t.globalOffset),t.bbox.max.sub(t.globalOffset)),Object.prototype.hasOwnProperty.call(t.metadata,"double sided geometry")&&t.metadata["double sided geometry"].value&&(t.doubleSided=!0)}}(this,t)),this.packFileTotalSize=0,this.primitiveCount=0;var f=r.typesets,d={};for(let t=0;te[o]&&(e[o]=n[a+o])}this.bbox={min:{x:e[0],y:e[1],z:e[2]},max:{x:e[3],y:e[4],z:e[5]}}}},C.prototype.postLoadOfObjectIds=function(t){let e=new Set(t.objectIds);if(e.size>0){let t=new Set,r=new Set;for(let n=0;nn[t]&&(n[t]=i[x+t])}return t.boxes=i,t.transforms=s,t.materials=o,t.packIds=a,t.entityIndexes=u,t.mesh2frag=p,t.visibilityFlags=c,t.fragId2dbId=h,t.polygonCounts=l,t.geomDataIndexes=f,t.topoIndexes=d,t.totalLength=r,n}(this.fragments,[...r]);this.bbox={min:{x:i[0],y:i[1],z:i[2]},max:{x:i[3],y:i[4],z:i[5]}}}},C.prototype.postLoadBubbleConsolidation=function(){const t=this.viewpointTreeRoot;if(t&&(t.name=t.name||"Saved Viewpoints"),null==t||!t.children)return;let e=0;function r(t){if(t.children){for(let e=0;e{"use strict";r.d(e,{vF:()=>f});var n=r(6247),i=r(577);class s{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.options=t}init(){}register(){}static get name(){return null}static get defaultOptions(){return{}}optIn(t){}optOut(t){}hasOptedOut(){}getDistinctId(){}track(t,e){}identify(t){}}const o=new class{constructor(){this.providerMap={},this.instances=[],this.superProps={},this.shouldTrack=!0,this.trackCache=[],this.oneTimers={}}registerProvider(t){if(!t)return void f.error("Undefined provider");if(!t.name)return void f.error("missing provider name");const e=t.name.toLowerCase();this.isProviderRegistered(e)?f.warn(`Provider with name ${t.name} already registered`):this.providerMap[e]=t;const r=this.createInstance(t.name,t.defaultOptions);this.instances.push(r),this.shouldTrack&&this.init(r),this.trackCache.length>0&&(this.trackCache.forEach((t=>{let{event:e,properties:r}=t;this.track(e,r)})),this.trackCache=[])}isProviderRegistered(t){var e;return("string"==typeof t?t:null===(e=t.name)||void 0===e?void 0:e.toLowerCase())in this.providerMap}init(t){t.initialized||(t.init(),t.register(this.superProps))}createInstance(t,e){const r=t&&t.toLowerCase();if(!(r in this.providerMap))return void f.error(`Unknown ${t}`);const n=this.providerMap[r],i=new n(e);if(!(i instanceof s))throw new Error("not an analytics provider");return n.instanceCount=n.instanceCount||0,i.name=`${r}-${n.instanceCount}`,n.instanceCount++,i}optIn(t){this.instances.forEach((t=>this.init(t))),this._callMethod("optIn",t),this.shouldTrack=!0}optOut(t){this._callMethod("optOut",t),this.shouldTrack=!1}hasOptedOut(){return this._callMethod("hasOptedOut")}getDistinctId(){return this._callMethod("getDistinctId")}track(t,e,r){if(this.shouldTrack){if(r){const r={event:t,properties:e};try{const t=JSON.stringify(r);if(this.oneTimers[t])return;this.oneTimers[t]=!0}catch(t){}}0===this.instances.length?this.trackCache.push({event:t,properties:e}):this._callMethod("track",t,e)}}identify(t){this._callMethod("identify",t)}_callMethod(){for(var t=arguments.length,e=new Array(t),r=0;r({name:t.name,value:t[n](...i)})))}},a=(0,n.mS)(),u=a;function c(){this.runtimeStats={},this.level=-1,this.setLevel(1),this._reportError=this._reportError.bind(this)}function h(t,e){let r;"string"==typeof e?r={message:e}:"object"==typeof e&&(r=e),o.track(t,r)}function l(){}c.prototype.initialize=function(t){if(t.eventCallback&&(this.callback=t.eventCallback),this.sessionId=t.sessionId,!this.sessionId){var e=Date.now()+"";this.sessionId=parseFloat((1e4*Math.random()|0)+""+e.substring(4))}"number"==typeof t.logLevel&&this.setLevel(t.logLevel),this.environmentInfo={touch:(0,n.CN)(),env:(0,i._$)(),referer:"undefined"!=typeof window?encodeURI(u.location.href):"",version:a.LMV_VIEWER_VERSION,build_type:a.LMV_BUILD_TYPE};var r={category:"viewer_start",touch:this.environmentInfo.touch,env:this.environmentInfo.env,referer:this.environmentInfo.referer,version:this.environmentInfo.version,build_type:this.environmentInfo.build_type};this.track(r);var s=this;this.interval=setInterval((function(){s.reportRuntimeStats()}),6e4)},c.prototype.shutdown=function(){clearInterval(this.interval),this.interval=void 0},c.prototype.track=function(t){this.updateRuntimeStats(t),!(0,i.aK)()&&this.sessionId&&(this.callback&&(t.timestamp=Date.now(),t.sessionId=this.sessionId,this.callback(t)),"error"===(null==t?void 0:t.category)&&h("viewer.error.tracked",t))},c.prototype.updateRuntimeStats=function(t){if(Object.prototype.hasOwnProperty.call(t,"aggregate"))switch(t.aggregate){case"count":this.runtimeStats[t.name]>0?this.runtimeStats[t.name]++:this.runtimeStats[t.name]=1,this.runtimeStats._nonempty=!0;break;case"last":this.runtimeStats[t.name]=t.value,this.runtimeStats._nonempty=!0;break;default:this.warn("unknown log aggregate type")}},c.prototype.reportRuntimeStats=function(){this.runtimeStats._nonempty&&(delete this.runtimeStats._nonempty,this.runtimeStats.category="misc_stats",this.track(this.runtimeStats),this.runtimeStats={})},c.prototype.setLevel=function(t){this.level!==t&&(this.level=t,this.debug=t>=5?console.log:l,this.log=t>=4?console.log:l,this.info=t>=3?console.info:l,this.warn=t>=2?console.warn:l,this.error=t>=1?this._reportError:l)},c.prototype._reportError=function(){console.error.apply(console,arguments);const t=Array.prototype.slice.call(arguments).join(" ");this.callback&&this.callback({category:"error",message:t}),h("viewer.error.logged",t)};let f=new c},5468:(t,e,r)=>{"use strict";function n(t,e){var r,n;this.bytes_per_node=e?32:36,t instanceof ArrayBuffer?(r=t.byteLength/this.bytes_per_node,n=t,this.nodeCount=r):(r=0|t,n=new ArrayBuffer(this.bytes_per_node*r),this.nodeCount=0),this.nodeCapacity=r,this.nodesRaw=n,this.is_lean_node=e,this.node_stride=this.bytes_per_node/4,this.node_stride_short=this.bytes_per_node/2,this.nodesF=new Float32Array(this.nodesRaw),this.nodesI=new Int32Array(this.nodesRaw),this.nodesS=new Uint16Array(this.nodesRaw)}r.d(e,{iD:()=>h}),n.prototype.setLeftChild=function(t,e){this.nodesI[t*this.node_stride+6]=e},n.prototype.getLeftChild=function(t){return this.nodesI[t*this.node_stride+6]},n.prototype.setPrimStart=function(t,e){this.is_lean_node?this.nodesI[t*this.node_stride+6]=e:this.nodesI[t*this.node_stride+8]=e},n.prototype.getPrimStart=function(t){return this.is_lean_node?this.nodesI[t*this.node_stride+6]:this.nodesI[t*this.node_stride+8]},n.prototype.setPrimCount=function(t,e){this.nodesS[t*this.node_stride_short+14]=e},n.prototype.getPrimCount=function(t){return this.nodesS[t*this.node_stride_short+14]},n.prototype.setFlags=function(t,e,r,n){this.nodesS[t*this.node_stride_short+15]=n<<3|r<<2|3&e},n.prototype.getFlags=function(t){return this.nodesS[t*this.node_stride_short+15]},n.prototype.setBox0=function(t,e){var r=t*this.node_stride,n=this.nodesF;n[r]=e[0],n[r+1]=e[1],n[r+2]=e[2],n[r+3]=e[3],n[r+4]=e[4],n[r+5]=e[5]},n.prototype.getBoxThree=function(t,e){var r=t*this.node_stride,n=this.nodesF;e.min.x=n[r],e.min.y=n[r+1],e.min.z=n[r+2],e.max.x=n[r+3],e.max.y=n[r+4],e.max.z=n[r+5]},n.prototype.getBoxArray=function(t,e,r){var n=t*this.node_stride,i=this.nodesF;e[0+(r=r||0)]=i[n],e[1+r]=i[n+1],e[2+r]=i[n+2],e[3+r]=i[n+3],e[4+r]=i[n+4],e[5+r]=i[n+5]},n.prototype.setBoxThree=function(t,e){var r=t*this.node_stride,n=this.nodesF;n[r]=e.min.x,n[r+1]=e.min.y,n[r+2]=e.min.z,n[r+3]=e.max.x,n[r+4]=e.max.y,n[r+5]=e.max.z},n.prototype.makeEmpty=function(t){var e=t*this.node_stride,r=this.nodesI;r[e+6]=-1,r[e+7]=0,this.is_lean_node||(r[e+8]=-1)},n.prototype.realloc=function(t){if(this.nodeCount+t>this.nodeCapacity){var e=0|3*this.nodeCapacity/2;ee[r]&&(t[0]=e[r]),t[3]e[r+1]&&(t[1]=e[r+1]),t[4]e[r+2]&&(t[2]=e[r+2]),t[5]e[r]&&(t[0]=e[r]),t[1]>e[r+1]&&(t[1]=e[r+1]),t[2]>e[r+2]&&(t[2]=e[r+2]),t[3]e[0]&&(t[0]=e[0]),t[1]>e[1]&&(t[1]=e[1]),t[2]>e[2]&&(t[2]=e[2]),t[3]y[0]&&(S=1),y[2]>y[S]&&(S=2),_.setBox0(u,d);var P=0,k=0,C=f-l+1;let T=!1;if(o.finfo.hasPolygonCounts&&o.frags_per_inner_node){let t=new Set;var M=C<=o.frags_per_inner_node?f:l+o.frags_per_inner_node-1;const e=o.prim_sizes[o.primitives[l]];let r,n=l;for(;n<=M;n++){const i=o.primitives[n];if(T=(P+=o.finfo.getPolygonCount(i))>O,r=e/o.prim_sizes[i],T||=e>s&&r>o.max_size_ratio,o.per_tile_consolidation&&(t.add(o.finfo.getDrawCallId(i)),T||=t.size>=o.max_drawcalls_per_node),k++,T){++n;break}}if(o.per_tile_consolidation&&t.size>=o.max_drawcalls_per_node){const i=n;let a=[],u=[],c=!1;for(;n<=M;n++){const i=o.primitives[n],h=o.finfo.getPolygonCount(i);if(t.has(o.finfo.getDrawCallId(i))){if(c||=P+h>O,r=e/o.prim_sizes[i],c||=e>s&&r>o.max_size_ratio,c)break;a.push(i),k++,P+=h}else u.push(i)}if(a.length>0){n=i;for(let t=0;t15||y[S]e.frags_per_inner_node&&(d=e.frags_per_inner_node),d>h&&(d=h),r.setPrimStart(i,s),r.setPrimCount(i,d),s+=d,a(u);for(var p=s;p<=o;p++)t(u,f,3*l[p]);n(c,0,u,0);var m=0;return c[1]>c[0]&&(m=1),c[2]>c[m]&&(m=2),m}(o,_,u,l,f,b,y,k),l+=_.getPrimCount(u));var E=new h;if(function(n,s,o,a,u,h,l){if(h[a]o-s+1&&(y=o-s+1),f=0;f=u&&(b=u-1),g[v]=b,p[b].num_prims++,e(p[b].box_bbox,l,y*f),t(p[b].box_centroid,c,3*y)}}(n,s,o,a,u,h,y),i(m[0].BL,p[0].box_bbox),i(m[0].CL,p[0].box_centroid),m[0].AL=c(m[0].BL),m[0].NL=p[0].num_prims,f=1;f=1;f--){d=p[f],r(g,d.box_bbox),r(v,d.box_centroid);var A=(x=c(g))*(w+=d.num_prims)+m[f-1].AL*m[f-1].NL;A<=I&&(I=A,_=f,i(l.vb_right,g),i(l.cb_right,v),i(l.vb_left,m[f-1].BL),i(l.cb_left,m[f-1].CL),l.num_left=m[f-1].NL)}l.best_split=_,l.best_cost=I}}(o,l,f,S,b,y,E),E.num_bins<0)_.setPrimCount(u,_.getPrimCount(u)+f-l+1);else{!function(t,e,r,n,i,s,o){var a,u,c=t.primitives,h=t.sort_prims,l=0,f=0|e,d=0|o.best_split;for(a=e;a<=r;a++){var p=0|c[a];h[a]=r.first_transparent?(t(c,p,3*x),e(u,m,g*x)):(t(o,p,3*x),e(i,m,g*x))}n(y,0,r.boxv_o,0);var w=Math.max(y[0],y[1],y[2]);r.scene_epsilon=s*w},box_area:function(t,e){return u(t[e+3]-t[e],t[e+4]-t[e+1],t[e+5]-t[e+2])},sqr_diag_len:function(t,e){var r=t[e+3]-t[e],n=t[e+4]-t[e+1],i=t[e+5]-t[e+2];return r*r+n*n+i*i},box_area_three:function(t){return u(t.max.x-t.min.x,t.max.y-t.min.y,t.max.z-t.min.z)}}}();function a(t,e){this.boxes=t.boxes,this.polygonCounts=t.polygonCounts,this.hasPolygonCounts=!!this.polygonCounts,this.geomIds=t.geomids,this.flags=t.flags,this.materials=t.materials,this.materialDefs=e,this.count=t.length,this.boxStride=6,this.wantSort=t.wantSort??!0}a.prototype.getCount=function(){return this.count},a.prototype.isTransparent=function(t){return this.flags?!!(this.flags[t]&u.IS_TRANSPARENT):!(!this.materialDefs||!this.materialDefs[this.materials[t]])&&this.materialDefs[this.materials[t]].transparent},a.prototype.getPolygonCount=function(t){return this.polygonCounts[t]},a.prototype.getGeometryId=function(t){return this.geomIds[t]},a.prototype.getCanBeConsolidated=function(t){return!!this.flags[t]&u.IS_CONSOLIDATED},a.prototype.getDrawCallId=function(t){return`${this.materials[t]}${this.getCanBeConsolidated(t)?"":"_"+this.getGeometryId(t)}`},a.prototype.supportsPerTileConsolidation=function(){return!!this.materials&&!!this.flags&&!!this.geomIds};const u=Object.freeze({IS_CONSOLIDATED:1,IS_TRANSPARENT:2}),c=Object.freeze({BOX_AREA:"box_area",DIAMETER:"sqr_diag_len"});function h(t,e,r){this.finfo=r||new a(t,e),this.prim_count=this.finfo.getCount(),this.frags_per_leaf_node=-1,this.frags_per_inner_node=-1,this.nodes=null,this.work_buf=new ArrayBuffer(4*this.prim_count),this.sort_prims=new Int32Array(this.work_buf),this.primitives=new Int32Array(this.prim_count),this.centroids=new Float32Array(i*this.prim_count),this.boxv_o=new Float32Array(6),this.boxc_o=new Float32Array(6),this.boxv_t=new Float32Array(6),this.boxc_t=new Float32Array(6),this.recursion_stack=[]}h.prototype.sortPrimitives=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c.BOX_AREA;var r=new Float32Array(this.max_size_ratio===1/0?this.work_buf:this.prim_count),n=this.primitives,i=0,s=t;const a=o[e];var u,h;for(u=0,h=this.prim_count;u=0?n[d++]=n[u]:f[p++]=n[u];n.set(f,this.prim_count-i)}this.prim_sizes=r,this.first_transparent=this.prim_count-i},h.prototype.build=function(t){var e=t&&!!t.useSlimNodes,r=this;function i(e,n){Object.prototype.hasOwnProperty.call(t,e)?r[e]=t[e]:r[e]=n}if(i("max_size_ratio",1/0),i("per_tile_consolidation",!1),t.sortFuncType===c.DIAMETER&&(this.max_size_ratio*=this.max_size_ratio),e)i("frags_per_leaf_node",1),i("frags_per_inner_node",0),i("frags_per_leaf_node_transparent",1),i("frags_per_inner_node_transparent",0),i("max_polys_per_node",1/0);else{var s=t.isWeakDevice?.5:1;i("frags_per_leaf_node",0|256*s),i("frags_per_inner_node",0|this.frags_per_leaf_node),i("frags_per_leaf_node_transparent",this.frags_per_leaf_node),i("frags_per_inner_node_transparent",0),i("max_polys_per_node",0|2e4*s),i("max_drawcalls_per_node",1/0),i("want_sort",this.finfo.wantSort)}if(this.per_tile_consolidation=this.per_tile_consolidation&&this.finfo.supportsPerTileConsolidation()&&this.want_sort,this.nodes&&this.nodes.is_lean_node==e)this.nodes.nodeCount=0;else{for(var a=this.prim_count/this.frags_per_leaf_node,u=1;u{"use strict";r.d(e,{K:()=>i});var n=r(6118);let i=function(t,e){this.min=void 0!==t?t:new n.S(1/0,1/0,1/0),this.max=void 0!==e?e:new n.S(-1/0,-1/0,-1/0)};var s,o,a;i.prototype={constructor:i,set:function(t,e){return this.min.copy(t),this.max.copy(e),this},setFromPoints:function(t){this.makeEmpty();for(var e=0,r=t.length;ethis.max.x||t.ythis.max.y||t.zthis.max.z)},containsBox:function(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z},getParameter:function(t,e){return(e||new n.S).set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))},isIntersectionBox:function(t){return!(t.max.xthis.max.x||t.max.ythis.max.y||t.max.zthis.max.z)},intersectsBox:function(t){return this.isIntersectionBox(t)},clampPoint:function(t,e){return(e||new n.S).copy(t).clamp(this.min,this.max)},distanceToPoint:function(){var t=new n.S;return function(e){return t.copy(e).clamp(this.min,this.max).sub(e).length()}}(),intersect:function(t){return this.min.max(t.min),this.max.min(t.max),this},union:function(t){return this.min.min(t.min),this.max.max(t.max),this},applyMatrix4:(s=new n.S,o=new n.S,function(t){for(var e=t.elements,r=0;r<3;r++){let t=e[12+r],u=t;for(var n=0;n<3;n++){var i=e[r+4*n]*this.min.getComponent(n),a=e[r+4*n]*this.max.getComponent(n);t+=Math.min(i,a),u+=Math.max(i,a)}s.setComponent(r,t),o.setComponent(r,u)}return this.min.copy(s),this.max.copy(o),this}),translate:function(t){return this.min.add(t),this.max.add(t),this},equals:function(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}},7365:(t,e,r)=>{"use strict";r.d(e,{T:()=>i});var n=r(6118);let i=function(t){this.elements=t?new Float64Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]):new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),this.isDoublePrecision=!!t};var s,o,a,u,c;i.prototype={constructor:i,set:function(t,e,r,n,i,s,o,a,u,c,h,l,f,d,p,m){var g=this.elements;return g[0]=t,g[4]=e,g[8]=r,g[12]=n,g[1]=i,g[5]=s,g[9]=o,g[13]=a,g[2]=u,g[6]=c,g[10]=h,g[14]=l,g[3]=f,g[7]=d,g[11]=p,g[15]=m,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},copy:function(t){return this.elements.set(t.elements),this},makeRotationFromQuaternion:function(t){var e=this.elements,r=t.x,n=t.y,i=t.z,s=t.w,o=r+r,a=n+n,u=i+i,c=r*o,h=r*a,l=r*u,f=n*a,d=n*u,p=i*u,m=s*o,g=s*a,v=s*u;return e[0]=1-(f+p),e[4]=h-v,e[8]=l+g,e[1]=h+v,e[5]=1-(c+p),e[9]=d-m,e[2]=l-g,e[6]=d+m,e[10]=1-(c+f),e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this},multiply:function(t){return this.multiplyMatrices(this,t)},multiplyMatrices:function(t,e){var r=t.elements,n=e.elements,i=this.elements,s=r[0],o=r[4],a=r[8],u=r[12],c=r[1],h=r[5],l=r[9],f=r[13],d=r[2],p=r[6],m=r[10],g=r[14],v=r[3],y=r[7],b=r[11],x=r[15],w=n[0],_=n[4],I=n[8],A=n[12],O=n[1],S=n[5],P=n[9],k=n[13],C=n[2],T=n[6],M=n[10],E=n[14],F=n[3],R=n[7],z=n[11],V=n[15];return i[0]=s*w+o*O+a*C+u*F,i[4]=s*_+o*S+a*T+u*R,i[8]=s*I+o*P+a*M+u*z,i[12]=s*A+o*k+a*E+u*V,i[1]=c*w+h*O+l*C+f*F,i[5]=c*_+h*S+l*T+f*R,i[9]=c*I+h*P+l*M+f*z,i[13]=c*A+h*k+l*E+f*V,i[2]=d*w+p*O+m*C+g*F,i[6]=d*_+p*S+m*T+g*R,i[10]=d*I+p*P+m*M+g*z,i[14]=d*A+p*k+m*E+g*V,i[3]=v*w+y*O+b*C+x*F,i[7]=v*_+y*S+b*T+x*R,i[11]=v*I+y*P+b*M+x*z,i[15]=v*A+y*k+b*E+x*V,this},multiplyToArray:function(t,e,r){var n=this.elements;return this.multiplyMatrices(t,e),r[0]=n[0],r[1]=n[1],r[2]=n[2],r[3]=n[3],r[4]=n[4],r[5]=n[5],r[6]=n[6],r[7]=n[7],r[8]=n[8],r[9]=n[9],r[10]=n[10],r[11]=n[11],r[12]=n[12],r[13]=n[13],r[14]=n[14],r[15]=n[15],this},multiplyScalar:function(t){var e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this},determinant:function(){var t=this.elements,e=t[0],r=t[4],n=t[8],i=t[12],s=t[1],o=t[5],a=t[9],u=t[13],c=t[2],h=t[6],l=t[10],f=t[14];return t[3]*(+i*a*h-n*u*h-i*o*l+r*u*l+n*o*f-r*a*f)+t[7]*(+e*a*f-e*u*l+i*s*l-n*s*f+n*u*c-i*a*c)+t[11]*(+e*u*h-e*o*f-i*s*h+r*s*f+i*o*c-r*u*c)+t[15]*(-n*o*c-e*a*h+e*o*l+n*s*h-r*s*l+r*a*c)},transpose:function(){var t,e=this.elements;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this},flattenToArrayOffset:function(t,e){var r=this.elements;return t[e]=r[0],t[e+1]=r[1],t[e+2]=r[2],t[e+3]=r[3],t[e+4]=r[4],t[e+5]=r[5],t[e+6]=r[6],t[e+7]=r[7],t[e+8]=r[8],t[e+9]=r[9],t[e+10]=r[10],t[e+11]=r[11],t[e+12]=r[12],t[e+13]=r[13],t[e+14]=r[14],t[e+15]=r[15],t},setPosition:function(t){var e=this.elements;return e[12]=t.x,e[13]=t.y,e[14]=t.z,this},invert:function(t){const e=this.elements,r=e[0],n=e[1],i=e[2],s=e[3],o=e[4],a=e[5],u=e[6],c=e[7],h=e[8],l=e[9],f=e[10],d=e[11],p=e[12],m=e[13],g=e[14],v=e[15],y=l*g*c-m*f*c+m*u*d-a*g*d-l*u*v+a*f*v,b=p*f*c-h*g*c-p*u*d+o*g*d+h*u*v-o*f*v,x=h*m*c-p*l*c+p*a*d-o*m*d-h*a*v+o*l*v,w=p*l*u-h*m*u-p*a*f+o*m*f+h*a*g-o*l*g,_=r*y+n*b+i*x+s*w;if(0===_)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const I=1/_;return e[0]=y*I,e[1]=(m*f*s-l*g*s-m*i*d+n*g*d+l*i*v-n*f*v)*I,e[2]=(a*g*s-m*u*s+m*i*c-n*g*c-a*i*v+n*u*v)*I,e[3]=(l*u*s-a*f*s-l*i*c+n*f*c+a*i*d-n*u*d)*I,e[4]=b*I,e[5]=(h*g*s-p*f*s+p*i*d-r*g*d-h*i*v+r*f*v)*I,e[6]=(p*u*s-o*g*s-p*i*c+r*g*c+o*i*v-r*u*v)*I,e[7]=(o*f*s-h*u*s+h*i*c-r*f*c-o*i*d+r*u*d)*I,e[8]=x*I,e[9]=(p*l*s-h*m*s-p*n*d+r*m*d+h*n*v-r*l*v)*I,e[10]=(o*m*s-p*a*s+p*n*c-r*m*c-o*n*v+r*a*v)*I,e[11]=(h*a*s-o*l*s-h*n*c+r*l*c+o*n*d-r*a*d)*I,e[12]=w*I,e[13]=(h*m*i-p*l*i+p*n*f-r*m*f-h*n*g+r*l*g)*I,e[14]=(p*a*i-o*m*i-p*n*u+r*m*u+o*n*g-r*a*g)*I,e[15]=(o*l*i-h*a*i+h*n*u-r*l*u-o*n*f+r*a*f)*I,this},getInverse:function(t,e){if(console.warn("LmvMatrix4.getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead."),this.copy(t).invert(),0===this.determinant()){const t="Matrix4.getInverse(): can't invert matrix, determinant is 0";if(e)throw new Error(t);console.warn(t),this.identity()}return this},scale:function(t){var e=this.elements,r=t.x,n=t.y,i=t.z;return e[0]*=r,e[4]*=n,e[8]*=i,e[1]*=r,e[5]*=n,e[9]*=i,e[2]*=r,e[6]*=n,e[10]*=i,e[3]*=r,e[7]*=n,e[11]*=i,this},getMaxScaleOnAxis:function(){var t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],r=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],n=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,Math.max(r,n)))},makeTranslation:function(t,e,r){return this.set(1,0,0,t,0,1,0,e,0,0,1,r,0,0,0,1),this},makeRotationX:function(t){var e=Math.cos(t),r=Math.sin(t);return this.set(1,0,0,0,0,e,-r,0,0,r,e,0,0,0,0,1),this},makeRotationY:function(t){var e=Math.cos(t),r=Math.sin(t);return this.set(e,0,r,0,0,1,0,0,-r,0,e,0,0,0,0,1),this},makeRotationZ:function(t){var e=Math.cos(t),r=Math.sin(t);return this.set(e,-r,0,0,r,e,0,0,0,0,1,0,0,0,0,1),this},makeRotationAxis:function(t,e){var r=Math.cos(e),n=Math.sin(e),i=1-r,s=t.x,o=t.y,a=t.z,u=i*s,c=i*o;return this.set(u*s+r,u*o-n*a,u*a+n*o,0,u*o+n*a,c*o+r,c*a-n*s,0,u*a-n*o,c*a+n*s,i*a*a+r,0,0,0,0,1),this},makeScale:function(t,e,r){return this.set(t,0,0,0,0,e,0,0,0,0,r,0,0,0,0,1),this},lookAt:(a=new n.S,u=new n.S,c=new n.S,function(t,e,r){var n=this.elements;return c.subVectors(t,e).normalize(),0===c.length()&&(c.z=1),a.crossVectors(r,c).normalize(),0===a.length()&&(c.x+=1e-4,a.crossVectors(r,c).normalize()),u.crossVectors(c,a),n[0]=a.x,n[4]=u.x,n[8]=c.x,n[1]=a.y,n[5]=u.y,n[9]=c.y,n[2]=a.z,n[6]=u.z,n[10]=c.z,this}),compose:function(t,e,r){return this.makeRotationFromQuaternion(e),this.scale(r),this.setPosition(t),this},decompose:(s=new n.S,o=new i(!0),function(t,e,r){var n=this.elements,i=s.set(n[0],n[1],n[2]).length(),a=s.set(n[4],n[5],n[6]).length(),u=s.set(n[8],n[9],n[10]).length();this.determinant()<0&&(i=-i),t.x=n[12],t.y=n[13],t.z=n[14],o.elements.set(this.elements);var c=1/i,h=1/a,l=1/u;return o.elements[0]*=c,o.elements[1]*=c,o.elements[2]*=c,o.elements[4]*=h,o.elements[5]*=h,o.elements[6]*=h,o.elements[8]*=l,o.elements[9]*=l,o.elements[10]*=l,e.setFromRotationMatrix(o),r.x=i,r.y=a,r.z=u,this}),transformPoint:function(t){var e=t.x,r=t.y,n=t.z,i=this.elements;return t.x=i[0]*e+i[4]*r+i[8]*n+i[12],t.y=i[1]*e+i[5]*r+i[9]*n+i[13],t.z=i[2]*e+i[6]*r+i[10]*n+i[14],t},transformDirection:function(t){var e=t.x,r=t.y,n=t.z,i=this.elements;t.x=i[0]*e+i[4]*r+i[8]*n,t.y=i[1]*e+i[5]*r+i[9]*n,t.z=i[2]*e+i[6]*r+i[10]*n;var s=Math.sqrt(t.x*t.x+t.y*t.y+t.z*t.z);if(s>0){var o=1/s;t.x*=o,t.y*=o,t.z*=o}return t},equals(t){const e=this.elements,r=t.elements;for(var n=0;n<16;n++)if(e[n]!==r[n])return!1;return!0},fromArray:function(t){return this.elements.set(t),this},toArray:function(){var t=this.elements;return[t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15]]},clone:function(){return new i(this.isDoublePrecision).fromArray(this.elements)}}},6118:(t,e,r)=>{"use strict";r.d(e,{S:()=>n});let n=function(t,e,r){this.x=t||0,this.y=e||0,this.z=r||0};var i,s,o,a;n.prototype={constructor:n,set:function(t,e,r){return this.x=t,this.y=e,this.z=r,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setZ:function(t){return this.z=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this},add:function(t,e){return void 0!==e?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this)},addScalar:function(t){return this.x+=t,this.y+=t,this.z+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this},addScaledVector:function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this},sub:function(t,e){return void 0!==e?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this)},subScalar:function(t){return this.x-=t,this.y-=t,this.z-=t,this},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this},multiply:function(t,e){return void 0!==e?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(t,e)):(this.x*=t.x,this.y*=t.y,this.z*=t.z,this)},multiplyScalar:function(t){return this.x*=t,this.y*=t,this.z*=t,this},multiplyVectors:function(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this},applyMatrix3:function(t){var e=this.x,r=this.y,n=this.z,i=t.elements;return this.x=i[0]*e+i[3]*r+i[6]*n,this.y=i[1]*e+i[4]*r+i[7]*n,this.z=i[2]*e+i[5]*r+i[8]*n,this},applyMatrix4:function(t){var e=this.x,r=this.y,n=this.z,i=t.elements;return this.x=i[0]*e+i[4]*r+i[8]*n+i[12],this.y=i[1]*e+i[5]*r+i[9]*n+i[13],this.z=i[2]*e+i[6]*r+i[10]*n+i[14],this},applyProjection:function(t){var e=this.x,r=this.y,n=this.z,i=t.elements,s=1/(i[3]*e+i[7]*r+i[11]*n+i[15]);return this.x=(i[0]*e+i[4]*r+i[8]*n+i[12])*s,this.y=(i[1]*e+i[5]*r+i[9]*n+i[13])*s,this.z=(i[2]*e+i[6]*r+i[10]*n+i[14])*s,this},applyQuaternion:function(t){var e=this.x,r=this.y,n=this.z,i=t.x,s=t.y,o=t.z,a=t.w,u=a*e+s*n-o*r,c=a*r+o*e-i*n,h=a*n+i*r-s*e,l=-i*e-s*r-o*n;return this.x=u*a+l*-i+c*-o-h*-s,this.y=c*a+l*-s+h*-i-u*-o,this.z=h*a+l*-o+u*-s-c*-i,this},transformDirection:function(t){var e=this.x,r=this.y,n=this.z,i=t.elements;return this.x=i[0]*e+i[4]*r+i[8]*n,this.y=i[1]*e+i[5]*r+i[9]*n,this.z=i[2]*e+i[6]*r+i[10]*n,this.normalize(),this},divide:function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this},divideScalar:function(t){if(0!==t){var e=1/t;this.x*=e,this.y*=e,this.z*=e}else this.x=0,this.y=0,this.z=0;return this},min:function(t){return this.x>t.x&&(this.x=t.x),this.y>t.y&&(this.y=t.y),this.z>t.z&&(this.z=t.z),this},max:function(t){return this.xe.x&&(this.x=e.x),this.ye.y&&(this.y=e.y),this.ze.z&&(this.z=e.z),this},clampScalar:function(t,e){return void 0===o&&(o=new n,a=new n),o.set(t,t,t),a.set(e,e,e),this.clamp(o,a)},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(t){return this.x*t.x+this.y*t.y+this.z*t.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(t){var e=this.length();return 0!==e&&t!==e&&this.multiplyScalar(t/e),this},lerp:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this},lerpVectors:function(t,e,r){return this.subVectors(e,t).multiplyScalar(r).add(t),this},cross:function(t,e){if(void 0!==e)return console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(t,e);var r=this.x,n=this.y,i=this.z;return this.x=n*t.z-i*t.y,this.y=i*t.x-r*t.z,this.z=r*t.y-n*t.x,this},crossVectors:function(t,e){var r=t.x,n=t.y,i=t.z,s=e.x,o=e.y,a=e.z;return this.x=n*a-i*o,this.y=i*s-r*a,this.z=r*o-n*s,this},projectOnVector:function(t){return void 0===i&&(i=new n),i.copy(t).normalize(),s=this.dot(i),this.copy(i).multiplyScalar(s)},projectOnPlane:function(){var t;return function(e){return void 0===t&&(t=new n),t.copy(this).projectOnVector(e),this.sub(t)}}(),reflect:function(){var t;return function(e){return void 0===t&&(t=new n),this.sub(t.copy(e).multiplyScalar(2*this.dot(e)))}}(),distanceTo:function(t){return Math.sqrt(this.distanceToSquared(t))},distanceToSquared:function(t){var e=this.x-t.x,r=this.y-t.y,n=this.z-t.z;return e*e+r*r+n*n},setEulerFromRotationMatrix:function(t,e){console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(t,e){console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(t){return console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),this.setFromMatrixPosition(t)},getScaleFromMatrix:function(t){return console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),this.setFromMatrixScale(t)},getColumnFromMatrix:function(t,e){return console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),this.setFromMatrixColumn(t,e)},setFromMatrixPosition:function(t){return this.x=t.elements[12],this.y=t.elements[13],this.z=t.elements[14],this},setFromMatrixScale:function(t){var e=this.set(t.elements[0],t.elements[1],t.elements[2]).length(),r=this.set(t.elements[4],t.elements[5],t.elements[6]).length(),n=this.set(t.elements[8],t.elements[9],t.elements[10]).length();return this.x=e,this.y=r,this.z=n,this},setFromMatrixColumn:function(t,e){var r=4*t,n=e.elements;return this.x=n[r],this.y=n[r+1],this.z=n[r+2],this},equals:function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z},fromArray:function(t,e){return void 0===e&&(e=0),this.x=t[e],this.y=t[e+1],this.z=t[e+2],this},toArray:function(t,e){return void 0===t&&(t=[]),void 0===e&&(e=0),t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t},fromAttribute:function(t,e,r){return void 0===r&&(r=0),e=e*t.itemSize+r,this.x=t.array[e],this.y=t.array[e+1],this.z=t.array[e+2],this}}},4406:function(t,e,r){"use strict";var n=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))((function(i,s){function o(t){try{u(n.next(t))}catch(t){s(t)}}function a(t){try{u(n.throw(t))}catch(t){s(t)}}function u(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(o,a)}u((n=n.apply(t,e||[])).next())}))},i=this&&this.__generator||function(t,e){var r,n,i,s,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(i=2&s[0]?n.return:s[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,s[1])).done)return i;switch(n=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,n=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]=this.options.numOfAttempts},enumerable:!0,configurable:!0}),t.prototype.applyDelay=function(){return n(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,o.DelayFactory(this.options,this.attemptNumber).apply()];case 1:return t.sent(),[2]}}))}))},t}()},8348:function(t,e,r){"use strict";var n,i=this&&this.__extends||(n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])},n(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});Object.defineProperty(e,"__esModule",{value:!0});var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e}(r(6698).Delay);e.AlwaysDelay=s},6698:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(6071),i=function(){function t(t){this.options=t,this.attempt=0}return t.prototype.apply=function(){var t=this;return new Promise((function(e){return setTimeout(e,t.jitteredDelay)}))},t.prototype.setAttemptNumber=function(t){this.attempt=t},Object.defineProperty(t.prototype,"jitteredDelay",{get:function(){return n.JitterFactory(this.options)(this.delay)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"delay",{get:function(){var t=this.options.startingDelay,e=this.options.timeMultiple,r=this.numOfDelayedAttempts,n=t*Math.pow(e,r);return Math.min(n,this.options.maxDelay)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"numOfDelayedAttempts",{get:function(){return this.attempt},enumerable:!0,configurable:!0}),t}();e.Delay=i},5757:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(7510),i=r(8348);e.DelayFactory=function(t,e){var r=function(t){return t.delayFirstAttempt?new i.AlwaysDelay(t):new n.SkipFirstDelay(t)}(t);return r.setAttemptNumber(e),r}},7510:function(t,e,r){"use strict";var n,i=this&&this.__extends||(n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])},n(t,e)},function(t,e){function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),s=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))((function(i,s){function o(t){try{u(n.next(t))}catch(t){s(t)}}function a(t){try{u(n.throw(t))}catch(t){s(t)}}function u(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(o,a)}u((n=n.apply(t,e||[])).next())}))},o=this&&this.__generator||function(t,e){var r,n,i,s,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(i=2&s[0]?n.return:s[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,s[1])).done)return i;switch(n=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,n=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.fullJitter=function(t){var e=Math.random()*t;return Math.round(e)}},6071:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(8500),i=r(4764);e.JitterFactory=function(t){return"full"===t.jitter?n.fullJitter:i.noJitter}},4764:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.noJitter=function(t){return t}},784:function(t,e){"use strict";var r=this&&this.__assign||function(){return r=Object.assign||function(t){for(var e,r=1,n=arguments.length;r{"use strict";r.d(e,{AO:()=>ct,Wt:()=>nt,u3:()=>rt});var n=Uint8Array,i=Uint16Array,s=Int32Array,o=new n([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),a=new n([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),u=new n([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),c=function(t,e){for(var r=new i(31),n=0;n<31;++n)r[n]=e+=1<>1|(21845&v)<<1;y=(61680&(y=(52428&y)>>2|(13107&y)<<2))>>4|(3855&y)<<4,g[v]=((65280&y)>>8|(255&y)<<8)>>1}var b=function(t,e,r){for(var n=t.length,s=0,o=new i(e);s>c]=h}else for(a=new i(n),s=0;s>15-t[s]);return a},x=new n(288);for(v=0;v<144;++v)x[v]=8;for(v=144;v<256;++v)x[v]=9;for(v=256;v<280;++v)x[v]=7;for(v=280;v<288;++v)x[v]=8;var w=new n(32);for(v=0;v<32;++v)w[v]=5;var _=b(x,9,0),I=b(x,9,1),A=b(w,5,0),O=b(w,5,1),S=function(t){for(var e=t[0],r=1;re&&(e=t[r]);return e},P=function(t,e,r){var n=e/8|0;return(t[n]|t[n+1]<<8)>>(7&e)&r},k=function(t,e){var r=e/8|0;return(t[r]|t[r+1]<<8|t[r+2]<<16)>>(7&e)},C=function(t){return(t+7)/8|0},T=function(t,e,r){return(null==e||e<0)&&(e=0),(null==r||r>t.length)&&(r=t.length),new n(t.subarray(e,r))},M=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],E=function(t,e,r){var n=new Error(e||M[t]);if(n.code=t,Error.captureStackTrace&&Error.captureStackTrace(n,E),!r)throw n;return n},F=function(t,e,r,i){var s=t.length,c=i?i.length:0;if(!s||e.f&&!e.l)return r||new n(0);var h=!r,f=h||2!=e.i,d=e.i;h&&(r=new n(3*s));var m=function(t){var e=r.length;if(t>e){var i=new n(Math.max(2*e,t));i.set(r),r=i}},g=e.f||0,v=e.p||0,y=e.b||0,x=e.l,w=e.d,_=e.m,A=e.n,M=8*s;do{if(!x){g=P(t,v,1);var F=P(t,v+1,3);if(v+=3,!F){var R=t[(q=C(v)+4)-4]|t[q-3]<<8,z=q+R;if(z>s){d&&E(0);break}f&&m(y+R),r.set(t.subarray(q,z),y),e.b=y+=R,e.p=v=8*z,e.f=g;continue}if(1==F)x=I,w=O,_=9,A=5;else if(2==F){var V=P(t,v,31)+257,U=P(t,v+10,15)+4,D=V+P(t,v+5,31)+1;v+=14;for(var L=new n(D),j=new n(19),N=0;N>4)<16)L[N++]=q;else{var $=0,Q=0;for(16==q?(Q=3+P(t,v,3),v+=2,$=L[N-1]):17==q?(Q=3+P(t,v,7),v+=3):18==q&&(Q=11+P(t,v,127),v+=7);Q--;)L[N++]=$}}var K=L.subarray(0,V),X=L.subarray(V);_=S(K),A=S(X),x=b(K,_,1),w=b(X,A,1)}else E(1);if(v>M){d&&E(0);break}}f&&m(y+131072);for(var Y=(1<<_)-1,J=(1<>4;if((v+=15&$)>M){d&&E(0);break}if($||E(2),tt<256)r[y++]=tt;else{if(256==tt){Z=v,x=null;break}var et=tt-254;if(tt>264){var rt=o[N=tt-257];et=P(t,v,(1<>4;if(nt||E(3),v+=15&nt,X=p[it],it>3&&(rt=a[it],X+=k(t,v)&(1<M){d&&E(0);break}f&&m(y+131072);var st=y+et;if(y>8},z=function(t,e,r){r<<=7&e;var n=e/8|0;t[n]|=r,t[n+1]|=r>>8,t[n+2]|=r>>16},V=function(t,e){for(var r=[],s=0;sp&&(p=a[s].s);var m=new i(p+1),g=U(r[f-1],m,0);if(g>e){s=0;var v=0,y=g-e,b=1<e))break;v+=b-(1<>=y;v>0;){var w=a[s].s;m[w]=0&&v;--s){var _=a[s].s;m[_]==e&&(--m[_],++v)}g=e}return{t:new n(m),l:g}},U=function(t,e,r){return-1==t.s?Math.max(U(t.l,e,r+1),U(t.r,e,r+1)):e[t.s]=r},D=function(t){for(var e=t.length;e&&!t[--e];);for(var r=new i(++e),n=0,s=t[0],o=1,a=function(t){r[n++]=t},u=1;u<=e;++u)if(t[u]==s&&u!=e)++o;else{if(!s&&o>2){for(;o>138;o-=138)a(32754);o>2&&(a(o>10?o-11<<5|28690:o-3<<5|12305),o=0)}else if(o>3){for(a(s),--o;o>6;o-=6)a(8304);o>2&&(a(o-3<<5|8208),o=0)}for(;o--;)a(s);o=1,s=t[u]}return{c:r.subarray(0,n),n:e}},L=function(t,e){for(var r=0,n=0;n>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var s=0;s4&&!N[u[W-1]];--W);var G,q,H,$,Q=d+5<<3,K=L(s,x)+L(c,w)+h,X=L(s,g)+L(c,I)+h+14+3*W+L(E,N)+2*E[16]+3*E[17]+7*E[18];if(f>=0&&Q<=K&&Q<=X)return j(e,p,t.subarray(f,f+d));if(R(e,p,1+(X15&&(R(e,p,tt[F]>>5&127),p+=tt[F]>>12)}}}else G=_,q=x,H=A,$=w;for(F=0;F255){z(e,p,G[257+(et=rt>>18&31)]),p+=q[et+257],et>7&&(R(e,p,rt>>23&31),p+=o[et]);var nt=31&rt;z(e,p,H[nt]),p+=$[nt],nt>3&&(z(e,p,rt>>5&8191),p+=a[nt])}else z(e,p,G[rt]),p+=q[rt]}return z(e,p,G[256]),p+q[256]},B=new s([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),W=new n(0),G=function(){for(var t=new Int32Array(256),e=0;e<256;++e){for(var r=e,n=9;--n;)r=(1&r&&-306674912)^r>>>1;t[e]=r}return t}(),q=function(){var t=-1;return{p:function(e){for(var r=t,n=0;n>>8;t=r},d:function(){return~t}}},H=function(t,e,r,u,c){if(!c&&(c={l:1},e.dictionary)){var h=e.dictionary.subarray(-32768),l=new n(h.length+t.length);l.set(h),l.set(t,h.length),t=l,c.w=h.length}return function(t,e,r,u,c,h){var l=h.z||t.length,d=new n(u+l+5*(1+Math.ceil(l/7e3))+c),p=d.subarray(u,d.length-c),g=h.l,v=7&(h.r||0);if(e){v&&(p[0]=h.r>>3);for(var y=B[e-1],b=y>>13,x=8191&y,w=(1<7e3||z>24576)&&(G>423||!g)){v=N(t,p,0,P,k,M,F,z,U,R-U,v),z=E=F=0,U=R;for(var q=0;q<286;++q)k[q]=0;for(q=0;q<30;++q)M[q]=0}var H=2,$=0,Q=x,K=L-W&32767;if(G>2&&D==S(R-K))for(var X=Math.min(b,G)-1,Y=Math.min(32767,R),J=Math.min(258,G);K<=Y&&--Q&&L!=W;){if(t[R+H]==t[R+H-K]){for(var Z=0;ZH){if(H=Z,$=K,Z>X)break;var tt=Math.min(K,Z-2),et=0;for(q=0;qet&&(et=nt,W=rt)}}}K+=(L=W)-(W=_[L])&32767}if($){P[z++]=268435456|f[H]<<18|m[$];var it=31&f[H],st=31&m[$];F+=o[it]+a[st],++k[257+it],++M[st],V=R+H,++E}else P[z++]=t[R],++k[t[R]]}}for(R=Math.max(R,V);R=l&&(p[v/8|0]=g,ot=l),v=j(p,v+1,t.subarray(R,ot))}h.i=l}return T(d,0,u+C(v)+c)}(t,null==e.level?6:e.level,null==e.mem?c.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(t.length)))):20:12+e.mem,r,u,c)},$=function(t,e){return t[e]|t[e+1]<<8},Q=function(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24)>>>0},K=function(t,e){return Q(t,e)+4294967296*Q(t,e+4)},X=function(t,e,r){for(;r;++e)t[e]=r,r>>>=8},Y=function(t,e){var r=e.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=e.level<2?4:9==e.level?2:0,t[9]=3,0!=e.mtime&&X(t,4,Math.floor(new Date(e.mtime||Date.now())/1e3)),r){t[3]=8;for(var n=0;n<=r.length;++n)t[n+10]=r.charCodeAt(n)}},J=function(t){31==t[0]&&139==t[1]&&8==t[2]||E(6,"invalid gzip data");var e=t[3],r=10;4&e&&(r+=2+(t[10]|t[11]<<8));for(var n=(e>>3&1)+(e>>4&1);n>0;n-=!t[r++]);return r+(2&e)},Z=function(t){var e=t.length;return(t[e-4]|t[e-3]<<8|t[e-2]<<16|t[e-1]<<24)>>>0},tt=function(t){return 10+(t.filename?t.filename.length+1:0)};function et(t,e){return F(t,{i:2},e&&e.out,e&&e.dictionary)}function rt(t,e){e||(e={});var r=q(),n=t.length;r.p(t);var i=H(t,e,tt(e),8),s=i.length;return Y(i,e),X(i,s-8,r.d()),X(i,s-4,n),i}function nt(t,e){var r=J(t);return r+8>t.length&&E(6,"invalid gzip data"),F(t.subarray(r,-8),{i:2},e&&e.out||new n(Z(t)),e&&e.dictionary)}var it="undefined"!=typeof TextDecoder&&new TextDecoder;try{it.decode(W,{stream:!0})}catch(t){}function st(t,e){if(e){for(var r="",n=0;n127)+(n>223)+(n>239);if(r+i>t.length)return{s:e,r:T(t,r-1)};i?3==i?(n=((15&n)<<18|(63&t[r++])<<12|(63&t[r++])<<6|63&t[r++])-65536,e+=String.fromCharCode(55296|n>>10,56320|1023&n)):e+=1&i?String.fromCharCode((31&n)<<6|63&t[r++]):String.fromCharCode((15&n)<<12|(63&t[r++])<<6|63&t[r++]):e+=String.fromCharCode(n)}}(t),s=i.s;return(r=i.r).length&&E(8),s}var ot=function(t,e){return e+30+$(t,e+26)+$(t,e+28)},at=function(t,e,r){var n=$(t,e+28),i=st(t.subarray(e+46,e+46+n),!(2048&$(t,e+8))),s=e+46+n,o=Q(t,e+20),a=r&&4294967295==o?ut(t,s):[o,Q(t,e+24),Q(t,e+42)],u=a[0],c=a[1],h=a[2];return[$(t,e+10),u,c,i,s+$(t,e+30)+$(t,e+32),h]},ut=function(t,e){for(;1!=$(t,e);e+=4+$(t,e+2));return[K(t,e+12),K(t,e+4),K(t,e+20)]};function ct(t,e){for(var r={},i=t.length-22;101010256!=Q(t,i);--i)(!i||t.length-i>65558)&&E(13);var s=$(t,i+8);if(!s)return{};var o=Q(t,i+16),a=4294967295==o||65535==s;if(a){var u=Q(t,i-12);(a=101075792==Q(t,u))&&(s=Q(t,u+32),o=Q(t,u+48))}for(var c=e&&e.filter,h=0;h{var n=null;"undefined"!=typeof WebSocket?n=WebSocket:"undefined"!=typeof MozWebSocket?n=MozWebSocket:void 0!==r.g?n=r.g.WebSocket||r.g.MozWebSocket:"undefined"!=typeof window?n=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(n=self.WebSocket||self.MozWebSocket),t.exports=n},1436:t=>{function e(){this.pending=0,this.max=1/0,this.listeners=[],this.waiting=[],this.error=null}function r(t){t.pending+=1;var e=!1;return function(i){if(e)throw new Error("callback called twice");if(e=!0,t.error=t.error||i,t.pending-=1,t.waiting.length>0&&t.pending{"use strict";r.d(e,{x:()=>u});var n=r(5982);const i="_metadata",s="Placeholder value for buckets that failed to open",o="QuotaExceededError";async function a(t){const e=[];for await(const[r,n]of t)"file"===n.kind&&e.push(n.getFile().then((t=>[r,t])));return Promise.all(e)}class u{#e;#r=!1;#n;#i;#s=null;#o=new Map;#a=new Map;#u="";constructor(t,e="otg_cache"){this.#u=e,this.#n=this.#c(),this.#e=t}async#c(){try{const t=await navigator.storage.getDirectory();this.#s=await t.getDirectoryHandle(this.#u,{create:!0})}catch(t){console.warn("Failed to open OPFS cache directory",t),this.#e?.("viewer.opfsCache.cacheOpenFailed",{errorName:t.name,errorMessage:t.message})}this.#n=void 0}async open(t){const e=this.#o.get(t);if(e)return e;let r=this.#a.get(t);return r||(r=(async()=>{let e,r,n;await this.#n;const o=t.replaceAll(/<|>|:|"|\/|\\|\||\?\*/g,"_"),a="opfs-cache-write-lock-"+o;try{if(!this.#s)throw new Error("OPFS cache directory not initialized");const s=await this.#s.getFileHandle(o,{create:!0});e=await s.createSyncAccessHandle({mode:"readwrite-unsafe"});const u=await this.#s.getFileHandle(o+i,{create:!0});r=await u.createSyncAccessHandle({mode:"readwrite-unsafe"});const c=new Uint32Array(1);return c[0]=(new Date).valueOf(),r.write(c,{at:0}),n={dataHandle:e,offsets:new Map,metadataHandle:r},this.#o.set(t,n),await new Promise((t=>{navigator.locks.request(a,{ifAvailable:!0,mode:"exclusive"},(e=>{if(t(),e)return new Promise((t=>{n.writeLock=t}))}))})),this.#h(n)!==n.dataHandle.getSize()&&(console.warn("Data file has unexpected size, clearing OPFS cache for",t),n.offsets.clear(),n.dataHandle.truncate(0),n.metadataHandle.truncate(4)),console.log("Opened OPFS cache bucket",t,"with",n.offsets.size,"entries"),n}catch(i){return"NoModificationAllowedError"===i.name?(console.warn(i.message),console.warn(`Failed to open OPFS cache bucket for ${t}. It is probably open in another tab. Disabling cache.`)):console.warn("Failed to initialize OFPS cache bucket",t,i),this.#s&&this.#e?.("viewer.opfsCache.bucketOpenFailed",{bucketName:t,errorName:i.name,errorMessage:i.message}),e?.close(),r?.close(),n?.writeLock?.(),this.#o.set(t,s),s}finally{this.#a.delete(t)}})(),this.#a.set(t,r),r)}#h(t){t.offsets.clear();const e=t.metadataHandle.getSize()-4,r=new Uint8Array(e),i=new Uint16Array(r.buffer),s=new Uint32Array(r.buffer);t.metadataHandle.read(r,{at:4});let o=0;for(let e=0;et.length)),a=new Uint8Array(24*t.length),u=new Uint32Array(a.buffer),c=new Uint8Array(o.reduce(((t,e)=>t+e),0));let h=0;for(let e=0;esetTimeout(t,0))),i!==this.#o.get(e))return;if(!this.#f(i,c,a)&&(await this.#d(),!this.#f(i,c,a)))return;let l=i.dataHandle.getSize()-c.length;for(let e=0;ee.length)throw new DOMException("Quota Exceeded in Chrome Incognito mode",o);if(n!==e.length)throw new DOMException("Partial write detected")}async get(t,e){const r=new Array(t.length).fill(null);for(let n=0;nt.lastModified-e.lastModified));let o=0;const u=Date.now()-7776e6;for(const t of s){if(t.lastModified>u&&o>=n)break;try{await this.#s.removeEntry(t.name),o+=t.size;const e=t.name.slice(0,-9),r=await(await this.#s.getFileHandle(e)).getFile();await this.#s.removeEntry(e),o+=r.size}catch(t){"NoModificationAllowedError"!==t.name&&console.warn("Error during cache eviction",t)}}return o>=n}async close(){this.#n&&await this.#n,this.#a.size&&await Promise.all(this.#a.values());for(const t of this.#o.values())t&&t!==s&&(t.dataHandle&&(t.dataHandle.flush(),t.dataHandle.close()),t.metadataHandle&&(t.metadataHandle.flush(),t.metadataHandle.close()),t.writeLock?.());this.#o.clear(),await this.#d(0)}async clear(){await this.close(),await this.#d(1)}async getStats(){await this.#n;let t=0,e=0,r=0;if(this.#s)for(const[n,s]of await a(this.#s))n.endsWith(i)?(r+=s.size,t+=(s.size-4)/24):e+=s.size;return{entries:t,dataSize:e,metadataSize:r}}#m(){this.#r||(this.#r=!0,navigator.storage.estimate().then((t=>{this.#e?.("viewer.opfsCache.quotaExceeded",t)})).catch((t=>{console.error("Failed to get storage estimate",t)})))}}},8401:(t,e,r)=>{"use strict";r.d(e,{k:()=>x});var n=r(6247),i=r(3293),s=r(1706);const o={Index:0,IndexEdges:1,Position:2,Normal:3,TextureUV:4,Color:5},a={TRIANGLES:0,LINES:1,POINTS:2,WIDE_LINES:3},u=(o.Position,o.Normal,o.Index,o.IndexEdges,o.Color,{});u[o.Position]="position",u[o.Normal]="normal",u[o.Index]="index",u[o.IndexEdges]="indexlines",u[o.Color]="color",u[o.TextureUV]="uv";const c={};function h(t){if(t.length){t[1]+=t[0],t[2]+=t[0];for(var e=3;e>4,r.bytesPerItem=c[r.type],r.normalized=4===r.type||5===r.type||6===r.type||7===r.type,r.itemOffset=this.buffer.readUInt8(this.readOffset)/4,this.readOffset++,r.itemStride=this.buffer.readUInt8(this.readOffset)/4,this.readOffset++,r.bufferIndex=this.buffer.readUInt8(this.readOffset),this.readOffset++,this.attributes.push(r)}for(;this.readOffset%4!=0;)this.readOffset++;for(let t=0;t>4,r.bytesPerItem=c[r.type],r.normalized=4===r.type||5===r.type||6===r.type||7===r.type,r.itemOffset=t.getUint8()/4,r.itemStride=t.getUint8()/4,r.bufferIndex=t.getUint8(),this.attributes.push(r)}for(;t.offset%4!=0;)t.offset++;for(let e=0;e1&&(v+=i.toString())),n.vbstride?n.vbstride!==c.itemStride&&console.error("Unexpected vertex buffer stride mismatch."):n.vbstride=c.itemStride,c.itemOffset>=c.itemStride||(n.vblayout[v]={bytesPerItem:c.bytesPerItem,offset:c.itemOffset,normalized:c.normalized,itemSize:c.itemSize})}}var y;return{mesh:n,packId:0,meshIndex:0}}var v=r(9861);function y(t){return 31===t[0]&&139===t[1]}function b(t){t.port.onmessage=e=>{switch(e.data.operation){case"DECODE_GEOMETRIES":!function(t,e,r,n){const i=new Array;for(let s=0;st.buffer)))}(t.worker,e.data.hashes,e.data.arrays)}}}function x(t){t.register("INSTALL_INPUT_PORT",{doOperation:b})}},9709:()=>{},684:()=>{},9631:()=>{},8215:()=>{},315:()=>{},9306:(t,e,r)=>{"use strict";var n=r(4901),i=r(6823),s=TypeError;t.exports=function(t){if(n(t))return t;throw new s(i(t)+" is not a function")}},6194:(t,e,r)=>{"use strict";var n=r(2248).has;t.exports=function(t){return n(t),t}},3506:(t,e,r)=>{"use strict";var n=r(3925),i=String,s=TypeError;t.exports=function(t){if(n(t))return t;throw new s("Can't set "+i(t)+" as a prototype")}},7080:(t,e,r)=>{"use strict";var n=r(4402).has;t.exports=function(t){return n(t),t}},6557:(t,e,r)=>{"use strict";var n=r(4995).has;t.exports=function(t){return n(t),t}},3755:(t,e,r)=>{"use strict";var n=r(8205).has;t.exports=function(t){return n(t),t}},6469:(t,e,r)=>{"use strict";var n=r(8227),i=r(2360),s=r(4913).f,o=n("unscopables"),a=Array.prototype;void 0===a[o]&&s(a,o,{configurable:!0,value:i(null)}),t.exports=function(t){a[o][t]=!0}},679:(t,e,r)=>{"use strict";var n=r(1625),i=TypeError;t.exports=function(t,e){if(n(e,t))return t;throw new i("Incorrect invocation")}},8551:(t,e,r)=>{"use strict";var n=r(34),i=String,s=TypeError;t.exports=function(t){if(n(t))return t;throw new s(i(t)+" is not an object")}},7811:t=>{"use strict";t.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},5652:(t,e,r)=>{"use strict";var n=r(9039);t.exports=n((function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}}))},4644:(t,e,r)=>{"use strict";var n,i,s,o=r(7811),a=r(3724),u=r(4475),c=r(4901),h=r(34),l=r(9297),f=r(6955),d=r(6823),p=r(6699),m=r(6840),g=r(2106),v=r(1625),y=r(2787),b=r(2967),x=r(8227),w=r(3392),_=r(1181),I=_.enforce,A=_.get,O=u.Int8Array,S=O&&O.prototype,P=u.Uint8ClampedArray,k=P&&P.prototype,C=O&&y(O),T=S&&y(S),M=Object.prototype,E=u.TypeError,F=x("toStringTag"),R=w("TYPED_ARRAY_TAG"),z="TypedArrayConstructor",V=o&&!!b&&"Opera"!==f(u.opera),U=!1,D={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},L={BigInt64Array:8,BigUint64Array:8},j=function(t){var e=y(t);if(h(e)){var r=A(e);return r&&l(r,z)?r[z]:j(e)}},N=function(t){if(!h(t))return!1;var e=f(t);return l(D,e)||l(L,e)};for(n in D)(s=(i=u[n])&&i.prototype)?I(s)[z]=i:V=!1;for(n in L)(s=(i=u[n])&&i.prototype)&&(I(s)[z]=i);if((!V||!c(C)||C===Function.prototype)&&(C=function(){throw new E("Incorrect invocation")},V))for(n in D)u[n]&&b(u[n],C);if((!V||!T||T===M)&&(T=C.prototype,V))for(n in D)u[n]&&b(u[n].prototype,T);if(V&&y(k)!==T&&b(k,T),a&&!l(T,F))for(n in U=!0,g(T,F,{configurable:!0,get:function(){return h(this)?this[R]:void 0}}),D)u[n]&&p(u[n],R,n);t.exports={NATIVE_ARRAY_BUFFER_VIEWS:V,TYPED_ARRAY_TAG:U&&R,aTypedArray:function(t){if(N(t))return t;throw new E("Target is not a typed array")},aTypedArrayConstructor:function(t){if(c(t)&&(!b||v(C,t)))return t;throw new E(d(t)+" is not a typed array constructor")},exportTypedArrayMethod:function(t,e,r,n){if(a){if(r)for(var i in D){var s=u[i];if(s&&l(s.prototype,t))try{delete s.prototype[t]}catch(r){try{s.prototype[t]=e}catch(t){}}}T[t]&&!r||m(T,t,r?e:V&&S[t]||e,n)}},exportTypedArrayStaticMethod:function(t,e,r){var n,i;if(a){if(b){if(r)for(n in D)if((i=u[n])&&l(i,t))try{delete i[t]}catch(t){}if(C[t]&&!r)return;try{return m(C,t,r?e:V&&C[t]||e)}catch(t){}}for(n in D)!(i=u[n])||i[t]&&!r||m(i,t,e)}},getTypedArrayConstructor:j,isView:function(t){if(!h(t))return!1;var e=f(t);return"DataView"===e||l(D,e)||l(L,e)},isTypedArray:N,TypedArray:C,TypedArrayPrototype:T}},9617:(t,e,r)=>{"use strict";var n=r(5397),i=r(5610),s=r(6198),o=function(t){return function(e,r,o){var a=n(e),u=s(a);if(0===u)return!t&&-1;var c,h=i(o,u);if(t&&r!=r){for(;u>h;)if((c=a[h++])!=c)return!0}else for(;u>h;h++)if((t||h in a)&&a[h]===r)return t||h||0;return!t&&-1}};t.exports={includes:o(!0),indexOf:o(!1)}},9213:(t,e,r)=>{"use strict";var n=r(6080),i=r(9504),s=r(7055),o=r(8981),a=r(6198),u=r(1469),c=i([].push),h=function(t){var e=1===t,r=2===t,i=3===t,h=4===t,l=6===t,f=7===t,d=5===t||l;return function(p,m,g,v){for(var y,b,x=o(p),w=s(x),_=a(w),I=n(m,g),A=0,O=v||u,S=e?O(p,_):r||f?O(p,0):void 0;_>A;A++)if((d||A in w)&&(b=I(y=w[A],A,x),t))if(e)S[A]=b;else if(b)switch(t){case 3:return!0;case 5:return y;case 6:return A;case 2:c(S,y)}else switch(t){case 4:return!1;case 7:c(S,y)}return l?-1:i||h?h:S}};t.exports={forEach:h(0),map:h(1),filter:h(2),some:h(3),every:h(4),find:h(5),findIndex:h(6),filterReject:h(7)}},7680:(t,e,r)=>{"use strict";var n=r(9504);t.exports=n([].slice)},7433:(t,e,r)=>{"use strict";var n=r(4376),i=r(3517),s=r(34),o=r(8227)("species"),a=Array;t.exports=function(t){var e;return n(t)&&(e=t.constructor,(i(e)&&(e===a||n(e.prototype))||s(e)&&null===(e=e[o]))&&(e=void 0)),void 0===e?a:e}},1469:(t,e,r)=>{"use strict";var n=r(7433);t.exports=function(t,e){return new(n(t))(0===e?0:e)}},1946:(t,e,r)=>{"use strict";var n=r(9504),i=r(9306),s=r(4117),o=r(6198),a=r(8981),u=r(2248),c=r(6223),h=u.Map,l=u.has,f=u.set,d=n([].push);t.exports=function(t){var e,r,n,u=a(this),p=o(u),m=[],g=new h,v=s(t)?function(t){return t}:i(t);for(e=0;e{"use strict";var n=r(8227)("iterator"),i=!1;try{var s=0,o={next:function(){return{done:!!s++}},return:function(){i=!0}};o[n]=function(){return this},Array.from(o,(function(){throw 2}))}catch(t){}t.exports=function(t,e){try{if(!e&&!i)return!1}catch(t){return!1}var r=!1;try{var s={};s[n]=function(){return{next:function(){return{done:r=!0}}}},t(s)}catch(t){}return r}},4576:(t,e,r)=>{"use strict";var n=r(9504),i=n({}.toString),s=n("".slice);t.exports=function(t){return s(i(t),8,-1)}},6955:(t,e,r)=>{"use strict";var n=r(2140),i=r(4901),s=r(4576),o=r(8227)("toStringTag"),a=Object,u="Arguments"===s(function(){return arguments}());t.exports=n?s:function(t){var e,r,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=a(t),o))?r:u?s(e):"Object"===(n=s(e))&&i(e.callee)?"Arguments":n}},933:(t,e,r)=>{"use strict";var n=r(6080),i=r(8551),s=r(8981),o=r(2652);t.exports=function(t,e,r){return function(a){var u=s(a),c=arguments.length,h=c>1?arguments[1]:void 0,l=void 0!==h,f=l?n(h,c>2?arguments[2]:void 0):void 0,d=new t,p=0;return o(u,(function(t){var n=l?f(t,p++):t;r?e(d,i(n)[0],n[1]):e(d,n)})),d}}},7500:(t,e,r)=>{"use strict";var n=r(8551);t.exports=function(t,e,r){return function(){for(var i=new t,s=arguments.length,o=0;o{"use strict";var n=r(2360),i=r(2106),s=r(6279),o=r(6080),a=r(679),u=r(4117),c=r(2652),h=r(1088),l=r(2529),f=r(7633),d=r(3724),p=r(3451).fastKey,m=r(1181),g=m.set,v=m.getterFor;t.exports={getConstructor:function(t,e,r,h){var l=t((function(t,i){a(t,f),g(t,{type:e,index:n(null),first:void 0,last:void 0,size:0}),d||(t.size=0),u(i)||c(i,t[h],{that:t,AS_ENTRIES:r})})),f=l.prototype,m=v(e),y=function(t,e,r){var n,i,s=m(t),o=b(t,e);return o?o.value=r:(s.last=o={index:i=p(e,!0),key:e,value:r,previous:n=s.last,next:void 0,removed:!1},s.first||(s.first=o),n&&(n.next=o),d?s.size++:t.size++,"F"!==i&&(s.index[i]=o)),t},b=function(t,e){var r,n=m(t),i=p(e);if("F"!==i)return n.index[i];for(r=n.first;r;r=r.next)if(r.key===e)return r};return s(f,{clear:function(){for(var t=m(this),e=t.first;e;)e.removed=!0,e.previous&&(e.previous=e.previous.next=void 0),e=e.next;t.first=t.last=void 0,t.index=n(null),d?t.size=0:this.size=0},delete:function(t){var e=this,r=m(e),n=b(e,t);if(n){var i=n.next,s=n.previous;delete r.index[n.index],n.removed=!0,s&&(s.next=i),i&&(i.previous=s),r.first===n&&(r.first=i),r.last===n&&(r.last=s),d?r.size--:e.size--}return!!n},forEach:function(t){for(var e,r=m(this),n=o(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:r.first;)for(n(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!b(this,t)}}),s(f,r?{get:function(t){var e=b(this,t);return e&&e.value},set:function(t,e){return y(this,0===t?0:t,e)}}:{add:function(t){return y(this,t=0===t?0:t,t)}}),d&&i(f,"size",{configurable:!0,get:function(){return m(this).size}}),l},setStrong:function(t,e,r){var n=e+" Iterator",i=v(e),s=v(n);h(t,e,(function(t,e){g(this,{type:n,target:t,state:i(t),kind:e,last:void 0})}),(function(){for(var t=s(this),e=t.kind,r=t.last;r&&r.removed;)r=r.previous;return t.target&&(t.last=r=r?r.next:t.state.first)?l("keys"===e?r.key:"values"===e?r.value:[r.key,r.value],!1):(t.target=void 0,l(void 0,!0))}),r?"entries":"values",!r,!0),f(e)}}},4006:(t,e,r)=>{"use strict";var n=r(9504),i=r(6279),s=r(3451).getWeakData,o=r(679),a=r(8551),u=r(4117),c=r(34),h=r(2652),l=r(9213),f=r(9297),d=r(1181),p=d.set,m=d.getterFor,g=l.find,v=l.findIndex,y=n([].splice),b=0,x=function(t){return t.frozen||(t.frozen=new w)},w=function(){this.entries=[]},_=function(t,e){return g(t.entries,(function(t){return t[0]===e}))};w.prototype={get:function(t){var e=_(this,t);if(e)return e[1]},has:function(t){return!!_(this,t)},set:function(t,e){var r=_(this,t);r?r[1]=e:this.entries.push([t,e])},delete:function(t){var e=v(this.entries,(function(e){return e[0]===t}));return~e&&y(this.entries,e,1),!!~e}},t.exports={getConstructor:function(t,e,r,n){var l=t((function(t,i){o(t,d),p(t,{type:e,id:b++,frozen:void 0}),u(i)||h(i,t[n],{that:t,AS_ENTRIES:r})})),d=l.prototype,g=m(e),v=function(t,e,r){var n=g(t),i=s(a(e),!0);return!0===i?x(n).set(e,r):i[n.id]=r,t};return i(d,{delete:function(t){var e=g(this);if(!c(t))return!1;var r=s(t);return!0===r?x(e).delete(t):r&&f(r,e.id)&&delete r[e.id]},has:function(t){var e=g(this);if(!c(t))return!1;var r=s(t);return!0===r?x(e).has(t):r&&f(r,e.id)}}),i(d,r?{get:function(t){var e=g(this);if(c(t)){var r=s(t);return!0===r?x(e).get(t):r?r[e.id]:void 0}},set:function(t,e){return v(this,t,e)}}:{add:function(t){return v(this,t,!0)}}),l}}},6468:(t,e,r)=>{"use strict";var n=r(6518),i=r(4475),s=r(9504),o=r(2796),a=r(6840),u=r(3451),c=r(2652),h=r(679),l=r(4901),f=r(4117),d=r(34),p=r(9039),m=r(4428),g=r(687),v=r(3167);t.exports=function(t,e,r){var y=-1!==t.indexOf("Map"),b=-1!==t.indexOf("Weak"),x=y?"set":"add",w=i[t],_=w&&w.prototype,I=w,A={},O=function(t){var e=s(_[t]);a(_,t,"add"===t?function(t){return e(this,0===t?0:t),this}:"delete"===t?function(t){return!(b&&!d(t))&&e(this,0===t?0:t)}:"get"===t?function(t){return b&&!d(t)?void 0:e(this,0===t?0:t)}:"has"===t?function(t){return!(b&&!d(t))&&e(this,0===t?0:t)}:function(t,r){return e(this,0===t?0:t,r),this})};if(o(t,!l(w)||!(b||_.forEach&&!p((function(){(new w).entries().next()})))))I=r.getConstructor(e,t,y,x),u.enable();else if(o(t,!0)){var S=new I,P=S[x](b?{}:-0,1)!==S,k=p((function(){S.has(1)})),C=m((function(t){new w(t)})),T=!b&&p((function(){for(var t=new w,e=5;e--;)t[x](e,e);return!t.has(-0)}));C||((I=e((function(t,e){h(t,_);var r=v(new w,t,I);return f(e)||c(e,r[x],{that:r,AS_ENTRIES:y}),r}))).prototype=_,_.constructor=I),(k||T)&&(O("delete"),O("has"),y&&O("get")),(T||P)&&O(x),b&&_.clear&&delete _.clear}return A[t]=I,n({global:!0,constructor:!0,forced:I!==w},A),g(I,t),b||r.setStrong(I,t,y),I}},9323:(t,e,r)=>{"use strict";r(6033),r(3772);var n=r(7751),i=r(2360),s=r(34),o=Object,a=TypeError,u=n("Map"),c=n("WeakMap"),h=function(){this.object=null,this.symbol=null,this.primitives=null,this.objectsByIndex=i(null)};h.prototype.get=function(t,e){return this[t]||(this[t]=e())},h.prototype.next=function(t,e,r){var n=r?this.objectsByIndex[t]||(this.objectsByIndex[t]=new c):this.primitives||(this.primitives=new u),i=n.get(e);return i||n.set(e,i=new h),i};var l=new h;t.exports=function(){var t,e,r=l,n=arguments.length;for(t=0;t{"use strict";var n=r(9297),i=r(5031),s=r(7347),o=r(4913);t.exports=function(t,e,r){for(var a=i(e),u=o.f,c=s.f,h=0;h{"use strict";var n=r(9039);t.exports=!n((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},2529:t=>{"use strict";t.exports=function(t,e){return{value:t,done:e}}},6699:(t,e,r)=>{"use strict";var n=r(3724),i=r(4913),s=r(6980);t.exports=n?function(t,e,r){return i.f(t,e,s(1,r))}:function(t,e,r){return t[e]=r,t}},6980:t=>{"use strict";t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},2106:(t,e,r)=>{"use strict";var n=r(283),i=r(4913);t.exports=function(t,e,r){return r.get&&n(r.get,e,{getter:!0}),r.set&&n(r.set,e,{setter:!0}),i.f(t,e,r)}},6840:(t,e,r)=>{"use strict";var n=r(4901),i=r(4913),s=r(283),o=r(9433);t.exports=function(t,e,r,a){a||(a={});var u=a.enumerable,c=void 0!==a.name?a.name:e;if(n(r)&&s(r,c,a),a.global)u?t[e]=r:o(e,r);else{try{a.unsafe?t[e]&&(u=!0):delete t[e]}catch(t){}u?t[e]=r:i.f(t,e,{value:r,enumerable:!1,configurable:!a.nonConfigurable,writable:!a.nonWritable})}return t}},6279:(t,e,r)=>{"use strict";var n=r(6840);t.exports=function(t,e,r){for(var i in e)n(t,i,e[i],r);return t}},9433:(t,e,r)=>{"use strict";var n=r(4475),i=Object.defineProperty;t.exports=function(t,e){try{i(n,t,{value:e,configurable:!0,writable:!0})}catch(r){n[t]=e}return e}},3724:(t,e,r)=>{"use strict";var n=r(9039);t.exports=!n((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},4055:(t,e,r)=>{"use strict";var n=r(4475),i=r(34),s=n.document,o=i(s)&&i(s.createElement);t.exports=function(t){return o?s.createElement(t):{}}},6763:t=>{"use strict";t.exports="function"==typeof Bun&&Bun&&"string"==typeof Bun.version},8119:(t,e,r)=>{"use strict";var n=r(9392);t.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},9088:(t,e,r)=>{"use strict";var n=r(4475),i=r(4576);t.exports="process"===i(n.process)},9392:t=>{"use strict";t.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},7388:(t,e,r)=>{"use strict";var n,i,s=r(4475),o=r(9392),a=s.process,u=s.Deno,c=a&&a.versions||u&&u.version,h=c&&c.v8;h&&(i=(n=h.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!i&&o&&(!(n=o.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=o.match(/Chrome\/(\d+)/))&&(i=+n[1]),t.exports=i},8727:t=>{"use strict";t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},6518:(t,e,r)=>{"use strict";var n=r(4475),i=r(7347).f,s=r(6699),o=r(6840),a=r(9433),u=r(7740),c=r(2796);t.exports=function(t,e){var r,h,l,f,d,p=t.target,m=t.global,g=t.stat;if(r=m?n:g?n[p]||a(p,{}):n[p]&&n[p].prototype)for(h in e){if(f=e[h],l=t.dontCallGetSet?(d=i(r,h))&&d.value:r[h],!c(m?h:p+(g?".":"#")+h,t.forced)&&void 0!==l){if(typeof f==typeof l)continue;u(f,l)}(t.sham||l&&l.sham)&&s(f,"sham",!0),o(r,h,f,t)}}},9039:t=>{"use strict";t.exports=function(t){try{return!!t()}catch(t){return!0}}},2744:(t,e,r)=>{"use strict";var n=r(9039);t.exports=!n((function(){return Object.isExtensible(Object.preventExtensions({}))}))},8745:(t,e,r)=>{"use strict";var n=r(616),i=Function.prototype,s=i.apply,o=i.call;t.exports="object"==typeof Reflect&&Reflect.apply||(n?o.bind(s):function(){return o.apply(s,arguments)})},6080:(t,e,r)=>{"use strict";var n=r(7476),i=r(9306),s=r(616),o=n(n.bind);t.exports=function(t,e){return i(t),void 0===e?t:s?o(t,e):function(){return t.apply(e,arguments)}}},616:(t,e,r)=>{"use strict";var n=r(9039);t.exports=!n((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))},9565:(t,e,r)=>{"use strict";var n=r(616),i=Function.prototype.call;t.exports=n?i.bind(i):function(){return i.apply(i,arguments)}},350:(t,e,r)=>{"use strict";var n=r(3724),i=r(9297),s=Function.prototype,o=n&&Object.getOwnPropertyDescriptor,a=i(s,"name"),u=a&&"something"===function(){}.name,c=a&&(!n||n&&o(s,"name").configurable);t.exports={EXISTS:a,PROPER:u,CONFIGURABLE:c}},6706:(t,e,r)=>{"use strict";var n=r(9504),i=r(9306);t.exports=function(t,e,r){try{return n(i(Object.getOwnPropertyDescriptor(t,e)[r]))}catch(t){}}},7476:(t,e,r)=>{"use strict";var n=r(4576),i=r(9504);t.exports=function(t){if("Function"===n(t))return i(t)}},9504:(t,e,r)=>{"use strict";var n=r(616),i=Function.prototype,s=i.call,o=n&&i.bind.bind(s,s);t.exports=n?o:function(t){return function(){return s.apply(t,arguments)}}},7751:(t,e,r)=>{"use strict";var n=r(4475),i=r(4901);t.exports=function(t,e){return arguments.length<2?(r=n[t],i(r)?r:void 0):n[t]&&n[t][e];var r}},1767:t=>{"use strict";t.exports=function(t){return{iterator:t,next:t.next,done:!1}}},851:(t,e,r)=>{"use strict";var n=r(6955),i=r(5966),s=r(4117),o=r(6269),a=r(8227)("iterator");t.exports=function(t){if(!s(t))return i(t,a)||i(t,"@@iterator")||o[n(t)]}},81:(t,e,r)=>{"use strict";var n=r(9565),i=r(9306),s=r(8551),o=r(6823),a=r(851),u=TypeError;t.exports=function(t,e){var r=arguments.length<2?a(t):e;if(i(r))return s(n(r,t));throw new u(o(t)+" is not iterable")}},5966:(t,e,r)=>{"use strict";var n=r(9306),i=r(4117);t.exports=function(t,e){var r=t[e];return i(r)?void 0:n(r)}},3789:(t,e,r)=>{"use strict";var n=r(9306),i=r(8551),s=r(9565),o=r(1291),a=r(1767),u="Invalid size",c=RangeError,h=TypeError,l=Math.max,f=function(t,e){this.set=t,this.size=l(e,0),this.has=n(t.has),this.keys=n(t.keys)};f.prototype={getIterator:function(){return a(i(s(this.keys,this.set)))},includes:function(t){return s(this.has,this.set,t)}},t.exports=function(t){i(t);var e=+t.size;if(e!=e)throw new h(u);var r=o(e);if(r<0)throw new c(u);return new f(t,r)}},4475:function(t,e,r){"use strict";var n=function(t){return t&&t.Math===Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof r.g&&r.g)||n("object"==typeof this&&this)||function(){return this}()||Function("return this")()},9297:(t,e,r)=>{"use strict";var n=r(9504),i=r(8981),s=n({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return s(i(t),e)}},421:t=>{"use strict";t.exports={}},3138:t=>{"use strict";t.exports=function(t,e){try{1===arguments.length?console.error(t):console.error(t,e)}catch(t){}}},397:(t,e,r)=>{"use strict";var n=r(7751);t.exports=n("document","documentElement")},5917:(t,e,r)=>{"use strict";var n=r(3724),i=r(9039),s=r(4055);t.exports=!n&&!i((function(){return 7!==Object.defineProperty(s("div"),"a",{get:function(){return 7}}).a}))},7055:(t,e,r)=>{"use strict";var n=r(9504),i=r(9039),s=r(4576),o=Object,a=n("".split);t.exports=i((function(){return!o("z").propertyIsEnumerable(0)}))?function(t){return"String"===s(t)?a(t,""):o(t)}:o},3167:(t,e,r)=>{"use strict";var n=r(4901),i=r(34),s=r(2967);t.exports=function(t,e,r){var o,a;return s&&n(o=e.constructor)&&o!==r&&i(a=o.prototype)&&a!==r.prototype&&s(t,a),t}},3706:(t,e,r)=>{"use strict";var n=r(9504),i=r(4901),s=r(7629),o=n(Function.toString);i(s.inspectSource)||(s.inspectSource=function(t){return o(t)}),t.exports=s.inspectSource},3451:(t,e,r)=>{"use strict";var n=r(6518),i=r(9504),s=r(421),o=r(34),a=r(9297),u=r(4913).f,c=r(8480),h=r(298),l=r(4124),f=r(3392),d=r(2744),p=!1,m=f("meta"),g=0,v=function(t){u(t,m,{value:{objectID:"O"+g++,weakData:{}}})},y=t.exports={enable:function(){y.enable=function(){},p=!0;var t=c.f,e=i([].splice),r={};r[m]=1,t(r).length&&(c.f=function(r){for(var n=t(r),i=0,s=n.length;i{"use strict";var n,i,s,o=r(8622),a=r(4475),u=r(34),c=r(6699),h=r(9297),l=r(7629),f=r(6119),d=r(421),p="Object already initialized",m=a.TypeError,g=a.WeakMap;if(o||l.state){var v=l.state||(l.state=new g);v.get=v.get,v.has=v.has,v.set=v.set,n=function(t,e){if(v.has(t))throw new m(p);return e.facade=t,v.set(t,e),e},i=function(t){return v.get(t)||{}},s=function(t){return v.has(t)}}else{var y=f("state");d[y]=!0,n=function(t,e){if(h(t,y))throw new m(p);return e.facade=t,c(t,y,e),e},i=function(t){return h(t,y)?t[y]:{}},s=function(t){return h(t,y)}}t.exports={set:n,get:i,has:s,enforce:function(t){return s(t)?i(t):n(t,{})},getterFor:function(t){return function(e){var r;if(!u(e)||(r=i(e)).type!==t)throw new m("Incompatible receiver, "+t+" required");return r}}}},4209:(t,e,r)=>{"use strict";var n=r(8227),i=r(6269),s=n("iterator"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(i.Array===t||o[s]===t)}},4376:(t,e,r)=>{"use strict";var n=r(4576);t.exports=Array.isArray||function(t){return"Array"===n(t)}},4901:t=>{"use strict";var e="object"==typeof document&&document.all;t.exports=void 0===e&&void 0!==e?function(t){return"function"==typeof t||t===e}:function(t){return"function"==typeof t}},3517:(t,e,r)=>{"use strict";var n=r(9504),i=r(9039),s=r(4901),o=r(6955),a=r(7751),u=r(3706),c=function(){},h=a("Reflect","construct"),l=/^\s*(?:class|function)\b/,f=n(l.exec),d=!l.test(c),p=function(t){if(!s(t))return!1;try{return h(c,[],t),!0}catch(t){return!1}},m=function(t){if(!s(t))return!1;switch(o(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return d||!!f(l,u(t))}catch(t){return!0}};m.sham=!0,t.exports=!h||i((function(){var t;return p(p.call)||!p(Object)||!p((function(){t=!0}))||t}))?m:p},2796:(t,e,r)=>{"use strict";var n=r(9039),i=r(4901),s=/#|\.prototype\./,o=function(t,e){var r=u[a(t)];return r===h||r!==c&&(i(e)?n(e):!!e)},a=o.normalize=function(t){return String(t).replace(s,".").toLowerCase()},u=o.data={},c=o.NATIVE="N",h=o.POLYFILL="P";t.exports=o},1563:(t,e,r)=>{"use strict";var n=r(6955),i=r(9297),s=r(4117),o=r(8227),a=r(6269),u=o("iterator"),c=Object;t.exports=function(t){if(s(t))return!1;var e=c(t);return void 0!==e[u]||"@@iterator"in e||i(a,n(e))}},4117:t=>{"use strict";t.exports=function(t){return null==t}},34:(t,e,r)=>{"use strict";var n=r(4901);t.exports=function(t){return"object"==typeof t?null!==t:n(t)}},3925:(t,e,r)=>{"use strict";var n=r(34);t.exports=function(t){return n(t)||null===t}},6395:t=>{"use strict";t.exports=!1},757:(t,e,r)=>{"use strict";var n=r(7751),i=r(4901),s=r(1625),o=r(7040),a=Object;t.exports=o?function(t){return"symbol"==typeof t}:function(t){var e=n("Symbol");return i(e)&&s(e.prototype,a(t))}},507:(t,e,r)=>{"use strict";var n=r(9565);t.exports=function(t,e,r){for(var i,s,o=r?t:t.iterator,a=t.next;!(i=n(a,o)).done;)if(void 0!==(s=e(i.value)))return s}},2652:(t,e,r)=>{"use strict";var n=r(6080),i=r(9565),s=r(8551),o=r(6823),a=r(4209),u=r(6198),c=r(1625),h=r(81),l=r(851),f=r(9539),d=TypeError,p=function(t,e){this.stopped=t,this.result=e},m=p.prototype;t.exports=function(t,e,r){var g,v,y,b,x,w,_,I=r&&r.that,A=!(!r||!r.AS_ENTRIES),O=!(!r||!r.IS_RECORD),S=!(!r||!r.IS_ITERATOR),P=!(!r||!r.INTERRUPTED),k=n(e,I),C=function(t){return g&&f(g,"normal",t),new p(!0,t)},T=function(t){return A?(s(t),P?k(t[0],t[1],C):k(t[0],t[1])):P?k(t,C):k(t)};if(O)g=t.iterator;else if(S)g=t;else{if(!(v=l(t)))throw new d(o(t)+" is not iterable");if(a(v)){for(y=0,b=u(t);b>y;y++)if((x=T(t[y]))&&c(m,x))return x;return new p(!1)}g=h(t,v)}for(w=O?t.next:g.next;!(_=i(w,g)).done;){try{x=T(_.value)}catch(t){f(g,"throw",t)}if("object"==typeof x&&x&&c(m,x))return x}return new p(!1)}},9539:(t,e,r)=>{"use strict";var n=r(9565),i=r(8551),s=r(5966);t.exports=function(t,e,r){var o,a;i(t);try{if(!(o=s(t,"return"))){if("throw"===e)throw r;return r}o=n(o,t)}catch(t){a=!0,o=t}if("throw"===e)throw r;if(a)throw o;return i(o),r}},3994:(t,e,r)=>{"use strict";var n=r(7657).IteratorPrototype,i=r(2360),s=r(6980),o=r(687),a=r(6269),u=function(){return this};t.exports=function(t,e,r,c){var h=e+" Iterator";return t.prototype=i(n,{next:s(+!c,r)}),o(t,h,!1,!0),a[h]=u,t}},1088:(t,e,r)=>{"use strict";var n=r(6518),i=r(9565),s=r(6395),o=r(350),a=r(4901),u=r(3994),c=r(2787),h=r(2967),l=r(687),f=r(6699),d=r(6840),p=r(8227),m=r(6269),g=r(7657),v=o.PROPER,y=o.CONFIGURABLE,b=g.IteratorPrototype,x=g.BUGGY_SAFARI_ITERATORS,w=p("iterator"),_="keys",I="values",A="entries",O=function(){return this};t.exports=function(t,e,r,o,p,g,S){u(r,e,o);var P,k,C,T=function(t){if(t===p&&z)return z;if(!x&&t&&t in F)return F[t];switch(t){case _:case I:case A:return function(){return new r(this,t)}}return function(){return new r(this)}},M=e+" Iterator",E=!1,F=t.prototype,R=F[w]||F["@@iterator"]||p&&F[p],z=!x&&R||T(p),V="Array"===e&&F.entries||R;if(V&&(P=c(V.call(new t)))!==Object.prototype&&P.next&&(s||c(P)===b||(h?h(P,b):a(P[w])||d(P,w,O)),l(P,M,!0,!0),s&&(m[M]=O)),v&&p===I&&R&&R.name!==I&&(!s&&y?f(F,"name",I):(E=!0,z=function(){return i(R,this)})),p)if(k={values:T(I),keys:g?z:T(_),entries:T(A)},S)for(C in k)(x||E||!(C in F))&&d(F,C,k[C]);else n({target:e,proto:!0,forced:x||E},k);return s&&!S||F[w]===z||d(F,w,z,{name:p}),m[e]=z,k}},7657:(t,e,r)=>{"use strict";var n,i,s,o=r(9039),a=r(4901),u=r(34),c=r(2360),h=r(2787),l=r(6840),f=r(8227),d=r(6395),p=f("iterator"),m=!1;[].keys&&("next"in(s=[].keys())?(i=h(h(s)))!==Object.prototype&&(n=i):m=!0),!u(n)||o((function(){var t={};return n[p].call(t)!==t}))?n={}:d&&(n=c(n)),a(n[p])||l(n,p,(function(){return this})),t.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:m}},6269:t=>{"use strict";t.exports={}},6198:(t,e,r)=>{"use strict";var n=r(8014);t.exports=function(t){return n(t.length)}},283:(t,e,r)=>{"use strict";var n=r(9504),i=r(9039),s=r(4901),o=r(9297),a=r(3724),u=r(350).CONFIGURABLE,c=r(3706),h=r(1181),l=h.enforce,f=h.get,d=String,p=Object.defineProperty,m=n("".slice),g=n("".replace),v=n([].join),y=a&&!i((function(){return 8!==p((function(){}),"length",{value:8}).length})),b=String(String).split("String"),x=t.exports=function(t,e,r){"Symbol("===m(d(e),0,7)&&(e="["+g(d(e),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),r&&r.getter&&(e="get "+e),r&&r.setter&&(e="set "+e),(!o(t,"name")||u&&t.name!==e)&&(a?p(t,"name",{value:e,configurable:!0}):t.name=e),y&&r&&o(r,"arity")&&t.length!==r.arity&&p(t,"length",{value:r.arity});try{r&&o(r,"constructor")&&r.constructor?a&&p(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var n=l(t);return o(n,"source")||(n.source=v(b,"string"==typeof e?e:"")),t};Function.prototype.toString=x((function(){return s(this)&&f(this).source||c(this)}),"toString")},2248:(t,e,r)=>{"use strict";var n=r(9504),i=Map.prototype;t.exports={Map,set:n(i.set),get:n(i.get),has:n(i.has),remove:n(i.delete),proto:i}},6223:(t,e,r)=>{"use strict";var n=r(9504),i=r(507),s=r(2248),o=s.Map,a=s.proto,u=n(a.forEach),c=n(a.entries),h=c(new o).next;t.exports=function(t,e,r){return r?i({iterator:c(t),next:h},(function(t){return e(t[1],t[0])})):u(t,e)}},3164:(t,e,r)=>{"use strict";var n=r(7782),i=Math.abs,s=2220446049250313e-31,o=1/s;t.exports=function(t,e,r,a){var u=+t,c=i(u),h=n(u);if(cr||f!=f?h*(1/0):h*f}},5617:(t,e,r)=>{"use strict";var n=r(3164);t.exports=Math.fround||function(t){return n(t,1.1920928955078125e-7,34028234663852886e22,11754943508222875e-54)}},7905:t=>{"use strict";t.exports=Math.scale||function(t,e,r,n,i){var s=+t,o=+e,a=+r,u=+n,c=+i;return s!=s||o!=o||a!=a||u!=u||c!=c?NaN:s===1/0||s===-1/0?s:(s-o)*(c-u)/(a-o)+u}},7782:t=>{"use strict";t.exports=Math.sign||function(t){var e=+t;return 0===e||e!=e?e:e<0?-1:1}},741:t=>{"use strict";var e=Math.ceil,r=Math.floor;t.exports=Math.trunc||function(t){var n=+t;return(n>0?r:e)(n)}},6043:(t,e,r)=>{"use strict";var n=r(9306),i=TypeError,s=function(t){var e,r;this.promise=new t((function(t,n){if(void 0!==e||void 0!==r)throw new i("Bad Promise constructor");e=t,r=n})),this.resolve=n(e),this.reject=n(r)};t.exports.f=function(t){return new s(t)}},360:(t,e,r)=>{"use strict";var n=r(4475).isFinite;t.exports=Number.isFinite||function(t){return"number"==typeof t&&n(t)}},2360:(t,e,r)=>{"use strict";var n,i=r(8551),s=r(6801),o=r(8727),a=r(421),u=r(397),c=r(4055),h=r(6119),l="prototype",f="script",d=h("IE_PROTO"),p=function(){},m=function(t){return"<"+f+">"+t+""},g=function(t){t.write(m("")),t.close();var e=t.parentWindow.Object;return t=null,e},v=function(){try{n=new ActiveXObject("htmlfile")}catch(t){}var t,e,r;v="undefined"!=typeof document?document.domain&&n?g(n):(e=c("iframe"),r="java"+f+":",e.style.display="none",u.appendChild(e),e.src=String(r),(t=e.contentWindow.document).open(),t.write(m("document.F=Object")),t.close(),t.F):g(n);for(var i=o.length;i--;)delete v[l][o[i]];return v()};a[d]=!0,t.exports=Object.create||function(t,e){var r;return null!==t?(p[l]=i(t),r=new p,p[l]=null,r[d]=t):r=v(),void 0===e?r:s.f(r,e)}},6801:(t,e,r)=>{"use strict";var n=r(3724),i=r(8686),s=r(4913),o=r(8551),a=r(5397),u=r(1072);e.f=n&&!i?Object.defineProperties:function(t,e){o(t);for(var r,n=a(e),i=u(e),c=i.length,h=0;c>h;)s.f(t,r=i[h++],n[r]);return t}},4913:(t,e,r)=>{"use strict";var n=r(3724),i=r(5917),s=r(8686),o=r(8551),a=r(6969),u=TypeError,c=Object.defineProperty,h=Object.getOwnPropertyDescriptor,l="enumerable",f="configurable",d="writable";e.f=n?s?function(t,e,r){if(o(t),e=a(e),o(r),"function"==typeof t&&"prototype"===e&&"value"in r&&d in r&&!r[d]){var n=h(t,e);n&&n[d]&&(t[e]=r.value,r={configurable:f in r?r[f]:n[f],enumerable:l in r?r[l]:n[l],writable:!1})}return c(t,e,r)}:c:function(t,e,r){if(o(t),e=a(e),o(r),i)try{return c(t,e,r)}catch(t){}if("get"in r||"set"in r)throw new u("Accessors not supported");return"value"in r&&(t[e]=r.value),t}},7347:(t,e,r)=>{"use strict";var n=r(3724),i=r(9565),s=r(8773),o=r(6980),a=r(5397),u=r(6969),c=r(9297),h=r(5917),l=Object.getOwnPropertyDescriptor;e.f=n?l:function(t,e){if(t=a(t),e=u(e),h)try{return l(t,e)}catch(t){}if(c(t,e))return o(!i(s.f,t,e),t[e])}},298:(t,e,r)=>{"use strict";var n=r(4576),i=r(5397),s=r(8480).f,o=r(7680),a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"Window"===n(t)?function(t){try{return s(t)}catch(t){return o(a)}}(t):s(i(t))}},8480:(t,e,r)=>{"use strict";var n=r(1828),i=r(8727).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return n(t,i)}},3717:(t,e)=>{"use strict";e.f=Object.getOwnPropertySymbols},2787:(t,e,r)=>{"use strict";var n=r(9297),i=r(4901),s=r(8981),o=r(6119),a=r(2211),u=o("IE_PROTO"),c=Object,h=c.prototype;t.exports=a?c.getPrototypeOf:function(t){var e=s(t);if(n(e,u))return e[u];var r=e.constructor;return i(r)&&e instanceof r?r.prototype:e instanceof c?h:null}},4124:(t,e,r)=>{"use strict";var n=r(9039),i=r(34),s=r(4576),o=r(5652),a=Object.isExtensible,u=n((function(){a(1)}));t.exports=u||o?function(t){return!!i(t)&&(!o||"ArrayBuffer"!==s(t))&&(!a||a(t))}:a},1625:(t,e,r)=>{"use strict";var n=r(9504);t.exports=n({}.isPrototypeOf)},1828:(t,e,r)=>{"use strict";var n=r(9504),i=r(9297),s=r(5397),o=r(9617).indexOf,a=r(421),u=n([].push);t.exports=function(t,e){var r,n=s(t),c=0,h=[];for(r in n)!i(a,r)&&i(n,r)&&u(h,r);for(;e.length>c;)i(n,r=e[c++])&&(~o(h,r)||u(h,r));return h}},1072:(t,e,r)=>{"use strict";var n=r(1828),i=r(8727);t.exports=Object.keys||function(t){return n(t,i)}},8773:(t,e)=>{"use strict";var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,i=n&&!r.call({1:2},1);e.f=i?function(t){var e=n(this,t);return!!e&&e.enumerable}:r},2967:(t,e,r)=>{"use strict";var n=r(6706),i=r(34),s=r(7750),o=r(3506);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,r={};try{(t=n(Object.prototype,"__proto__","set"))(r,[]),e=r instanceof Array}catch(t){}return function(r,n){return s(r),o(n),i(r)?(e?t(r,n):r.__proto__=n,r):r}}():void 0)},4270:(t,e,r)=>{"use strict";var n=r(9565),i=r(4901),s=r(34),o=TypeError;t.exports=function(t,e){var r,a;if("string"===e&&i(r=t.toString)&&!s(a=n(r,t)))return a;if(i(r=t.valueOf)&&!s(a=n(r,t)))return a;if("string"!==e&&i(r=t.toString)&&!s(a=n(r,t)))return a;throw new o("Can't convert object to primitive value")}},5031:(t,e,r)=>{"use strict";var n=r(7751),i=r(9504),s=r(8480),o=r(3717),a=r(8551),u=i([].concat);t.exports=n("Reflect","ownKeys")||function(t){var e=s.f(a(t)),r=o.f;return r?u(e,r(t)):e}},9167:(t,e,r)=>{"use strict";var n=r(4475);t.exports=n},1103:t=>{"use strict";t.exports=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}}},8449:(t,e,r)=>{"use strict";r(6033),r(3772);var n=r(7751),i=r(9504),s=r(5745),o=n("Map"),a=n("WeakMap"),u=i([].push),c=s("metadata"),h=c.store||(c.store=new a),l=function(t,e,r){var n=h.get(t);if(!n){if(!r)return;h.set(t,n=new o)}var i=n.get(e);if(!i){if(!r)return;n.set(e,i=new o)}return i};t.exports={store:h,getMap:l,has:function(t,e,r){var n=l(e,r,!1);return void 0!==n&&n.has(t)},get:function(t,e,r){var n=l(e,r,!1);return void 0===n?void 0:n.get(t)},set:function(t,e,r,n){l(r,n,!0).set(t,e)},keys:function(t,e){var r=l(t,e,!1),n=[];return r&&r.forEach((function(t,e){u(n,e)})),n},toKey:function(t){return void 0===t||"symbol"==typeof t?t:String(t)}}},7979:(t,e,r)=>{"use strict";var n=r(8551);t.exports=function(){var t=n(this),e="";return t.hasIndices&&(e+="d"),t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.unicodeSets&&(e+="v"),t.sticky&&(e+="y"),e}},7750:(t,e,r)=>{"use strict";var n=r(4117),i=TypeError;t.exports=function(t){if(n(t))throw new i("Can't call method on "+t);return t}},3317:t=>{"use strict";t.exports=function(t,e){return t===e||t!=t&&e!=e}},9472:(t,e,r)=>{"use strict";var n,i=r(4475),s=r(8745),o=r(4901),a=r(6763),u=r(9392),c=r(7680),h=r(2812),l=i.Function,f=/MSIE .\./.test(u)||a&&((n=i.Bun.version.split(".")).length<3||"0"===n[0]&&(n[1]<3||"3"===n[1]&&"0"===n[2]));t.exports=function(t,e){var r=e?2:1;return f?function(n,i){var a=h(arguments.length,1)>r,u=o(n)?n:l(n),f=a?c(arguments,r):[],d=a?function(){s(u,this,f)}:u;return e?t(d,i):t(d)}:t}},9286:(t,e,r)=>{"use strict";var n=r(4402),i=r(8469),s=n.Set,o=n.add;t.exports=function(t){var e=new s;return i(t,(function(t){o(e,t)})),e}},3440:(t,e,r)=>{"use strict";var n=r(7080),i=r(4402),s=r(9286),o=r(5170),a=r(3789),u=r(8469),c=r(507),h=i.has,l=i.remove;t.exports=function(t){var e=n(this),r=a(t),i=s(e);return o(e)<=r.size?u(e,(function(t){r.includes(t)&&l(i,t)})):c(r.getIterator(),(function(t){h(e,t)&&l(i,t)})),i}},4402:(t,e,r)=>{"use strict";var n=r(9504),i=Set.prototype;t.exports={Set,add:n(i.add),has:n(i.has),remove:n(i.delete),proto:i}},8750:(t,e,r)=>{"use strict";var n=r(7080),i=r(4402),s=r(5170),o=r(3789),a=r(8469),u=r(507),c=i.Set,h=i.add,l=i.has;t.exports=function(t){var e=n(this),r=o(t),i=new c;return s(e)>r.size?u(r.getIterator(),(function(t){l(e,t)&&h(i,t)})):a(e,(function(t){r.includes(t)&&h(i,t)})),i}},4449:(t,e,r)=>{"use strict";var n=r(7080),i=r(4402).has,s=r(5170),o=r(3789),a=r(8469),u=r(507),c=r(9539);t.exports=function(t){var e=n(this),r=o(t);if(s(e)<=r.size)return!1!==a(e,(function(t){if(r.includes(t))return!1}),!0);var h=r.getIterator();return!1!==u(h,(function(t){if(i(e,t))return c(h,"normal",!1)}))}},3838:(t,e,r)=>{"use strict";var n=r(7080),i=r(5170),s=r(8469),o=r(3789);t.exports=function(t){var e=n(this),r=o(t);return!(i(e)>r.size)&&!1!==s(e,(function(t){if(!r.includes(t))return!1}),!0)}},8527:(t,e,r)=>{"use strict";var n=r(7080),i=r(4402).has,s=r(5170),o=r(3789),a=r(507),u=r(9539);t.exports=function(t){var e=n(this),r=o(t);if(s(e){"use strict";var n=r(9504),i=r(507),s=r(4402),o=s.Set,a=s.proto,u=n(a.forEach),c=n(a.keys),h=c(new o).next;t.exports=function(t,e,r){return r?i({iterator:c(t),next:h},e):u(t,e)}},5170:(t,e,r)=>{"use strict";var n=r(6706),i=r(4402);t.exports=n(i.proto,"size","get")||function(t){return t.size}},7633:(t,e,r)=>{"use strict";var n=r(7751),i=r(2106),s=r(8227),o=r(3724),a=s("species");t.exports=function(t){var e=n(t);o&&e&&!e[a]&&i(e,a,{configurable:!0,get:function(){return this}})}},3650:(t,e,r)=>{"use strict";var n=r(7080),i=r(4402),s=r(9286),o=r(3789),a=r(507),u=i.add,c=i.has,h=i.remove;t.exports=function(t){var e=n(this),r=o(t).getIterator(),i=s(e);return a(r,(function(t){c(e,t)?h(i,t):u(i,t)})),i}},687:(t,e,r)=>{"use strict";var n=r(4913).f,i=r(9297),s=r(8227)("toStringTag");t.exports=function(t,e,r){t&&!r&&(t=t.prototype),t&&!i(t,s)&&n(t,s,{configurable:!0,value:e})}},4204:(t,e,r)=>{"use strict";var n=r(7080),i=r(4402).add,s=r(9286),o=r(3789),a=r(507);t.exports=function(t){var e=n(this),r=o(t).getIterator(),u=s(e);return a(r,(function(t){i(u,t)})),u}},6119:(t,e,r)=>{"use strict";var n=r(5745),i=r(3392),s=n("keys");t.exports=function(t){return s[t]||(s[t]=i(t))}},7629:(t,e,r)=>{"use strict";var n=r(6395),i=r(4475),s=r(9433),o="__core-js_shared__",a=t.exports=i[o]||s(o,{});(a.versions||(a.versions=[])).push({version:"3.36.1",mode:n?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.36.1/LICENSE",source:"https://github.com/zloirock/core-js"})},5745:(t,e,r)=>{"use strict";var n=r(7629);t.exports=function(t,e){return n[t]||(n[t]=e||{})}},8183:(t,e,r)=>{"use strict";var n=r(9504),i=r(1291),s=r(655),o=r(7750),a=n("".charAt),u=n("".charCodeAt),c=n("".slice),h=function(t){return function(e,r){var n,h,l=s(o(e)),f=i(r),d=l.length;return f<0||f>=d?t?"":void 0:(n=u(l,f))<55296||n>56319||f+1===d||(h=u(l,f+1))<56320||h>57343?t?a(l,f):n:t?c(l,f,f+2):h-56320+(n-55296<<10)+65536}};t.exports={codeAt:h(!1),charAt:h(!0)}},4495:(t,e,r)=>{"use strict";var n=r(7388),i=r(9039),s=r(4475).String;t.exports=!!Object.getOwnPropertySymbols&&!i((function(){var t=Symbol("symbol detection");return!s(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},9225:(t,e,r)=>{"use strict";var n,i,s,o,a=r(4475),u=r(8745),c=r(6080),h=r(4901),l=r(9297),f=r(9039),d=r(397),p=r(7680),m=r(4055),g=r(2812),v=r(8119),y=r(9088),b=a.setImmediate,x=a.clearImmediate,w=a.process,_=a.Dispatch,I=a.Function,A=a.MessageChannel,O=a.String,S=0,P={},k="onreadystatechange";f((function(){n=a.location}));var C=function(t){if(l(P,t)){var e=P[t];delete P[t],e()}},T=function(t){return function(){C(t)}},M=function(t){C(t.data)},E=function(t){a.postMessage(O(t),n.protocol+"//"+n.host)};b&&x||(b=function(t){g(arguments.length,1);var e=h(t)?t:I(t),r=p(arguments,1);return P[++S]=function(){u(e,void 0,r)},i(S),S},x=function(t){delete P[t]},y?i=function(t){w.nextTick(T(t))}:_&&_.now?i=function(t){_.now(T(t))}:A&&!v?(o=(s=new A).port2,s.port1.onmessage=M,i=c(o.postMessage,o)):a.addEventListener&&h(a.postMessage)&&!a.importScripts&&n&&"file:"!==n.protocol&&!f(E)?(i=E,a.addEventListener("message",M,!1)):i=k in m("script")?function(t){d.appendChild(m("script"))[k]=function(){d.removeChild(this),C(t)}}:function(t){setTimeout(T(t),0)}),t.exports={set:b,clear:x}},5610:(t,e,r)=>{"use strict";var n=r(1291),i=Math.max,s=Math.min;t.exports=function(t,e){var r=n(t);return r<0?i(r+e,0):s(r,e)}},5397:(t,e,r)=>{"use strict";var n=r(7055),i=r(7750);t.exports=function(t){return n(i(t))}},1291:(t,e,r)=>{"use strict";var n=r(741);t.exports=function(t){var e=+t;return e!=e||0===e?0:n(e)}},8014:(t,e,r)=>{"use strict";var n=r(1291),i=Math.min;t.exports=function(t){var e=n(t);return e>0?i(e,9007199254740991):0}},8981:(t,e,r)=>{"use strict";var n=r(7750),i=Object;t.exports=function(t){return i(n(t))}},8229:(t,e,r)=>{"use strict";var n=r(9590),i=RangeError;t.exports=function(t,e){var r=n(t);if(r%e)throw new i("Wrong offset");return r}},9590:(t,e,r)=>{"use strict";var n=r(1291),i=RangeError;t.exports=function(t){var e=n(t);if(e<0)throw new i("The argument can't be less than 0");return e}},2777:(t,e,r)=>{"use strict";var n=r(9565),i=r(34),s=r(757),o=r(5966),a=r(4270),u=r(8227),c=TypeError,h=u("toPrimitive");t.exports=function(t,e){if(!i(t)||s(t))return t;var r,u=o(t,h);if(u){if(void 0===e&&(e="default"),r=n(u,t,e),!i(r)||s(r))return r;throw new c("Can't convert object to primitive value")}return void 0===e&&(e="number"),a(t,e)}},6969:(t,e,r)=>{"use strict";var n=r(2777),i=r(757);t.exports=function(t){var e=n(t,"string");return i(e)?e:e+""}},7650:(t,e,r)=>{"use strict";var n=r(7751),i=r(4901),s=r(1563),o=r(34),a=n("Set");t.exports=function(t){return function(t){return o(t)&&"number"==typeof t.size&&i(t.has)&&i(t.keys)}(t)?t:s(t)?new a(t):t}},2140:(t,e,r)=>{"use strict";var n={};n[r(8227)("toStringTag")]="z",t.exports="[object z]"===String(n)},655:(t,e,r)=>{"use strict";var n=r(6955),i=String;t.exports=function(t){if("Symbol"===n(t))throw new TypeError("Cannot convert a Symbol value to a string");return i(t)}},6823:t=>{"use strict";var e=String;t.exports=function(t){try{return e(t)}catch(t){return"Object"}}},3392:(t,e,r)=>{"use strict";var n=r(9504),i=0,s=Math.random(),o=n(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+o(++i+s,36)}},7040:(t,e,r)=>{"use strict";var n=r(4495);t.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},8686:(t,e,r)=>{"use strict";var n=r(3724),i=r(9039);t.exports=n&&i((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},2812:t=>{"use strict";var e=TypeError;t.exports=function(t,r){if(t{"use strict";var n=r(4475),i=r(4901),s=n.WeakMap;t.exports=i(s)&&/native code/.test(String(s))},4995:(t,e,r)=>{"use strict";var n=r(9504),i=WeakMap.prototype;t.exports={WeakMap,set:n(i.set),get:n(i.get),has:n(i.has),remove:n(i.delete)}},8205:(t,e,r)=>{"use strict";var n=r(9504),i=WeakSet.prototype;t.exports={WeakSet,add:n(i.add),has:n(i.has),remove:n(i.delete)}},511:(t,e,r)=>{"use strict";var n=r(9167),i=r(9297),s=r(1951),o=r(4913).f;t.exports=function(t){var e=n.Symbol||(n.Symbol={});i(e,t)||o(e,t,{value:s.f(t)})}},1951:(t,e,r)=>{"use strict";var n=r(8227);e.f=n},8227:(t,e,r)=>{"use strict";var n=r(4475),i=r(5745),s=r(9297),o=r(3392),a=r(4495),u=r(7040),c=n.Symbol,h=i("wks"),l=u?c.for||c:c&&c.withoutSetter||o;t.exports=function(t){return s(h,t)||(h[t]=a&&s(c,t)?c[t]:l("Symbol."+t)),h[t]}},4423:(t,e,r)=>{"use strict";var n=r(6518),i=r(9617).includes,s=r(9039),o=r(6469);n({target:"Array",proto:!0,forced:s((function(){return!Array(1).includes()}))},{includes:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),o("includes")},8523:(t,e,r)=>{"use strict";r(6468)("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),r(6938))},7072:(t,e,r)=>{"use strict";var n=r(6518),i=r(9504),s=r(9306),o=r(7750),a=r(2652),u=r(2248),c=r(6395),h=u.Map,l=u.has,f=u.get,d=u.set,p=i([].push);n({target:"Map",stat:!0,forced:c},{groupBy:function(t,e){o(t),s(e);var r=new h,n=0;return a(t,(function(t){var i=e(t,n++);l(r,i)?p(f(r,i),t):d(r,i,[t])})),r}})},6033:(t,e,r)=>{"use strict";r(8523)},9479:(t,e,r)=>{"use strict";var n=r(4475),i=r(3724),s=r(2106),o=r(7979),a=r(9039),u=n.RegExp,c=u.prototype;i&&a((function(){var t=!0;try{u(".","d")}catch(e){t=!1}var e={},r="",n=t?"dgimsy":"gimsy",i=function(t,n){Object.defineProperty(e,t,{get:function(){return r+=n,!0}})},s={dotAll:"s",global:"g",ignoreCase:"i",multiline:"m",sticky:"y"};for(var o in t&&(s.hasIndices="d"),s)i(o,s[o]);return Object.getOwnPropertyDescriptor(c,"flags").get.call(e)!==n||r!==n}))&&s(c,"flags",{configurable:!0,get:o})},8845:(t,e,r)=>{"use strict";var n=r(4475),i=r(9565),s=r(4644),o=r(6198),a=r(8229),u=r(8981),c=r(9039),h=n.RangeError,l=n.Int8Array,f=l&&l.prototype,d=f&&f.set,p=s.aTypedArray,m=s.exportTypedArrayMethod,g=!c((function(){var t=new Uint8ClampedArray(2);return i(d,t,{length:1,0:3},1),3!==t[1]})),v=g&&s.NATIVE_ARRAY_BUFFER_VIEWS&&c((function(){var t=new l(2);return t.set(1),t.set("2",1),0!==t[0]||2!==t[1]}));m("set",(function(t){p(this);var e=a(arguments.length>1?arguments[1]:void 0,1),r=u(t);if(g)return i(d,this,r,e);var n=this.length,s=o(r),c=0;if(s+e>n)throw new h("Wrong length");for(;c{"use strict";var n,i=r(2744),s=r(4475),o=r(9504),a=r(6279),u=r(3451),c=r(6468),h=r(4006),l=r(34),f=r(1181).enforce,d=r(9039),p=r(8622),m=Object,g=Array.isArray,v=m.isExtensible,y=m.isFrozen,b=m.isSealed,x=m.freeze,w=m.seal,_=!s.ActiveXObject&&"ActiveXObject"in s,I=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},A=c("WeakMap",I,h),O=A.prototype,S=o(O.set);if(p)if(_){n=h.getConstructor(I,"WeakMap",!0),u.enable();var P=o(O.delete),k=o(O.has),C=o(O.get);a(O,{delete:function(t){if(l(t)&&!v(t)){var e=f(this);return e.frozen||(e.frozen=new n),P(this,t)||e.frozen.delete(t)}return P(this,t)},has:function(t){if(l(t)&&!v(t)){var e=f(this);return e.frozen||(e.frozen=new n),k(this,t)||e.frozen.has(t)}return k(this,t)},get:function(t){if(l(t)&&!v(t)){var e=f(this);return e.frozen||(e.frozen=new n),k(this,t)?C(this,t):e.frozen.get(t)}return C(this,t)},set:function(t,e){if(l(t)&&!v(t)){var r=f(this);r.frozen||(r.frozen=new n),k(this,t)?S(this,t,e):r.frozen.set(t,e)}else S(this,t,e);return this}})}else i&&d((function(){var t=x([]);return S(new A,t,1),!y(t)}))&&a(O,{set:function(t,e){var r;return g(t)&&(y(t)?r=x:b(t)&&(r=w)),S(this,t,e),r&&r(t),this}})},3772:(t,e,r)=>{"use strict";r(5746)},7656:(t,e,r)=>{"use strict";var n=r(3724),i=r(6469),s=r(8981),o=r(6198),a=r(2106);n&&(a(Array.prototype,"lastIndex",{configurable:!0,get:function(){var t=s(this),e=o(t);return 0===e?0:e-1}}),i("lastIndex"))},5105:(t,e,r)=>{"use strict";var n=r(3724),i=r(6469),s=r(8981),o=r(6198),a=r(2106);n&&(a(Array.prototype,"lastItem",{configurable:!0,get:function(){var t=s(this),e=o(t);return 0===e?void 0:t[e-1]},set:function(t){var e=s(this),r=o(e);return e[0===r?0:r-1]=t}}),i("lastItem"))},7467:(t,e,r)=>{"use strict";var n=r(6518),i=r(8745),s=r(9323),o=r(7751),a=r(2360),u=Object,c=function(){var t=o("Object","freeze");return t?t(a(null)):a(null)};n({global:!0,forced:!0},{compositeKey:function(){return i(s,u,arguments).get("object",c)}})},586:(t,e,r)=>{"use strict";var n=r(6518),i=r(9323),s=r(7751),o=r(8745);n({global:!0,forced:!0},{compositeSymbol:function(){return 1===arguments.length&&"string"==typeof arguments[0]?s("Symbol").for(arguments[0]):o(i,null,arguments).get("symbol",s("Symbol"))}})},1517:(t,e,r)=>{"use strict";var n=r(6518),i=r(6194),s=r(2248).remove;n({target:"Map",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var t,e=i(this),r=!0,n=0,o=arguments.length;n{"use strict";var n=r(6518),i=r(6080),s=r(6194),o=r(6223);n({target:"Map",proto:!0,real:!0,forced:!0},{every:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0);return!1!==o(e,(function(t,n){if(!r(t,n,e))return!1}),!0)}})},4190:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(6194),o=r(2248),a=r(6223),u=o.Map,c=o.set;n({target:"Map",proto:!0,real:!0,forced:!0},{filter:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0),n=new u;return a(e,(function(t,i){r(t,i,e)&&c(n,i,t)})),n}})},6097:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(6194),o=r(6223);n({target:"Map",proto:!0,real:!0,forced:!0},{findKey:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0),n=o(e,(function(t,n){if(r(t,n,e))return{key:n}}),!0);return n&&n.key}})},2359:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(6194),o=r(6223);n({target:"Map",proto:!0,real:!0,forced:!0},{find:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0),n=o(e,(function(t,n){if(r(t,n,e))return{value:t}}),!0);return n&&n.value}})},9172:(t,e,r)=>{"use strict";var n=r(6518),i=r(2248);n({target:"Map",stat:!0,forced:!0},{from:r(933)(i.Map,i.set,!0)})},7019:(t,e,r)=>{"use strict";r(7072)},7273:(t,e,r)=>{"use strict";var n=r(6518),i=r(3317),s=r(6194),o=r(6223);n({target:"Map",proto:!0,real:!0,forced:!0},{includes:function(t){return!0===o(s(this),(function(e){if(i(e,t))return!0}),!0)}})},1723:(t,e,r)=>{"use strict";var n=r(6518),i=r(9565),s=r(2652),o=r(4901),a=r(9306),u=r(2248).Map;n({target:"Map",stat:!0,forced:!0},{keyBy:function(t,e){var r=new(o(this)?this:u);a(e);var n=a(r.set);return s(t,(function(t){i(n,r,e(t),t)})),r}})},7415:(t,e,r)=>{"use strict";var n=r(6518),i=r(6194),s=r(6223);n({target:"Map",proto:!0,real:!0,forced:!0},{keyOf:function(t){var e=s(i(this),(function(e,r){if(e===t)return{key:r}}),!0);return e&&e.key}})},9929:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(6194),o=r(2248),a=r(6223),u=o.Map,c=o.set;n({target:"Map",proto:!0,real:!0,forced:!0},{mapKeys:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0),n=new u;return a(e,(function(t,i){c(n,r(t,i,e),t)})),n}})},7583:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(6194),o=r(2248),a=r(6223),u=o.Map,c=o.set;n({target:"Map",proto:!0,real:!0,forced:!0},{mapValues:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0),n=new u;return a(e,(function(t,i){c(n,i,r(t,i,e))})),n}})},5122:(t,e,r)=>{"use strict";var n=r(6518),i=r(6194),s=r(2652),o=r(2248).set;n({target:"Map",proto:!0,real:!0,arity:1,forced:!0},{merge:function(t){for(var e=i(this),r=arguments.length,n=0;n{"use strict";var n=r(6518),i=r(2248);n({target:"Map",stat:!0,forced:!0},{of:r(7500)(i.Map,i.set,!0)})},230:(t,e,r)=>{"use strict";var n=r(6518),i=r(9306),s=r(6194),o=r(6223),a=TypeError;n({target:"Map",proto:!0,real:!0,forced:!0},{reduce:function(t){var e=s(this),r=arguments.length<2,n=r?void 0:arguments[1];if(i(t),o(e,(function(i,s){r?(r=!1,n=i):n=t(n,i,s,e)})),r)throw new a("Reduce of empty map with no initial value");return n}})},7268:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(6194),o=r(6223);n({target:"Map",proto:!0,real:!0,forced:!0},{some:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0);return!0===o(e,(function(t,n){if(r(t,n,e))return!0}),!0)}})},9733:(t,e,r)=>{"use strict";var n=r(6518),i=r(9306),s=r(6194),o=r(2248),a=TypeError,u=o.get,c=o.has,h=o.set;n({target:"Map",proto:!0,real:!0,forced:!0},{update:function(t,e){var r=s(this),n=arguments.length;i(e);var o=c(r,t);if(!o&&n<3)throw new a("Updating absent value");var l=o?u(r,t):i(n>2?arguments[2]:void 0)(t,r);return h(r,t,e(l,t,r)),r}})},8179:(t,e,r)=>{"use strict";var n=r(6518),i=Math.min,s=Math.max;n({target:"Math",stat:!0,forced:!0},{clamp:function(t,e,r){return i(r,s(e,t))}})},456:(t,e,r)=>{"use strict";r(6518)({target:"Math",stat:!0,nonConfigurable:!0,nonWritable:!0},{DEG_PER_RAD:Math.PI/180})},4017:(t,e,r)=>{"use strict";var n=r(6518),i=180/Math.PI;n({target:"Math",stat:!0,forced:!0},{degrees:function(t){return t*i}})},9310:(t,e,r)=>{"use strict";var n=r(6518),i=r(7905),s=r(5617);n({target:"Math",stat:!0,forced:!0},{fscale:function(t,e,r,n,o){return s(i(t,e,r,n,o))}})},3062:(t,e,r)=>{"use strict";r(6518)({target:"Math",stat:!0,forced:!0},{iaddh:function(t,e,r,n){var i=t>>>0,s=r>>>0;return(e>>>0)+(n>>>0)+((i&s|(i|s)&~(i+s>>>0))>>>31)|0}})},6369:(t,e,r)=>{"use strict";r(6518)({target:"Math",stat:!0,forced:!0},{imulh:function(t,e){var r=65535,n=+t,i=+e,s=n&r,o=i&r,a=n>>16,u=i>>16,c=(a*o>>>0)+(s*o>>>16);return a*u+(c>>16)+((s*u>>>0)+(c&r)>>16)}})},5637:(t,e,r)=>{"use strict";r(6518)({target:"Math",stat:!0,forced:!0},{isubh:function(t,e,r,n){var i=t>>>0,s=r>>>0;return(e>>>0)-(n>>>0)-((~i&s|(i^~s)&i-s>>>0)>>>31)|0}})},2848:(t,e,r)=>{"use strict";r(6518)({target:"Math",stat:!0,nonConfigurable:!0,nonWritable:!0},{RAD_PER_DEG:180/Math.PI})},4842:(t,e,r)=>{"use strict";var n=r(6518),i=Math.PI/180;n({target:"Math",stat:!0,forced:!0},{radians:function(t){return t*i}})},4746:(t,e,r)=>{"use strict";r(6518)({target:"Math",stat:!0,forced:!0},{scale:r(7905)})},3454:(t,e,r)=>{"use strict";var n=r(6518),i=r(8551),s=r(360),o=r(3994),a=r(2529),u=r(1181),c="Seeded Random",h=c+" Generator",l=u.set,f=u.getterFor(h),d=TypeError,p=o((function(t){l(this,{type:h,seed:t%2147483647})}),c,(function(){var t=f(this),e=t.seed=(1103515245*t.seed+12345)%2147483647;return a((1073741823&e)/1073741823,!1)}));n({target:"Math",stat:!0,forced:!0},{seededPRNG:function(t){var e=i(t).seed;if(!s(e))throw new d('Math.seededPRNG() argument should have a "seed" field with a finite value.');return new p(e)}})},6660:(t,e,r)=>{"use strict";r(6518)({target:"Math",stat:!0,forced:!0},{signbit:function(t){var e=+t;return e==e&&0===e?1/e==-1/0:e<0}})},5941:(t,e,r)=>{"use strict";r(6518)({target:"Math",stat:!0,forced:!0},{umulh:function(t,e){var r=65535,n=+t,i=+e,s=n&r,o=i&r,a=n>>>16,u=i>>>16,c=(a*o>>>0)+(s*o>>>16);return a*u+(c>>>16)+((s*u>>>0)+(c&r)>>>16)}})},2101:(t,e,r)=>{"use strict";var n=r(6518),i=r(9504),s=r(1291),o="Invalid number representation",a=RangeError,u=SyntaxError,c=TypeError,h=parseInt,l=Math.pow,f=/^[\d.a-z]+$/,d=i("".charAt),p=i(f.exec),m=i(1..toString),g=i("".slice),v=i("".split);n({target:"Number",stat:!0,forced:!0},{fromString:function(t,e){var r=1;if("string"!=typeof t)throw new c(o);if(!t.length)throw new u(o);if("-"===d(t,0)&&(r=-1,!(t=g(t,1)).length))throw new u(o);var n=void 0===e?10:s(e);if(n<2||n>36)throw new a("Invalid radix");if(!p(f,t))throw new u(o);var i=v(t,"."),y=h(i[0],n);if(i.length>1&&(y+=h(i[1],n)/l(n,i[1].length)),10===n&&m(y,n)!==t)throw new u(o);return r*y}})},5239:(t,e,r)=>{"use strict";var n=r(6518),i=r(9565),s=r(3724),o=r(7633),a=r(9306),u=r(8551),c=r(679),h=r(4901),l=r(4117),f=r(34),d=r(5966),p=r(6840),m=r(6279),g=r(2106),v=r(3138),y=r(8227),b=r(1181),x=y("observable"),w="Observable",_="Subscription",I="SubscriptionObserver",A=b.getterFor,O=b.set,S=A(w),P=A(_),k=A(I),C=function(t){this.observer=u(t),this.cleanup=void 0,this.subscriptionObserver=void 0};C.prototype={type:_,clean:function(){var t=this.cleanup;if(t){this.cleanup=void 0;try{t()}catch(t){v(t)}}},close:function(){if(!s){var t=this.facade,e=this.subscriptionObserver;t.closed=!0,e&&(e.closed=!0)}this.observer=void 0},isClosed:function(){return void 0===this.observer}};var T=function(t,e){var r,n=O(this,new C(t));s||(this.closed=!1);try{(r=d(t,"start"))&&i(r,t,this)}catch(t){v(t)}if(!n.isClosed()){var o=n.subscriptionObserver=new M(n);try{var u=e(o),c=u;l(u)||(n.cleanup=h(u.unsubscribe)?function(){c.unsubscribe()}:a(u))}catch(t){return void o.error(t)}n.isClosed()&&n.clean()}};T.prototype=m({},{unsubscribe:function(){var t=P(this);t.isClosed()||(t.close(),t.clean())}}),s&&g(T.prototype,"closed",{configurable:!0,get:function(){return P(this).isClosed()}});var M=function(t){O(this,{type:I,subscriptionState:t}),s||(this.closed=!1)};M.prototype=m({},{next:function(t){var e=k(this).subscriptionState;if(!e.isClosed()){var r=e.observer;try{var n=d(r,"next");n&&i(n,r,t)}catch(t){v(t)}}},error:function(t){var e=k(this).subscriptionState;if(!e.isClosed()){var r=e.observer;e.close();try{var n=d(r,"error");n?i(n,r,t):v(t)}catch(t){v(t)}e.clean()}},complete:function(){var t=k(this).subscriptionState;if(!t.isClosed()){var e=t.observer;t.close();try{var r=d(e,"complete");r&&i(r,e)}catch(t){v(t)}t.clean()}}}),s&&g(M.prototype,"closed",{configurable:!0,get:function(){return k(this).subscriptionState.isClosed()}});var E=function(t){c(this,F),O(this,{type:w,subscriber:a(t)})},F=E.prototype;m(F,{subscribe:function(t){var e=arguments.length;return new T(h(t)?{next:t,error:e>1?arguments[1]:void 0,complete:e>2?arguments[2]:void 0}:f(t)?t:{},S(this).subscriber)}}),p(F,x,(function(){return this})),n({global:!0,constructor:!0,forced:!0},{Observable:E}),o(w)},9035:(t,e,r)=>{"use strict";var n=r(6518),i=r(7751),s=r(9565),o=r(8551),a=r(3517),u=r(81),c=r(5966),h=r(2652),l=r(8227)("observable");n({target:"Observable",stat:!0,forced:!0},{from:function(t){var e=a(this)?this:i("Observable"),r=c(o(t),l);if(r){var n=o(s(r,t));return n.constructor===e?n:new e((function(t){return n.subscribe(t)}))}var f=u(t);return new e((function(t){h(f,(function(e,r){if(t.next(e),t.closed)return r()}),{IS_ITERATOR:!0,INTERRUPTED:!0}),t.complete()}))}})},2917:(t,e,r)=>{"use strict";r(5239),r(9035),r(8662)},8662:(t,e,r)=>{"use strict";var n=r(6518),i=r(7751),s=r(3517),o=i("Array");n({target:"Observable",stat:!0,forced:!0},{of:function(){for(var t=s(this)?this:i("Observable"),e=arguments.length,r=o(e),n=0;n{"use strict";var n=r(6518),i=r(6043),s=r(1103);n({target:"Promise",stat:!0,forced:!0},{try:function(t){var e=i.f(this),r=s(t);return(r.error?e.reject:e.resolve)(r.value),e.promise}})},5186:(t,e,r)=>{"use strict";var n=r(6518),i=r(8449),s=r(8551),o=i.toKey,a=i.set;n({target:"Reflect",stat:!0},{defineMetadata:function(t,e,r){var n=arguments.length<4?void 0:o(arguments[3]);a(t,e,s(r),n)}})},2978:(t,e,r)=>{"use strict";var n=r(6518),i=r(8449),s=r(8551),o=i.toKey,a=i.getMap,u=i.store;n({target:"Reflect",stat:!0},{deleteMetadata:function(t,e){var r=arguments.length<3?void 0:o(arguments[2]),n=a(s(e),r,!1);if(void 0===n||!n.delete(t))return!1;if(n.size)return!0;var i=u.get(e);return i.delete(r),!!i.size||u.delete(e)}})},9852:(t,e,r)=>{"use strict";var n=r(6518),i=r(9504),s=r(8449),o=r(8551),a=r(2787),u=i(r(1946)),c=i([].concat),h=s.keys,l=s.toKey,f=function(t,e){var r=h(t,e),n=a(t);if(null===n)return r;var i=f(n,e);return i.length?r.length?u(c(r,i)):i:r};n({target:"Reflect",stat:!0},{getMetadataKeys:function(t){var e=arguments.length<2?void 0:l(arguments[1]);return f(o(t),e)}})},2527:(t,e,r)=>{"use strict";var n=r(6518),i=r(8449),s=r(8551),o=r(2787),a=i.has,u=i.get,c=i.toKey,h=function(t,e,r){if(a(t,e,r))return u(t,e,r);var n=o(e);return null!==n?h(t,n,r):void 0};n({target:"Reflect",stat:!0},{getMetadata:function(t,e){var r=arguments.length<3?void 0:c(arguments[2]);return h(t,s(e),r)}})},617:(t,e,r)=>{"use strict";var n=r(6518),i=r(8449),s=r(8551),o=i.keys,a=i.toKey;n({target:"Reflect",stat:!0},{getOwnMetadataKeys:function(t){var e=arguments.length<2?void 0:a(arguments[1]);return o(s(t),e)}})},2376:(t,e,r)=>{"use strict";var n=r(6518),i=r(8449),s=r(8551),o=i.get,a=i.toKey;n({target:"Reflect",stat:!0},{getOwnMetadata:function(t,e){var r=arguments.length<3?void 0:a(arguments[2]);return o(t,s(e),r)}})},3067:(t,e,r)=>{"use strict";var n=r(6518),i=r(8449),s=r(8551),o=r(2787),a=i.has,u=i.toKey,c=function(t,e,r){if(a(t,e,r))return!0;var n=o(e);return null!==n&&c(t,n,r)};n({target:"Reflect",stat:!0},{hasMetadata:function(t,e){var r=arguments.length<3?void 0:u(arguments[2]);return c(t,s(e),r)}})},6820:(t,e,r)=>{"use strict";var n=r(6518),i=r(8449),s=r(8551),o=i.has,a=i.toKey;n({target:"Reflect",stat:!0},{hasOwnMetadata:function(t,e){var r=arguments.length<3?void 0:a(arguments[2]);return o(t,s(e),r)}})},8288:(t,e,r)=>{"use strict";var n=r(6518),i=r(8449),s=r(8551),o=i.toKey,a=i.set;n({target:"Reflect",stat:!0},{metadata:function(t,e){return function(r,n){a(t,e,s(r),o(n))}}})},5509:(t,e,r)=>{"use strict";var n=r(6518),i=r(7080),s=r(4402).add;n({target:"Set",proto:!0,real:!0,forced:!0},{addAll:function(){for(var t=i(this),e=0,r=arguments.length;e{"use strict";var n=r(6518),i=r(7080),s=r(4402).remove;n({target:"Set",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var t,e=i(this),r=!0,n=0,o=arguments.length;n{"use strict";var n=r(6518),i=r(9565),s=r(7650),o=r(3440);n({target:"Set",proto:!0,real:!0,forced:!0},{difference:function(t){return i(o,this,s(t))}})},1927:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(7080),o=r(8469);n({target:"Set",proto:!0,real:!0,forced:!0},{every:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0);return!1!==o(e,(function(t){if(!r(t,t,e))return!1}),!0)}})},1632:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(7080),o=r(4402),a=r(8469),u=o.Set,c=o.add;n({target:"Set",proto:!0,real:!0,forced:!0},{filter:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0),n=new u;return a(e,(function(t){r(t,t,e)&&c(n,t)})),n}})},4377:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(7080),o=r(8469);n({target:"Set",proto:!0,real:!0,forced:!0},{find:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0),n=o(e,(function(t){if(r(t,t,e))return{value:t}}),!0);return n&&n.value}})},9522:(t,e,r)=>{"use strict";var n=r(6518),i=r(4402);n({target:"Set",stat:!0,forced:!0},{from:r(933)(i.Set,i.add,!1)})},6771:(t,e,r)=>{"use strict";var n=r(6518),i=r(9565),s=r(7650),o=r(8750);n({target:"Set",proto:!0,real:!0,forced:!0},{intersection:function(t){return i(o,this,s(t))}})},2516:(t,e,r)=>{"use strict";var n=r(6518),i=r(9565),s=r(7650),o=r(4449);n({target:"Set",proto:!0,real:!0,forced:!0},{isDisjointFrom:function(t){return i(o,this,s(t))}})},8931:(t,e,r)=>{"use strict";var n=r(6518),i=r(9565),s=r(7650),o=r(3838);n({target:"Set",proto:!0,real:!0,forced:!0},{isSubsetOf:function(t){return i(o,this,s(t))}})},2514:(t,e,r)=>{"use strict";var n=r(6518),i=r(9565),s=r(7650),o=r(8527);n({target:"Set",proto:!0,real:!0,forced:!0},{isSupersetOf:function(t){return i(o,this,s(t))}})},5694:(t,e,r)=>{"use strict";var n=r(6518),i=r(9504),s=r(7080),o=r(8469),a=r(655),u=i([].join),c=i([].push);n({target:"Set",proto:!0,real:!0,forced:!0},{join:function(t){var e=s(this),r=void 0===t?",":a(t),n=[];return o(e,(function(t){c(n,t)})),u(n,r)}})},2774:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(7080),o=r(4402),a=r(8469),u=o.Set,c=o.add;n({target:"Set",proto:!0,real:!0,forced:!0},{map:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0),n=new u;return a(e,(function(t){c(n,r(t,t,e))})),n}})},3283:(t,e,r)=>{"use strict";var n=r(6518),i=r(4402);n({target:"Set",stat:!0,forced:!0},{of:r(7500)(i.Set,i.add,!1)})},9536:(t,e,r)=>{"use strict";var n=r(6518),i=r(9306),s=r(7080),o=r(8469),a=TypeError;n({target:"Set",proto:!0,real:!0,forced:!0},{reduce:function(t){var e=s(this),r=arguments.length<2,n=r?void 0:arguments[1];if(i(t),o(e,(function(i){r?(r=!1,n=i):n=t(n,i,i,e)})),r)throw new a("Reduce of empty set with no initial value");return n}})},1926:(t,e,r)=>{"use strict";var n=r(6518),i=r(6080),s=r(7080),o=r(8469);n({target:"Set",proto:!0,real:!0,forced:!0},{some:function(t){var e=s(this),r=i(t,arguments.length>1?arguments[1]:void 0);return!0===o(e,(function(t){if(r(t,t,e))return!0}),!0)}})},4483:(t,e,r)=>{"use strict";var n=r(6518),i=r(9565),s=r(7650),o=r(3650);n({target:"Set",proto:!0,real:!0,forced:!0},{symmetricDifference:function(t){return i(o,this,s(t))}})},6215:(t,e,r)=>{"use strict";var n=r(6518),i=r(9565),s=r(7650),o=r(4204);n({target:"Set",proto:!0,real:!0,forced:!0},{union:function(t){return i(o,this,s(t))}})},8898:(t,e,r)=>{"use strict";var n=r(6518),i=r(8183).charAt,s=r(7750),o=r(1291),a=r(655);n({target:"String",proto:!0,forced:!0},{at:function(t){var e=a(s(this)),r=e.length,n=o(t),u=n>=0?n:r+n;return u<0||u>=r?void 0:i(e,u)}})},4176:(t,e,r)=>{"use strict";var n=r(6518),i=r(3994),s=r(2529),o=r(7750),a=r(655),u=r(1181),c=r(8183),h=c.codeAt,l=c.charAt,f="String Iterator",d=u.set,p=u.getterFor(f),m=i((function(t){d(this,{type:f,string:t,index:0})}),"String",(function(){var t,e=p(this),r=e.string,n=e.index;return n>=r.length?s(void 0,!0):(t=l(r,n),e.index+=t.length,s({codePoint:h(t,0),position:n},!1))}));n({target:"String",proto:!0,forced:!0},{codePoints:function(){return new m(a(o(this)))}})},3275:(t,e,r)=>{"use strict";var n=r(4475),i=r(511),s=r(4913).f,o=r(7347).f,a=n.Symbol;if(i("dispose"),a){var u=o(a,"dispose");u.enumerable&&u.configurable&&u.writable&&s(a,"dispose",{value:u.value,enumerable:!1,configurable:!1,writable:!1})}},2793:(t,e,r)=>{"use strict";r(511)("observable")},7208:(t,e,r)=>{"use strict";r(511)("patternMatch")},7348:(t,e,r)=>{"use strict";var n=r(6518),i=r(6557),s=r(4995).remove;n({target:"WeakMap",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var t,e=i(this),r=!0,n=0,o=arguments.length;n{"use strict";var n=r(6518),i=r(4995);n({target:"WeakMap",stat:!0,forced:!0},{from:r(933)(i.WeakMap,i.set,!0)})},9732:(t,e,r)=>{"use strict";var n=r(6518),i=r(4995);n({target:"WeakMap",stat:!0,forced:!0},{of:r(7500)(i.WeakMap,i.set,!0)})},3742:(t,e,r)=>{"use strict";var n=r(6518),i=r(3755),s=r(8205).add;n({target:"WeakSet",proto:!0,real:!0,forced:!0},{addAll:function(){for(var t=i(this),e=0,r=arguments.length;e{"use strict";var n=r(6518),i=r(3755),s=r(8205).remove;n({target:"WeakSet",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var t,e=i(this),r=!0,n=0,o=arguments.length;n{"use strict";var n=r(6518),i=r(8205);n({target:"WeakSet",stat:!0,forced:!0},{from:r(933)(i.WeakSet,i.add,!1)})},6270:(t,e,r)=>{"use strict";var n=r(6518),i=r(8205);n({target:"WeakSet",stat:!0,forced:!0},{of:r(7500)(i.WeakSet,i.add,!1)})},6368:(t,e,r)=>{"use strict";var n=r(6518),i=r(4475),s=r(9225).clear;n({global:!0,bind:!0,enumerable:!0,forced:i.clearImmediate!==s},{clearImmediate:s})},9848:(t,e,r)=>{"use strict";r(6368),r(9309)},9309:(t,e,r)=>{"use strict";var n=r(6518),i=r(4475),s=r(9225).set,o=r(9472),a=i.setImmediate?o(s,!1):s;n({global:!0,bind:!0,enumerable:!0,forced:i.setImmediate!==a},{setImmediate:a})}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var s=e[n]={exports:{}};return t[n].call(s.exports,s,s.exports,r),s.exports}r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};(()=>{"use strict";r.r(n),r.d(n,{OPFSCache:()=>s.x});var t=r(1136),e=r(577);let i=new class{constructor(){this._workers={}}dispatch(r){if(Object.prototype.hasOwnProperty.call(r,"operation")){r.endpoint&&e.sR.setEndpointAndApi(r.endpoint,r.api);var n=this._workers[r.operation];if(n){if(r.basePath="",r.url){var i=r.url.lastIndexOf("/");-1!=i&&(r.basePath=r.url.substr(0,i+1))}r.raiseError=function(){r.worker.raiseError.apply(r.worker,arguments)},r.onFailureCallback=t.PG.defaultFailureCallback.bind(r),n.doOperation(r)}}}register(t,e){this._workers[t]=e}unregister(t){delete this._workers[t]}};r(3870).k(i),r(574).k(i),r(8262).k(i),r(5499).k(i),r(3484).k(i),r(2637).k(i),r(8401).k(i),r(6324).k(i),r(1711).k(i),r(7676).k(i),i.register("REGISTER_FILE_PORT",{doOperation:function(e){if(e&&e.protocolPortMap)for(var r in e.protocolPortMap)t.PG.registerProtocolPort(r,e.protocolPortMap[r])}});var s=r(8914);self.addEventListener("message",(function(t){var e=t.data;e.worker=self,i.dispatch(e)}),!1),self.raiseError=function(t,e,r){self.postMessage({error:{code:t,msg:e,args:r}})},self.debug=function(t){self.postMessage({debug:1,message:t})}})(),LMV=n})(); +//# sourceMappingURL=lmvworker.min.js.map \ No newline at end of file diff --git a/public/autodesk/res/environments/SharpHighlights_irr.logluv.dds b/public/autodesk/res/environments/SharpHighlights_irr.logluv.dds new file mode 100644 index 0000000..aedf9dc Binary files /dev/null and b/public/autodesk/res/environments/SharpHighlights_irr.logluv.dds differ diff --git a/public/autodesk/res/environments/SharpHighlights_mipdrop.logluv.dds b/public/autodesk/res/environments/SharpHighlights_mipdrop.logluv.dds new file mode 100644 index 0000000..cb100cf Binary files /dev/null and b/public/autodesk/res/environments/SharpHighlights_mipdrop.logluv.dds differ diff --git a/public/autodesk/res/environments/boardwalk_irr.logluv.dds b/public/autodesk/res/environments/boardwalk_irr.logluv.dds new file mode 100644 index 0000000..d22d074 Binary files /dev/null and b/public/autodesk/res/environments/boardwalk_irr.logluv.dds differ diff --git a/public/autodesk/res/environments/boardwalk_mipdrop.logluv.dds b/public/autodesk/res/environments/boardwalk_mipdrop.logluv.dds new file mode 100644 index 0000000..63a0d79 Binary files /dev/null and b/public/autodesk/res/environments/boardwalk_mipdrop.logluv.dds differ diff --git a/public/autodesk/res/locales/en/VCcrossRGBA8small.dds b/public/autodesk/res/locales/en/VCcrossRGBA8small.dds new file mode 100644 index 0000000..da6915e Binary files /dev/null and b/public/autodesk/res/locales/en/VCcrossRGBA8small.dds differ diff --git a/public/autodesk/res/locales/en/allstrings.json b/public/autodesk/res/locales/en/allstrings.json new file mode 100644 index 0000000..88f687b --- /dev/null +++ b/public/autodesk/res/locales/en/allstrings.json @@ -0,0 +1 @@ +{"@@locale":"en","@@context":"Viewer","@@contact":"","ATF-1008":"Error: {0}","ATF-1023":"The referenced file {0} is missing.","ATF-1024":"The version of the file: {0} is not supported.","ATF-1025":"The file: {0} is corrupt or invalid.","ATF-1026":"The file: {0} is empty.","ATF-1028":"Fail to load component: {0}.","ATF-1031":"Unauthorized file type.","ATF-1032":"Assembly feature is lost.","ATF-1033":"Entity in the file: {0} is not supported.","ATF-1034":"The file name: {0} is invalid.","AssImp-OpenFailure":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","AssImp-InternalError":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","AssImp-CannotCreateOutput":"Cannot write output file.","AssImp-CannotLoadOBJ":"Cannot load OBJ file.","AssImp-MissingTextures":"Missing texture image file:
    {0}
","AutoCAD-MissingReferences":"Missing referencesSome references were not uploaded, so the drawing may not be fully displayed.Please upload the composite design with all the missing referenced files:
    {0}
","AutoCAD-MissingReference":"Missing referenceOne reference was not uploaded, so the drawing may not be fully displayed.Please upload the composite design with the missing referenced file: {0}","AutoCAD-NoDWFxFilesGenerated":"The drawing may not contain visible objects. No views have been generated.","AutoCAD-PasswordProtectedFile":"Sorry!This item can't be viewed because it's password-protected.Please remove the password, and upload it again to view.","AutoCAD-InvalidFile":"Sorry!The drawing file is invalid and cannot be viewed.Please try to recover the file in AutoCAD, and upload it again to view.","AutoCAD-ProxyGraphicsFalse":"The drawing contains custom objects that are not displayed in the viewer.","AutoCAD-ProxyGraphicsTrue":"The drawing contains custom objects. Some properties of custom objects may not be displayed or searched.","AutoCAD-ClippedView":"The 2D model view is clipped to the last saved view and may not display the entire drawing.Resave the drawing in AutoCAD with the desired view and upload again if the drawing is clipped.","AutoCAD-MissingShxFonts":"Missing fontsSome missing fonts were substituted for the drawing file: {0}","AutoCAD-MissingTtfFonts":"Missing fontsSome missing fonts were substituted for the drawing file: {0}","AutoCAD-MissingPlotStyleFiles":"Missing plot style files: {0}","DWF2D-Corrupt_File_Error":"Unable to open corrupt DWF/DWFx file.","DWF2D-Building_XML_Object_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-File_Not_In_DWF":"Unable to open file, expected resource is not present in DWF/DWFx file contents.","DWF2D-File_Open_Error":"Unable to open DWF/DWFx file.","DWF2D-File_Read_Error":"Unable to read DWF/DWFx file.","DWF2D-File_Write_Error":"Unable to write DWF/DWFx file.","DWF2D-Internal_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Invalid_Argument_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Invalid_XML_Content_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Invalid_DWF_Version_Error":"Invalid DWF/DWFx file version.","DWF2D-Not_A_DWF_Error":"Unable to open, not a DWF/DWFx file.","DWF2D-Open_Section_Descriptor_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Out_Of_Memory_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Stream_Write_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Temp_File_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Toolkit_Usage_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-ZipLib_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Bad_Password_Error":"Unable to open password protected file.","DWF2D-Resource_Handler_Not_Specified_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Not_Implemented":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Stream_In_Progress":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-User_Requested_Abort":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Unsupported_File_Type_Error":"Unable to open, not a valid DWF/DWFx file.","DWF2D-Temp_Path_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Incompatable_XML_Version_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF2D-Incompatible_Section_Type":"Unknown section resource processing DWF/DWFx file.","DWF2D-Drm_Encryption":"Unable to open DRM / rights-protected file.","DWF2D-Load_Section_Error":"Unable to load section resource in DWF/DWFx file.","DWF2D-Secured_Section_Type":"Unable to open DRM / rights-protected file.","DWF2D-Unknown_Error":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","DWF3D-BadPassword":"Could not open password-protected DWF file.","DWF3D-CorruptFile":"Could not open DWF file.The data appears corrupted.","DWF3D-InvalidVersion":"Could not open DWF file.Unsupported version.","DWF3D-DRMFailure":"Could not open DWF file.File contains DRM protected content.","Navisworks-2DSheetUnsupported":"Navisworks 2D sheet is not supported.","Navisworks-MissingXref":"Missing external reference file:
    {0}
","Navisworks-EmptyFile":"There is no geometry that can be displayed.","Navisworks-PointUnsupported":"Navisworks point and snappoint are not supported.","Navisworks-Failed":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","Revit-UnsupportedFileType":"The file is not a Revit file or is not a supported version.","Revit-UnsupportedFileType_rfa":"The file is not a Revit file.","Revit-UnsupportedFileType_rte":"The file is not a Revit file.","Revit-UnsupportedFileType_rft":"The file is not a Revit file.","Revit-MissingLink":"Missing link files:
    {0}
","Revit-UpgradeWarning":"Removed some elements to resolve issues encountered during upgrade. Please note that Revit file may not view as expected.For best results, open the file in Revit, resolve warnings, re-save it and try again.","Revit-UpgradeError":"Failed to upgrade the project.Please upgrade the project using the current version of Revit and try again.","Revit-FileOpenError":"Failed to open the file.Please open the file in the current version of Revit, resolve warnings and errors, re-save it, and try again.","Revit-Timeout":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","Revit-MassVisibilitySettingFailure":"Failed to export the mass in 3D view.","Revit-View3DExportError":"Failed to export the 3D view - {0}.","Revit-View2DExportError":"Failed to export the 2D view - {0}.","Revit-ThumbnailGenerationError":"Failed to generate the preview image for the view - {0}.","Revit-DocumentCorruption":"The file is corrupt.Please open the file in the current version of Revit to see more details about the corruption.","Revit-InternalError":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","Revit-UnsupportedVersionOlder":"The file was saved in an old version of Revit which we don't support.Please upgrade this project to Revit {0} or later.","Revit-UnsupportedVersionLater":"The file was saved by a later version of Revit which we don't support.","Revit-InvalidLink":"Unable to load link files:
    {0}
","Recent Queries":"Recent Queries","Loading":"Loading...","Loading Search":"Loading Search..","Load More":"Load More","Results Count":"{0} results for \"{1}\" in {2}","No Results for":"No results for \"__0__\" in __1__","Open Another Window":"Open in another window","Open This Window":"Open in this window","Geometries Loading":"Processing model properties. Please retry your search for more complete results.","Recent Queries Empty":"There are no previous queries to show.","Selected Node Result Not Visible":"The selected node is not visible.","No Visible Node Results For Geometry":"No results or no visible nodes in the results for the query in this geometry.","Saved Queries":"Saved Queries","{0} saved of {1} allocated":"{0} saved of {1} allocated","Saved queries settings":"Saved queries settings","There are no queries saved for this document":"There are no queries saved for this document.","Saved Queries Settings":"Saved Queries Settings","Space":"Space","Saving":"Saving...","Deleting":"Deleting...","No queries saved":"There are no queries saved.","An error occur while saving query, please try again later":"An error occur while saving query, please try again later.","An error occur while deleting query, please try again later":"An error occur while deleting query, please try again later","Error saving query cause query list was outdated. Review list and retry operation.":"Error saving query cause query list was outdated. Review list and retry operation.","Error deleting query cause query list was outdated. Review list and retry operation.":"Error deleting query cause query list was outdated. Review list and retry operation.","Error getting queries, please close and retry":"Error getting queries, please close and retry","Delete":"Delete","Cancel":"Cancel","Are you sure you want to delete the query from your list?":"Are you sure you want to delete the query {0} from your list?","The query is already saved.":"The query is already saved.","Maximum number of queries saved exceeded, please delete some queries or contact to your administrator":"Maximum number of queries saved exceeded, please delete some queries or contact to your administrator.","TranslationWorker-TextureResizingFailed":"The drawing’s textures were not correctly processed.","TranslationWorker-ThumbnailGenerationFailed":"The drawing’s thumbnails were not properly created.","TranslationWorker-InternalFailure":"We have encountered some issues while preparing the file for viewing. Please contact support for assistance.","TranslationWorker-InsufficientDataFromExtractor":"Not enough drawing information was produced to make this file viewable. Contact support for further assistance.","TranslationWorker-RecoverableInternalFailure":"An error occurred while processing this file. It may succeed if processing is attempted again later.","New First Person":"New First Person","Navigate in First Person":"Navigate in First Person","Walk":"Walk","Go Up and Down":"Go Up and Down","Release key to land on the nearest floor":"Release key to land on the nearest floor","Move":"Move","OR":"OR","Adjust Speed":"Adjust Speed","Run":"Run","Direction Key":"Direction Key","Teleport":"Teleport","Double click on destination":"Double click on destination","Look Around":"Look Around","Drag with left key on view":"Drag with left key on view","Dont remind me again":"Don't remind me again","Ok Got It":"Ok, Got It.","Enable Gravity":"Enable Gravity","Toggles gravity while in first person mode":"Toggles gravity while in first person mode","Location Icons":"Location Icons","Show location icons":"Show location icons","Toggles availability of the location icons when looking at the project model":"Toggles availability of the location icons when looking at the project model.","Components":"Components","Sheets":"Sheets","%(attributeChanged) by":"%(attributeChanged) by","%(attributeChanged) to":"%(attributeChanged) to","%(moved) %(units) in %(axis)":"%(moved) %(units) in %(axis)","%(rotated) around %(axis)":"%(rotated) around %(axis)","%(scaled) on %(axis)":"%(scaled) on %(axis)","%(versionB) vs. %(versionA)":"%(versionB) vs. %(versionA)","Add the \"%(categoryName)\" category as a filter":"Add the \"%(categoryName)\" category as a filter","Added":"Added","An error occured while trying to find differences between versions.":"An error occured while trying to find differences between versions.","Architecture":"Architecture","Back to top":"Back to top","Change list":"Change list","Changes":"Changes","Changes between %(versionB) & %(versionA)":"Changes between %(versionB) & %(versionA)","Details":"Details","Diff Failed":"Diff Failed","Disciplines affected":"Disciplines affected","Electrical":"Electrical","Exit comparing":"Exit comparing","Flat Result List":"Flat Result List","Hide":"Hide","Hide \"%(name)\" changes":"Hide \"%(name)\" changes","Hide Selected":"Hide selected","Hide property changes":"Hide property changes","Hide shape changes":"Hide shape changes","Hide transformations":"Hide transformations","INFORMATION":"INFORMATION","Isolate":"Isolate","Isolate Selected":"Isolate Selected","Isolated or hidden in view":"Isolated or hidden in view","Learn more":"Learn more","Mechanical":"Mechanical","Miscellaneous":"Miscellaneous","Modification type":"Modification type","Modified":"Modified","Moved by":"Moved by","No search results found":"No search results found","OTG translation failed for model \"%(modelName)\" using version \"%(modelVersion)\"":"OTG translation failed for model \"%(modelName)\" using version \"%(modelVersion)\"","Overlay":"Overlay","Piping":"Piping","Project Model":"Project Model","Remove filter that includes elements and categories having \"%(filterText)\" in their name":"Remove filter that includes elements and categories having \"%(filterText)\" in their name","Remove the \"%(categoryName)\" category as a filter":"Remove the \"%(categoryName)\" category as a filter","Removed":"Removed","Result as Tree":"Result as Tree","Rotated by":"Rotated by","Scaled by":"Scaled by","Search + Filter":"Search + Filter","Show \"%(name)\" changes":"Show \"%(name)\" changes","Show All":"Show All","Show Differences":"Show Differences","Show in model":"Show in model","Show property changes":"Show property changes","Show shape changes":"Show shape changes","Show the results in a flat list":"Show the results in a flat list","Show the results in a tree view":"Show the results in a tree view","Show transformations":"Show transformations","Side by Side":"Side by Side","Structure":"Structure","The file type is not fully supported.":"The file type is not fully supported.","The file type is not fully unsupported for 2D":"The file type is not fully unsupported for 2D","The shape of this object has been changed":"The shape of this object has been changed","There are too many results to display at once. Use the filters to reduce the amount.":"There are too many results to display at once. Use the filters to reduce the amount.","This element has been added in version %(version)":"This element has been added in version %(version)","This element has been removed in version %(version)":"This element has been removed in version %(version)","Toggle between different disciplines":"Toggle between different disciplines","Toggle between different types of modifications":"Toggle between different types of modifications","of %(maxCount)":"of %(maxCount)","undefined":"undefined","Click a 2D location to view that space in 3D":"Click a 2D location to view that space in 3D","Current view is not supported by Place Me":"Current view is not supported by Place Me","Click on a location to ground yourself, then select a camera direction":"Click on a location to ground yourself, then select a camera direction","View object in 3D":"View object in 3D","Simple Grey":"Simple Grey","Grey Room":"Grey Room","Photo Booth":"Photo Booth","Sharp Highlights":"Sharp Highlights","Contrast":"Contrast","Infinity Pool":"Infinity Pool","Tranquility":"Tranquility","Dark Sky":"Dark Sky","Simple White":"Simple White","Riverbank":"Riverbank","Rim Highlights":"Rim Highlights","Cool Light":"Cool Light","Warm Light":"Warm Light","Soft Light":"Soft Light","Grid Light":"Grid Light","Plaza":"Plaza","Snow Field":"Snow Field","Field":"Field","Crossroads":"Crossroads","Seaport":"Seaport","Glacier":"Glacier","Boardwalk":"Boardwalk","RaaS Test Env":"RaaS Test Env","Flat Shading":"Flat Shading","Harbor":"Harbor","Night":"Night","Parking":"Parking","River Road":"River Road","Custom Model defined":"(Custom: Model defined)","header-sorry":"Sorry","header-warning":"Warning","Error Occurred":"Error Occurred","OK":"OK","Viewer-UnknownFailure":"Sorry We seem to have some technical difficulties and couldn’t complete your request. Try loading the item again. Please verify your Internet connection, and refresh the browser to see if that fixes the problem.","Viewer-BadData":"SorryThe item you are trying to view was not processed completely. Try loading the item again. Please upload the file again to see if that fixes the issue.","Viewer-NetworkError":"SorryWe seem to have some technical difficulties and couldn’t complete your request. Try loading the item again. Please verify your Internet connection, and refresh the browser to see if that fixes the problem.","Viewer-AccessDenied":"No access Sorry. You don’t have the required privileges to access this item. Please contact the author.","Viewer-FileNotFound":"SorryWe can’t display the item you are looking for. It may not have been processed yet. It may have been moved, deleted, or you may be using a corrupt file or unsupported file format. Try loading the item again. Please upload the file again to see if that fixes the issue. See a list of supported formats.","Viewer-ServerError":"SorryWe seem to have some technical difficulties and couldn’t complete your request Try loading the item again. Please verify your Internet connection, and refresh the browser to see if that fixes the problem.","Viewer-UnhandledResponseCode":"Network problem Sorry. We seem to have some technical difficulties and couldn’t complete your request. Try loading the item again. Please verify your Internet connection, and refresh the browser to see if that fixes the problem.","Viewer-WebGlNotSupported":"SorryWe can't show this item because this browser doesn’t support WebGL.Try Google Chrome, Mozilla Firefox, or another browser that supports WebGL 3D graphics.For more information, see the A360 browser requirements.","Viewer-WebGlDisabled":"SorryWe can't show this item because WebGL is disabled on this device. For more information see the A360 Help.","Viewer-NoViewable":"No viewable contentThere’s nothing to display for this item. It may not have been processed or it may not have content we can display. Please contact the author. Please upload the file again to see if that fixes the issue.","Viewer-ModeIsEmpty":"Model is emptyModel is empty, there is no geometry for the viewer to show. Please contact the author. Please upload the file again to see if that fixes the issue.","Viewer-RTCError":" Sorry We couldn’t connect to the Collaboration server. Please verify your Internet connection, and refresh the browser to see if that fixes the problem.","Sorry":"Sorry","The file extension loaded into the Viewer is not supported":"The file extension loaded into the Viewer is not supported.","Try a different file":"Try a different file.","WebGL context lost":"WebGL context lost","Unable to recover from software mode. Please restart your browser and reload the Viewer.":"Unable to recover from software mode. Please restart your browser and reload the Viewer.","If you continue to encounter this issue when viewing this model, we recommend switching to a different browser.":"If you continue to encounter this issue when viewing this model, we recommend switching to a different browser.","UNKNOWN FAILURE":"Unknown Failure","BAD DATA":"Bad Data","NETWORK ERROR":"Network Error","NETWORK ACCESS DENIED":"Network Access Denied","NETWORK FILE NOT FOUND":"Network File Not Found","NETWORK SERVER ERROR":"Network Server Error","NETWORK UNHANDLED RESPONSE CODE":"Network Unhandled Response Code","BROWSER WEBGL NOT SUPPORTED":"Browser WebGL Not Supported","BAD DATA NO VIEWABLE CONTENT":"Bad Data No Viewable Content","Network failure":"Network failure","Access denied to remote resource":"Access denied to remote resource","Remote resource not found":"Remote resource not found","Server error when accessing resource":"Server error when accessing resource","Unhandled response code from server":"Unhandled response code from server","Malformed data received when requesting file":"Malformed data received when requesting file","Malicious document content detected Abort loading":"Malicious document content detected. Abort loading.","No viewable content":"No viewable content","An exception occurred while loading the document":"An exception occurred while loading the document","Properties failed to load since model does not exist":"Properties failed to load since model does not exist","ObjectTree failed to load since model does not exist":"ObjectTree failed to load since model does not exist","Search failed since model does not exist":"Search failed since model does not exist","Viewer failed to initialize":"Viewer failed to initialize","Unhandled exception while reading pack file":"Unhandled exception while reading pack file","Unhandled exception while reading geometry":"Unhandled exception while reading geometry","Unable to load geometry":"Unable to load geometry","Failed to load properties":"Failed to load properties","Unhandled exception while loading SVF":"Unhandled exception while loading SVF","Failure while loading SVF":"Failure while loading SVF","First Person Tool":"First Person Tool","First person":"First person","Use the WASD and QE keys to move":"Use the WASD and QE keys to move. Shift+Key to move faster or use +/- keys to adjust walk speed. G key toggles view orientation drag mode. F1 to view this help.","View Orientation Drag Mode Toggled":"View Orientation Drag Mode Toggled","Press the primary mouse button and drag to change the view orientation":"Press the primary mouse button and drag to change the view orientation.","Move the cursor to change the view orientation":"Move the cursor to change the view orientation.","Virtual Reality Tool":"Virtual Reality Tool","This is the Virtual Reality tool":"This is the Virtual Reality tool.","VR Toggle Move":"VR Toggle Move","START Auto Move":"START Auto Move","STOP Auto Move":"STOP Auto Move","VR Device Orientation":"VR Device Orientation","VR Mode Enabled Device Orientation":"VR Mode Enabled (Device Orientation)","VR Head Mounted Display":"VR Head Mounted Display","VR Mode Enabled Head Mounted Display":"VR Mode Enabled (Head Mounted Display) - Use SPACE key to toggle move control.","External Link":"External Link","View":"View","Back":"Back","Ctrl + Click to preview the link":"Ctrl + Click to preview the link","Levels":"Levels","Markup":"Markup","Write Something":"Write something...","Add Length":"Add Length","Measure":"Measure","Select Object":"Select Object","Vertex":"Vertex","Edge":"Edge","Face":"Face","Delta":"Delta","Unit type":"Unit type","Decimal feet":"Decimal feet","Feet and fractional inches":"Feet and fractional inches","Feet and decimal inches":"Feet and decimal inches","Decimal inches":"Decimal inches","Fractional inches":"Fractional inches","Meters":"Meters","Centimeters":"Centimeters","Millimeters":"Millimeters","Meters and centimeters":"Meters and centimeters","Points":"Points","Unknown":"Unknown","Precision":"Precision","Enable free measure":"Enable free measure","Isolate measurement":"Isolate measurement","Restart":"Restart","Select two points":"Select two points to calibrate drawing","Calibration":"Calibration","Calibrate":"Calibrate","Define Size":"Define Size","Set Calibration":"Set Calibration","Calibration Message":"Before using the ruler, the scale for this sheet needs to be set and calibrated","Calibrate Now":"Calibrate Now","Add Calibration":"Add Calibration","Calibration Required":"Calibration Required","Distance":"Distance","Angle":"Angle","Area":"Area","Arc":"Arc","Delete measurement":"Delete measurement","Measure settings":"Measure settings","Done":"Done","Show minimap":"Show minimap","Toggles availability of the Minimap":"Toggles availability of the Minimap","Minimap":"Minimap","3D Mini-map":"3D Mini-map","Show 3D mini-map":"Show 3D mini-map","Toggles availability of the 3D mini-map when using first person mode":"Toggles availability of the 3D mini-map when using first person mode.","Min":"Min","Max":"Max","Compared Documents":"Compared Documents","Hide colors":"Hide colors","Show colors":"Show colors","Finish align":"Finish align","Align":"Align","Document":"Document","Uploaded By":"Uploaded By","Issuance date":"Issuance date","At":"At","Close Panel":"Close Panel","ProgressLoading":"Loading...","ProgressRendering":"Rendering...","ProgressOptimizing":"Optimizing...","INITIATING DIRECT LINK":"INITIATING DIRECT LINK...","CONTACTING MOTHERSHIP":"CONTACTING MOTHERSHIP...","DISCONNECTED":"DISCONNECTED!","Remote Control":"Remote Control","Reload main viewer and pair again":"Reload main viewer and pair again.","Go to this link":"Go to this link:","Scan the QR code with your device":"Scan the QR code with your device:","or":"or","Pair with controller device":"Pair with controller device","Rendering Options":"Rendering Options","Background Color":"Background color:","Cel Shaded":"Cel Shaded","AO Enabled":"AO Enabled:","@AO Enabled":{"description":"AO means Ambient Occlusion. Abbreviated to save space"},"AO Radius":"AO Radius:","@AO Radius":{"description":"AO means Ambient Occlusion. Abbreviated to save space"},"AO Intensity":"AO Intensity:","@AO Intensity":{"description":"AO means Ambient Occlusion. Abbreviated to save space"},"Shadow Alpha":"Shadow Alpha:","Shadow Color":"Shadow Color:","Reflection Alpha":"Reflection Alpha:","Reflection Color":"Reflection Color:","Environment":"Environment","Tonemap Method":"Tonemap method:","Exposure Bias":"Exposure bias:","Light Intensity":"Light Intensity:","FOV-degrees":"FOV (degrees):","@FOV-degrees":{"description":"FOV is abbreviation for 'field of view angle'."},"Frame rate":"Frame rate:","None":"None","Canon-RGB":"Canon (RGB)","Canon-Lum":"Canon (Lum)","Rotate page":"Rotate page","Stress reference":"Stress reference","Displays the distribution of stress based on the factor of safety value set in the Objectives and Limits dialog in the Define workspace.":"Displays the distribution of stress based on the factor of safety value set in the Objectives and Limits dialog in the Define workspace.","High":"High","Ideal":"Ideal","Low":"Low","Model View":"Model View","Stress View":"Stress View","Von Mises stress (Pa)":"Von Mises stress (Pa)","Analysis display":"Analysis display","Von Mises stress":"Von Mises stress","Factor of safety":"Factor of safety","For all displayed outcomes":"For all displayed outcomes","Displays the distribution of von Mises stress on the surface of the generated outcome.":"Displays the distribution of von Mises stress on the surface of the generated outcome.","Displays the distribution of the factor of safety on the surface of the generated outcome.":"Displays the distribution of the factor of safety on the surface of the generated outcome.","Min Stress":"Min. __min__","Max Stress":"Max. __max__","Min FOS":"Min: __min__","Max FOS":"Max: __max__","Min Value":"__min__ (Min)","Max Value":"__max__ (Max)","Units Stress":"Von Mises stress (__units__)","Stress Status":"__status__","Stress Text":"__statusText__","Section analysis":"Section analysis","Add X plane":"Add X plane","Add Y plane":"Add Y plane","Add Z plane":"Add Z plane","Add box":"Add box","Settings":"Settings","Configuration":"Configuration","Navigation":"Navigation","Performance":"Performance","Appearance":"Appearance","ViewCube":"ViewCube","Show ViewCube":"Show ViewCube","ViewCube acts on pivot":"ViewCube acts on pivot","Orbit":"Orbit","Fusion style orbit":"Fusion-style orbit","Orbit past world poles":"Orbit past world poles","Zoom":"Zoom","Zoom towards pivot":"Zoom toward pivot","Reverse mouse zoom direction":"Reverse mouse zoom direction","Mouse":"Mouse","Left handed mouse setup":"Left-handed mouse setup","Set pivot with left mouse button":"Set pivot with left mouse button","Open properties on select":"Open properties on select","Prototypes":"Prototypes","New First Person Tool":"New First Person Tool","Performance Optimization":"Performance Optimization","Disable shadow effect":"Disable shadow effect","Progressive display":"Progressive display","Display":"Display","Ghost hidden objects":"Ghost hidden objects","Display Lines":"Display lines","Display Points":"Display points","Display edges":"Display edges","Display Section Hatches":"Display Section Hatches","Vector Viewing":"Vector Viewing","Display Units":"Display Units","File units":"File units","Inches":"Inches","Feet":"Feet","File precision":"File precision","Selection":"Selection","Selection Mode":"Selection Mode","Leaf Object":"Leaf Object","First Object":"First Object","Last Object":"Last Object","Visual Quality Optimization":"Visual Quality Optimization","Anti-aliasing":"Anti-aliasing","Ambient shadows":"Ambient shadows","Ground shadow":"Ground shadow","Ground reflection":"Ground reflection","Existing behavior":"Existing behavior","2D Sheet Color":"2D Sheet Color","Loading Animation":"Loading Animation","Environment Image Visible":"Environment Image Visible","Environments and Lighting Selection":"Environments and Lighting Selection","Restore all default settings":"Restore all default settings","Restore":"Restore","More":"More","Look Direction":"Look Direction","Reverse horizontal look direction":"Reverse horizontal look direction","Reverse vertical look direction":"Reverse vertical look direction","Scroll Speed":"Scroll Speed","Drag Speed":"Drag Speed","Changes sensitivity of mouse movement with the zoom tool":"Changes sensitivity of mouse movement with the zoom tool","Changes sensitivity of the mouse scroll wheel when zooming":"Changes sensitivity of the mouse scroll wheel when zooming","Toggles availability of the ViewCube navigation control":"Toggles availability of the ViewCube navigation control.","When enabled, the ViewCube orbits the view around the active pivot point When disabled, it orbits around the center of the view":"When enabled, the ViewCube orbits the view around the active pivot point. When disabled, it orbits around the center of the view.","Enables Fusion-style orbit overlay and gives the ability to lock orbit axis":"Enables Fusion-style orbit overlay and gives the ability to lock orbit axis.","Allows view rotation to continue past the model’s North Pole":"Allows view rotation to continue past the model’s North Pole.","When disabled, zooming operations are centered at the current cursor location":"When disabled, zooming operations are centered at the current cursor location.","Toggles direction of zooming in and out":"Toggles direction of zooming in and out.","Swaps the buttons on the mouse":"Swaps the buttons on the mouse.","Change left-click behavior to set new pivot point (overrides select object)":"Change left-click behavior to set new pivot point (overrides select object).","Always show properties upon selecting object":"Always show properties upon selecting object.","Enable new walkthrough mode":"Enable new walkthrough mode.","Provides faster response(but degrades quality) while navigating":"Provides faster response(but degrades quality) while navigating","Shows incremental updates of the view and allows for more responsive interaction with the model (some elements may flicker) This improves perceived waiting time":"Shows incremental updates of the view and allows for more responsive interaction with the model (some elements may flicker). This improves perceived waiting time.","Leave hidden objects slightly visible":"Leave hidden objects slightly visible.","Large model experience":"Large model experience","Improves your overall experience viewing large models. The changes will take effect on the next page load.":"Improves your overall experience viewing large models. The changes will take effect on the next page load.","Toggles display of line objects":"Toggles display of line objects.","Toggles display of point objects":"Toggles display of point objects.","Shows outline of model surfaces":"Shows outline of model surfaces.","Shows hatch pattern for section planes this does not apply to section boxes":"Shows hatch pattern for section planes this does not apply to section boxes","Remove jagged edges from lines":"Remove jagged edges from lines.","Improve shading of occluded surfaces":"Improve shading of occluded surfaces.","Add simulated ground surface shadows":"Add simulated ground surface shadows.","Add simulated ground surface reflections":"Add simulated ground surface reflections.","Switch sheet color white to black":"Switch sheet color white to black","Animate lines during loading":"Animate lines during loading","Shows lighting environment as background":"Shows lighting environment as background.","Toggles direction of left and right camera movement":"Toggles direction of left and right camera movement","Toggles direction of up and down camera movement":"Toggles direction of up and down camera movement","Simulation":"Simulation","Simulation Results":"Simulation Results","Simulation Model Structure Loading":"Simulation Model Structure Loading","Static Stress":"Static Stress","Modal Frequencies":"Modal Frequencies","Analysis Type":"Analysis Type","Nodes":"Nodes","Elements":"Elements","Safety Factor":"Safety Factor","Stress":"Stress","Strain":"Strain","Von Mises":"Von Mises","Per Body":"Per Body","Total":"Total","Equivalent":"Equivalent","Displacement":"Displacement","Constraints":"Constraints","Loads":"Loads","Total Modal Displacement":"Total Modal Displacement","Name":"Name","Status":"Status","Attached":"Attached","Type":"Type","Magnitude":"Magnitude","Simulation Setup":"Simulation Setup","Simulation Setup Loading":"Simulation Setup Loading","Free orbit":"Free orbit","Pan":"Pan","Zoom window":"Zoom window","Walk to":"Walk to (double-click to Walk through)","Camera interactions":"Camera interactions","Fit to view":"Fit to view (F)","Focal length":"Focal length (Ctrl+Shift drag)","Focal Length":"Focal length","Roll":"Roll (Alt+Shift drag)","Model structure":"Model structure","Explode model":"Explode model","Layer Manager":"Layer manager","Reset model":"Reset model","Reset drawing":"Reset drawing","Properties":"Properties","Document Browser":"Document Browser","Comments and Markers":"Comments and markers","Rendering options":"Rendering options","Full screen":"Full screen","Exit full screen":"Exit full screen","Layers":"Layers","Enter filter term":"Enter filter term","Show/hide all layers":"Show/hide all layers","Show/hide this layer":"Show/hide this layer","Background and lighting":"Background and lighting","Performance and appearance settings":"Performance and appearance settings","Navigation and selection settings":"Navigation and selection settings","RaaS":"RaaS","@RaaS":{"description":"RaaS stands for Rendering as a Service"},"Gallery":"Gallery","FPS statistics":"FPS statistics","@FPS statistics":{"description":"FPS stands for Frames Per Seconds"},"Model statistics":"Model statistics","Show search bar":"Show search bar","Language":"Language","Error":"Error","Search the currently displayed content":"Search the currently displayed content","Comment and Markers":"Comment and markers","Comment":"Comment","Post":"Post","Hide Markers":"Hide markers","Show Markers:":"Show markers:","Orthographic View Set":"Orthographic View Set","The view is set to Orthographic":"The view is set to Orthographic. Changing the focal length will switch to Perspective.","Do not show this message again":"Do not show this message again","The view is set to Orthographic Beeline":"The view is set to Orthographic. Using this tool will switch to Perspective.","Long Focal Length View Set":"Long Focal Length View Set","The view is set to a long focal length":"This view has a long focal length. Using this tool will set a short focal length.","Go Home":"Go Home","Orthographic":"Orthographic","Perspective":"Perspective","Perspective with Ortho Faces":"Perspective with Ortho Faces","Set current view as Home":"Set current view as Home","Focus and set as Home":"Focus and set as Home","Reset Home":"Reset Home","Set current view as Front":"Set current view as Front","Set current view as Top":"Set current view as Top","Reset orientation":"Reset orientation","TOP":"TOP","BOTTOM":"BOTTOM","FRONT":"FRONT","RIGHT":"RIGHT","LEFT":"LEFT","BACK":"BACK","Show Selected":"Show selected","Show All Objects":"Show all objects","Show All Layers":"Show all layers","Focus":"Focus","Clear Selection":"Clear selection","Show Properties":"Show properties","Section Box":"Section Box","Section":"Section","Pivot":"Pivot","Section Plane":"Section Plane","Model":"Model","Tree":"Tree","Thumbnails":"Thumbnails","Model browser":"Model browser","Browser":"Browser","Filter by name":"Filter by name","Search":"Search","No Results":"No Results","Try another term":"Please try searching another term","Spinner Loading":"Loading","Loading Model for Change Visualization":"Loading Model for Change Visualization","Loading element properties":"Loading element properties","Computing change visualization":"Computing change visualization","Model translation failed for view '%(viewableName)'":"Model translation failed for view '%(viewableName)'","Model Browser is not available":"Model Browser is not available","Object Properties":"Object properties","Object Properties Loading":"Object properties loading...","No properties to display":"No properties to display","Other":"Other","Model Properties":"Model properties","Loading model":"Loading %(name)","Yes":"Yes","No":"No","Properties %(value)":"Properties %(value)","Sum":"Sum","Average":"Average","Count":"Count","Median":"Median","Mode":"Mode","Range":"Range","English":"English","Russian":"Russian","Japanese":"Japanese","Korean":"Korean","Spanish":"Spanish","Chinese Simplified":"Chinese Simplified","Chinese Traditional":"Chinese Traditional","Czech":"Czech","Polish":"Polish","Swedish":"Swedish","Dutch":"Dutch","Danish":"Danish","French":"French","Canadian French":"Canadian French","German":"German","Italian":"Italian","Portuguese Brazil":"Portuguese Brazil","Turkish":"Turkish"} \ No newline at end of file diff --git a/public/autodesk/res/locales/zh-Hant/VCcrossRGBA8small.dds b/public/autodesk/res/locales/zh-Hant/VCcrossRGBA8small.dds new file mode 100644 index 0000000..544a6fd Binary files /dev/null and b/public/autodesk/res/locales/zh-Hant/VCcrossRGBA8small.dds differ diff --git a/public/autodesk/res/locales/zh-Hant/allstrings.json b/public/autodesk/res/locales/zh-Hant/allstrings.json new file mode 100644 index 0000000..32f04e6 --- /dev/null +++ b/public/autodesk/res/locales/zh-Hant/allstrings.json @@ -0,0 +1 @@ +{"@@locale":"zh-Hant","@@context":"Viewer","@@contact":"","ATF-1008":"錯誤: {0}","ATF-1023":"{0} 參考檔案遺失。","ATF-1024":"檔案的版本: {0} 不受支援。","ATF-1025":"檔案: {0} 已損壞或無效。","ATF-1026":"檔案: {0} 是空的。","ATF-1028":"無法載入元件: {0}。","ATF-1031":"未經授權的檔案類型。","ATF-1032":"組合特徵已遺失。","ATF-1033":"檔案中的圖元: {0} 不受支援。","ATF-1034":"檔名: {0} 無效。","AssImp-OpenFailure":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","AssImp-InternalError":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","AssImp-CannotCreateOutput":"無法寫入輸出檔案。","AssImp-CannotLoadOBJ":"無法載入 OBJ 檔案。","AssImp-MissingTextures":"缺少的材質影像檔案:
    {0}
","AutoCAD-MissingReferences":"缺少參考某些參考未上載,因此圖面可能不會完全顯示。請上載包含所有缺少參考檔案的複合設計:
    {0}
","AutoCAD-MissingReference":"缺少參考一個參考未上載,因此圖面可能不會完全顯示。請上載包含缺少參考檔案的複合設計: {0}","AutoCAD-NoDWFxFilesGenerated":"圖面可能不包含可見物件。並未產生任何視圖。","AutoCAD-PasswordProtectedFile":"抱歉!此項目無法檢視,因為它受密碼保護。請移除密碼,然後再次上載以進行檢視。","AutoCAD-InvalidFile":"抱歉!圖檔無效,無法進行檢視。請嘗試在 AutoCAD 中修復檔案,然後再次上載以進行檢視。","AutoCAD-ProxyGraphicsFalse":"圖面包含不會顯示在檢視器中的自訂物件。","AutoCAD-ProxyGraphicsTrue":"圖面包含自訂物件。您可能無法看到或搜尋某些自訂物件的性質。","AutoCAD-ClippedView":"2D 模型視圖會截取至上次儲存的視圖,且可能不會顯示整個圖面。使用所需視圖在 AutoCAD 中重新儲存圖面,且如果已截取視圖時再次進行上載。","AutoCAD-MissingShxFonts":"缺少字體已替代圖檔某些缺少的字體: {0}","AutoCAD-MissingTtfFonts":"缺少字體已替代圖檔某些缺少的字體: {0}","AutoCAD-MissingPlotStyleFiles":"缺少出圖型式檔: {0}","DWF2D-Corrupt_File_Error":"無法開啟損壞的 DWF/DWFx 檔。","DWF2D-Building_XML_Object_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-File_Not_In_DWF":"無法開啟檔案,DWF/DWFx 檔內容中沒有預期的資源。","DWF2D-File_Open_Error":"無法開啟 DWF/DWFx 檔。","DWF2D-File_Read_Error":"無法讀取 DWF/DWFx 檔。","DWF2D-File_Write_Error":"無法寫入 DWF/DWFx 檔。","DWF2D-Internal_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Invalid_Argument_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Invalid_XML_Content_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Invalid_DWF_Version_Error":"無效的 DWF/DWFx 檔版本。","DWF2D-Not_A_DWF_Error":"無法開啟,不是 DWF/DWFx 檔。","DWF2D-Open_Section_Descriptor_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Out_Of_Memory_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Stream_Write_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Temp_File_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Toolkit_Usage_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-ZipLib_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Bad_Password_Error":"無法開啟受密碼保護的檔案。","DWF2D-Resource_Handler_Not_Specified_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Not_Implemented":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Stream_In_Progress":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-User_Requested_Abort":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Unsupported_File_Type_Error":"無法開啟,不是一個有效的 DWF/DWFx 檔。","DWF2D-Temp_Path_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Incompatable_XML_Version_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Incompatible_Section_Type":"處理 DWF/DWFx 檔時發現不明的剖面資源。","DWF2D-Drm_Encryption":"無法開啟 DRM / 受版權保護的檔案。","DWF2D-Load_Section_Error":"無法在 DWF/DWFx 檔中載入剖面資源。","DWF2D-Secured_Section_Type":"無法開啟 DRM / 受版權保護的檔案。","DWF2D-Unknown_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF3D-BadPassword":"無法開啟受密碼保護的 DWF 檔。","DWF3D-CorruptFile":"無法開啟 DWF 檔。資料似乎已損壞。","DWF3D-InvalidVersion":"無法開啟 DWF 檔。不受支援的版本。","DWF3D-DRMFailure":"無法開啟 DWF 檔。檔案包含受 DRM 保護的內容。","Navisworks-2DSheetUnsupported":"Navisworks 2D 圖紙不受支援。","Navisworks-MissingXref":"缺少外部參考檔:
    {0}
","Navisworks-EmptyFile":"沒有可以顯示的幾何圖形。","Navisworks-PointUnsupported":"Navisworks 點和鎖點不受支援。","Navisworks-Failed":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","Revit-UnsupportedFileType":"檔案不是 Revit 檔案或為不受支援的版本。","Revit-UnsupportedFileType_rfa":"該檔案不是 Revit 檔案。","Revit-UnsupportedFileType_rte":"該檔案不是 Revit 檔案。","Revit-UnsupportedFileType_rft":"該檔案不是 Revit 檔案。","Revit-MissingLink":"缺少連結檔案:
    {0}
","Revit-UpgradeWarning":"已移除某些元素,以解決升級期間遇到的問題。請注意,Revit 檔案可能不會正常顯示。為取得最佳結果,請在 Revit 中開啟檔案,接著解決警告並重新儲存,然後再試一次。","Revit-UpgradeError":"升級專案失敗。請使用目前的 Revit 版本升級專案,然後再試一次。","Revit-FileOpenError":"開啟檔案失敗。請在目前的 Revit 版本中開啟檔案,接著解決警告和錯誤並重新儲存,然後再試一次。","Revit-Timeout":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","Revit-MassVisibilitySettingFailure":"在 3D 視圖中匯出量體失敗。","Revit-View3DExportError":"匯出 3D 視圖失敗 - {0}。","Revit-View2DExportError":"匯出 2D 視圖失敗 - {0}。","Revit-ThumbnailGenerationError":"產生視圖預覽影像失敗 - {0}。","Revit-DocumentCorruption":"檔案已損壞。請在目前的 Revit 版本中開啟檔案,以參閱更多關於損壞的詳細資料。","Revit-InternalError":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","Revit-UnsupportedVersionOlder":"此檔案是以我們不支援的舊版 Revit 儲存。請將此專案升級至 Revit {0} 或更高版本。","Revit-UnsupportedVersionLater":"此檔案是以我們不支援的新版 Revit 儲存。
","Revit-InvalidLink":"無法載入連結檔案:
    {0}
","Recent Queries":"最近的查詢","Loading":"正在載入...","Loading Search":"正在載入搜尋...","Load More":"載入更多","Results Count":"在 {2} 找到 \"{1}\" 的 {0} 個結果","No Results for":"在 __1__ 沒有找到 \"__0__\" 的結果","Open Another Window":"在另一個視窗中開啟","Open This Window":"在此視窗中開啟","Geometries Loading":"正在處理模型性質。請重試搜尋以獲得更完整的結果。","Recent Queries Empty":"沒有先前的查詢可展示。","Selected Node Result Not Visible":"所選節點不可見。","No Visible Node Results For Geometry":"在此幾何圖形中的查詢沒有結果或結果中沒有可見的節點。","Saved Queries":"儲存的查詢","{0} saved of {1} allocated":"已儲存 {0} 個 (共配置 {1} 個)","Saved queries settings":"儲存的查詢設定","There are no queries saved for this document":"此文件沒有儲存任何查詢。","Saved Queries Settings":"儲存的查詢設定","Space":"空間","Saving":"正在儲存...","Deleting":"正在刪除…","No queries saved":"沒有儲存任何查詢。","An error occur while saving query, please try again later":"儲存查詢時發生錯誤,請稍後再試一次。","An error occur while deleting query, please try again later":"刪除查詢時發生錯誤,請稍後再試一次","Error saving query cause query list was outdated. Review list and retry operation.":"儲存查詢時發生錯誤,導致查詢清單已過期。請檢閱清單並重試作業。","Error deleting query cause query list was outdated. Review list and retry operation.":"刪除查詢時發生錯誤,導致查詢清單已過期。請檢閱清單並重試作業。","Error getting queries, please close and retry":"取得查詢時發生錯誤,請關閉並重試","Delete":"刪除","Cancel":"取消","Are you sure you want to delete the query from your list?":"您確定要從清單刪除查詢 {0}?","The query is already saved.":"查詢已儲存。","Maximum number of queries saved exceeded, please delete some queries or contact to your administrator":"儲存的查詢超出最大數目,請刪除一些查詢或聯絡您的管理員。","TranslationWorker-TextureResizingFailed":"圖面的材質並未正確處理。","TranslationWorker-ThumbnailGenerationFailed":"圖面的縮圖並未正確建立。","TranslationWorker-InternalFailure":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","TranslationWorker-InsufficientDataFromExtractor":"沒有產生足夠的圖面資訊使此檔案可供檢視。請聯絡支援以取得協助。","TranslationWorker-RecoverableInternalFailure":"處理此檔案時發生錯誤。若稍後再嘗試處理,可能就會成功。","New First Person":"新的第一人稱","Navigate in First Person":"以第一人稱導覽","Walk":"漫遊","Go Up and Down":"向上和向下","Release key to land on the nearest floor":"放開按鍵以置於最近的樓板上","Move":"移動","OR":"或","Adjust Speed":"調整速度","Run":"執行","Direction Key":"方向鍵","Teleport":"傳送","Double click on destination":"按兩下目標","Look Around":"環視","Drag with left key on view":"使用左鍵在視圖上拖曳","Dont remind me again":"不要再提醒我","Ok Got It":"好,瞭解了。","Enable Gravity":"啟用重力","Toggles gravity while in first person mode":"在第一人稱模式時切換重力","Location Icons":"位置圖示","Show location icons":"展示位置圖示","Toggles availability of the location icons when looking at the project model":"查看專案模型時切換位置圖示的可用性。","Components":"元件","Sheets":"圖紙","%(attributeChanged) by":"%(attributeChanged) 差異","%(attributeChanged) to":"%(attributeChanged) 結果","%(moved) %(units) in %(axis)":"沿 %(axis) 軸移動了 %(moved) %(units)","%(rotated) around %(axis)":"繞 %(axis) 軸旋轉了 %(rotated)","%(scaled) on %(axis)":"在 %(axis) 軸調整了 %(scaled) 倍","%(versionB) vs. %(versionA)":"%(versionB) 與 %(versionA)","Add the \"%(categoryName)\" category as a filter":"加入「%(categoryName)」品類做為篩選","Added":"已加入","An error occured while trying to find differences between versions.":"嘗試尋找不同版本之間的差異時發生錯誤。","Architecture":"建築","Back to top":"返回頂端","Change list":"變更清單","Changes":"變更","Changes between %(versionB) & %(versionA)":"%(versionB) 與 %(versionA) 之間的變更","Details":"詳細資料","Diff Failed":"比較差異失敗","Disciplines affected":"受影響的領域","Electrical":"電氣","Exit comparing":"結束比較","Flat Result List":"展開結果清單","Hide":"隱藏","Hide \"%(name)\" changes":"隱藏「%(name)」變更","Hide Selected":"隱藏選取的","Hide property changes":"隱藏性質變更","Hide shape changes":"隱藏造型變更","Hide transformations":"隱藏轉換","INFORMATION":"資訊","Isolate":"隔離","Isolate Selected":"隔離選取的項目","Isolated or hidden in view":"在檢視中隔離或隱藏的項目","Learn more":"進一步瞭解","Mechanical":"機械","Miscellaneous":"雜項","Modification type":"修改類型","Modified":"已修改","Moved by":"移動距離","No search results found":"找不到任何搜尋結果","OTG translation failed for model \"%(modelName)\" using version \"%(modelVersion)\"":"OTG 轉換失敗,因為模型「%(modelName)」使用版本「%(modelVersion)」","Overlay":"覆疊","Piping":"配管","Project Model":"專案模型","Remove filter that includes elements and categories having \"%(filterText)\" in their name":"移除其元素和品類的名稱有「%(filterText)」的篩選","Remove the \"%(categoryName)\" category as a filter":"移除做為篩選的「%(categoryName)」品類","Removed":"已移除","Result as Tree":"以樹狀呈現結果","Rotated by":"旋轉角度","Scaled by":"調整比例","Search + Filter":"搜尋與篩選","Show \"%(name)\" changes":"展示「%(name)」變更","Show All":"全部展示","Show Differences":"展示差異","Show in model":"在模型中展示","Show property changes":"展示性質變更","Show shape changes":"展示造型變更","Show the results in a flat list":"以展開的清單展示結果","Show the results in a tree view":"以樹狀檢視展示結果","Show transformations":"展示轉換","Side by Side":"並排","Structure":"結構","The file type is not fully supported.":"不完全支援此檔案類型。","The file type is not fully unsupported for 2D":"不完全支援 2D 的此檔案類型","The shape of this object has been changed":"此物件的造型已變更","There are too many results to display at once. Use the filters to reduce the amount.":"結果太多,無法一次顯示。請使用篩選減少數量。","This element has been added in version %(version)":"此元素已加入版本 %(version) 中","This element has been removed in version %(version)":"此元素已從版本 %(version) 中移除","Toggle between different disciplines":"切換不同領域","Toggle between different types of modifications":"切換不同類型的修改","of %(maxCount)":"/ %(maxCount)","undefined":"未定義","Click a 2D location to view that space in 3D":"按一下 2D 位置,以 3D 檢視該空間","Current view is not supported by Place Me":"Place Me 不支援目前視圖","Click on a location to ground yourself, then select a camera direction":"按一下某個位置固定您自己,然後選取相機方向","View object in 3D":"以 3D 檢視物件","Simple Grey":"簡單的灰色","Grey Room":"灰色房間","Photo Booth":"大頭貼","Sharp Highlights":"銳利亮顯","Contrast":"對比","Infinity Pool":"無邊際泳池","Tranquility":"寧靜","Dark Sky":"黑暗天空","Simple White":"簡單的白色","Riverbank":"河岸","Rim Highlights":"邊緣亮顯","Cool Light":"冷光","Warm Light":"暖光","Soft Light":"柔光","Grid Light":"格線光源","Plaza":"廣場","Snow Field":"雪地","Field":"田野","Crossroads":"交叉路","Seaport":"海港","Glacier":"冰川","Boardwalk":"木板步道","RaaS Test Env":"RAAS 測試環境","Flat Shading":"平板描影","Harbor":"港口","Night":"夜晚","Parking":"停車場","River Road":"河岸道路","Custom Model defined":"(自訂: 定義的模型)","header-sorry":"抱歉","header-warning":"警告","Error Occurred":"發生錯誤","OK":"確定","Viewer-UnknownFailure":"抱歉我們似乎有某些技術問題,無法完成您的請求。請嘗試再次載入該項目。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Viewer-BadData":"抱歉您嘗試檢視的項目未完成處理。請嘗試再次載入該項目。請再次上載檔案,以查看是否能修正問題。","Viewer-NetworkError":"抱歉我們似乎有某些技術問題,無法完成您的請求。請嘗試再次載入該項目。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Viewer-AccessDenied":"無存取權限很抱歉。您沒有存取此項目所需的權限。 請聯絡作者。","Viewer-FileNotFound":"抱歉我們無法顯示您正在尋找的項目。它可能尚未處理。它可能已遭到移動、刪除或您可能使用損壞檔案或不受支援的檔案格式。請嘗試再次載入該項目。請再次上載檔案,以查看是否能修正問題。請參閱受支援格式的清單。","Viewer-ServerError":"抱歉我們似乎有某些技術問題,無法完成您的請求請嘗試再次載入該項目。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Viewer-UnhandledResponseCode":"網路問題 很抱歉。我們似乎有某些技術問題,無法完成您的請求。請嘗試再次載入該項目。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Viewer-WebGlNotSupported":"抱歉我們無法展示此項目,因為此瀏覽器不支援 WebGL。請嘗試 Google Chrome、Mozilla Firefox,或其他支援 WebGL 3D 圖形的瀏覽器。若要取得更多資訊,請參閱 A360 瀏覽器需求。","Viewer-WebGlDisabled":"抱歉我們無法展示此項目,因為此裝置上已停用 WebGL。若要取得更多資訊,請參閱 A360 說明。","Viewer-NoViewable":"沒有可檢視內容此項目沒有可顯示的內容。它可能尚未處理,也可能不具有我們可以顯示的內容。請聯絡作者。請再次上載檔案,以查看是否能修正問題。","Viewer-ModeIsEmpty":"模型是空的模型是空的,沒有幾何圖形可供檢視器展示。 請聯絡作者。 請再次上載檔案,以查看是否能修正問題。","Viewer-RTCError":" 抱歉我們無法連接至伺服器的協同合作。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Sorry":"抱歉","The file extension loaded into the Viewer is not supported":"不支援載入檢視器的副檔名。","Try a different file":"請嘗試其他檔案。","WebGL context lost":"WebGL 環境遺失","Unable to recover from software mode. Please restart your browser and reload the Viewer.":"無法從軟體模式恢復。請重新啟動瀏覽器並重新載入檢視器。","If you continue to encounter this issue when viewing this model, we recommend switching to a different browser.":"如果您在檢視此模型時持續遇到此問題,建議切換至其他瀏覽器。","UNKNOWN FAILURE":"未知的失敗","BAD DATA":"不良資料","NETWORK ERROR":"網路錯誤","NETWORK ACCESS DENIED":"網路存取遭拒","NETWORK FILE NOT FOUND":"找不到網路檔案","NETWORK SERVER ERROR":"網路伺服器錯誤","NETWORK UNHANDLED RESPONSE CODE":"網路未處理的回應代碼","BROWSER WEBGL NOT SUPPORTED":"瀏覽器 WebGL 不受支援","BAD DATA NO VIEWABLE CONTENT":"不良資料沒有可檢視內容","Network failure":"網路故障","Access denied to remote resource":"遠端資源存取遭拒","Remote resource not found":"找不到遠端資源","Server error when accessing resource":"存取資源時發生伺服器錯誤","Unhandled response code from server":"伺服器產生的未處理回應代碼","Malformed data received when requesting file":"請求檔案時收到錯誤的資料","Malicious document content detected Abort loading":"偵測到惡意文件內容。中斷載入。","No viewable content":"沒有可檢視內容","An exception occurred while loading the document":"載入文件時發生例外錯誤","Properties failed to load since model does not exist":"性質無法載入,因為模型不存在","ObjectTree failed to load since model does not exist":"ObjectTree 無法載入,因為模型不存在","Search failed since model does not exist":"搜尋失敗,因為模型不存在","Viewer failed to initialize":"檢視器初始化失敗","Unhandled exception while reading pack file":"讀取打包檔案時發生未處理的例外狀況","Unhandled exception while reading geometry":"讀取幾何圖形時發生未處理的例外狀況","Unable to load geometry":"無法載入幾何圖形","Failed to load properties":"載入性質失敗","Unhandled exception while loading SVF":"載入 SVF 時發生未處理的例外狀況","Failure while loading SVF":"載入 SVF 時發生錯誤","First Person Tool":"第一人稱工具","First person":"第一人稱","Use the WASD and QE keys to move":"使用 WASD 和 QE 鍵可移動。Shift+按鍵可更快速移動,或使用 +/- 鍵調整漫遊速度。G 鍵可切換視圖方位拖曳模式。按 F1 可檢視此說明。","View Orientation Drag Mode Toggled":"已切換為視圖方位拖曳模式","Press the primary mouse button and drag to change the view orientation":"按下主要滑鼠按鈕並拖曳,以變更視圖方位。","Move the cursor to change the view orientation":"移動游標以變更視圖方位。","Virtual Reality Tool":"虛擬實境工具","This is the Virtual Reality tool":"此為虛擬實境工具。","VR Toggle Move":"VR 切換移動","START Auto Move":"開始自動移動","STOP Auto Move":"停止自動移動","VR Device Orientation":"VR 裝置方位","VR Mode Enabled Device Orientation":"VR 模式已啟用 (裝置方位)","VR Head Mounted Display":"VR 抬頭顯示器","VR Mode Enabled Head Mounted Display":"VR 模式已啟用 (抬頭顯示器) - 使用空格鍵以切換移動控制。","External Link":"外部連結","View":"檢視","Back":"上一步","Ctrl + Click to preview the link":"按住 Ctrl 的同時按一下以預覽連結","Levels":"樓層","Markup":"標記","Write Something":"寫點東西...","Add Length":"加入長度","Measure":"測量","Select Object":"選取物件","Vertex":"頂點","Edge":"邊","Face":"面","Delta":"差值","Unit type":"單位類型","Decimal feet":"小數英呎","Feet and fractional inches":"英呎和分數英吋","Feet and decimal inches":"英呎和小數英吋","Decimal inches":"小數英吋","Fractional inches":"分數英吋","Meters":"公尺","Centimeters":"公分","Millimeters":"公釐","Meters and centimeters":"公尺和公分","Points":"點","Unknown":"不明","Precision":"精確度","Enable free measure":"啟用自由測量","Isolate measurement":"隔離測量","Restart":"重新啟動","Select two points":"選取兩個點以校正圖面","Calibration":"校正","Calibrate":"校正","Define Size":"定義大小","Set Calibration":"設定校正","Calibration Message":"使用尺規之前,必須先設定和校正此圖紙的比例","Calibrate Now":"立即校正","Add Calibration":"加入校正","Calibration Required":"需要校正","Distance":"距離","Angle":"角度","Area":"面積","Arc":"弧","Delete measurement":"刪除測量","Measure settings":"測量設定","Done":"完成","Show minimap":"展示小地圖","Toggles availability of the Minimap":"切換小地圖的可用性","Minimap":"小地圖","3D Mini-map":"3D 小地圖","Show 3D mini-map":"展示 3D 小地圖","Toggles availability of the 3D mini-map when using first person mode":"使用第一人稱模式時切換 3D 小地圖的可用性","Min":"最小值","Max":"最大值","Compared Documents":"比較的文件","Hide colors":"隱藏顏色","Show colors":"展示顏色","Finish align":"完成對齊","Align":"對齊","Document":"文件","Uploaded By":"上傳者","Issuance date":"發佈日期","At":"於","Close Panel":"關閉面板","ProgressLoading":"正在載入...","ProgressRendering":"正在彩現...","ProgressOptimizing":"正在最佳化...","INITIATING DIRECT LINK":"正在初始化直接連結...","CONTACTING MOTHERSHIP":"正在聯絡主要裝置...","DISCONNECTED":"已中斷連接!","Remote Control":"遠端控制","Reload main viewer and pair again":"重新載入主檢視器並再次配對。","Go to this link":"移往此連結:","Scan the QR code with your device":"使用您的裝置掃瞄 QR 碼:","or":"或","Pair with controller device":"與控制器裝置配對","Rendering Options":"彩現選項","Background Color":"背景顏色:","Cel Shaded":"卡通渲染","AO Enabled":"AO 已啟用:","@AO Enabled":{"description":"AO 表示環境光遮蔽。縮寫以節省空間"},"AO Radius":"AO 半徑:","@AO Radius":{"description":"AO 表示環境光遮蔽。縮寫以節省空間"},"AO Intensity":"AO 強度:","@AO Intensity":{"description":"AO 表示環境光遮蔽。縮寫以節省空間"},"Shadow Alpha":"陰影 α (A):","Shadow Color":"陰影顏色:","Reflection Alpha":"反射 α (A):","Reflection Color":"反射顏色:","Environment":"環境","Tonemap Method":"色調貼圖方法:","Exposure Bias":"曝光偏差:","Light Intensity":"光源強度:","FOV-degrees":"FOV (度):","@FOV-degrees":{"description":"FOV 是「視野角度」的縮寫。"},"Frame rate":"畫面速率:","None":"無","Canon-RGB":"Canon (RGB)","Canon-Lum":"Canon (明度)","Rotate page":"旋轉頁面","Stress reference":"應力參考","Displays the distribution of stress based on the factor of safety value set in the Objectives and Limits dialog in the Define workspace.":"根據在「定義」工作區的「目標和限制」對話方塊中設定的安全係數值,顯示應力的分佈。","High":"高","Ideal":"理想","Low":"低","Model View":"模型視圖","Stress View":"應力視圖","Von Mises stress (Pa)":"Von Mises 應力 (Pa)","Analysis display":"分析顯示","Von Mises stress":"Von Mises 應力","Factor of safety":"安全係數","For all displayed outcomes":"對於所有顯示的結果","Displays the distribution of von Mises stress on the surface of the generated outcome.":"顯示 von Mises 應力在產生的結果表面上的分佈。","Displays the distribution of the factor of safety on the surface of the generated outcome.":"顯示安全係數在產生的結果表面上的分佈。","Min Stress":"最小 __min__","Max Stress":"最大 __max__","Min FOS":"最小: __min__","Max FOS":"最大: __max__","Min Value":"__min__ (最小)","Max Value":"__max__ (最大)","Units Stress":"Von Mises 應力 (__units__)","Stress Status":"__status__","Stress Text":"__statusText__","Section analysis":"剖面分析","Add X plane":"加入 X 平面","Add Y plane":"加入 Y 平面","Add Z plane":"加入 Z 平面","Add box":"加入方塊","Settings":"設定","Configuration":"規劃","Navigation":"導覽","Performance":"效能","Appearance":"外觀","ViewCube":"ViewCube","Show ViewCube":"展示 ViewCube","ViewCube acts on pivot":"ViewCube 作用於樞軸","Orbit":"環轉","Fusion style orbit":"Fusion 型式環轉","Orbit past world poles":"環轉超過世界極點","Zoom":"縮放","Zoom towards pivot":"縮放至樞軸","Reverse mouse zoom direction":"反轉滑鼠縮放方向","Mouse":"滑鼠","Left handed mouse setup":"慣用左手滑鼠設置","Set pivot with left mouse button":"使用滑鼠左鍵設定樞軸","Open properties on select":"開啟選取的性質","Prototypes":"原型","New First Person Tool":"新的第一人稱工具","Performance Optimization":"效能最佳化","Disable shadow effect":"Disable shadow effect","Progressive display":"漸進式顯示","Display":"顯示","Ghost hidden objects":"幽靈隱藏物件","Display Lines":"顯示線","Display Points":"顯示點","Display edges":"顯示邊","Display Section Hatches":"顯示剖面填充線","Vector Viewing":"向量檢視","Display Units":"顯示單位","File units":"檔案單位","Inches":"英吋","Feet":"英呎","File precision":"檔案精確度","Selection":"選取","Selection Mode":"選取模式","Leaf Object":"門扇物件","First Object":"第一個物件","Last Object":"最後一個物件","Visual Quality Optimization":"視覺品質最佳化","Anti-aliasing":"消除鋸齒","Ambient shadows":"環境陰影","Ground shadow":"地面陰影","Ground reflection":"地面反射","Existing behavior":"既有行為","2D Sheet Color":"2D 圖紙顏色","Loading Animation":"載入動畫","Environment Image Visible":"環境影像可見","Environments and Lighting Selection":"環境和照明選取","Restore all default settings":"還原所有預設設定","Restore":"還原","More":"更多","Look Direction":"面對方向","Reverse horizontal look direction":"反轉水平面對方向","Reverse vertical look direction":"反轉垂直面對方向","Scroll Speed":"捲動速度","Drag Speed":"拖曳速度","Changes sensitivity of mouse movement with the zoom tool":"使用縮放工具變更滑鼠移動的敏感度","Changes sensitivity of the mouse scroll wheel when zooming":"變更滑鼠滾輪在縮放時的敏感度","Toggles availability of the ViewCube navigation control":"切換 ViewCube 導覽控制項的可用性。","When enabled, the ViewCube orbits the view around the active pivot point When disabled, it orbits around the center of the view":"啟用時,ViewCube 會圍繞作用中的樞軸點環轉視圖。停用時,則會圍繞視圖的中心環轉。","Enables Fusion-style orbit overlay and gives the ability to lock orbit axis":"啟用 Fusion 型式的環轉覆疊,並可鎖住環轉軸。","Allows view rotation to continue past the model’s North Pole":"允許視圖旋轉,以繼續超過模型的北極。","When disabled, zooming operations are centered at the current cursor location":"停用時,縮放作業會在目前的游標位置置中。","Toggles direction of zooming in and out":"切換拉近和拉遠的方向。","Swaps the buttons on the mouse":"交換滑鼠上的按鈕。","Change left-click behavior to set new pivot point (overrides select object)":"變更按一下左鍵行為以設定新的樞軸點 (取代選取物件)。","Always show properties upon selecting object":"選取物件時永遠展示性質。","Enable new walkthrough mode":"啟用新的穿越模式。","Provides faster response(but degrades quality) while navigating":"導覽時提供更快的反應 (但會降低品質)","Shows incremental updates of the view and allows for more responsive interaction with the model (some elements may flicker) This improves perceived waiting time":"展示視圖的增量更新,並允許與模型的互動更有反應 (某些元素可能會閃爍)。這樣可改善感受到的等待時間。","Leave hidden objects slightly visible":"讓隱藏的物件稍微可見。","Large model experience":"大型模型體驗","Improves your overall experience viewing large models. The changes will take effect on the next page load.":"改善檢視大型模型的整體體驗。變更將在下一頁載入時生效。","Toggles display of line objects":"切換線物件的顯示。","Toggles display of point objects":"切換點物件的顯示。","Shows outline of model surfaces":"展示模型表面的外框。","Shows hatch pattern for section planes this does not apply to section boxes":"展示剖面平面的填充線樣式,不適用於剖面框","Remove jagged edges from lines":"移除線的鋸齒狀邊緣。","Improve shading of occluded surfaces":"改善遮蔽表面的描影。","Add simulated ground surface shadows":"加入模擬的地表陰影。","Add simulated ground surface reflections":"加入模擬的地表反射。","Switch sheet color white to black":"切換白色圖紙顏色為黑色","Animate lines during loading":"載入時以動畫顯示線條","Shows lighting environment as background":"將照明環境展示為背景。","Toggles direction of left and right camera movement":"切換相機左右移動的方向","Toggles direction of up and down camera movement":"切換相機上下移動的方向","Simulation":"模擬","Simulation Results":"模擬結果","Simulation Model Structure Loading":"模擬模型結構負載","Static Stress":"靜態應力","Modal Frequencies":"模態頻率","Analysis Type":"分析類型","Nodes":"節點","Elements":"元素","Safety Factor":"安全係數","Stress":"應力","Strain":"應變","Von Mises":"Von Mises","Per Body":"每個本體","Total":"總計","Equivalent":"對等","Displacement":"位移","Constraints":"約束","Loads":"負載","Total Modal Displacement":"總模態位移","Name":"名稱","Status":"狀態","Attached":"貼附","Type":"類型","Magnitude":"大小","Simulation Setup":"模擬設置","Simulation Setup Loading":"模擬設置負載","Free orbit":"自由環轉","Pan":"平移","Zoom window":"縮放視窗","Walk to":"漫遊至 (按兩下以穿越)","Camera interactions":"相機互動","Fit to view":"佈滿視圖 (F)","Focal length":"焦距長度 (Ctrl + Shift 拖曳)","Focal Length":"焦距長度","Roll":"滾動 (Alt + Shift 拖曳)","Model structure":"模型結構","Explode model":"分解模型","Layer Manager":"圖層管理員","Reset model":"重置模型","Reset drawing":"重置圖面","Properties":"性質","Document Browser":"文件瀏覽器","Comments and Markers":"註解和標識","Rendering options":"彩現選項","Full screen":"全螢幕","Exit full screen":"結束全螢幕","Layers":"圖層","Enter filter term":"輸入篩選關鍵字","Show/hide all layers":"展示/隱藏所有圖層","Show/hide this layer":"展示/隱藏此圖層","Background and lighting":"背景和照明","Performance and appearance settings":"效能和外觀設定","Navigation and selection settings":"導覽和選取設定","RaaS":"RaaS","@RaaS":{"description":"RaaS 代表彩現之服務"},"Gallery":"圖庫","FPS statistics":"FPS 統計","@FPS statistics":{"description":"FPS 代表每秒的畫面數"},"Model statistics":"模型統計","Show search bar":"展示搜尋列","Language":"語言","Error":"錯誤","Search the currently displayed content":"搜尋目前顯示的內容","Comment and Markers":"註釋和標識","Comment":"意見","Post":"張貼","Hide Markers":"隱藏標識","Show Markers:":"展示標識:","Orthographic View Set":"正投影視圖集","The view is set to Orthographic":"此視圖設定為「正投影」。變更焦距長度將會切換至透視投影。","Do not show this message again":"不要再展示此訊息","The view is set to Orthographic Beeline":"此視圖設定為「正投影」。使用此工具將會切換至透視投影。","Long Focal Length View Set":"長焦距長度視圖集","The view is set to a long focal length":"此視圖具有長焦距長度。使用此工具將會設定短焦距長度。","Go Home":"移至主視圖","Orthographic":"正投影","Perspective":"透視","Perspective with Ortho Faces":"透視與正投影面","Set current view as Home":"將目前視圖設定為主視圖","Focus and set as Home":"焦點,並設定為首頁","Reset Home":"重置主視圖","Set current view as Front":"將目前視圖設定為前視圖","Set current view as Top":"將目前視圖設定為上視圖","Reset orientation":"重置方位","TOP":"上","BOTTOM":"下","FRONT":"前","RIGHT":"右","LEFT":"左","BACK":"後","Show Selected":"展示選取的","Show All Objects":"展示所有物件","Show All Layers":"展示所有圖層","Focus":"焦點","Clear Selection":"清除選取項目","Show Properties":"展示性質","Section Box":"剖面框","Section":"剖面","Pivot":"樞軸","Section Plane":"剖面平面","Model":"模型","Tree":"樹","Thumbnails":"縮圖","Model browser":"模型瀏覽器","Browser":"瀏覽器","Filter by name":"依名稱篩選","Search":"搜尋","No Results":"沒有結果","Try another term":"請嘗試搜尋其他字詞","Spinner Loading":"正在載入","Loading Model for Change Visualization":"正在載入模型以顯示變更視覺化","Loading element properties":"正在載入元素性質","Computing change visualization":"正在運算變更視覺化","Model translation failed for view '%(viewableName)'":"視圖「%(viewableName)」的模型轉換失敗","Model Browser is not available":"模型瀏覽器無法使用","Object Properties":"物件性質","Object Properties Loading":"物件性質載入中...","No properties to display":"沒有可顯示的性質","Other":"其他","Model Properties":"模型性質","Loading model":"正在載入 %(name)","Yes":"是","No":"否","Properties %(value)":"性質 %(value)","Sum":"總和","Average":"平均","Count":"計數","Median":"中位數","Mode":"模式","Range":"範圍","English":"英文","Russian":"俄文","Japanese":"日文","Korean":"韓文","Spanish":"西班牙文","Chinese Simplified":"簡體中文","Chinese Traditional":"繁體中文","Czech":"捷克文","Polish":"波蘭文","Swedish":"瑞典文","Dutch":"荷蘭文","Danish":"丹麥文","French":"法文","Canadian French":"加拿大法文","German":"德文","Italian":"義大利文","Portuguese Brazil":"葡萄牙文 (巴西)","Turkish":"土耳其文"} \ No newline at end of file diff --git a/public/autodesk/res/locales/zh/allstrings.json b/public/autodesk/res/locales/zh/allstrings.json new file mode 100644 index 0000000..32f04e6 --- /dev/null +++ b/public/autodesk/res/locales/zh/allstrings.json @@ -0,0 +1 @@ +{"@@locale":"zh-Hant","@@context":"Viewer","@@contact":"","ATF-1008":"錯誤: {0}","ATF-1023":"{0} 參考檔案遺失。","ATF-1024":"檔案的版本: {0} 不受支援。","ATF-1025":"檔案: {0} 已損壞或無效。","ATF-1026":"檔案: {0} 是空的。","ATF-1028":"無法載入元件: {0}。","ATF-1031":"未經授權的檔案類型。","ATF-1032":"組合特徵已遺失。","ATF-1033":"檔案中的圖元: {0} 不受支援。","ATF-1034":"檔名: {0} 無效。","AssImp-OpenFailure":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","AssImp-InternalError":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","AssImp-CannotCreateOutput":"無法寫入輸出檔案。","AssImp-CannotLoadOBJ":"無法載入 OBJ 檔案。","AssImp-MissingTextures":"缺少的材質影像檔案:
    {0}
","AutoCAD-MissingReferences":"缺少參考某些參考未上載,因此圖面可能不會完全顯示。請上載包含所有缺少參考檔案的複合設計:
    {0}
","AutoCAD-MissingReference":"缺少參考一個參考未上載,因此圖面可能不會完全顯示。請上載包含缺少參考檔案的複合設計: {0}","AutoCAD-NoDWFxFilesGenerated":"圖面可能不包含可見物件。並未產生任何視圖。","AutoCAD-PasswordProtectedFile":"抱歉!此項目無法檢視,因為它受密碼保護。請移除密碼,然後再次上載以進行檢視。","AutoCAD-InvalidFile":"抱歉!圖檔無效,無法進行檢視。請嘗試在 AutoCAD 中修復檔案,然後再次上載以進行檢視。","AutoCAD-ProxyGraphicsFalse":"圖面包含不會顯示在檢視器中的自訂物件。","AutoCAD-ProxyGraphicsTrue":"圖面包含自訂物件。您可能無法看到或搜尋某些自訂物件的性質。","AutoCAD-ClippedView":"2D 模型視圖會截取至上次儲存的視圖,且可能不會顯示整個圖面。使用所需視圖在 AutoCAD 中重新儲存圖面,且如果已截取視圖時再次進行上載。","AutoCAD-MissingShxFonts":"缺少字體已替代圖檔某些缺少的字體: {0}","AutoCAD-MissingTtfFonts":"缺少字體已替代圖檔某些缺少的字體: {0}","AutoCAD-MissingPlotStyleFiles":"缺少出圖型式檔: {0}","DWF2D-Corrupt_File_Error":"無法開啟損壞的 DWF/DWFx 檔。","DWF2D-Building_XML_Object_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-File_Not_In_DWF":"無法開啟檔案,DWF/DWFx 檔內容中沒有預期的資源。","DWF2D-File_Open_Error":"無法開啟 DWF/DWFx 檔。","DWF2D-File_Read_Error":"無法讀取 DWF/DWFx 檔。","DWF2D-File_Write_Error":"無法寫入 DWF/DWFx 檔。","DWF2D-Internal_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Invalid_Argument_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Invalid_XML_Content_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Invalid_DWF_Version_Error":"無效的 DWF/DWFx 檔版本。","DWF2D-Not_A_DWF_Error":"無法開啟,不是 DWF/DWFx 檔。","DWF2D-Open_Section_Descriptor_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Out_Of_Memory_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Stream_Write_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Temp_File_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Toolkit_Usage_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-ZipLib_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Bad_Password_Error":"無法開啟受密碼保護的檔案。","DWF2D-Resource_Handler_Not_Specified_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Not_Implemented":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Stream_In_Progress":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-User_Requested_Abort":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Unsupported_File_Type_Error":"無法開啟,不是一個有效的 DWF/DWFx 檔。","DWF2D-Temp_Path_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Incompatable_XML_Version_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF2D-Incompatible_Section_Type":"處理 DWF/DWFx 檔時發現不明的剖面資源。","DWF2D-Drm_Encryption":"無法開啟 DRM / 受版權保護的檔案。","DWF2D-Load_Section_Error":"無法在 DWF/DWFx 檔中載入剖面資源。","DWF2D-Secured_Section_Type":"無法開啟 DRM / 受版權保護的檔案。","DWF2D-Unknown_Error":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","DWF3D-BadPassword":"無法開啟受密碼保護的 DWF 檔。","DWF3D-CorruptFile":"無法開啟 DWF 檔。資料似乎已損壞。","DWF3D-InvalidVersion":"無法開啟 DWF 檔。不受支援的版本。","DWF3D-DRMFailure":"無法開啟 DWF 檔。檔案包含受 DRM 保護的內容。","Navisworks-2DSheetUnsupported":"Navisworks 2D 圖紙不受支援。","Navisworks-MissingXref":"缺少外部參考檔:
    {0}
","Navisworks-EmptyFile":"沒有可以顯示的幾何圖形。","Navisworks-PointUnsupported":"Navisworks 點和鎖點不受支援。","Navisworks-Failed":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","Revit-UnsupportedFileType":"檔案不是 Revit 檔案或為不受支援的版本。","Revit-UnsupportedFileType_rfa":"該檔案不是 Revit 檔案。","Revit-UnsupportedFileType_rte":"該檔案不是 Revit 檔案。","Revit-UnsupportedFileType_rft":"該檔案不是 Revit 檔案。","Revit-MissingLink":"缺少連結檔案:
    {0}
","Revit-UpgradeWarning":"已移除某些元素,以解決升級期間遇到的問題。請注意,Revit 檔案可能不會正常顯示。為取得最佳結果,請在 Revit 中開啟檔案,接著解決警告並重新儲存,然後再試一次。","Revit-UpgradeError":"升級專案失敗。請使用目前的 Revit 版本升級專案,然後再試一次。","Revit-FileOpenError":"開啟檔案失敗。請在目前的 Revit 版本中開啟檔案,接著解決警告和錯誤並重新儲存,然後再試一次。","Revit-Timeout":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","Revit-MassVisibilitySettingFailure":"在 3D 視圖中匯出量體失敗。","Revit-View3DExportError":"匯出 3D 視圖失敗 - {0}。","Revit-View2DExportError":"匯出 2D 視圖失敗 - {0}。","Revit-ThumbnailGenerationError":"產生視圖預覽影像失敗 - {0}。","Revit-DocumentCorruption":"檔案已損壞。請在目前的 Revit 版本中開啟檔案,以參閱更多關於損壞的詳細資料。","Revit-InternalError":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","Revit-UnsupportedVersionOlder":"此檔案是以我們不支援的舊版 Revit 儲存。請將此專案升級至 Revit {0} 或更高版本。","Revit-UnsupportedVersionLater":"此檔案是以我們不支援的新版 Revit 儲存。
","Revit-InvalidLink":"無法載入連結檔案:
    {0}
","Recent Queries":"最近的查詢","Loading":"正在載入...","Loading Search":"正在載入搜尋...","Load More":"載入更多","Results Count":"在 {2} 找到 \"{1}\" 的 {0} 個結果","No Results for":"在 __1__ 沒有找到 \"__0__\" 的結果","Open Another Window":"在另一個視窗中開啟","Open This Window":"在此視窗中開啟","Geometries Loading":"正在處理模型性質。請重試搜尋以獲得更完整的結果。","Recent Queries Empty":"沒有先前的查詢可展示。","Selected Node Result Not Visible":"所選節點不可見。","No Visible Node Results For Geometry":"在此幾何圖形中的查詢沒有結果或結果中沒有可見的節點。","Saved Queries":"儲存的查詢","{0} saved of {1} allocated":"已儲存 {0} 個 (共配置 {1} 個)","Saved queries settings":"儲存的查詢設定","There are no queries saved for this document":"此文件沒有儲存任何查詢。","Saved Queries Settings":"儲存的查詢設定","Space":"空間","Saving":"正在儲存...","Deleting":"正在刪除…","No queries saved":"沒有儲存任何查詢。","An error occur while saving query, please try again later":"儲存查詢時發生錯誤,請稍後再試一次。","An error occur while deleting query, please try again later":"刪除查詢時發生錯誤,請稍後再試一次","Error saving query cause query list was outdated. Review list and retry operation.":"儲存查詢時發生錯誤,導致查詢清單已過期。請檢閱清單並重試作業。","Error deleting query cause query list was outdated. Review list and retry operation.":"刪除查詢時發生錯誤,導致查詢清單已過期。請檢閱清單並重試作業。","Error getting queries, please close and retry":"取得查詢時發生錯誤,請關閉並重試","Delete":"刪除","Cancel":"取消","Are you sure you want to delete the query from your list?":"您確定要從清單刪除查詢 {0}?","The query is already saved.":"查詢已儲存。","Maximum number of queries saved exceeded, please delete some queries or contact to your administrator":"儲存的查詢超出最大數目,請刪除一些查詢或聯絡您的管理員。","TranslationWorker-TextureResizingFailed":"圖面的材質並未正確處理。","TranslationWorker-ThumbnailGenerationFailed":"圖面的縮圖並未正確建立。","TranslationWorker-InternalFailure":"我們在準備檔案供檢視時遇到部分問題。請聯絡支援以取得協助。","TranslationWorker-InsufficientDataFromExtractor":"沒有產生足夠的圖面資訊使此檔案可供檢視。請聯絡支援以取得協助。","TranslationWorker-RecoverableInternalFailure":"處理此檔案時發生錯誤。若稍後再嘗試處理,可能就會成功。","New First Person":"新的第一人稱","Navigate in First Person":"以第一人稱導覽","Walk":"漫遊","Go Up and Down":"向上和向下","Release key to land on the nearest floor":"放開按鍵以置於最近的樓板上","Move":"移動","OR":"或","Adjust Speed":"調整速度","Run":"執行","Direction Key":"方向鍵","Teleport":"傳送","Double click on destination":"按兩下目標","Look Around":"環視","Drag with left key on view":"使用左鍵在視圖上拖曳","Dont remind me again":"不要再提醒我","Ok Got It":"好,瞭解了。","Enable Gravity":"啟用重力","Toggles gravity while in first person mode":"在第一人稱模式時切換重力","Location Icons":"位置圖示","Show location icons":"展示位置圖示","Toggles availability of the location icons when looking at the project model":"查看專案模型時切換位置圖示的可用性。","Components":"元件","Sheets":"圖紙","%(attributeChanged) by":"%(attributeChanged) 差異","%(attributeChanged) to":"%(attributeChanged) 結果","%(moved) %(units) in %(axis)":"沿 %(axis) 軸移動了 %(moved) %(units)","%(rotated) around %(axis)":"繞 %(axis) 軸旋轉了 %(rotated)","%(scaled) on %(axis)":"在 %(axis) 軸調整了 %(scaled) 倍","%(versionB) vs. %(versionA)":"%(versionB) 與 %(versionA)","Add the \"%(categoryName)\" category as a filter":"加入「%(categoryName)」品類做為篩選","Added":"已加入","An error occured while trying to find differences between versions.":"嘗試尋找不同版本之間的差異時發生錯誤。","Architecture":"建築","Back to top":"返回頂端","Change list":"變更清單","Changes":"變更","Changes between %(versionB) & %(versionA)":"%(versionB) 與 %(versionA) 之間的變更","Details":"詳細資料","Diff Failed":"比較差異失敗","Disciplines affected":"受影響的領域","Electrical":"電氣","Exit comparing":"結束比較","Flat Result List":"展開結果清單","Hide":"隱藏","Hide \"%(name)\" changes":"隱藏「%(name)」變更","Hide Selected":"隱藏選取的","Hide property changes":"隱藏性質變更","Hide shape changes":"隱藏造型變更","Hide transformations":"隱藏轉換","INFORMATION":"資訊","Isolate":"隔離","Isolate Selected":"隔離選取的項目","Isolated or hidden in view":"在檢視中隔離或隱藏的項目","Learn more":"進一步瞭解","Mechanical":"機械","Miscellaneous":"雜項","Modification type":"修改類型","Modified":"已修改","Moved by":"移動距離","No search results found":"找不到任何搜尋結果","OTG translation failed for model \"%(modelName)\" using version \"%(modelVersion)\"":"OTG 轉換失敗,因為模型「%(modelName)」使用版本「%(modelVersion)」","Overlay":"覆疊","Piping":"配管","Project Model":"專案模型","Remove filter that includes elements and categories having \"%(filterText)\" in their name":"移除其元素和品類的名稱有「%(filterText)」的篩選","Remove the \"%(categoryName)\" category as a filter":"移除做為篩選的「%(categoryName)」品類","Removed":"已移除","Result as Tree":"以樹狀呈現結果","Rotated by":"旋轉角度","Scaled by":"調整比例","Search + Filter":"搜尋與篩選","Show \"%(name)\" changes":"展示「%(name)」變更","Show All":"全部展示","Show Differences":"展示差異","Show in model":"在模型中展示","Show property changes":"展示性質變更","Show shape changes":"展示造型變更","Show the results in a flat list":"以展開的清單展示結果","Show the results in a tree view":"以樹狀檢視展示結果","Show transformations":"展示轉換","Side by Side":"並排","Structure":"結構","The file type is not fully supported.":"不完全支援此檔案類型。","The file type is not fully unsupported for 2D":"不完全支援 2D 的此檔案類型","The shape of this object has been changed":"此物件的造型已變更","There are too many results to display at once. Use the filters to reduce the amount.":"結果太多,無法一次顯示。請使用篩選減少數量。","This element has been added in version %(version)":"此元素已加入版本 %(version) 中","This element has been removed in version %(version)":"此元素已從版本 %(version) 中移除","Toggle between different disciplines":"切換不同領域","Toggle between different types of modifications":"切換不同類型的修改","of %(maxCount)":"/ %(maxCount)","undefined":"未定義","Click a 2D location to view that space in 3D":"按一下 2D 位置,以 3D 檢視該空間","Current view is not supported by Place Me":"Place Me 不支援目前視圖","Click on a location to ground yourself, then select a camera direction":"按一下某個位置固定您自己,然後選取相機方向","View object in 3D":"以 3D 檢視物件","Simple Grey":"簡單的灰色","Grey Room":"灰色房間","Photo Booth":"大頭貼","Sharp Highlights":"銳利亮顯","Contrast":"對比","Infinity Pool":"無邊際泳池","Tranquility":"寧靜","Dark Sky":"黑暗天空","Simple White":"簡單的白色","Riverbank":"河岸","Rim Highlights":"邊緣亮顯","Cool Light":"冷光","Warm Light":"暖光","Soft Light":"柔光","Grid Light":"格線光源","Plaza":"廣場","Snow Field":"雪地","Field":"田野","Crossroads":"交叉路","Seaport":"海港","Glacier":"冰川","Boardwalk":"木板步道","RaaS Test Env":"RAAS 測試環境","Flat Shading":"平板描影","Harbor":"港口","Night":"夜晚","Parking":"停車場","River Road":"河岸道路","Custom Model defined":"(自訂: 定義的模型)","header-sorry":"抱歉","header-warning":"警告","Error Occurred":"發生錯誤","OK":"確定","Viewer-UnknownFailure":"抱歉我們似乎有某些技術問題,無法完成您的請求。請嘗試再次載入該項目。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Viewer-BadData":"抱歉您嘗試檢視的項目未完成處理。請嘗試再次載入該項目。請再次上載檔案,以查看是否能修正問題。","Viewer-NetworkError":"抱歉我們似乎有某些技術問題,無法完成您的請求。請嘗試再次載入該項目。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Viewer-AccessDenied":"無存取權限很抱歉。您沒有存取此項目所需的權限。 請聯絡作者。","Viewer-FileNotFound":"抱歉我們無法顯示您正在尋找的項目。它可能尚未處理。它可能已遭到移動、刪除或您可能使用損壞檔案或不受支援的檔案格式。請嘗試再次載入該項目。請再次上載檔案,以查看是否能修正問題。請參閱受支援格式的清單。","Viewer-ServerError":"抱歉我們似乎有某些技術問題,無法完成您的請求請嘗試再次載入該項目。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Viewer-UnhandledResponseCode":"網路問題 很抱歉。我們似乎有某些技術問題,無法完成您的請求。請嘗試再次載入該項目。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Viewer-WebGlNotSupported":"抱歉我們無法展示此項目,因為此瀏覽器不支援 WebGL。請嘗試 Google Chrome、Mozilla Firefox,或其他支援 WebGL 3D 圖形的瀏覽器。若要取得更多資訊,請參閱 A360 瀏覽器需求。","Viewer-WebGlDisabled":"抱歉我們無法展示此項目,因為此裝置上已停用 WebGL。若要取得更多資訊,請參閱 A360 說明。","Viewer-NoViewable":"沒有可檢視內容此項目沒有可顯示的內容。它可能尚未處理,也可能不具有我們可以顯示的內容。請聯絡作者。請再次上載檔案,以查看是否能修正問題。","Viewer-ModeIsEmpty":"模型是空的模型是空的,沒有幾何圖形可供檢視器展示。 請聯絡作者。 請再次上載檔案,以查看是否能修正問題。","Viewer-RTCError":" 抱歉我們無法連接至伺服器的協同合作。請確認您的網際網路連線,並重新整理瀏覽器,以查看是否能修正問題。","Sorry":"抱歉","The file extension loaded into the Viewer is not supported":"不支援載入檢視器的副檔名。","Try a different file":"請嘗試其他檔案。","WebGL context lost":"WebGL 環境遺失","Unable to recover from software mode. Please restart your browser and reload the Viewer.":"無法從軟體模式恢復。請重新啟動瀏覽器並重新載入檢視器。","If you continue to encounter this issue when viewing this model, we recommend switching to a different browser.":"如果您在檢視此模型時持續遇到此問題,建議切換至其他瀏覽器。","UNKNOWN FAILURE":"未知的失敗","BAD DATA":"不良資料","NETWORK ERROR":"網路錯誤","NETWORK ACCESS DENIED":"網路存取遭拒","NETWORK FILE NOT FOUND":"找不到網路檔案","NETWORK SERVER ERROR":"網路伺服器錯誤","NETWORK UNHANDLED RESPONSE CODE":"網路未處理的回應代碼","BROWSER WEBGL NOT SUPPORTED":"瀏覽器 WebGL 不受支援","BAD DATA NO VIEWABLE CONTENT":"不良資料沒有可檢視內容","Network failure":"網路故障","Access denied to remote resource":"遠端資源存取遭拒","Remote resource not found":"找不到遠端資源","Server error when accessing resource":"存取資源時發生伺服器錯誤","Unhandled response code from server":"伺服器產生的未處理回應代碼","Malformed data received when requesting file":"請求檔案時收到錯誤的資料","Malicious document content detected Abort loading":"偵測到惡意文件內容。中斷載入。","No viewable content":"沒有可檢視內容","An exception occurred while loading the document":"載入文件時發生例外錯誤","Properties failed to load since model does not exist":"性質無法載入,因為模型不存在","ObjectTree failed to load since model does not exist":"ObjectTree 無法載入,因為模型不存在","Search failed since model does not exist":"搜尋失敗,因為模型不存在","Viewer failed to initialize":"檢視器初始化失敗","Unhandled exception while reading pack file":"讀取打包檔案時發生未處理的例外狀況","Unhandled exception while reading geometry":"讀取幾何圖形時發生未處理的例外狀況","Unable to load geometry":"無法載入幾何圖形","Failed to load properties":"載入性質失敗","Unhandled exception while loading SVF":"載入 SVF 時發生未處理的例外狀況","Failure while loading SVF":"載入 SVF 時發生錯誤","First Person Tool":"第一人稱工具","First person":"第一人稱","Use the WASD and QE keys to move":"使用 WASD 和 QE 鍵可移動。Shift+按鍵可更快速移動,或使用 +/- 鍵調整漫遊速度。G 鍵可切換視圖方位拖曳模式。按 F1 可檢視此說明。","View Orientation Drag Mode Toggled":"已切換為視圖方位拖曳模式","Press the primary mouse button and drag to change the view orientation":"按下主要滑鼠按鈕並拖曳,以變更視圖方位。","Move the cursor to change the view orientation":"移動游標以變更視圖方位。","Virtual Reality Tool":"虛擬實境工具","This is the Virtual Reality tool":"此為虛擬實境工具。","VR Toggle Move":"VR 切換移動","START Auto Move":"開始自動移動","STOP Auto Move":"停止自動移動","VR Device Orientation":"VR 裝置方位","VR Mode Enabled Device Orientation":"VR 模式已啟用 (裝置方位)","VR Head Mounted Display":"VR 抬頭顯示器","VR Mode Enabled Head Mounted Display":"VR 模式已啟用 (抬頭顯示器) - 使用空格鍵以切換移動控制。","External Link":"外部連結","View":"檢視","Back":"上一步","Ctrl + Click to preview the link":"按住 Ctrl 的同時按一下以預覽連結","Levels":"樓層","Markup":"標記","Write Something":"寫點東西...","Add Length":"加入長度","Measure":"測量","Select Object":"選取物件","Vertex":"頂點","Edge":"邊","Face":"面","Delta":"差值","Unit type":"單位類型","Decimal feet":"小數英呎","Feet and fractional inches":"英呎和分數英吋","Feet and decimal inches":"英呎和小數英吋","Decimal inches":"小數英吋","Fractional inches":"分數英吋","Meters":"公尺","Centimeters":"公分","Millimeters":"公釐","Meters and centimeters":"公尺和公分","Points":"點","Unknown":"不明","Precision":"精確度","Enable free measure":"啟用自由測量","Isolate measurement":"隔離測量","Restart":"重新啟動","Select two points":"選取兩個點以校正圖面","Calibration":"校正","Calibrate":"校正","Define Size":"定義大小","Set Calibration":"設定校正","Calibration Message":"使用尺規之前,必須先設定和校正此圖紙的比例","Calibrate Now":"立即校正","Add Calibration":"加入校正","Calibration Required":"需要校正","Distance":"距離","Angle":"角度","Area":"面積","Arc":"弧","Delete measurement":"刪除測量","Measure settings":"測量設定","Done":"完成","Show minimap":"展示小地圖","Toggles availability of the Minimap":"切換小地圖的可用性","Minimap":"小地圖","3D Mini-map":"3D 小地圖","Show 3D mini-map":"展示 3D 小地圖","Toggles availability of the 3D mini-map when using first person mode":"使用第一人稱模式時切換 3D 小地圖的可用性","Min":"最小值","Max":"最大值","Compared Documents":"比較的文件","Hide colors":"隱藏顏色","Show colors":"展示顏色","Finish align":"完成對齊","Align":"對齊","Document":"文件","Uploaded By":"上傳者","Issuance date":"發佈日期","At":"於","Close Panel":"關閉面板","ProgressLoading":"正在載入...","ProgressRendering":"正在彩現...","ProgressOptimizing":"正在最佳化...","INITIATING DIRECT LINK":"正在初始化直接連結...","CONTACTING MOTHERSHIP":"正在聯絡主要裝置...","DISCONNECTED":"已中斷連接!","Remote Control":"遠端控制","Reload main viewer and pair again":"重新載入主檢視器並再次配對。","Go to this link":"移往此連結:","Scan the QR code with your device":"使用您的裝置掃瞄 QR 碼:","or":"或","Pair with controller device":"與控制器裝置配對","Rendering Options":"彩現選項","Background Color":"背景顏色:","Cel Shaded":"卡通渲染","AO Enabled":"AO 已啟用:","@AO Enabled":{"description":"AO 表示環境光遮蔽。縮寫以節省空間"},"AO Radius":"AO 半徑:","@AO Radius":{"description":"AO 表示環境光遮蔽。縮寫以節省空間"},"AO Intensity":"AO 強度:","@AO Intensity":{"description":"AO 表示環境光遮蔽。縮寫以節省空間"},"Shadow Alpha":"陰影 α (A):","Shadow Color":"陰影顏色:","Reflection Alpha":"反射 α (A):","Reflection Color":"反射顏色:","Environment":"環境","Tonemap Method":"色調貼圖方法:","Exposure Bias":"曝光偏差:","Light Intensity":"光源強度:","FOV-degrees":"FOV (度):","@FOV-degrees":{"description":"FOV 是「視野角度」的縮寫。"},"Frame rate":"畫面速率:","None":"無","Canon-RGB":"Canon (RGB)","Canon-Lum":"Canon (明度)","Rotate page":"旋轉頁面","Stress reference":"應力參考","Displays the distribution of stress based on the factor of safety value set in the Objectives and Limits dialog in the Define workspace.":"根據在「定義」工作區的「目標和限制」對話方塊中設定的安全係數值,顯示應力的分佈。","High":"高","Ideal":"理想","Low":"低","Model View":"模型視圖","Stress View":"應力視圖","Von Mises stress (Pa)":"Von Mises 應力 (Pa)","Analysis display":"分析顯示","Von Mises stress":"Von Mises 應力","Factor of safety":"安全係數","For all displayed outcomes":"對於所有顯示的結果","Displays the distribution of von Mises stress on the surface of the generated outcome.":"顯示 von Mises 應力在產生的結果表面上的分佈。","Displays the distribution of the factor of safety on the surface of the generated outcome.":"顯示安全係數在產生的結果表面上的分佈。","Min Stress":"最小 __min__","Max Stress":"最大 __max__","Min FOS":"最小: __min__","Max FOS":"最大: __max__","Min Value":"__min__ (最小)","Max Value":"__max__ (最大)","Units Stress":"Von Mises 應力 (__units__)","Stress Status":"__status__","Stress Text":"__statusText__","Section analysis":"剖面分析","Add X plane":"加入 X 平面","Add Y plane":"加入 Y 平面","Add Z plane":"加入 Z 平面","Add box":"加入方塊","Settings":"設定","Configuration":"規劃","Navigation":"導覽","Performance":"效能","Appearance":"外觀","ViewCube":"ViewCube","Show ViewCube":"展示 ViewCube","ViewCube acts on pivot":"ViewCube 作用於樞軸","Orbit":"環轉","Fusion style orbit":"Fusion 型式環轉","Orbit past world poles":"環轉超過世界極點","Zoom":"縮放","Zoom towards pivot":"縮放至樞軸","Reverse mouse zoom direction":"反轉滑鼠縮放方向","Mouse":"滑鼠","Left handed mouse setup":"慣用左手滑鼠設置","Set pivot with left mouse button":"使用滑鼠左鍵設定樞軸","Open properties on select":"開啟選取的性質","Prototypes":"原型","New First Person Tool":"新的第一人稱工具","Performance Optimization":"效能最佳化","Disable shadow effect":"Disable shadow effect","Progressive display":"漸進式顯示","Display":"顯示","Ghost hidden objects":"幽靈隱藏物件","Display Lines":"顯示線","Display Points":"顯示點","Display edges":"顯示邊","Display Section Hatches":"顯示剖面填充線","Vector Viewing":"向量檢視","Display Units":"顯示單位","File units":"檔案單位","Inches":"英吋","Feet":"英呎","File precision":"檔案精確度","Selection":"選取","Selection Mode":"選取模式","Leaf Object":"門扇物件","First Object":"第一個物件","Last Object":"最後一個物件","Visual Quality Optimization":"視覺品質最佳化","Anti-aliasing":"消除鋸齒","Ambient shadows":"環境陰影","Ground shadow":"地面陰影","Ground reflection":"地面反射","Existing behavior":"既有行為","2D Sheet Color":"2D 圖紙顏色","Loading Animation":"載入動畫","Environment Image Visible":"環境影像可見","Environments and Lighting Selection":"環境和照明選取","Restore all default settings":"還原所有預設設定","Restore":"還原","More":"更多","Look Direction":"面對方向","Reverse horizontal look direction":"反轉水平面對方向","Reverse vertical look direction":"反轉垂直面對方向","Scroll Speed":"捲動速度","Drag Speed":"拖曳速度","Changes sensitivity of mouse movement with the zoom tool":"使用縮放工具變更滑鼠移動的敏感度","Changes sensitivity of the mouse scroll wheel when zooming":"變更滑鼠滾輪在縮放時的敏感度","Toggles availability of the ViewCube navigation control":"切換 ViewCube 導覽控制項的可用性。","When enabled, the ViewCube orbits the view around the active pivot point When disabled, it orbits around the center of the view":"啟用時,ViewCube 會圍繞作用中的樞軸點環轉視圖。停用時,則會圍繞視圖的中心環轉。","Enables Fusion-style orbit overlay and gives the ability to lock orbit axis":"啟用 Fusion 型式的環轉覆疊,並可鎖住環轉軸。","Allows view rotation to continue past the model’s North Pole":"允許視圖旋轉,以繼續超過模型的北極。","When disabled, zooming operations are centered at the current cursor location":"停用時,縮放作業會在目前的游標位置置中。","Toggles direction of zooming in and out":"切換拉近和拉遠的方向。","Swaps the buttons on the mouse":"交換滑鼠上的按鈕。","Change left-click behavior to set new pivot point (overrides select object)":"變更按一下左鍵行為以設定新的樞軸點 (取代選取物件)。","Always show properties upon selecting object":"選取物件時永遠展示性質。","Enable new walkthrough mode":"啟用新的穿越模式。","Provides faster response(but degrades quality) while navigating":"導覽時提供更快的反應 (但會降低品質)","Shows incremental updates of the view and allows for more responsive interaction with the model (some elements may flicker) This improves perceived waiting time":"展示視圖的增量更新,並允許與模型的互動更有反應 (某些元素可能會閃爍)。這樣可改善感受到的等待時間。","Leave hidden objects slightly visible":"讓隱藏的物件稍微可見。","Large model experience":"大型模型體驗","Improves your overall experience viewing large models. The changes will take effect on the next page load.":"改善檢視大型模型的整體體驗。變更將在下一頁載入時生效。","Toggles display of line objects":"切換線物件的顯示。","Toggles display of point objects":"切換點物件的顯示。","Shows outline of model surfaces":"展示模型表面的外框。","Shows hatch pattern for section planes this does not apply to section boxes":"展示剖面平面的填充線樣式,不適用於剖面框","Remove jagged edges from lines":"移除線的鋸齒狀邊緣。","Improve shading of occluded surfaces":"改善遮蔽表面的描影。","Add simulated ground surface shadows":"加入模擬的地表陰影。","Add simulated ground surface reflections":"加入模擬的地表反射。","Switch sheet color white to black":"切換白色圖紙顏色為黑色","Animate lines during loading":"載入時以動畫顯示線條","Shows lighting environment as background":"將照明環境展示為背景。","Toggles direction of left and right camera movement":"切換相機左右移動的方向","Toggles direction of up and down camera movement":"切換相機上下移動的方向","Simulation":"模擬","Simulation Results":"模擬結果","Simulation Model Structure Loading":"模擬模型結構負載","Static Stress":"靜態應力","Modal Frequencies":"模態頻率","Analysis Type":"分析類型","Nodes":"節點","Elements":"元素","Safety Factor":"安全係數","Stress":"應力","Strain":"應變","Von Mises":"Von Mises","Per Body":"每個本體","Total":"總計","Equivalent":"對等","Displacement":"位移","Constraints":"約束","Loads":"負載","Total Modal Displacement":"總模態位移","Name":"名稱","Status":"狀態","Attached":"貼附","Type":"類型","Magnitude":"大小","Simulation Setup":"模擬設置","Simulation Setup Loading":"模擬設置負載","Free orbit":"自由環轉","Pan":"平移","Zoom window":"縮放視窗","Walk to":"漫遊至 (按兩下以穿越)","Camera interactions":"相機互動","Fit to view":"佈滿視圖 (F)","Focal length":"焦距長度 (Ctrl + Shift 拖曳)","Focal Length":"焦距長度","Roll":"滾動 (Alt + Shift 拖曳)","Model structure":"模型結構","Explode model":"分解模型","Layer Manager":"圖層管理員","Reset model":"重置模型","Reset drawing":"重置圖面","Properties":"性質","Document Browser":"文件瀏覽器","Comments and Markers":"註解和標識","Rendering options":"彩現選項","Full screen":"全螢幕","Exit full screen":"結束全螢幕","Layers":"圖層","Enter filter term":"輸入篩選關鍵字","Show/hide all layers":"展示/隱藏所有圖層","Show/hide this layer":"展示/隱藏此圖層","Background and lighting":"背景和照明","Performance and appearance settings":"效能和外觀設定","Navigation and selection settings":"導覽和選取設定","RaaS":"RaaS","@RaaS":{"description":"RaaS 代表彩現之服務"},"Gallery":"圖庫","FPS statistics":"FPS 統計","@FPS statistics":{"description":"FPS 代表每秒的畫面數"},"Model statistics":"模型統計","Show search bar":"展示搜尋列","Language":"語言","Error":"錯誤","Search the currently displayed content":"搜尋目前顯示的內容","Comment and Markers":"註釋和標識","Comment":"意見","Post":"張貼","Hide Markers":"隱藏標識","Show Markers:":"展示標識:","Orthographic View Set":"正投影視圖集","The view is set to Orthographic":"此視圖設定為「正投影」。變更焦距長度將會切換至透視投影。","Do not show this message again":"不要再展示此訊息","The view is set to Orthographic Beeline":"此視圖設定為「正投影」。使用此工具將會切換至透視投影。","Long Focal Length View Set":"長焦距長度視圖集","The view is set to a long focal length":"此視圖具有長焦距長度。使用此工具將會設定短焦距長度。","Go Home":"移至主視圖","Orthographic":"正投影","Perspective":"透視","Perspective with Ortho Faces":"透視與正投影面","Set current view as Home":"將目前視圖設定為主視圖","Focus and set as Home":"焦點,並設定為首頁","Reset Home":"重置主視圖","Set current view as Front":"將目前視圖設定為前視圖","Set current view as Top":"將目前視圖設定為上視圖","Reset orientation":"重置方位","TOP":"上","BOTTOM":"下","FRONT":"前","RIGHT":"右","LEFT":"左","BACK":"後","Show Selected":"展示選取的","Show All Objects":"展示所有物件","Show All Layers":"展示所有圖層","Focus":"焦點","Clear Selection":"清除選取項目","Show Properties":"展示性質","Section Box":"剖面框","Section":"剖面","Pivot":"樞軸","Section Plane":"剖面平面","Model":"模型","Tree":"樹","Thumbnails":"縮圖","Model browser":"模型瀏覽器","Browser":"瀏覽器","Filter by name":"依名稱篩選","Search":"搜尋","No Results":"沒有結果","Try another term":"請嘗試搜尋其他字詞","Spinner Loading":"正在載入","Loading Model for Change Visualization":"正在載入模型以顯示變更視覺化","Loading element properties":"正在載入元素性質","Computing change visualization":"正在運算變更視覺化","Model translation failed for view '%(viewableName)'":"視圖「%(viewableName)」的模型轉換失敗","Model Browser is not available":"模型瀏覽器無法使用","Object Properties":"物件性質","Object Properties Loading":"物件性質載入中...","No properties to display":"沒有可顯示的性質","Other":"其他","Model Properties":"模型性質","Loading model":"正在載入 %(name)","Yes":"是","No":"否","Properties %(value)":"性質 %(value)","Sum":"總和","Average":"平均","Count":"計數","Median":"中位數","Mode":"模式","Range":"範圍","English":"英文","Russian":"俄文","Japanese":"日文","Korean":"韓文","Spanish":"西班牙文","Chinese Simplified":"簡體中文","Chinese Traditional":"繁體中文","Czech":"捷克文","Polish":"波蘭文","Swedish":"瑞典文","Dutch":"荷蘭文","Danish":"丹麥文","French":"法文","Canadian French":"加拿大法文","German":"德文","Italian":"義大利文","Portuguese Brazil":"葡萄牙文 (巴西)","Turkish":"土耳其文"} \ No newline at end of file diff --git a/public/autodesk/res/textures/VCarrows.png b/public/autodesk/res/textures/VCarrows.png new file mode 100644 index 0000000..1f5ac56 Binary files /dev/null and b/public/autodesk/res/textures/VCarrows.png differ diff --git a/public/autodesk/res/textures/VCarrowsS0.png b/public/autodesk/res/textures/VCarrowsS0.png new file mode 100644 index 0000000..77ee759 Binary files /dev/null and b/public/autodesk/res/textures/VCarrowsS0.png differ diff --git a/public/autodesk/res/textures/VCarrowsS1.png b/public/autodesk/res/textures/VCarrowsS1.png new file mode 100644 index 0000000..040e21d Binary files /dev/null and b/public/autodesk/res/textures/VCarrowsS1.png differ diff --git a/public/autodesk/res/textures/VCcompass-base.png b/public/autodesk/res/textures/VCcompass-base.png new file mode 100644 index 0000000..a3b6c37 Binary files /dev/null and b/public/autodesk/res/textures/VCcompass-base.png differ diff --git a/public/autodesk/res/textures/VCcompass-pointer-b.png b/public/autodesk/res/textures/VCcompass-pointer-b.png new file mode 100644 index 0000000..393e94f Binary files /dev/null and b/public/autodesk/res/textures/VCcompass-pointer-b.png differ diff --git a/public/autodesk/res/textures/VCcontext.png b/public/autodesk/res/textures/VCcontext.png new file mode 100644 index 0000000..d16e811 Binary files /dev/null and b/public/autodesk/res/textures/VCcontext.png differ diff --git a/public/autodesk/res/textures/VCcontextS.png b/public/autodesk/res/textures/VCcontextS.png new file mode 100644 index 0000000..a2306bb Binary files /dev/null and b/public/autodesk/res/textures/VCcontextS.png differ diff --git a/public/autodesk/res/textures/VCedge1.png b/public/autodesk/res/textures/VCedge1.png new file mode 100644 index 0000000..dbfb546 Binary files /dev/null and b/public/autodesk/res/textures/VCedge1.png differ diff --git a/public/autodesk/res/textures/VChome.png b/public/autodesk/res/textures/VChome.png new file mode 100644 index 0000000..7021f84 Binary files /dev/null and b/public/autodesk/res/textures/VChome.png differ diff --git a/public/autodesk/res/textures/VChomeS.png b/public/autodesk/res/textures/VChomeS.png new file mode 100644 index 0000000..39a74e6 Binary files /dev/null and b/public/autodesk/res/textures/VChomeS.png differ diff --git a/public/autodesk/res/ui/powered-by-autodesk-blk-rgb.png b/public/autodesk/res/ui/powered-by-autodesk-blk-rgb.png new file mode 100644 index 0000000..b6fdb9f Binary files /dev/null and b/public/autodesk/res/ui/powered-by-autodesk-blk-rgb.png differ diff --git a/public/autodesk/style.min.css b/public/autodesk/style.min.css new file mode 100644 index 0000000..e255ee6 --- /dev/null +++ b/public/autodesk/style.min.css @@ -0,0 +1 @@ +.adsk-viewing-viewer.dark-theme{color:#fff;font-size:14px}.adsk-viewing-viewer.dark-theme.quality-text{text-rendering:geometricPrecision}.adsk-viewing-viewer.dark-theme .viewcube{color:#000}.adsk-viewing-viewer.dark-theme .adsk-lmv-tftable input,.adsk-viewing-viewer.dark-theme .option-drop-down,.adsk-viewing-viewer.dark-theme .property-drop-down{background-color:#d5dbe1;border:1px solid #939ca5;color:#000}.adsk-viewing-viewer.dark-theme .adsk-control-group{background-color:rgba(34,34,34,.94);box-shadow:1px 3px 10px 0 rgba(0,0,0,.5);color:#f4f4f4}.adsk-viewing-viewer.dark-theme .adsk-button:hover{border:1px solid #00bfff;color:#00bfff}.adsk-viewing-viewer.dark-theme .adsk-button.active,.adsk-viewing-viewer.dark-theme .adsk-button:focus{border-radius:3px;box-shadow:inset 0 2px 2px 0 #000;color:#00bfff;outline:none}.adsk-viewing-viewer.dark-theme .adsk-label-button.active,.adsk-viewing-viewer.dark-theme .adsk-label-button:focus,.adsk-viewing-viewer.dark-theme .adsk-label-button:hover{border:1px solid transparent}.adsk-viewing-viewer.dark-theme .adsk-label-button label{background-color:#06a7df;color:#fff}.adsk-viewing-viewer.dark-theme .adsk-label-button.active label,.adsk-viewing-viewer.dark-theme .adsk-label-button:focus label,.adsk-viewing-viewer.dark-theme .adsk-label-button:hover label{background-color:#00bfff;color:#fff}.adsk-viewing-viewer.dark-theme .adsk-control-tooltip{background-color:rgba(34,34,34,.94);border-radius:3px;box-shadow:0 3px 5px rgba(0,0,0,.3);color:#f4f4f4;opacity:1}.adsk-viewing-viewer.dark-theme .docking-panel{box-shadow:1px 3px 10px 0 rgba(0,0,0,.4)}.adsk-viewing-viewer.dark-theme .docking-panel-delimiter-shadow{box-shadow:0 3px 5px 0 rgba(0,0,0,.1)}.adsk-viewing-viewer.dark-theme .docking-panel-title{background-color:rgba(34,34,34,.94);border-bottom:1px solid rgba(34,34,34,.8);color:#fff}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .docking-panel-title{border-bottom:1px solid #4a555b}.adsk-viewing-viewer.dark-theme .docking-panel-close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjOTQ5NDlGIiBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGZpbGw9IiM5MzlDQTUiIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}.adsk-viewing-viewer.dark-theme .docking-panel-close:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0iI0JFQzhEMiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}.adsk-viewing-viewer.dark-theme .docking-panel-footer{background-color:#222}.adsk-viewing-viewer.dark-theme .docking-panel-footer-resizer{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjciPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggc3Ryb2tlPSIjMDAwIiBkPSJtLjUgNi41IDYtNk00LjUgNi41bDEuNTM2LTEuNTM2Ii8+PHBhdGggc3Ryb2tlPSIjQkVDOEQyIiBkPSJtMS41IDYuNSA2LTZNNS41IDYuNWwxLjUzNi0xLjUzNiIvPjwvZz48L3N2Zz4=);background-position-x:9px;background-position-y:8px;background-repeat:no-repeat}.adsk-viewing-viewer.dark-theme .docking-panel-footer-resizer:hover{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjciPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggc3Ryb2tlPSIjMDAwIiBkPSJtLjUgNi41IDYtNk00LjUgNi41bDEuNTM2LTEuNTM2Ii8+PHBhdGggc3Ryb2tlPSIjRDREQkUxIiBkPSJtMS41IDYuNSA2LTZNNS41IDYuNWwxLjUzNi0xLjUzNiIvPjwvZz48L3N2Zz4=);background-position-x:9px;background-position-y:8px;background-repeat:no-repeat}.adsk-viewing-viewer.dark-theme .docking-panel-primary-button{background-color:#06a7df;color:#fff}.adsk-viewing-viewer.dark-theme .docking-panel-primary-button.active,.adsk-viewing-viewer.dark-theme .docking-panel-primary-button:focus,.adsk-viewing-viewer.dark-theme .docking-panel-primary-button:hover{background-color:#00bfff;color:#fff}.adsk-viewing-viewer.dark-theme .docking-panel-secondary-button{background-color:#939ca5;color:#fff}.adsk-viewing-viewer.dark-theme .docking-panel-secondary-button.active,.adsk-viewing-viewer.dark-theme .docking-panel-secondary-button:focus,.adsk-viewing-viewer.dark-theme .docking-panel-secondary-button:hover{background-color:#bec8d2;color:#fff}.adsk-viewing-viewer.dark-theme .docking-panel-tertiary-button{border:1px solid #939ca5;color:#939ca5}.adsk-viewing-viewer.dark-theme .docking-panel-tertiary-button.active,.adsk-viewing-viewer.dark-theme .docking-panel-tertiary-button:focus,.adsk-viewing-viewer.dark-theme .docking-panel-tertiary-button:hover{background-color:#939ca5;color:#fff}.adsk-viewing-viewer.dark-theme .docking-panel-container-solid-color-a{background-color:rgba(34,34,34,.9)}.adsk-viewing-viewer.dark-theme .docking-panel-container-solid-color-b{background-color:rgba(34,34,34,.94)}.adsk-viewing-viewer.dark-theme .docking-panel-container-solid-color-c{background-color:rgba(34,34,34,.4)}.adsk-viewing-viewer.dark-theme .docking-panel-container-gradient{background:repeating-linear-gradient(rgba(34,34,34,.2),rgba(34,34,34,.2) 36px,rgba(34,34,34,0) 0,rgba(34,34,34,0) 72px)}.adsk-viewing-viewer.dark-theme .docking-panel-textbox{background-color:transparent;border:1px solid #494849;color:#ccc}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .adsk-lmv-tftable tr td:first-child div{color:#f3f7fb!important}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .adsk-lmv-tftable tr td:first-child .switch-slider-row-beta-label{color:#3c3c3c!important}.adsk-viewing-viewer.dark-theme .adsk-lmv-tftable tr.logical-group{background-color:rgba(34,34,34,.4)}.adsk-viewing-viewer.dark-theme .adsk-lmv-tftable tr.logical-group td div{color:#fff}.adsk-viewing-viewer.dark-theme .docking-panel-scroll::-webkit-scrollbar-track{background:none}.adsk-viewing-viewer.dark-theme .docking-panel-scroll::-webkit-scrollbar-thumb{background:#939ca5}.adsk-viewing-viewer.dark-theme .docking-panel-scroll::-webkit-scrollbar-thumb:hover{background:#bec8d2}.adsk-viewing-viewer.dark-theme .docking-panel-scroll::-webkit-resizer{background-color:rgba(30,30,30,.8)}.adsk-viewing-viewer.dark-theme .docking-pane-scroll::-webkit-scrollbar-corner{background-color:rgba(0,0,0,.2)}.adsk-viewing-viewer.dark-theme .adsk-filterbox input.filter-box,.adsk-viewing-viewer.dark-theme .adsk-searchbox input.search-box{background:rgba(34,34,34,.94);border:1px solid transparent;border-bottom-color:rgba(34,34,34,.8);color:#fff}.adsk-viewing-viewer.dark-theme .adsk-filterbox input.filter-box:focus,.adsk-viewing-viewer.dark-theme .adsk-searchbox input.search-box:focus{border:1px solid #1dc6f2}.adsk-viewing-viewer.dark-theme .adsk-searchbox .search-box-icon{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyI+PHBhdGggZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi4yMTQgOS4yMzZhNS4wMyA1LjAzIDAgMCAxLTEuNDUtMy41MTFjMC0xLjI5OC41MzQtMi41OTUgMS40NS0zLjUxMWE1LjAzIDUuMDMgMCAwIDEgMy41MS0xLjQ1YzEuMjk4IDAgMi41OTYuNTM0IDMuNTEyIDEuNDVhNS4wMyA1LjAzIDAgMCAxIDEuNDUgMy41MSA1LjAzIDUuMDMgMCAwIDEtMS40NSAzLjUxMiA1LjAzIDUuMDMgMCAwIDEtMy41MTEgMS40NSA1LjAzIDUuMDMgMCAwIDEtMy41MTEtMS40NU0xMi45IDEyLjI5bC0yLjgyNC0yLjgyNGMuOTE2LTEuMDY5IDEuNDUtMi4zNjYgMS40NS0zLjc0YTUuNzIgNS43MiAwIDAgMC0xLjY4LTQuMDQ2QzguNzc5LjYxMSA3LjI1MiAwIDUuNzI2IDBBNS43MiA1LjcyIDAgMCAwIDEuNjggMS42OCA1LjcyIDUuNzIgMCAwIDAgMCA1LjcyNCA1LjcyIDUuNzIgMCAwIDAgMS42OCA5Ljc3YTUuNzIgNS43MiAwIDAgMCA0LjA0NSAxLjY4QTUuNiA1LjYgMCAwIDAgOS40NjUgMTBsMi44MjQgMi44MjRjLjA3Ny4wNzYuMTUzLjA3Ni4zMDYuMDc2LjE1MiAwIC4yMjkgMCAuMzA1LS4wNzYuMDc2LS4wNzcuMDc2LS4zODIgMC0uNTM1Ii8+PC9zdmc+)}.adsk-viewing-viewer.dark-theme .adsk-searchbox .search-box-icon.focused{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyI+PHBhdGggZmlsbD0iIzFEQzZGMiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi4yMTQgOS4yMzZhNS4wMyA1LjAzIDAgMCAxLTEuNDUtMy41MTFjMC0xLjI5OC41MzQtMi41OTUgMS40NS0zLjUxMWE1LjAzIDUuMDMgMCAwIDEgMy41MS0xLjQ1YzEuMjk4IDAgMi41OTYuNTM0IDMuNTEyIDEuNDVhNS4wMyA1LjAzIDAgMCAxIDEuNDUgMy41MSA1LjAzIDUuMDMgMCAwIDEtMS40NSAzLjUxMiA1LjAzIDUuMDMgMCAwIDEtMy41MTEgMS40NSA1LjAzIDUuMDMgMCAwIDEtMy41MTEtMS40NU0xMi45IDEyLjI5bC0yLjgyNC0yLjgyNGMuOTE2LTEuMDY5IDEuNDUtMi4zNjYgMS40NS0zLjc0YTUuNzIgNS43MiAwIDAgMC0xLjY4LTQuMDQ2QzguNzc5LjYxMSA3LjI1MiAwIDUuNzI2IDBhNS43MiA1LjcyIDAgMCAwLTQuMDQ2IDEuNjhBNS43MiA1LjcyIDAgMCAwIDAgNS43MjQgNS43MiA1LjcyIDAgMCAwIDEuNjggOS43N2E1LjcyIDUuNzIgMCAwIDAgNC4wNDUgMS42OEE1LjYgNS42IDAgMCAwIDkuNDY1IDEwbDIuODI0IDIuODI0Yy4wNzcuMDc2LjE1My4wNzYuMzA2LjA3Ni4xNTIgMCAuMjI5IDAgLjMwNS0uMDc2LjA3Ni0uMDc3LjA3Ni0uMzgyIDAtLjUzNSIvPjwvc3ZnPg==)}.adsk-viewing-viewer.dark-theme .adsk-filterbox .filter-box-icon{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI3Ij48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzk3OTc5NyIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggZD0iTTcuNSA2LjVoLTVNOC41IDMuNWgtN005LjUuNWgtOSIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.dark-theme .adsk-filterbox .filter-box-icon.focused{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI3Ij48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwQkZGRiIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggZD0iTTcuNSA2LjVoLTVNOC41IDMuNWgtN005LjUuNWgtOSIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.dark-theme .adsk-filterbox .filter-box-close,.adsk-viewing-viewer.dark-theme .adsk-searchbox .search-box-close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Zz48Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iNyIgZmlsbD0iIzkzOUNBNSIvPjxwYXRoIGZpbGw9IiMzNjM2MzYiIGQ9Ik00LjUxIDEwIDQgOS40OSA5LjQ5IDRsLjUxLjUxeiIvPjxwYXRoIGZpbGw9IiMzNjM2MzYiIGQ9Im0xMCA5LjQ5LS41MS41MUw0IDQuNTEgNC41MSA0eiIvPjwvZz48L2c+PC9zdmc+)}.adsk-viewing-viewer.dark-theme .adsk-filterbox .filter-box-close:hover,.adsk-viewing-viewer.dark-theme .adsk-searchbox .search-box-close:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Zz48Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iNyIgZmlsbD0iI0JFQzhEMiIvPjxwYXRoIGZpbGw9IiMzNjM2MzYiIGQ9Ik00LjUxIDEwIDQgOS40OSA5LjQ5IDRsLjUxLjUxeiIvPjxwYXRoIGZpbGw9IiMzNjM2MzYiIGQ9Im0xMCA5LjQ5LS41MS41MUw0IDQuNTEgNC41MSA0eiIvPjwvZz48L2c+PC9zdmc+)}.adsk-viewing-viewer.dark-theme .adsk-search-results-scrolling-panel .selected{background-color:#353d41}.adsk-viewing-viewer.dark-theme .adsk-search-results-scrolling-panel>div[lmv-nodeid]:hover{background-color:rgba(0,0,0,.4)}.adsk-viewing-viewer.dark-theme .adsk-search-results-scrolling-panel .search-match{color:#1dc6f2}.adsk-viewing-viewer.dark-theme .adsk-search-results-scrolling-panel .search-path{color:#bec8d2}.adsk-viewing-viewer.dark-theme .adsk-search-results-scrolling-panel .no-results-title{color:#f3f3f3}.adsk-viewing-viewer.dark-theme .adsk-search-results-scrolling-panel .no-results-description{color:#bec8d2}.adsk-viewing-viewer.dark-theme .loading-spinner path{stroke:#00bfff;fill:transparent}.adsk-viewing-viewer.dark-theme .loading-spinner path:first-child{stroke:#4a555b}.adsk-viewing-viewer.dark-theme .loading-spinner .message{color:#fff}.adsk-viewing-viewer.dark-theme .docking-panel.menu .menu-item:hover{background:rgba(0,0,0,.4)}.adsk-viewing-viewer.dark-theme .docking-panel.menu .menu-divider{background-color:#666}.adsk-viewing-viewer.dark-theme .viewer-settings-panel.docking-panel .settings-tabs span{color:#fff}.adsk-viewing-viewer.dark-theme .viewer-settings-panel.docking-panel .settings-tabs span:hover{color:#1dc6f2}.adsk-viewing-viewer.dark-theme .viewer-settings-panel.docking-panel .settings-tabs .tabselected span{border-color:#1dc6f2;color:#1dc6f2}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-environment-cell{border:1px solid #4a555b}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-environment-cell:hover{border:1px solid #939ca5}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-environment-cell.border-select{border:1px solid #1dc6f2}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-environment-name{color:#bec8d2}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-cell{border:1px solid #4a555b}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-cell:hover{border:1px solid #939ca5}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-cell.border-select{border:1px solid #1dc6f2}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-description,.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-name{color:#bec8d2}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .docking-panel-tertiary-button:active{background-color:#4a555b;border:1px solid #4a555b}.adsk-viewing-viewer.dark-theme .switch .slider,.adsk-viewing-viewer.dark-theme .switch .slider:before{background-color:#d9e1e9}.adsk-viewing-viewer.dark-theme .switch input:checked+.slider:before{background-color:#1dc6f2}.adsk-viewing-viewer.dark-theme .layers-panel .visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMCI+PHBhdGggZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNMTIuNDc0LjgyM2MuOTM2LjM5MyAxLjgxLjkyIDIuNTkyIDEuNTY2YTguOCA4LjggMCAwIDEgMS43ODIgMi4yMTQgNy4xIDcuMSAwIDAgMS0xLjU2NiAyLjQzIDkuMSA5LjEgMCAwIDEtMi41MzggMS42NzRjLTEuMzgzLjU4Ny0yLjg3Mi44OC00LjM3NC44NjRhMTAuMyAxMC4zIDAgMCAxLTQuMzItLjcwMiA4LjQgOC40IDAgMCAxLTIuNTM4LTEuNjJBNy4xIDcuMSAwIDAgMSAwIDQuNzY1YTkuMSA5LjEgMCAwIDEgMS43ODItMi40M0E5LjUgOS41IDAgMCAxIDQuMzc0LjcxNWE5LjIgOS4yIDAgMCAxIDQuMDUtLjcwMmMxLjM5LjAwNiAyLjc2NS4yODEgNC4wNS44MU04LjUzMiA4LjA2Yy40MjgtLjAwNC44NS0uMDk2IDEuMjQyLS4yNy4zODMtLjE2Ny43My0uNDA2IDEuMDI2LS43MDIuNjEtLjYxNi45NC0xLjQ1NS45MTgtMi4zMjJhMy4xOSAzLjE5IDAgMCAwLS45MTgtMi4yNjggMy40IDMuNCAwIDAgMC0xLjAyNi0uNzAyIDMuMjQgMy4yNCAwIDAgMC0yLjUzOCAwYy0uMzgzLjE2OC0uNzMuNDA2LTEuMDI2LjcwMmEzLjE5IDMuMTkgMCAwIDAtLjkxOCAyLjMyMmMuMDA2LjQyOC4wOTcuODUuMjcgMS4yNDIuMTY2LjM4NS40MDQuNzMzLjcwMiAxLjAyNmEzLjMgMy4zIDAgMCAwIDIuMjY4Ljk3Mm0xLjg5LTMuMjk0YTEuOCAxLjggMCAwIDAtLjE2Mi0uNzAyIDEuOSAxLjkgMCAwIDAtLjM3OC0uNTk0IDEuOCAxLjggMCAwIDAtLjU5NC0uMzc4bC0uNzAyLS4xNjItLjcwMi4xNjJhMS44NCAxLjg0IDAgMCAwLS45NzIuOTcyIDEuODQgMS44NCAwIDAgMCAwIDEuNDU4Yy4xNzMuNDI4LjUuNzc1LjkxOC45NzJsLjcwMi4xNjIuNzAyLS4xNjJjLjIyLS4wODYuNDIyLS4yMTQuNTk0LS4zNzguMTYxLS4xNzMuMjktLjM3NC4zNzgtLjU5NC4xMDktLjIzNy4xNjQtLjQ5NS4xNjItLjc1NnoiLz48L3N2Zz4=);opacity:.7}.adsk-viewing-viewer.dark-theme .layers-panel .visibility.dim{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNSI+PHBhdGggZmlsbD0iI0Y0RjRGNCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTQuMzIyLjU5NGEuNjQuNjQgMCAwIDAtLjkyNCAwTDEwLjM2MiAzLjYzYy0uNzkyLS4xOTgtMS41ODQtLjM5Ni0yLjQ0Mi0uMzk2LTMuNTY0IDAtNi42IDIuMTc4LTcuOTIgNC44MTguNTk0IDEuMTg4IDEuNTg0IDIuMzEgMi43NzIgMy4xNjhsLTIuMzEgMi4zMWEuNjQuNjQgMCAwIDAgMCAuOTI0Yy4yNjQuMjY0LjY2LjI2NC45MjQgMEwxNC4zMjIgMS41MThhLjY0LjY0IDAgMCAwIDAtLjkyNG0tOS41NyA3LjQ1OEEzLjE3IDMuMTcgMCAwIDEgNy45MiA0Ljg4NGMuMzMgMCAuNzI2LjA2Ni45OS4xOThsLS44NTguODU4aC0uMTk4Yy0xLjE4OCAwLTIuMTc4Ljk5LTIuMTc4IDIuMTc4di4xOThsLS44NTguODU4YzAtLjM5Ni0uMDY2LS43OTItLjA2Ni0xLjEyMk03LjkyIDEwLjIzYzEuMTg4IDAgMi4xNzgtLjk5IDIuMTc4LTIuMTc4IDAtLjE5OC0uMDY2LS4zOTYtLjEzMi0uNjZMNy4yNiAxMC4wOThjLjI2NC4wNjYuNDYyLjEzMi42Ni4xMzJtNy45Mi0yLjE3OGMtLjY2LTEuMzItMS43ODItMi41MDgtMy4xMDItMy4zNjZsLTEuOTggMS45OGMuMTk4LjM5Ni4zMy45MjQuMzMgMS4zODZBMy4xNyAzLjE3IDAgMCAxIDcuOTIgMTEuMjJjLS41MjggMC0uOTktLjEzMi0xLjM4Ni0uMzNsLTEuNDUyIDEuNDUyYy44NTguMzMgMS44NDguNTI4IDIuODM4LjUyOCAzLjU2NCAwIDYuNi0yLjE3OCA3LjkyLTQuODE4Ii8+PC9zdmc+);opacity:.3}.adsk-viewing-viewer.dark-theme .property-panel .no-properties{color:#eee}.adsk-viewing-viewer.dark-theme .property-panel .property-name{color:#f3f7fb}.adsk-viewing-viewer.dark-theme .property-panel .property-value{color:#e4e9ee}.adsk-viewing-viewer.dark-theme .property-panel .property-drop-down{background:rgba(0,0,0,.25);color:#f3f7fb}.adsk-viewing-viewer.dark-theme .property-panel .property-drop-down>option{background:rgba(0,0,0,.75)}.adsk-viewing-viewer.dark-theme .model-structure-panel .lmv-no-properties{color:#eee}.adsk-viewing-viewer.dark-theme .bimwalk .c-bimwalk-tooltip{background-color:#393939}.adsk-viewing-viewer.dark-theme .bimwalk .bimwalk-guide-dark-theme{display:block}.adsk-viewing-viewer.dark-theme .bimwalk .bimwalk-guide-light-theme{display:none}.adsk-viewing-viewer.dark-theme .bimwalk .bimwalk-tooltip-or{color:#fff}.adsk-viewing-viewer.dark-theme .toolbar-animation-play-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA3VjBsNyAzLjVMMTQgN2wtNyAzLjVMMCAxNHoiLz48L3N2Zz4=)}.adsk-viewing-viewer.dark-theme .adsk-button.active .toolbar-animation-play-icon,.adsk-viewing-viewer.dark-theme .adsk-button:focus .toolbar-animation-play-icon,.adsk-viewing-viewer.dark-theme .adsk-button:hover .toolbar-animation-play-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA3VjBsNyAzLjVMMTQgN2wtNyAzLjVMMCAxNHoiLz48L3N2Zz4=)}.adsk-viewing-viewer.dark-theme .toolbar-animation-pause-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMCAwaDR2MTRIMHpNOCAwaDR2MTRIOHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.dark-theme .adsk-button.active .toolbar-animation-pause-icon,.adsk-viewing-viewer.dark-theme .adsk-button:focus .toolbar-animation-pause-icon,.adsk-viewing-viewer.dark-theme .adsk-button:hover .toolbar-animation-pause-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMCAwaDR2MTRIMHpNOCAwaDR2MTRIOHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.dark-theme .toolbar-animation-backward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQgN1YwTDcgMy41IDAgN2w3IDMuNSA3IDMuNXpNMTggMGgtMnYxNGgyeiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.dark-theme .adsk-button.active .toolbar-animation-backward-icon,.adsk-viewing-viewer.dark-theme .adsk-button:focus .toolbar-animation-backward-icon,.adsk-viewing-viewer.dark-theme .adsk-button:hover .toolbar-animation-backward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQgN1YwTDcgMy41IDAgN2w3IDMuNSA3IDMuNXpNMTggMGgtMnYxNGgyeiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.dark-theme .toolbar-animation-forward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNCA3VjBsNyAzLjVMMTggN2wtNyAzLjVMNCAxNHpNMCAwaDJ2MTRIMHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.dark-theme .adsk-button.active .toolbar-animation-forward-icon,.adsk-viewing-viewer.dark-theme .adsk-button:focus .toolbar-animation-forward-icon,.adsk-viewing-viewer.dark-theme .adsk-button:hover .toolbar-animation-forward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNCA3VjBsNyAzLjVMMTggN2wtNyAzLjVMNCAxNHpNMCAwaDJ2MTRIMHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.dark-theme .treeview .group,.adsk-viewing-viewer.dark-theme .treeview .leaf,.adsk-viewing-viewer.dark-theme .treeview group,.adsk-viewing-viewer.dark-theme .treeview leaf{color:#fff}.adsk-viewing-viewer.dark-theme .treeview .group.selected label,.adsk-viewing-viewer.dark-theme .treeview .leaf.selected label,.adsk-viewing-viewer.dark-theme .treeview group.selected label,.adsk-viewing-viewer.dark-theme .treeview group.selected-ex>lmvheader>label,.adsk-viewing-viewer.dark-theme .treeview leaf.selected label,.adsk-viewing-viewer.dark-theme .treeview leaf.selected-ex>lmvheader>label{color:#1dc7f3!important}.adsk-viewing-viewer .treeview .leaf.property{color:#f3f7fb}.adsk-viewing-viewer.dark-theme .treeview .group.category>lmvheader,.adsk-viewing-viewer.dark-theme .treeview group.category>lmvheader{background-color:rgba(34,34,34,.2)}.adsk-viewing-viewer.dark-theme .treeview .group>lmvheader>label,.adsk-viewing-viewer.dark-theme .treeview .leaf>lmvheader>label,.adsk-viewing-viewer.dark-theme .treeview group>lmvheader>label,.adsk-viewing-viewer.dark-theme .treeview leaf>lmvheader>label{color:#fff}.adsk-viewing-viewer.dark-theme .treeview .group>lmvheader:hover,.adsk-viewing-viewer.dark-theme .treeview .leaf>lmvheader:hover,.adsk-viewing-viewer.dark-theme .treeview group>lmvheader:hover,.adsk-viewing-viewer.dark-theme .treeview leaf>lmvheader:hover{background:rgba(0,0,0,.4)!important}.adsk-viewing-viewer.dark-theme .treeview .group.dim>lmvheader>label,.adsk-viewing-viewer.dark-theme .treeview .leaf.dim>lmvheader>label,.adsk-viewing-viewer.dark-theme .treeview group.dim>lmvheader>label,.adsk-viewing-viewer.dark-theme .treeview leaf.dim>lmvheader>label{color:hsla(0,0%,93%,.3)}.adsk-viewing-viewer.dark-theme .treeview div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMCI+PHBhdGggZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNMTIuNDc0LjgyM2MuOTM2LjM5MyAxLjgxLjkyIDIuNTkyIDEuNTY2YTguOCA4LjggMCAwIDEgMS43ODIgMi4yMTQgNy4xIDcuMSAwIDAgMS0xLjU2NiAyLjQzIDkuMSA5LjEgMCAwIDEtMi41MzggMS42NzRjLTEuMzgzLjU4Ny0yLjg3Mi44OC00LjM3NC44NjRhMTAuMyAxMC4zIDAgMCAxLTQuMzItLjcwMiA4LjQgOC40IDAgMCAxLTIuNTM4LTEuNjJBNy4xIDcuMSAwIDAgMSAwIDQuNzY1YTkuMSA5LjEgMCAwIDEgMS43ODItMi40M0E5LjUgOS41IDAgMCAxIDQuMzc0LjcxNWE5LjIgOS4yIDAgMCAxIDQuMDUtLjcwMmMxLjM5LjAwNiAyLjc2NS4yODEgNC4wNS44MU04LjUzMiA4LjA2Yy40MjgtLjAwNC44NS0uMDk2IDEuMjQyLS4yNy4zODMtLjE2Ny43My0uNDA2IDEuMDI2LS43MDIuNjEtLjYxNi45NC0xLjQ1NS45MTgtMi4zMjJhMy4xOSAzLjE5IDAgMCAwLS45MTgtMi4yNjggMy40IDMuNCAwIDAgMC0xLjAyNi0uNzAyIDMuMjQgMy4yNCAwIDAgMC0yLjUzOCAwYy0uMzgzLjE2OC0uNzMuNDA2LTEuMDI2LjcwMmEzLjE5IDMuMTkgMCAwIDAtLjkxOCAyLjMyMmMuMDA2LjQyOC4wOTcuODUuMjcgMS4yNDIuMTY2LjM4NS40MDQuNzMzLjcwMiAxLjAyNmEzLjMgMy4zIDAgMCAwIDIuMjY4Ljk3Mm0xLjg5LTMuMjk0YTEuOCAxLjggMCAwIDAtLjE2Mi0uNzAyIDEuOSAxLjkgMCAwIDAtLjM3OC0uNTk0IDEuOCAxLjggMCAwIDAtLjU5NC0uMzc4bC0uNzAyLS4xNjItLjcwMi4xNjJhMS44NCAxLjg0IDAgMCAwLS45NzIuOTcyIDEuODQgMS44NCAwIDAgMCAwIDEuNDU4Yy4xNzMuNDI4LjUuNzc1LjkxOC45NzJsLjcwMi4xNjIuNzAyLS4xNjJjLjIyLS4wODYuNDIyLS4yMTQuNTk0LS4zNzguMTYxLS4xNzMuMjktLjM3NC4zNzgtLjU5NC4xMDktLjIzNy4xNjQtLjQ5NS4xNjItLjc1NnoiLz48L3N2Zz4=);background-position:6px 12px;background-repeat:no-repeat;border:none;height:100%;margin:0;opacity:.7;outline:none;padding:0;position:absolute;right:0;top:0;width:35px}.adsk-viewing-viewer.dark-theme .treeview div.visibility:hover{filter:drop-shadow(0 0 0 #fff)}.adsk-viewing-viewer.dark-theme .treeview .dim div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNSI+PHBhdGggZmlsbD0iI0Y0RjRGNCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTQuMzIyLjU5NGEuNjQuNjQgMCAwIDAtLjkyNCAwTDEwLjM2MiAzLjYzYy0uNzkyLS4xOTgtMS41ODQtLjM5Ni0yLjQ0Mi0uMzk2LTMuNTY0IDAtNi42IDIuMTc4LTcuOTIgNC44MTguNTk0IDEuMTg4IDEuNTg0IDIuMzEgMi43NzIgMy4xNjhsLTIuMzEgMi4zMWEuNjQuNjQgMCAwIDAgMCAuOTI0Yy4yNjQuMjY0LjY2LjI2NC45MjQgMEwxNC4zMjIgMS41MThhLjY0LjY0IDAgMCAwIDAtLjkyNG0tOS41NyA3LjQ1OEEzLjE3IDMuMTcgMCAwIDEgNy45MiA0Ljg4NGMuMzMgMCAuNzI2LjA2Ni45OS4xOThsLS44NTguODU4aC0uMTk4Yy0xLjE4OCAwLTIuMTc4Ljk5LTIuMTc4IDIuMTc4di4xOThsLS44NTguODU4YzAtLjM5Ni0uMDY2LS43OTItLjA2Ni0xLjEyMk03LjkyIDEwLjIzYzEuMTg4IDAgMi4xNzgtLjk5IDIuMTc4LTIuMTc4IDAtLjE5OC0uMDY2LS4zOTYtLjEzMi0uNjZMNy4yNiAxMC4wOThjLjI2NC4wNjYuNDYyLjEzMi42Ni4xMzJtNy45Mi0yLjE3OGMtLjY2LTEuMzItMS43ODItMi41MDgtMy4xMDItMy4zNjZsLTEuOTggMS45OGMuMTk4LjM5Ni4zMy45MjQuMzMgMS4zODZBMy4xNyAzLjE3IDAgMCAxIDcuOTIgMTEuMjJjLS41MjggMC0uOTktLjEzMi0xLjM4Ni0uMzNsLTEuNDUyIDEuNDUyYy44NTguMzMgMS44NDguNTI4IDIuODM4LjUyOCAzLjU2NCAwIDYuNi0yLjE3OCA3LjkyLTQuODE4Ii8+PC9zdmc+);background-position:6px 9px;opacity:.3}.adsk-viewing-viewer.dark-theme .treeview .view lmvheader>icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjUxNDMxOERGQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjUxNDMxOEUwQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTE0MzE4RERCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTE0MzE4REVCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6dltUsAAAAvElEQVR42mL8//8/AyWAiYFCQLEBLCCira3tJZD6DhVjBGI+KI0MVldVVaUC1cL4qkCsBHPBRiDWh2JbIGYDYn40HA1VywnEKUB8DIibWaCCf6AYBH4jsZHBKyjdBcQhQCwCxFdhBiQBcRSSYl4sBvyD0jxA/APK/g8zgB2KiQF/QRoHJBphtnJDA5lkA7ig9HIgvg9lc7CQYIAElN4ExEeAuAGUXmAGHCDCgK9I7HdAXAoylHHoZyaAAAMA0EImBepZpP0AAAAASUVORK5CYII=);background-repeat:no-repeat;display:inline;padding:0 11px}.adsk-viewing-viewer.dark-theme .treeview .collapsed>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjEwIj48cGF0aCBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0uODk4LjE5NS44MiA5LjkxM2w1LjA5Mi01LjA5MiIvPjwvc3ZnPg==);cursor:zoom-in}.adsk-viewing-viewer.dark-theme .treeview .expanded>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI2Ij48cGF0aCBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjcxOS44OTggMCAuODJsNS4wOTIgNS4wOTIiLz48L3N2Zz4=);cursor:zoom-out}.adsk-viewing-viewer.dark-theme .treeview .expanded.selected>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI2Ij48cGF0aCBmaWxsPSIjMURDNkYyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05Ljg0Ny44OTguMTMuODIgNS4yMiA1LjkxMyIvPjwvc3ZnPg==);cursor:zoom-out}.adsk-viewing-viewer.dark-theme .treeview .collapsed.selected>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjEwIj48cGF0aCBmaWxsPSIjMURDNkYyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0uODk4LjE5NS44MiA5LjkxM2w1LjA5Mi01LjA5MiIvPjwvc3ZnPg==);cursor:zoom-in}.adsk-viewing-viewer.dark-theme .settings-tabs ul{box-shadow:0 1px 10px 0 rgba(0,0,0,.2)}.adsk-viewing-viewer.dark-theme .viewer-settings-panel .settings-environment-image{border:1px solid #4a555b!important}.adsk-viewing-viewer.dark-theme .propertysearch-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIHZpZXdCb3g9IjAgMCA1OC4zNzEgNTguMzcxIj48cGF0aCBkPSJtNTUuODMzIDU2LjY3OS01Ljk2OS02LjI0M2ExMC43NCAxMC43NCAwIDAgMCAyLjgyLTcuMjVjMC01Ljk1My00Ljg0My0xMC43OTYtMTAuNzk2LTEwLjc5NnMtMTAuNzk2IDQuODQzLTEwLjc5NiAxMC43OTYgNC44NDMgMTAuNzk2IDEwLjc5NiAxMC43OTZjMi40NDIgMCA0LjY4OS0uODI0IDYuNS0yLjE5Nmw2IDYuMjc2YTEgMSAwIDAgMCAxLjQxNC4wMzIgMSAxIDAgMCAwIC4wMzEtMS40MTVNMzMuMDkyIDQzLjE4NmMwLTQuODUgMy45NDYtOC43OTYgOC43OTYtOC43OTZzOC43OTYgMy45NDYgOC43OTYgOC43OTYtMy45NDYgOC43OTYtOC43OTYgOC43OTYtOC43OTYtMy45NDYtOC43OTYtOC43OTZNMjguMDk2IDQzLjFjLjAyNS00LjAyOSAxLjc5My03LjY0NCA0LjU3OC0xMC4xNTMtLjkxMS4wNTQtMS44NDQuMDk3LTIuODA3LjEyM2E4NCA4NCAwIDAgMS01LjIyLS4wMDFjLTcuMzQxLS4yMDEtMTMuMTkxLTEuMjM4LTE3LjQwMy0yLjcxNy0xLjk4LS42NjctMy42NzUtMS40NTMtNC45ODMtMi4zNTJ2OS40YzIuODQ2IDIuOTcxIDEyLjM5NCA1LjcxMSAyNSA1LjcxMS4yODMgMCAuNTU1LS4wMDguODM1LS4wMTFNMjQuODk2IDI5Ljk2NXEuNDg3LjAxNC45ODIuMDIzYTc5IDc5IDAgMCAwIDIuNzY2LjAwMXEuNDk0LS4wMS45ODItLjAyM2wuMzQ5LS4wMDhjMTEuMjUzLS4zNTkgMTkuNjQ4LTIuOTE1IDIyLjI4Ni01LjY2OHYtOS40MDFDNDcuMzkzIDE4LjIzMiAzNy4xMDUgMjAgMjcuMjYxIDIwcy0yMC4xMzMtMS43NjgtMjUtNS4xMTF2OS40YzIuNjM4IDIuNzU0IDExLjAzMyA1LjMxIDIyLjI4NiA1LjY2OHoiLz48cGF0aCBkPSJNNTIuMjYxIDExLjMwNlY5YS45LjkgMCAwIDAtLjEzNS0uNDU4QzUxLjAwMyA0LjI0MSA0Mi4zNzYgMCAyNy4yNjEgMCAxMi4xODMgMCAzLjU2NCA0LjIyIDIuNDA3IDguNTFhLjk3Ljk3IDAgMCAwLS4xNDYuNDl2Mi4zMDZDNS4wOTcgMTQuMjY3IDE0LjU3NyAxNyAyNy4yNjEgMTdzMjIuMTYzLTIuNzMzIDI1LTUuNjk0TTI4LjQzIDQ2LjE4N2MtLjM5LjAwNS0uNzcyLjAxNC0xLjE3LjAxNC0xMi4zNDYgMC0yMC44NjYtMi4yOS0yNS01LjIwMXY4LjIwMWEuOTQuOTQgMCAwIDAgLjExNy40NTFjMS4xODEgNC44OTUgMTEuNzQ3IDguNTQ5IDI0Ljg4MyA4LjU0OSA0Ljc2NCAwIDkuMTgyLS40ODYgMTIuOTQ1LTEuMzMyLTUuODE2LS43MTItMTAuNTE5LTUuMDUtMTEuNzc1LTEwLjY4MiIvPjwvc3ZnPg==);filter:invert(1)}.adsk-viewing-viewer.dark-theme .docking-panel.menu .menu-item-expand{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjEwIj48cGF0aCBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0uODk4LjE5NS44MiA5LjkxM2w1LjA5Mi01LjA5MiIvPjwvc3ZnPg==)}.adsk-viewing-viewer.dark-theme .progresslb{color:#000}.adsk-viewing-viewer.dark-theme .hyperlink-container{filter:drop-shadow(0 3px 5px rgba(0,0,0,.3))}.adsk-viewing-viewer.dark-theme .hyperlink-container .docking-panel{box-shadow:none}.adsk-viewing-viewer.dark-theme .hyperlink-container-triangle{border-right:19px solid rgba(34,34,34,.9)}.adsk-viewing-viewer.dark-theme .hyperlink-back-closer{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}@font-face{font-family:ArtifaktElement;font-style:normal;font-weight:100;src:local("Artifakt Element Hair"),local("ArtifaktElement-Hair"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Hair.woff2) format("woff2"),local("Artifakt Element Hair"),local("ArtifaktElement-Hair"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Hair.woff) format("woff"),local("Artifakt Element Hair"),local("ArtifaktElement-Hair"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Hair.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:normal;font-weight:200;src:local("Artifakt Element Thin"),local("ArtifaktElement-Thin"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Thin.woff2) format("woff2"),local("Artifakt Element Thin"),local("ArtifaktElement-Thin"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Thin.woff) format("woff"),local("Artifakt Element Thin"),local("ArtifaktElement-Thin"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Thin.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:normal;font-weight:300;src:local("Artifakt Element Light"),local("ArtifaktElement-Light"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Light.woff2) format("woff2"),local("Artifakt Element Light"),local("ArtifaktElement-Light"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Light.woff) format("woff"),local("Artifakt Element Light"),local("ArtifaktElement-Light"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Light.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:normal;font-weight:400;src:local("Artifakt Element Regular"),local("ArtifaktElement-Regular"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Regular.woff2) format("woff2"),local("Artifakt Element Regular"),local("ArtifaktElement-Regular"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Regular.woff) format("woff"),local("Artifakt Element Regular"),local("ArtifaktElement-Regular"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Regular.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:normal;font-weight:500;src:local("Artifakt Element Book"),local("ArtifaktElement-Book"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Book.woff2) format("woff2"),local("Artifakt Element Book"),local("ArtifaktElement-Book"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Book.woff) format("woff"),local("Artifakt Element Book"),local("ArtifaktElement-Book"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Book.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:normal;font-weight:600;src:local("Artifakt Element Medium"),local("ArtifaktElement-Medium"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Medium.woff2) format("woff2"),local("Artifakt Element Medium"),local("ArtifaktElement-Medium"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Medium.woff) format("woff"),local("Artifakt Element Medium"),local("ArtifaktElement-Medium"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Medium.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:normal;font-weight:700;src:local("Artifakt Element Bold"),local("ArtifaktElement-Bold"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Bold.woff2) format("woff2"),local("Artifakt Element Bold"),local("ArtifaktElement-Bold"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Bold.woff) format("woff"),local("Artifakt Element Bold"),local("ArtifaktElement-Bold"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Bold.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:normal;font-weight:800;src:local("Artifakt Element Black"),local("ArtifaktElement-Black"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Black.woff2) format("woff2"),local("Artifakt Element Black"),local("ArtifaktElement-Black"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Black.woff) format("woff"),local("Artifakt Element Black"),local("ArtifaktElement-Black"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Black.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:normal;font-weight:900;src:local("Artifakt Element Heavy"),local("ArtifaktElement-Heavy"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Heavy.woff2) format("woff2"),local("Artifakt Element Heavy"),local("ArtifaktElement-Heavy"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Heavy.woff) format("woff"),local("Artifakt Element Heavy"),local("ArtifaktElement-Heavy"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Heavy.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:italic;font-weight:100;src:local("Artifakt Legend Hair"),local("ArtifaktElement-Hair"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Hair%20Italic.woff2) format("woff2"),local("Artifakt Legend Hair"),local("ArtifaktElement-Hair"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Hair%20Italic.woff) format("woff"),local("Artifakt Legend Hair"),local("ArtifaktElement-Hair"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Hair%20Italic.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:italic;font-weight:200;src:local("Artifakt Legend Thin"),local("ArtifaktElement-Thin"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Thin%20Italic.woff2) format("woff2"),local("Artifakt Legend Thin"),local("ArtifaktElement-Thin"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Thin%20Italic.woff) format("woff"),local("Artifakt Legend Thin"),local("ArtifaktElement-Thin"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Thin%20Italic.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:italic;font-weight:300;src:local("Artifakt Legend Light"),local("ArtifaktElement-Light"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Light%20Italic.woff2) format("woff2"),local("Artifakt Legend Light"),local("ArtifaktElement-Light"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Light%20Italic.woff) format("woff"),local("Artifakt Legend Light"),local("ArtifaktElement-Light"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Light%20Italic.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:italic;font-weight:italic;src:local("Artifakt Legend Regular"),local("ArtifaktElement-Regular"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Regular%20Italic.woff2) format("woff2"),local("Artifakt Legend Regular"),local("ArtifaktElement-Regular"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Regular%20Italic.woff) format("woff"),local("Artifakt Legend Regular"),local("ArtifaktElement-Regular"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Regular%20Italic.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:italic;font-weight:500;src:local("Artifakt Legend Book"),local("ArtifaktElement-Book"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Book%20Italic.woff2) format("woff2"),local("Artifakt Legend Book"),local("ArtifaktElement-Book"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Book%20Italic.woff) format("woff"),local("Artifakt Legend Book"),local("ArtifaktElement-Book"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Book%20Italic.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:italic;font-weight:600;src:local("Artifakt Legend Medium"),local("ArtifaktElement-Medium"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Medium%20Italic.woff2) format("woff2"),local("Artifakt Legend Medium"),local("ArtifaktElement-Medium"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Medium%20Italic.woff) format("woff"),local("Artifakt Legend Medium"),local("ArtifaktElement-Medium"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Medium%20Italic.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:italic;font-weight:700;src:local("Artifakt Legend Bold"),local("ArtifaktElement-Bold"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Bold%20Italic.woff2) format("woff2"),local("Artifakt Legend Bold"),local("ArtifaktElement-Bold"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Bold%20Italic.woff) format("woff"),local("Artifakt Legend Bold"),local("ArtifaktElement-Bold"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Bold%20Italic.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:italic;font-weight:800;src:local("Artifakt Legend Black"),local("ArtifaktElement-Black"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Black%20Italic.woff2) format("woff2"),local("Artifakt Legend Black"),local("ArtifaktElement-Black"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Black%20Italic.woff) format("woff"),local("Artifakt Legend Black"),local("ArtifaktElement-Black"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Black%20Italic.ttf) format("truetype")}@font-face{font-family:ArtifaktElement;font-style:italic;font-weight:900;src:local("Artifakt Legend Heavy"),local("ArtifaktElement-Heavy"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF2/Artifakt%20Element%20Heavy%20Italic.woff2) format("woff2"),local("Artifakt Legend Heavy"),local("ArtifaktElement-Heavy"),url(https://fonts.autodesk.com/ArtifaktElement/WOFF/Artifakt%20Element%20Heavy%20Italic.woff) format("woff"),local("Artifakt Legend Heavy"),local("ArtifaktElement-Heavy"),url(https://fonts.autodesk.com/ArtifaktElement/TTF/Artifakt%20Element%20Heavy%20Italic.ttf) format("truetype")}.adsk-viewing-viewer.light-theme{color:#0a131c;font-size:14px}.adsk-viewing-viewer.light-theme.quality-text{text-rendering:geometricPrecision}.adsk-viewing-viewer.light-theme .viewcube{color:#000}.adsk-viewing-viewer.dark-theme .property-drop-down,.adsk-viewing-viewer.light-theme .adsk-lmv-tftable input,.adsk-viewing-viewer.light-theme .option-drop-down{background-color:#fff;border:1px solid #d5dbe1;color:#000}.adsk-viewing-viewer.light-theme .adsk-control-group{background-color:#fff;box-shadow:1px 3px 10px 0 rgba(0,0,0,.5);color:#0a131c}.adsk-viewing-viewer.light-theme .adsk-button:hover{border:1px solid #00bfff;color:#00bfff}.adsk-viewing-viewer.light-theme .adsk-button.active,.adsk-viewing-viewer.light-theme .adsk-button:focus{border-radius:3px;box-shadow:inset 0 1px 1px 0 rgba(0,0,0,.6);color:#00bfff;outline:none}.adsk-viewing-viewer.light-theme .adsk-label-button.active,.adsk-viewing-viewer.light-theme .adsk-label-button:focus,.adsk-viewing-viewer.light-theme .adsk-label-button:hover{border:1px solid transparent}.adsk-viewing-viewer.light-theme .adsk-label-button label{background-color:#06a7df;color:#fff}.adsk-viewing-viewer.light-theme .adsk-label-button.active label,.adsk-viewing-viewer.light-theme .adsk-label-button:focus label,.adsk-viewing-viewer.light-theme .adsk-label-button:hover label{background-color:#00bfff;color:#fff}.adsk-viewing-viewer.light-theme .adsk-control-tooltip{background-color:hsla(0,0%,100%,.94);border-radius:3px;box-shadow:0 3px 5px 0 rgba(0,0,0,.1);color:#0a131c;opacity:1}.adsk-viewing-viewer.light-theme .docking-panel{box-shadow:1px 3px 10px 0 rgba(0,0,0,.4)}.adsk-viewing-viewer.light-theme .docking-panel-delimiter-shadow{box-shadow:0 3px 5px 0 rgba(0,0,0,.1)}.adsk-viewing-viewer.light-theme .docking-panel-title{background-color:#fff;border-bottom:1px solid rgba(0,0,0,.2);color:#0a131c}.adsk-viewing-viewer.light-theme .docking-panel-close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0iIzRBNTU1QiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}.adsk-viewing-viewer.light-theme .docking-panel-close:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}.adsk-viewing-viewer.light-theme .docking-panel-footer-resizer{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjciPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggc3Ryb2tlPSIjQkVDOEQyIiBkPSJtLjUgNi41IDYtNk00LjUgNi41bDEuNTM2LTEuNTM2Ii8+PHBhdGggc3Ryb2tlPSIjOTM5Q0E1IiBkPSJtMS41IDYuNSA2LTZNNS41IDYuNWwxLjUzNi0xLjUzNiIvPjwvZz48L3N2Zz4=);background-position-x:9px;background-position-y:8px;background-repeat:no-repeat}.adsk-viewing-viewer.light-theme .docking-panel-footer-resizer:hover{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjciPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggc3Ryb2tlPSIjQkVDOEQyIiBkPSJtLjUgNi41IDYtNk00LjUgNi41bDEuNTM2LTEuNTM2Ii8+PHBhdGggc3Ryb2tlPSIjNEE1NTVCIiBkPSJtMS41IDYuNSA2LTZNNS41IDYuNWwxLjUzNi0xLjUzNiIvPjwvZz48L3N2Zz4=);background-position-x:9px;background-position-y:8px;background-repeat:no-repeat}.adsk-viewing-viewer.light-theme .docking-panel-button{border:1px solid #d5dbe1;color:#4a555b}.adsk-viewing-viewer.light-theme .docking-panel-primary-button{background-color:#06a7df;color:#fff}.adsk-viewing-viewer.light-theme .docking-panel-primary-button.active,.adsk-viewing-viewer.light-theme .docking-panel-primary-button:focus,.adsk-viewing-viewer.light-theme .docking-panel-primary-button:hover{background-color:#00bfff;color:#fff}.adsk-viewing-viewer.light-theme .docking-panel-secondary-button{background-color:#939ca5;color:#fff}.adsk-viewing-viewer.light-theme .docking-panel-secondary-button.active,.adsk-viewing-viewer.light-theme .docking-panel-secondary-button:focus,.adsk-viewing-viewer.light-theme .docking-panel-secondary-button:hover{background-color:#bec8d2;color:#fff}.adsk-viewing-viewer.light-theme .docking-panel-tertiary-button{border:1px solid #939ca5;color:#939ca5}.adsk-viewing-viewer.light-theme .docking-panel-tertiary-button.active,.adsk-viewing-viewer.light-theme .docking-panel-tertiary-button:focus,.adsk-viewing-viewer.light-theme .docking-panel-tertiary-button:hover{background-color:#939ca5;color:#fff}.adsk-viewing-viewer.light-theme .docking-panel-footer{background-color:#fff;border-top:1px solid rgba(0,0,0,.2)}.adsk-viewing-viewer.light-theme .docking-panel-container-solid-color-a{background-color:hsla(0,0%,100%,.94)}.adsk-viewing-viewer.light-theme .docking-panel-container-solid-color-b{background-color:hsla(0,0%,100%,.98)}.adsk-viewing-viewer.light-theme .docking-panel-container-solid-color-c{background-color:#ecf0f3}.adsk-viewing-viewer.light-theme .docking-panel-container-gradient{background:repeating-linear-gradient(rgba(242,247,250,.7),rgba(242,247,250,.7) 36px,rgba(242,247,250,0) 0,rgba(242,247,250,0) 72px)}.adsk-viewing-viewer.light-theme .docking-panel-textbox{background-color:transparent;border:1px solid #d5dbe1}.adsk-viewing-viewer.light-theme .adsk-lmv-tftable tr td div{color:#4a555b}.adsk-viewing-viewer.light-theme .adsk-lmv-tftable tr.logical-group{background-color:rgba(242,247,250,.7)}.adsk-viewing-viewer.light-theme .adsk-lmv-tftable tr.logical-group td div{color:#0a131c}.adsk-viewing-viewer.light-theme .docking-panel-scroll::-webkit-scrollbar-track{background:none}.adsk-viewing-viewer.light-theme .docking-panel-scroll::-webkit-scrollbar-thumb{background:#bec8d2}.adsk-viewing-viewer.light-theme .docking-panel-scroll::-webkit-scrollbar-thumb:hover{background:#939ca5}.adsk-viewing-viewer.light-theme .docking-panel-scroll::-webkit-resizer{background-color:rgba(30,30,30,.8)}.adsk-viewing-viewer.light-theme .docking-pane-scroll::-webkit-scrollbar-corner{background-color:rgba(0,0,0,.2)}.adsk-viewing-viewer.light-theme .adsk-filterbox input.filter-box,.adsk-viewing-viewer.light-theme .adsk-searchbox input.search-box{background:#fff;border:1px solid transparent;color:#0a131c}.adsk-viewing-viewer.light-theme .adsk-filterbox input.filter-box:focus,.adsk-viewing-viewer.light-theme .adsk-searchbox input.search-box:focus{border:1px solid #1dc6f2}.adsk-viewing-viewer.light-theme .adsk-searchbox .search-box-icon{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyI+PHBhdGggZmlsbD0iIzRBNTU1QiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi4yMTQgOS4yMzZhNS4wMyA1LjAzIDAgMCAxLTEuNDUtMy41MTFjMC0xLjI5OC41MzQtMi41OTUgMS40NS0zLjUxMWE1LjAzIDUuMDMgMCAwIDEgMy41MS0xLjQ1YzEuMjk4IDAgMi41OTYuNTM0IDMuNTEyIDEuNDVhNS4wMyA1LjAzIDAgMCAxIDEuNDUgMy41MSA1LjAzIDUuMDMgMCAwIDEtMS40NSAzLjUxMiA1LjAzIDUuMDMgMCAwIDEtMy41MTEgMS40NSA1LjAzIDUuMDMgMCAwIDEtMy41MTEtMS40NU0xMi45IDEyLjI5bC0yLjgyNC0yLjgyNGMuOTE2LTEuMDY5IDEuNDUtMi4zNjYgMS40NS0zLjc0YTUuNzIgNS43MiAwIDAgMC0xLjY4LTQuMDQ2QzguNzc5LjYxMSA3LjI1MiAwIDUuNzI2IDBhNS43MiA1LjcyIDAgMCAwLTQuMDQ2IDEuNjhBNS43MiA1LjcyIDAgMCAwIDAgNS43MjQgNS43MiA1LjcyIDAgMCAwIDEuNjggOS43N2E1LjcyIDUuNzIgMCAwIDAgNC4wNDUgMS42OEE1LjYgNS42IDAgMCAwIDkuNDY1IDEwbDIuODI0IDIuODI0Yy4wNzcuMDc2LjE1My4wNzYuMzA2LjA3Ni4xNTIgMCAuMjI5IDAgLjMwNS0uMDc2LjA3Ni0uMDc3LjA3Ni0uMzgyIDAtLjUzNSIvPjwvc3ZnPg==)}.adsk-viewing-viewer.light-theme .adsk-searchbox .search-box-icon.focused{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyI+PHBhdGggZmlsbD0iIzFEQzZGMiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi4yMTQgOS4yMzZhNS4wMyA1LjAzIDAgMCAxLTEuNDUtMy41MTFjMC0xLjI5OC41MzQtMi41OTUgMS40NS0zLjUxMWE1LjAzIDUuMDMgMCAwIDEgMy41MS0xLjQ1YzEuMjk4IDAgMi41OTYuNTM0IDMuNTEyIDEuNDVhNS4wMyA1LjAzIDAgMCAxIDEuNDUgMy41MSA1LjAzIDUuMDMgMCAwIDEtMS40NSAzLjUxMiA1LjAzIDUuMDMgMCAwIDEtMy41MTEgMS40NSA1LjAzIDUuMDMgMCAwIDEtMy41MTEtMS40NU0xMi45IDEyLjI5bC0yLjgyNC0yLjgyNGMuOTE2LTEuMDY5IDEuNDUtMi4zNjYgMS40NS0zLjc0YTUuNzIgNS43MiAwIDAgMC0xLjY4LTQuMDQ2QzguNzc5LjYxMSA3LjI1MiAwIDUuNzI2IDBhNS43MiA1LjcyIDAgMCAwLTQuMDQ2IDEuNjhBNS43MiA1LjcyIDAgMCAwIDAgNS43MjQgNS43MiA1LjcyIDAgMCAwIDEuNjggOS43N2E1LjcyIDUuNzIgMCAwIDAgNC4wNDUgMS42OEE1LjYgNS42IDAgMCAwIDkuNDY1IDEwbDIuODI0IDIuODI0Yy4wNzcuMDc2LjE1My4wNzYuMzA2LjA3Ni4xNTIgMCAuMjI5IDAgLjMwNS0uMDc2LjA3Ni0uMDc3LjA3Ni0uMzgyIDAtLjUzNSIvPjwvc3ZnPg==)}.adsk-viewing-viewer.light-theme .adsk-filterbox .filter-box-icon{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI3Ij48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzk3OTc5NyIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggZD0iTTcuNSA2LjVoLTVNOC41IDMuNWgtN005LjUuNWgtOSIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.light-theme .adsk-filterbox .filter-box-icon.focused{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI3Ij48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwQkZGRiIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggZD0iTTcuNSA2LjVoLTVNOC41IDMuNWgtN005LjUuNWgtOSIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.light-theme .adsk-filterbox .filter-box-close,.adsk-viewing-viewer.light-theme .adsk-searchbox .search-box-close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iNyIgZmlsbD0iI0JFQzhEMiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik00LjUxIDEwIDQgOS40OSA5LjQ5IDRsLjUxLjUxeiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Im0xMCA5LjQ5LS41MS41MUw0IDQuNTEgNC41MSA0eiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.light-theme .adsk-filterbox .filter-box-close:hover,.adsk-viewing-viewer.light-theme .adsk-searchbox .search-box-close:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iNyIgZmlsbD0iIzkzOUNBNSIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik00LjUxIDEwIDQgOS40OSA5LjQ5IDRsLjUxLjUxeiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Im0xMCA5LjQ5LS41MS41MUw0IDQuNTEgNC41MSA0eiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.light-theme .adsk-search-results-scrolling-panel .selected{background-color:#f2f7fa}.adsk-viewing-viewer.light-theme .adsk-search-results-scrolling-panel>div[lmv-nodeid]:hover{background-color:rgba(0,191,255,.2)}.adsk-viewing-viewer.light-theme .adsk-search-results-scrolling-panel .search-match{color:#1dc6f2}.adsk-viewing-viewer.light-theme .adsk-search-results-scrolling-panel .search-path{color:#939ca5}.adsk-viewing-viewer.light-theme .adsk-search-results-scrolling-panel .no-results-title{color:#000}.adsk-viewing-viewer.light-theme .adsk-search-results-scrolling-panel .no-results-description{color:#939ca5}.adsk-viewing-viewer.light-theme .loading-spinner path{stroke:#00bfff;fill:transparent}.adsk-viewing-viewer.light-theme .loading-spinner path:first-child{stroke:#ecf0f3}.adsk-viewing-viewer.light-theme .loading-spinner .message{color:#0a131c}.adsk-viewing-viewer.light-theme .docking-panel.menu .menu-item:hover{background:rgba(0,191,255,.2)}.adsk-viewing-viewer.light-theme .docking-panel.menu .menu-divider{background-color:#666}.adsk-viewing-viewer.light-theme .viewer-settings-panel.docking-panel .settings-tabs span{color:#0a131c}.adsk-viewing-viewer.light-theme .viewer-settings-panel.docking-panel .settings-tabs span:hover{color:#1dc6f2}.adsk-viewing-viewer.light-theme .viewer-settings-panel.docking-panel .settings-tabs .tabselected span{border-color:#00bfff;color:#00bfff}.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-environment-cell{border:1px solid #f2f7fa}.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-environment-cell:hover{border:1px solid #939ca5}.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-environment-cell.border-select{border:1px solid #00bfff}.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-cell{border:1px solid #f2f7fa}.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-cell:hover{border:1px solid #939ca5}.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-cell.border-select{border:1px solid #00bfff}.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-description,.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-environment-name,.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-name{color:#4a555b}.adsk-viewing-viewer.light-theme .viewer-settings-panel .docking-panel-tertiary-button:active{background-color:#4a555b;border:1px solid #4a555b}.adsk-viewing-viewer.light-theme .switch .slider,.adsk-viewing-viewer.light-theme .switch .slider:before{background-color:#d9e1e9}.adsk-viewing-viewer.light-theme .switch input:checked+.slider:before{background-color:#00bfff}.adsk-viewing-viewer.light-theme .layers-panel .visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMCI+PHBhdGggZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNOC40MjQuMDEzYzEuMzkuMDA2IDIuNzY1LjI4MSA0LjA1LjgxLjkzNi4zOTMgMS44MS45MiAyLjU5MiAxLjU2NmE4LjggOC44IDAgMCAxIDEuNzgyIDIuMjE0IDcuMSA3LjEgMCAwIDEtMS41NjYgMi40MyA5LjEgOS4xIDAgMCAxLTIuNTM4IDEuNjc0Yy0xLjM4My41ODctMi44NzIuODgtNC4zNzQuODY0YTEwLjMgMTAuMyAwIDAgMS00LjMyLS43MDIgOC40IDguNCAwIDAgMS0yLjUzOC0xLjYyQTcuMSA3LjEgMCAwIDEgMCA0Ljc2NWE5LjEgOS4xIDAgMCAxIDEuNzgyLTIuNDNBOS41IDkuNSAwIDAgMSA0LjM3NC43MTVhOS4yIDkuMiAwIDAgMSA0LjA1LS43MDJtLjEwOCA4LjA0NmMuNDI4LS4wMDQuODUtLjA5NiAxLjI0Mi0uMjcuMzgzLS4xNjcuNzMtLjQwNiAxLjAyNi0uNzAyLjYxLS42MTYuOTQtMS40NTUuOTE4LTIuMzIyYTMuMTkgMy4xOSAwIDAgMC0uOTE4LTIuMjY4IDMuNCAzLjQgMCAwIDAtMS4wMjYtLjcwMiAzLjI0IDMuMjQgMCAwIDAtMi41MzggMGMtLjM4My4xNjgtLjczLjQwNi0xLjAyNi43MDJhMy4xOSAzLjE5IDAgMCAwLS45MTggMi4zMjJjLjAwNi40MjguMDk3Ljg1LjI3IDEuMjQyLjE2Ni4zODUuNDA0LjczMy43MDIgMS4wMjZhMy4zIDMuMyAwIDAgMCAyLjI2OC45NzJtMS44OS0zLjI5NGExLjggMS44IDAgMCAwLS4xNjItLjcwMiAxLjkgMS45IDAgMCAwLS4zNzgtLjU5NCAxLjggMS44IDAgMCAwLS41OTQtLjM3OGwtLjcwMi0uMTYyLS43MDIuMTYyYTEuODQgMS44NCAwIDAgMC0uOTcyLjk3MiAxLjg0IDEuODQgMCAwIDAgMCAxLjQ1OGMuMTczLjQyOC41Ljc3NS45MTguOTcybC43MDIuMTYyLjcwMi0uMTYyYy4yMi0uMDg2LjQyMi0uMjE0LjU5NC0uMzc4LjE2MS0uMTczLjI5LS4zNzQuMzc4LS41OTQuMTA5LS4yMzcuMTY0LS40OTUuMTYyLS43NTZ6Ii8+PC9zdmc+);opacity:1}.adsk-viewing-viewer.light-theme .layers-panel .visibility.dim{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzk0OTQ5RiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTQuNDY3LjE5NGEuNjU3LjY1NyAwIDAgMC0uOTM0IDBsLTMuMDY2IDIuOTgyYy0uOC0uMTk1LTEuNi0uMzg5LTIuNDY3LS4zODktMy42IDAtNi42NjcgMi4xMzktOCA0LjczMi42IDEuMTY2IDEuNiAyLjI2OCAyLjggMy4xMUwuNDY3IDEyLjlhLjYxNS42MTUgMCAwIDAgMCAuOTA3Yy4yNjYuMjU5LjY2Ni4yNTkuOTMzIDBMMTQuNDY3IDEuMTAyYS42MTUuNjE1IDAgMCAwIDAtLjkwOE00LjggNy41MmMwLTEuNzUgMS40NjctMy4xMTIgMy4yLTMuMTEyLjMzMyAwIC43MzMuMDY1IDEgLjE5NWwtLjg2Ny44NDJoLS4yYy0xLjIgMC0yLjIuOTczLTIuMiAyLjE0di4xOTRsLS44NjYuODQyYzAtLjM4OS0uMDY3LS43NzctLjA2Ny0xLjEwMU04IDkuNjU3YzEuMiAwIDIuMi0uOTcyIDIuMi0yLjEzOCAwLS4xOTUtLjA2Ny0uMzktLjEzMy0uNjQ5TDcuMzMzIDkuNTI4Yy4yNjcuMDY1LjQ2Ny4xMy42NjcuMTNtOC0yLjEzOGMtLjY2Ny0xLjI5Ny0xLjgtMi40NjMtMy4xMzMtMy4zMDZsLTIgMS45NDRjLjIuMzkuMzMzLjkwOC4zMzMgMS4zNjIgMCAxLjc1LTEuNDY3IDMuMTEtMy4yIDMuMTEtLjUzMyAwLTEtLjEyOS0xLjQtLjMyM0w1LjEzMyAxMS43M0E4LjMgOC4zIDAgMCAwIDggMTIuMjVjMy42IDAgNi42NjctMi4xMzkgOC00LjczMSIvPjwvc3ZnPg==);opacity:1}.adsk-viewing-viewer.light-theme .property-panel .no-properties,.adsk-viewing-viewer.light-theme .property-panel .property-name{color:#4a555b}.adsk-viewing-viewer.light-theme .property-panel .property-value{color:#939ca5}.adsk-viewing-viewer.light-theme .property-panel .property-drop-down{background:hsla(0,0%,93%,.6);color:#4a555b}.adsk-viewing-viewer.light-theme .property-panel .property-drop-down>option{background:hsla(0,0%,93%,.75)}.adsk-viewing-viewer.light-theme .model-structure-panel .lmv-no-properties{color:#4a555b}.adsk-viewing-viewer.light-theme .bimwalk .c-bimwalk-tooltip{background-color:#fff}.adsk-viewing-viewer.light-theme .bimwalk .bimwalk-guide-dark-theme{display:none}.adsk-viewing-viewer.light-theme .bimwalk .bimwalk-guide-light-theme{display:block}.adsk-viewing-viewer.light-theme .bimwalk .bimwalk-tooltip-or{color:#939ca5}.adsk-viewing-viewer.light-theme .toolbar-animation-play-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA3VjBsNyAzLjVMMTQgN2wtNyAzLjVMMCAxNHoiLz48L3N2Zz4=)}.adsk-viewing-viewer.light-theme .adsk-button.active .toolbar-animation-play-icon,.adsk-viewing-viewer.light-theme .adsk-button:focus .toolbar-animation-play-icon,.adsk-viewing-viewer.light-theme .adsk-button:hover .toolbar-animation-play-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA3VjBsNyAzLjVMMTQgN2wtNyAzLjVMMCAxNHoiLz48L3N2Zz4=)}.adsk-viewing-viewer.light-theme .toolbar-animation-pause-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMCAwaDR2MTRIMHpNOCAwaDR2MTRIOHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.light-theme .adsk-button.active .toolbar-animation-pause-icon,.adsk-viewing-viewer.light-theme .adsk-button:focus .toolbar-animation-pause-icon,.adsk-viewing-viewer.light-theme .adsk-button:hover .toolbar-animation-pause-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMCAwaDR2MTRIMHpNOCAwaDR2MTRIOHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.light-theme .toolbar-animation-backward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQgN1YwTDcgMy41IDAgN2w3IDMuNSA3IDMuNXpNMTggMGgtMnYxNGgyeiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.light-theme .adsk-button.active .toolbar-animation-backward-icon,.adsk-viewing-viewer.light-theme .adsk-button:focus .toolbar-animation-backward-icon,.adsk-viewing-viewer.light-theme .adsk-button:hover .toolbar-animation-backward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQgN1YwTDcgMy41IDAgN2w3IDMuNSA3IDMuNXpNMTggMGgtMnYxNGgyeiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.light-theme .toolbar-animation-forward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNCA3VjBsNyAzLjVMMTggN2wtNyAzLjVMNCAxNHpNMCAwaDJ2MTRIMHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.light-theme .adsk-button.active .toolbar-animation-forward-icon,.adsk-viewing-viewer.light-theme .adsk-button:focus .toolbar-animation-forward-icon,.adsk-viewing-viewer.light-theme .adsk-button:hover .toolbar-animation-forward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNCA3VjBsNyAzLjVMMTggN2wtNyAzLjVMNCAxNHpNMCAwaDJ2MTRIMHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.light-theme .treeview .group,.adsk-viewing-viewer.light-theme .treeview .leaf,.adsk-viewing-viewer.light-theme .treeview group,.adsk-viewing-viewer.light-theme .treeview leaf{color:#0a131c}.adsk-viewing-viewer.light-theme .treeview .group.selected label,.adsk-viewing-viewer.light-theme .treeview .leaf.selected label,.adsk-viewing-viewer.light-theme .treeview group.selected label,.adsk-viewing-viewer.light-theme .treeview group.selected-ex>lmvheader>label,.adsk-viewing-viewer.light-theme .treeview leaf.selected label,.adsk-viewing-viewer.light-theme .treeview leaf.selected-ex>lmvheader>label{color:#1dc7f3!important}.adsk-viewing-viewer.light-theme .treeview .group.category>lmvheader,.adsk-viewing-viewer.light-theme .treeview group.category>lmvheader{background-color:rgba(242,247,250,.7)}.adsk-viewing-viewer.light-theme .treeview .group>lmvheader>label,.adsk-viewing-viewer.light-theme .treeview .leaf>lmvheader>label,.adsk-viewing-viewer.light-theme .treeview group>lmvheader>label,.adsk-viewing-viewer.light-theme .treeview leaf>lmvheader>label{color:#0a131c}.adsk-viewing-viewer.light-theme .treeview .group>lmvheader:hover,.adsk-viewing-viewer.light-theme .treeview .leaf>lmvheader:hover,.adsk-viewing-viewer.light-theme .treeview group>lmvheader:hover,.adsk-viewing-viewer.light-theme .treeview leaf>lmvheader:hover{background:rgba(0,191,255,.2)!important}.adsk-viewing-viewer.light-theme .treeview .group.dim>lmvheader>label,.adsk-viewing-viewer.light-theme .treeview .leaf.dim>lmvheader>label,.adsk-viewing-viewer.light-theme .treeview group.dim>lmvheader>label,.adsk-viewing-viewer.light-theme .treeview leaf.dim>lmvheader>label{color:#939ca5}.adsk-viewing-viewer.light-theme .treeview div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMCI+PHBhdGggZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNOC40MjQuMDEzYzEuMzkuMDA2IDIuNzY1LjI4MSA0LjA1LjgxLjkzNi4zOTMgMS44MS45MiAyLjU5MiAxLjU2NmE4LjggOC44IDAgMCAxIDEuNzgyIDIuMjE0IDcuMSA3LjEgMCAwIDEtMS41NjYgMi40MyA5LjEgOS4xIDAgMCAxLTIuNTM4IDEuNjc0Yy0xLjM4My41ODctMi44NzIuODgtNC4zNzQuODY0YTEwLjMgMTAuMyAwIDAgMS00LjMyLS43MDIgOC40IDguNCAwIDAgMS0yLjUzOC0xLjYyQTcuMSA3LjEgMCAwIDEgMCA0Ljc2NWE5LjEgOS4xIDAgMCAxIDEuNzgyLTIuNDNBOS41IDkuNSAwIDAgMSA0LjM3NC43MTVhOS4yIDkuMiAwIDAgMSA0LjA1LS43MDJtLjEwOCA4LjA0NmMuNDI4LS4wMDQuODUtLjA5NiAxLjI0Mi0uMjcuMzgzLS4xNjcuNzMtLjQwNiAxLjAyNi0uNzAyLjYxLS42MTYuOTQtMS40NTUuOTE4LTIuMzIyYTMuMTkgMy4xOSAwIDAgMC0uOTE4LTIuMjY4IDMuNCAzLjQgMCAwIDAtMS4wMjYtLjcwMiAzLjI0IDMuMjQgMCAwIDAtMi41MzggMGMtLjM4My4xNjgtLjczLjQwNi0xLjAyNi43MDJhMy4xOSAzLjE5IDAgMCAwLS45MTggMi4zMjJjLjAwNi40MjguMDk3Ljg1LjI3IDEuMjQyLjE2Ni4zODUuNDA0LjczMy43MDIgMS4wMjZhMy4zIDMuMyAwIDAgMCAyLjI2OC45NzJtMS44OS0zLjI5NGExLjggMS44IDAgMCAwLS4xNjItLjcwMiAxLjkgMS45IDAgMCAwLS4zNzgtLjU5NCAxLjggMS44IDAgMCAwLS41OTQtLjM3OGwtLjcwMi0uMTYyLS43MDIuMTYyYTEuODQgMS44NCAwIDAgMC0uOTcyLjk3MiAxLjg0IDEuODQgMCAwIDAgMCAxLjQ1OGMuMTczLjQyOC41Ljc3NS45MTguOTcybC43MDIuMTYyLjcwMi0uMTYyYy4yMi0uMDg2LjQyMi0uMjE0LjU5NC0uMzc4LjE2MS0uMTczLjI5LS4zNzQuMzc4LS41OTQuMTA5LS4yMzcuMTY0LS40OTUuMTYyLS43NTZ6Ii8+PC9zdmc+);background-position:6px 12px;background-repeat:no-repeat;border:none;height:100%;margin:0;opacity:1;outline:none;padding:0;position:absolute;right:0;top:0;width:35px}.adsk-viewing-viewer.light-theme .treeview div.visibility:hover{filter:drop-shadow(0 0 0 #fff)}.adsk-viewing-viewer.light-theme .treeview .dim div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzk0OTQ5RiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTQuNDY3LjE5NGEuNjU3LjY1NyAwIDAgMC0uOTM0IDBsLTMuMDY2IDIuOTgyYy0uOC0uMTk1LTEuNi0uMzg5LTIuNDY3LS4zODktMy42IDAtNi42NjcgMi4xMzktOCA0LjczMi42IDEuMTY2IDEuNiAyLjI2OCAyLjggMy4xMUwuNDY3IDEyLjlhLjYxNS42MTUgMCAwIDAgMCAuOTA3Yy4yNjYuMjU5LjY2Ni4yNTkuOTMzIDBMMTQuNDY3IDEuMTAyYS42MTUuNjE1IDAgMCAwIDAtLjkwOE00LjggNy41MmMwLTEuNzUgMS40NjctMy4xMTIgMy4yLTMuMTEyLjMzMyAwIC43MzMuMDY1IDEgLjE5NWwtLjg2Ny44NDJoLS4yYy0xLjIgMC0yLjIuOTczLTIuMiAyLjE0di4xOTRsLS44NjYuODQyYzAtLjM4OS0uMDY3LS43NzctLjA2Ny0xLjEwMU04IDkuNjU3YzEuMiAwIDIuMi0uOTcyIDIuMi0yLjEzOCAwLS4xOTUtLjA2Ny0uMzktLjEzMy0uNjQ5TDcuMzMzIDkuNTI4Yy4yNjcuMDY1LjQ2Ny4xMy42NjcuMTNtOC0yLjEzOGMtLjY2Ny0xLjI5Ny0xLjgtMi40NjMtMy4xMzMtMy4zMDZsLTIgMS45NDRjLjIuMzkuMzMzLjkwOC4zMzMgMS4zNjIgMCAxLjc1LTEuNDY3IDMuMTEtMy4yIDMuMTEtLjUzMyAwLTEtLjEyOS0xLjQtLjMyM0w1LjEzMyAxMS43M0E4LjMgOC4zIDAgMCAwIDggMTIuMjVjMy42IDAgNi42NjctMi4xMzkgOC00LjczMSIvPjwvc3ZnPg==);background-position:6px 9px;opacity:1}.adsk-viewing-viewer.light-theme .treeview .view lmvheader>icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjUxNDMxOERGQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjUxNDMxOEUwQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTE0MzE4RERCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTE0MzE4REVCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6dltUsAAAAvElEQVR42mL8//8/AyWAiYFCQLEBLCCira3tJZD6DhVjBGI+KI0MVldVVaUC1cL4qkCsBHPBRiDWh2JbIGYDYn40HA1VywnEKUB8DIibWaCCf6AYBH4jsZHBKyjdBcQhQCwCxFdhBiQBcRSSYl4sBvyD0jxA/APK/g8zgB2KiQF/QRoHJBphtnJDA5lkA7ig9HIgvg9lc7CQYIAElN4ExEeAuAGUXmAGHCDCgK9I7HdAXAoylHHoZyaAAAMA0EImBepZpP0AAAAASUVORK5CYII=);background-repeat:no-repeat;display:inline;padding:0 11px}.adsk-viewing-viewer.light-theme .treeview .collapsed>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjExIj48cGF0aCBmaWxsPSIjMEExMzFDIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0uODk4Ljc2LjgyIDEwLjQ3N2w1LjA5Mi01LjA5MiIvPjwvc3ZnPg==);cursor:zoom-in}.adsk-viewing-viewer.light-theme .treeview .expanded>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI2Ij48cGF0aCBmaWxsPSIjMEExMzFDIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjcxOS40NjIgMCAuMzg2bDUuMDkyIDUuMDkyIi8+PC9zdmc+);cursor:zoom-out}.adsk-viewing-viewer.light-theme .treeview .expanded.selected>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI2Ij48cGF0aCBmaWxsPSIjMURDNkYyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05Ljg0Ny44OTguMTMuODIgNS4yMiA1LjkxMyIvPjwvc3ZnPg==);cursor:zoom-out}.adsk-viewing-viewer.light-theme .treeview .collapsed.selected>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjEwIj48cGF0aCBmaWxsPSIjMURDNkYyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0uODk4LjE5NS44MiA5LjkxM2w1LjA5Mi01LjA5MiIvPjwvc3ZnPg==);cursor:zoom-in}.adsk-viewing-viewer.light-theme .viewer-settings-panel .settings-environment-image{border:1px solid #d4dbe1!important}.adsk-viewing-viewer.light-theme .propertysearch-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIHZpZXdCb3g9IjAgMCA1OC4zNzEgNTguMzcxIj48cGF0aCBkPSJtNTUuODMzIDU2LjY3OS01Ljk2OS02LjI0M2ExMC43NCAxMC43NCAwIDAgMCAyLjgyLTcuMjVjMC01Ljk1My00Ljg0My0xMC43OTYtMTAuNzk2LTEwLjc5NnMtMTAuNzk2IDQuODQzLTEwLjc5NiAxMC43OTYgNC44NDMgMTAuNzk2IDEwLjc5NiAxMC43OTZjMi40NDIgMCA0LjY4OS0uODI0IDYuNS0yLjE5Nmw2IDYuMjc2YTEgMSAwIDAgMCAxLjQxNC4wMzIgMSAxIDAgMCAwIC4wMzEtMS40MTVNMzMuMDkyIDQzLjE4NmMwLTQuODUgMy45NDYtOC43OTYgOC43OTYtOC43OTZzOC43OTYgMy45NDYgOC43OTYgOC43OTYtMy45NDYgOC43OTYtOC43OTYgOC43OTYtOC43OTYtMy45NDYtOC43OTYtOC43OTZNMjguMDk2IDQzLjFjLjAyNS00LjAyOSAxLjc5My03LjY0NCA0LjU3OC0xMC4xNTMtLjkxMS4wNTQtMS44NDQuMDk3LTIuODA3LjEyM2E4NCA4NCAwIDAgMS01LjIyLS4wMDFjLTcuMzQxLS4yMDEtMTMuMTkxLTEuMjM4LTE3LjQwMy0yLjcxNy0xLjk4LS42NjctMy42NzUtMS40NTMtNC45ODMtMi4zNTJ2OS40YzIuODQ2IDIuOTcxIDEyLjM5NCA1LjcxMSAyNSA1LjcxMS4yODMgMCAuNTU1LS4wMDguODM1LS4wMTFNMjQuODk2IDI5Ljk2NXEuNDg3LjAxNC45ODIuMDIzYTc5IDc5IDAgMCAwIDIuNzY2LjAwMXEuNDk0LS4wMS45ODItLjAyM2wuMzQ5LS4wMDhjMTEuMjUzLS4zNTkgMTkuNjQ4LTIuOTE1IDIyLjI4Ni01LjY2OHYtOS40MDFDNDcuMzkzIDE4LjIzMiAzNy4xMDUgMjAgMjcuMjYxIDIwcy0yMC4xMzMtMS43NjgtMjUtNS4xMTF2OS40YzIuNjM4IDIuNzU0IDExLjAzMyA1LjMxIDIyLjI4NiA1LjY2OHoiLz48cGF0aCBkPSJNNTIuMjYxIDExLjMwNlY5YS45LjkgMCAwIDAtLjEzNS0uNDU4QzUxLjAwMyA0LjI0MSA0Mi4zNzYgMCAyNy4yNjEgMCAxMi4xODMgMCAzLjU2NCA0LjIyIDIuNDA3IDguNTFhLjk3Ljk3IDAgMCAwLS4xNDYuNDl2Mi4zMDZDNS4wOTcgMTQuMjY3IDE0LjU3NyAxNyAyNy4yNjEgMTdzMjIuMTYzLTIuNzMzIDI1LTUuNjk0TTI4LjQzIDQ2LjE4N2MtLjM5LjAwNS0uNzcyLjAxNC0xLjE3LjAxNC0xMi4zNDYgMC0yMC44NjYtMi4yOS0yNS01LjIwMXY4LjIwMWEuOTQuOTQgMCAwIDAgLjExNy40NTFjMS4xODEgNC44OTUgMTEuNzQ3IDguNTQ5IDI0Ljg4MyA4LjU0OSA0Ljc2NCAwIDkuMTgyLS40ODYgMTIuOTQ1LTEuMzMyLTUuODE2LS43MTItMTAuNTE5LTUuMDUtMTEuNzc1LTEwLjY4MiIvPjwvc3ZnPg==)}.adsk-viewing-viewer.light-theme .docking-panel.menu .menu-item-expand{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAA7BAAAOwQG4kWvtAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAG5JREFUeNq00qENwlAUBdAfEkwF/ghcJ6hkByZgj9rugOwSTTpABYaE/J0+Ftn3UsSVJ3m575bWWsmkHAox4oTymz2w4okuAysWXDOwYsOQgRVv3DPwg0cUvnCLnrqij5Yz4xJ9x4RzeAB/3ep3AGt8wANc/1TxAAAAAElFTkSuQmCC)}.adsk-viewing-viewer.light-theme .hyperlink-container{filter:drop-shadow(0 3px 5px rgba(0,0,0,.3))}.adsk-viewing-viewer.light-theme .hyperlink-container .docking-panel{box-shadow:none}.adsk-viewing-viewer.light-theme .hyperlink-container-triangle{border-right:19px solid hsla(0,0%,100%,.94)}.adsk-viewing-viewer.light-theme .hyperlink-back-closer{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}.adsk-viewing-viewer.bim-theme{color:#0a131c;font-size:14px}.adsk-viewing-viewer.bim-theme.quality-text{text-rendering:geometricPrecision}.adsk-viewing-viewer.bim-theme .viewcube{color:#000}.adsk-viewing-viewer.bim-theme .adsk-lmv-tftable input,.adsk-viewing-viewer.bim-theme .option-drop-down,.adsk-viewing-viewer.dark-theme .property-drop-down{background-color:#edf0f2;border:1px solid #d5dbe1;color:#000}.adsk-viewing-viewer.bim-theme .adsk-control-group{background-color:#edf0f2;box-shadow:0 0 12px 0 rgba(0,0,0,.3);color:#0a131c}.adsk-viewing-viewer.bim-theme .adsk-button:hover{color:#38abdf}.adsk-viewing-viewer.bim-theme .adsk-button.active,.adsk-viewing-viewer.bim-theme .adsk-button:focus{border-radius:3px;box-shadow:inset 0 1px 1px 0 rgba(34,34,34,.3);color:#38abdf;outline:none}.adsk-viewing-viewer.bim-theme .adsk-label-button.active,.adsk-viewing-viewer.bim-theme .adsk-label-button:focus,.adsk-viewing-viewer.bim-theme .adsk-label-button:hover{border:1px solid transparent}.adsk-viewing-viewer.bim-theme .adsk-label-button label{background-color:#0696d7;color:#fff}.adsk-viewing-viewer.bim-theme .adsk-label-button.active label,.adsk-viewing-viewer.bim-theme .adsk-label-button:focus label,.adsk-viewing-viewer.bim-theme .adsk-label-button:hover label{background-color:#38abdf;color:#fff}.adsk-viewing-viewer.bim-theme .adsk-control-tooltip{background-color:rgba(24,42,61,.9);border-radius:3px;box-shadow:0 3px 5px 0 rgba(0,0,0,.1);color:#fff;opacity:1}.adsk-viewing-viewer.bim-theme .docking-panel{box-shadow:0 0 12px 0 rgba(0,0,0,.3)}.adsk-viewing-viewer.bim-theme .docking-panel-delimiter-shadow{box-shadow:0 3px 5px 0 rgba(0,0,0,.1)}.adsk-viewing-viewer.bim-theme .docking-panel-title{background-color:#edf0f2;border-bottom:1px solid rgba(0,0,0,.2);color:#0a131c}.adsk-viewing-viewer.bim-theme .docking-panel-close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0iIzRBNTU1QiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}.adsk-viewing-viewer.bim-theme .docking-panel-close:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}.adsk-viewing-viewer.bim-theme .docking-panel-footer-resizer{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjciPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggc3Ryb2tlPSIjQkVDOEQyIiBkPSJtLjUgNi41IDYtNk00LjUgNi41bDEuNTM2LTEuNTM2Ii8+PHBhdGggc3Ryb2tlPSIjOTM5Q0E1IiBkPSJtMS41IDYuNSA2LTZNNS41IDYuNWwxLjUzNi0xLjUzNiIvPjwvZz48L3N2Zz4=);background-position-x:9px;background-position-y:8px;background-repeat:no-repeat}.adsk-viewing-viewer.bim-theme .docking-panel-footer-resizer:hover{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjciPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggc3Ryb2tlPSIjQkVDOEQyIiBkPSJtLjUgNi41IDYtNk00LjUgNi41bDEuNTM2LTEuNTM2Ii8+PHBhdGggc3Ryb2tlPSIjNEE1NTVCIiBkPSJtMS41IDYuNSA2LTZNNS41IDYuNWwxLjUzNi0xLjUzNiIvPjwvZz48L3N2Zz4=);background-position-x:9px;background-position-y:8px;background-repeat:no-repeat}.adsk-viewing-viewer.bim-theme .docking-panel-button{border:1px solid #d5dbe1;color:#4a555b}.adsk-viewing-viewer.bim-theme .docking-panel-primary-button{background-color:#0696d7;color:#fff}.adsk-viewing-viewer.bim-theme .docking-panel-primary-button.active,.adsk-viewing-viewer.bim-theme .docking-panel-primary-button:focus,.adsk-viewing-viewer.bim-theme .docking-panel-primary-button:hover{background-color:#38abdf;color:#fff}.adsk-viewing-viewer.bim-theme .docking-panel-secondary-button{background-color:#939ca5;color:#fff}.adsk-viewing-viewer.bim-theme .docking-panel-secondary-button.active,.adsk-viewing-viewer.bim-theme .docking-panel-secondary-button:focus,.adsk-viewing-viewer.bim-theme .docking-panel-secondary-button:hover{background-color:#bec8d2;color:#fff}.adsk-viewing-viewer.bim-theme .docking-panel-tertiary-button{border:1px solid #0696d7;color:#0696d7}.adsk-viewing-viewer.bim-theme .docking-panel-tertiary-button.active,.adsk-viewing-viewer.bim-theme .docking-panel-tertiary-button:focus,.adsk-viewing-viewer.bim-theme .docking-panel-tertiary-button:hover{border:1px solid #38abdf;color:#38abdf}.adsk-viewing-viewer.bim-theme .docking-panel-footer{background-color:#fff;border-top:1px solid rgba(0,0,0,.2)}.adsk-viewing-viewer.bim-theme .docking-panel-container-solid-color-a{background-color:hsla(0,0%,100%,.94)}.adsk-viewing-viewer.bim-theme .docking-panel-container-solid-color-b{background-color:#fff}.adsk-viewing-viewer.bim-theme .docking-panel-container-solid-color-c{background-color:#ecf0f3;color:#000}.adsk-viewing-viewer.bim-theme .docking-panel-container-gradient{background:repeating-linear-gradient(rgba(242,247,250,.7),rgba(242,247,250,.7) 36px,rgba(242,247,250,0) 0,rgba(242,247,250,0) 72px)}.adsk-viewing-viewer.bim-theme .docking-panel-textbox{background-color:transparent;border:1px solid #d5dbe1}.adsk-viewing-viewer.bim-theme .adsk-lmv-tftable tr td div{color:#4a555b}.adsk-viewing-viewer.bim-theme .adsk-lmv-tftable tr.logical-group{background-color:rgba(242,247,250,.7)}.adsk-viewing-viewer.bim-theme .adsk-lmv-tftable tr.logical-group td div{color:#0a131c}.adsk-viewing-viewer.bim-theme .docking-panel-scroll::-webkit-scrollbar-track{background:none}.adsk-viewing-viewer.bim-theme .docking-panel-scroll::-webkit-scrollbar-thumb{background:#bec8d2}.adsk-viewing-viewer.bim-theme .docking-panel-scroll::-webkit-scrollbar-thumb:hover{background:#939ca5}.adsk-viewing-viewer.bim-theme .docking-panel-scroll::-webkit-resizer{background-color:rgba(30,30,30,.8)}.adsk-viewing-viewer.bim-theme .docking-pane-scroll::-webkit-scrollbar-corner{background-color:rgba(0,0,0,.2)}.adsk-viewing-viewer.bim-theme .adsk-filterbox input.filter-box,.adsk-viewing-viewer.bim-theme .adsk-searchbox input.search-box{background:#fff;border:1px solid transparent;color:#0a131c}.adsk-viewing-viewer.bim-theme .adsk-filterbox input.filter-box:focus,.adsk-viewing-viewer.bim-theme .adsk-searchbox input.search-box:focus{border:1px solid #1dc6f2}.adsk-viewing-viewer.bim-theme .adsk-searchbox .search-box-icon{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyI+PHBhdGggZmlsbD0iIzRBNTU1QiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi4yMTQgOS4yMzZhNS4wMyA1LjAzIDAgMCAxLTEuNDUtMy41MTFjMC0xLjI5OC41MzQtMi41OTUgMS40NS0zLjUxMWE1LjAzIDUuMDMgMCAwIDEgMy41MS0xLjQ1YzEuMjk4IDAgMi41OTYuNTM0IDMuNTEyIDEuNDVhNS4wMyA1LjAzIDAgMCAxIDEuNDUgMy41MSA1LjAzIDUuMDMgMCAwIDEtMS40NSAzLjUxMiA1LjAzIDUuMDMgMCAwIDEtMy41MTEgMS40NSA1LjAzIDUuMDMgMCAwIDEtMy41MTEtMS40NU0xMi45IDEyLjI5bC0yLjgyNC0yLjgyNGMuOTE2LTEuMDY5IDEuNDUtMi4zNjYgMS40NS0zLjc0YTUuNzIgNS43MiAwIDAgMC0xLjY4LTQuMDQ2QzguNzc5LjYxMSA3LjI1MiAwIDUuNzI2IDBhNS43MiA1LjcyIDAgMCAwLTQuMDQ2IDEuNjhBNS43MiA1LjcyIDAgMCAwIDAgNS43MjQgNS43MiA1LjcyIDAgMCAwIDEuNjggOS43N2E1LjcyIDUuNzIgMCAwIDAgNC4wNDUgMS42OEE1LjYgNS42IDAgMCAwIDkuNDY1IDEwbDIuODI0IDIuODI0Yy4wNzcuMDc2LjE1My4wNzYuMzA2LjA3Ni4xNTIgMCAuMjI5IDAgLjMwNS0uMDc2LjA3Ni0uMDc3LjA3Ni0uMzgyIDAtLjUzNSIvPjwvc3ZnPg==)}.adsk-viewing-viewer.bim-theme .adsk-searchbox .search-box-icon.focused{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyI+PHBhdGggZmlsbD0iIzFEQzZGMiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi4yMTQgOS4yMzZhNS4wMyA1LjAzIDAgMCAxLTEuNDUtMy41MTFjMC0xLjI5OC41MzQtMi41OTUgMS40NS0zLjUxMWE1LjAzIDUuMDMgMCAwIDEgMy41MS0xLjQ1YzEuMjk4IDAgMi41OTYuNTM0IDMuNTEyIDEuNDVhNS4wMyA1LjAzIDAgMCAxIDEuNDUgMy41MSA1LjAzIDUuMDMgMCAwIDEtMS40NSAzLjUxMiA1LjAzIDUuMDMgMCAwIDEtMy41MTEgMS40NSA1LjAzIDUuMDMgMCAwIDEtMy41MTEtMS40NU0xMi45IDEyLjI5bC0yLjgyNC0yLjgyNGMuOTE2LTEuMDY5IDEuNDUtMi4zNjYgMS40NS0zLjc0YTUuNzIgNS43MiAwIDAgMC0xLjY4LTQuMDQ2QzguNzc5LjYxMSA3LjI1MiAwIDUuNzI2IDBhNS43MiA1LjcyIDAgMCAwLTQuMDQ2IDEuNjhBNS43MiA1LjcyIDAgMCAwIDAgNS43MjQgNS43MiA1LjcyIDAgMCAwIDEuNjggOS43N2E1LjcyIDUuNzIgMCAwIDAgNC4wNDUgMS42OEE1LjYgNS42IDAgMCAwIDkuNDY1IDEwbDIuODI0IDIuODI0Yy4wNzcuMDc2LjE1My4wNzYuMzA2LjA3Ni4xNTIgMCAuMjI5IDAgLjMwNS0uMDc2LjA3Ni0uMDc3LjA3Ni0uMzgyIDAtLjUzNSIvPjwvc3ZnPg==)}.adsk-viewing-viewer.bim-theme .adsk-filterbox .filter-box-icon{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI3Ij48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzk3OTc5NyIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggZD0iTTcuNSA2LjVoLTVNOC41IDMuNWgtN005LjUuNWgtOSIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.bim-theme .adsk-filterbox .filter-box-icon.focused{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI3Ij48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwQkZGRiIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggZD0iTTcuNSA2LjVoLTVNOC41IDMuNWgtN005LjUuNWgtOSIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.bim-theme .adsk-filterbox .filter-box-close,.adsk-viewing-viewer.bim-theme .adsk-searchbox .search-box-close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iNyIgZmlsbD0iI0JFQzhEMiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik00LjUxIDEwIDQgOS40OSA5LjQ5IDRsLjUxLjUxeiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Im0xMCA5LjQ5LS41MS41MUw0IDQuNTEgNC41MSA0eiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.bim-theme .adsk-filterbox .filter-box-close:hover,.adsk-viewing-viewer.bim-theme .adsk-searchbox .search-box-close:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iNyIgZmlsbD0iIzkzOUNBNSIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik00LjUxIDEwIDQgOS40OSA5LjQ5IDRsLjUxLjUxeiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Im0xMCA5LjQ5LS41MS41MUw0IDQuNTEgNC41MSA0eiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.bim-theme .adsk-search-results-scrolling-panel .selected{background-color:#f2f7fa}.adsk-viewing-viewer.bim-theme .adsk-search-results-scrolling-panel>div[lmv-nodeid]:hover{background-color:rgba(0,191,255,.2)}.adsk-viewing-viewer.bim-theme .adsk-search-results-scrolling-panel .search-match{color:#1dc6f2}.adsk-viewing-viewer.bim-theme .adsk-search-results-scrolling-panel .search-path{color:#939ca5}.adsk-viewing-viewer.bim-theme .adsk-search-results-scrolling-panel .no-results-title{color:#000}.adsk-viewing-viewer.bim-theme .adsk-search-results-scrolling-panel .no-results-description{color:#939ca5}.adsk-viewing-viewer.bim-theme .loading-spinner path{stroke:#38abdf;fill:transparent}.adsk-viewing-viewer.bim-theme .loading-spinner path:first-child{stroke:#ecf0f3}.adsk-viewing-viewer.bim-theme .loading-spinner .message{color:#0a131c}.adsk-viewing-viewer.bim-theme .docking-panel.menu .menu-item:hover{background:rgba(0,191,255,.2)}.adsk-viewing-viewer.bim-theme .docking-panel.menu .menu-divider{background-color:#666}.adsk-viewing-viewer.bim-theme .viewer-settings-panel.docking-panel .settings-tabs span{color:#0a131c}.adsk-viewing-viewer.bim-theme .viewer-settings-panel.docking-panel .settings-tabs span:hover{color:#1dc6f2}.adsk-viewing-viewer.bim-theme .viewer-settings-panel.docking-panel .settings-tabs .tabselected span{border-color:#38abdf;color:#38abdf}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-environment-cell{border:1px solid #f2f7fa}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-environment-cell:hover{border:1px solid #939ca5}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-environment-cell.border-select{border:1px solid #38abdf}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-environment-name{color:#4a555b}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-cell{border:1px solid #f2f7fa}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-cell:hover{border:1px solid #939ca5}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-cell.border-select{border:1px solid #38abdf}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-description,.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-name{color:#4a555b}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .docking-panel-tertiary-button:active{border:1px solid #38abdf;color:#38abdf}.adsk-viewing-viewer.bim-theme .switch .slider,.adsk-viewing-viewer.bim-theme .switch .slider:before{background-color:#d9e1e9}.adsk-viewing-viewer.bim-theme .switch input:checked+.slider:before{background-color:#38abdf}.adsk-viewing-viewer.bim-theme .layers-panel .visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMCI+PHBhdGggZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNOC40MjQuMDEzYzEuMzkuMDA2IDIuNzY1LjI4MSA0LjA1LjgxLjkzNi4zOTMgMS44MS45MiAyLjU5MiAxLjU2NmE4LjggOC44IDAgMCAxIDEuNzgyIDIuMjE0IDcuMSA3LjEgMCAwIDEtMS41NjYgMi40MyA5LjEgOS4xIDAgMCAxLTIuNTM4IDEuNjc0Yy0xLjM4My41ODctMi44NzIuODgtNC4zNzQuODY0YTEwLjMgMTAuMyAwIDAgMS00LjMyLS43MDIgOC40IDguNCAwIDAgMS0yLjUzOC0xLjYyQTcuMSA3LjEgMCAwIDEgMCA0Ljc2NWE5LjEgOS4xIDAgMCAxIDEuNzgyLTIuNDNBOS41IDkuNSAwIDAgMSA0LjM3NC43MTVhOS4yIDkuMiAwIDAgMSA0LjA1LS43MDJtLjEwOCA4LjA0NmMuNDI4LS4wMDQuODUtLjA5NiAxLjI0Mi0uMjcuMzgzLS4xNjcuNzMtLjQwNiAxLjAyNi0uNzAyLjYxLS42MTYuOTQtMS40NTUuOTE4LTIuMzIyYTMuMTkgMy4xOSAwIDAgMC0uOTE4LTIuMjY4IDMuNCAzLjQgMCAwIDAtMS4wMjYtLjcwMiAzLjI0IDMuMjQgMCAwIDAtMi41MzggMGMtLjM4My4xNjgtLjczLjQwNi0xLjAyNi43MDJhMy4xOSAzLjE5IDAgMCAwLS45MTggMi4zMjJjLjAwNi40MjguMDk3Ljg1LjI3IDEuMjQyLjE2Ni4zODUuNDA0LjczMy43MDIgMS4wMjZhMy4zIDMuMyAwIDAgMCAyLjI2OC45NzJtMS44OS0zLjI5NGExLjggMS44IDAgMCAwLS4xNjItLjcwMiAxLjkgMS45IDAgMCAwLS4zNzgtLjU5NCAxLjggMS44IDAgMCAwLS41OTQtLjM3OGwtLjcwMi0uMTYyLS43MDIuMTYyYTEuODQgMS44NCAwIDAgMC0uOTcyLjk3MiAxLjg0IDEuODQgMCAwIDAgMCAxLjQ1OGMuMTczLjQyOC41Ljc3NS45MTguOTcybC43MDIuMTYyLjcwMi0uMTYyYy4yMi0uMDg2LjQyMi0uMjE0LjU5NC0uMzc4LjE2MS0uMTczLjI5LS4zNzQuMzc4LS41OTQuMTA5LS4yMzcuMTY0LS40OTUuMTYyLS43NTZ6Ii8+PC9zdmc+);opacity:1}.adsk-viewing-viewer.bim-theme .layers-panel .visibility.dim{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzk0OTQ5RiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTQuNDY3LjE5NGEuNjU3LjY1NyAwIDAgMC0uOTM0IDBsLTMuMDY2IDIuOTgyYy0uOC0uMTk1LTEuNi0uMzg5LTIuNDY3LS4zODktMy42IDAtNi42NjcgMi4xMzktOCA0LjczMi42IDEuMTY2IDEuNiAyLjI2OCAyLjggMy4xMUwuNDY3IDEyLjlhLjYxNS42MTUgMCAwIDAgMCAuOTA3Yy4yNjYuMjU5LjY2Ni4yNTkuOTMzIDBMMTQuNDY3IDEuMTAyYS42MTUuNjE1IDAgMCAwIDAtLjkwOE00LjggNy41MmMwLTEuNzUgMS40NjctMy4xMTIgMy4yLTMuMTEyLjMzMyAwIC43MzMuMDY1IDEgLjE5NWwtLjg2Ny44NDJoLS4yYy0xLjIgMC0yLjIuOTczLTIuMiAyLjE0di4xOTRsLS44NjYuODQyYzAtLjM4OS0uMDY3LS43NzctLjA2Ny0xLjEwMU04IDkuNjU3YzEuMiAwIDIuMi0uOTcyIDIuMi0yLjEzOCAwLS4xOTUtLjA2Ny0uMzktLjEzMy0uNjQ5TDcuMzMzIDkuNTI4Yy4yNjcuMDY1LjQ2Ny4xMy42NjcuMTNtOC0yLjEzOGMtLjY2Ny0xLjI5Ny0xLjgtMi40NjMtMy4xMzMtMy4zMDZsLTIgMS45NDRjLjIuMzkuMzMzLjkwOC4zMzMgMS4zNjIgMCAxLjc1LTEuNDY3IDMuMTEtMy4yIDMuMTEtLjUzMyAwLTEtLjEyOS0xLjQtLjMyM0w1LjEzMyAxMS43M0E4LjMgOC4zIDAgMCAwIDggMTIuMjVjMy42IDAgNi42NjctMi4xMzkgOC00LjczMSIvPjwvc3ZnPg==);opacity:1}.adsk-viewing-viewer.bim-theme .property-panel .no-properties,.adsk-viewing-viewer.bim-theme .property-panel .property-name{color:#4a555b}.adsk-viewing-viewer.bim-theme .property-panel .property-value{color:#939ca5}.adsk-viewing-viewer.bim-theme .property-panel .property-drop-down{background:hsla(0,0%,93%,.6);color:#4a555b}.adsk-viewing-viewer.bim-theme .property-panel .property-drop-down>option{background:hsla(0,0%,93%,.75)}.adsk-viewing-viewer.bim-theme .model-structure-panel .lmv-no-properties{color:#4a555b}.adsk-viewing-viewer.bim-theme .bimwalk .c-bimwalk-tooltip{background-color:#fff}.adsk-viewing-viewer.bim-theme .bimwalk .bimwalk-guide-dark-theme{display:none}.adsk-viewing-viewer.bim-theme .bimwalk .bimwalk-guide-bim-theme,.adsk-viewing-viewer.bim-theme .bimwalk .bimwalk-guide-light-theme{display:block}.adsk-viewing-viewer.bim-theme .bimwalk .bimwalk-tooltip-or{color:#939ca5}.adsk-viewing-viewer.bim-theme .toolbar-animation-play-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA3VjBsNyAzLjVMMTQgN2wtNyAzLjVMMCAxNHoiLz48L3N2Zz4=)}.adsk-viewing-viewer.bim-theme .adsk-button.active .toolbar-animation-play-icon,.adsk-viewing-viewer.bim-theme .adsk-button:focus .toolbar-animation-play-icon,.adsk-viewing-viewer.bim-theme .adsk-button:hover .toolbar-animation-play-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA3VjBsNyAzLjVMMTQgN2wtNyAzLjVMMCAxNHoiLz48L3N2Zz4=)}.adsk-viewing-viewer.bim-theme .toolbar-animation-pause-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMCAwaDR2MTRIMHpNOCAwaDR2MTRIOHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.bim-theme .adsk-button.active .toolbar-animation-pause-icon,.adsk-viewing-viewer.bim-theme .adsk-button:focus .toolbar-animation-pause-icon,.adsk-viewing-viewer.bim-theme .adsk-button:hover .toolbar-animation-pause-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMCAwaDR2MTRIMHpNOCAwaDR2MTRIOHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.bim-theme .toolbar-animation-backward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQgN1YwTDcgMy41IDAgN2w3IDMuNSA3IDMuNXpNMTggMGgtMnYxNGgyeiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.bim-theme .adsk-button.active .toolbar-animation-backward-icon,.adsk-viewing-viewer.bim-theme .adsk-button:focus .toolbar-animation-backward-icon,.adsk-viewing-viewer.bim-theme .adsk-button:hover .toolbar-animation-backward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQgN1YwTDcgMy41IDAgN2w3IDMuNSA3IDMuNXpNMTggMGgtMnYxNGgyeiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.bim-theme .toolbar-animation-forward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNCA3VjBsNyAzLjVMMTggN2wtNyAzLjVMNCAxNHpNMCAwaDJ2MTRIMHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.bim-theme .adsk-button.active .toolbar-animation-forward-icon,.adsk-viewing-viewer.bim-theme .adsk-button:focus .toolbar-animation-forward-icon,.adsk-viewing-viewer.bim-theme .adsk-button:hover .toolbar-animation-forward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNCA3VjBsNyAzLjVMMTggN2wtNyAzLjVMNCAxNHpNMCAwaDJ2MTRIMHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.bim-theme .treeview .group,.adsk-viewing-viewer.bim-theme .treeview .leaf,.adsk-viewing-viewer.bim-theme .treeview group,.adsk-viewing-viewer.bim-theme .treeview leaf{color:#0a131c}.adsk-viewing-viewer.bim-theme .treeview .group.selected label,.adsk-viewing-viewer.bim-theme .treeview .leaf.selected label,.adsk-viewing-viewer.bim-theme .treeview group.selected label,.adsk-viewing-viewer.bim-theme .treeview group.selected-ex>lmvheader>label,.adsk-viewing-viewer.bim-theme .treeview leaf.selected label,.adsk-viewing-viewer.bim-theme .treeview leaf.selected-ex>lmvheader>label{color:#1dc7f3!important}.adsk-viewing-viewer.bim-theme .treeview .group.category>lmvheader,.adsk-viewing-viewer.bim-theme .treeview group.category>lmvheader{background-color:rgba(242,247,250,.7)}.adsk-viewing-viewer.bim-theme .treeview .group>lmvheader>label,.adsk-viewing-viewer.bim-theme .treeview .leaf>lmvheader>label,.adsk-viewing-viewer.bim-theme .treeview group>lmvheader>label,.adsk-viewing-viewer.bim-theme .treeview leaf>lmvheader>label{color:#0a131c}.adsk-viewing-viewer.bim-theme .treeview .group>lmvheader:hover,.adsk-viewing-viewer.bim-theme .treeview .leaf>lmvheader:hover,.adsk-viewing-viewer.bim-theme .treeview group>lmvheader:hover,.adsk-viewing-viewer.bim-theme .treeview leaf>lmvheader:hover{background:rgba(0,191,255,.2)!important}.adsk-viewing-viewer.bim-theme .treeview .group.dim>lmvheader>label,.adsk-viewing-viewer.bim-theme .treeview .leaf.dim>lmvheader>label,.adsk-viewing-viewer.bim-theme .treeview group.dim>lmvheader>label,.adsk-viewing-viewer.bim-theme .treeview leaf.dim>lmvheader>label{color:#939ca5}.adsk-viewing-viewer.bim-theme .treeview div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMCI+PHBhdGggZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNOC40MjQuMDEzYzEuMzkuMDA2IDIuNzY1LjI4MSA0LjA1LjgxLjkzNi4zOTMgMS44MS45MiAyLjU5MiAxLjU2NmE4LjggOC44IDAgMCAxIDEuNzgyIDIuMjE0IDcuMSA3LjEgMCAwIDEtMS41NjYgMi40MyA5LjEgOS4xIDAgMCAxLTIuNTM4IDEuNjc0Yy0xLjM4My41ODctMi44NzIuODgtNC4zNzQuODY0YTEwLjMgMTAuMyAwIDAgMS00LjMyLS43MDIgOC40IDguNCAwIDAgMS0yLjUzOC0xLjYyQTcuMSA3LjEgMCAwIDEgMCA0Ljc2NWE5LjEgOS4xIDAgMCAxIDEuNzgyLTIuNDNBOS41IDkuNSAwIDAgMSA0LjM3NC43MTVhOS4yIDkuMiAwIDAgMSA0LjA1LS43MDJtLjEwOCA4LjA0NmMuNDI4LS4wMDQuODUtLjA5NiAxLjI0Mi0uMjcuMzgzLS4xNjcuNzMtLjQwNiAxLjAyNi0uNzAyLjYxLS42MTYuOTQtMS40NTUuOTE4LTIuMzIyYTMuMTkgMy4xOSAwIDAgMC0uOTE4LTIuMjY4IDMuNCAzLjQgMCAwIDAtMS4wMjYtLjcwMiAzLjI0IDMuMjQgMCAwIDAtMi41MzggMGMtLjM4My4xNjgtLjczLjQwNi0xLjAyNi43MDJhMy4xOSAzLjE5IDAgMCAwLS45MTggMi4zMjJjLjAwNi40MjguMDk3Ljg1LjI3IDEuMjQyLjE2Ni4zODUuNDA0LjczMy43MDIgMS4wMjZhMy4zIDMuMyAwIDAgMCAyLjI2OC45NzJtMS44OS0zLjI5NGExLjggMS44IDAgMCAwLS4xNjItLjcwMiAxLjkgMS45IDAgMCAwLS4zNzgtLjU5NCAxLjggMS44IDAgMCAwLS41OTQtLjM3OGwtLjcwMi0uMTYyLS43MDIuMTYyYTEuODQgMS44NCAwIDAgMC0uOTcyLjk3MiAxLjg0IDEuODQgMCAwIDAgMCAxLjQ1OGMuMTczLjQyOC41Ljc3NS45MTguOTcybC43MDIuMTYyLjcwMi0uMTYyYy4yMi0uMDg2LjQyMi0uMjE0LjU5NC0uMzc4LjE2MS0uMTczLjI5LS4zNzQuMzc4LS41OTQuMTA5LS4yMzcuMTY0LS40OTUuMTYyLS43NTZ6Ii8+PC9zdmc+);background-position:6px 12px;background-repeat:no-repeat;border:none;height:100%;margin:0;opacity:1;outline:none;padding:0;position:absolute;right:0;top:0;width:35px}.adsk-viewing-viewer.bim-theme .treeview div.visibility:hover{filter:drop-shadow(0 0 0 #fff)}.adsk-viewing-viewer.bim-theme .treeview .dim div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzk0OTQ5RiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTQuNDY3LjE5NGEuNjU3LjY1NyAwIDAgMC0uOTM0IDBsLTMuMDY2IDIuOTgyYy0uOC0uMTk1LTEuNi0uMzg5LTIuNDY3LS4zODktMy42IDAtNi42NjcgMi4xMzktOCA0LjczMi42IDEuMTY2IDEuNiAyLjI2OCAyLjggMy4xMUwuNDY3IDEyLjlhLjYxNS42MTUgMCAwIDAgMCAuOTA3Yy4yNjYuMjU5LjY2Ni4yNTkuOTMzIDBMMTQuNDY3IDEuMTAyYS42MTUuNjE1IDAgMCAwIDAtLjkwOE00LjggNy41MmMwLTEuNzUgMS40NjctMy4xMTIgMy4yLTMuMTEyLjMzMyAwIC43MzMuMDY1IDEgLjE5NWwtLjg2Ny44NDJoLS4yYy0xLjIgMC0yLjIuOTczLTIuMiAyLjE0di4xOTRsLS44NjYuODQyYzAtLjM4OS0uMDY3LS43NzctLjA2Ny0xLjEwMU04IDkuNjU3YzEuMiAwIDIuMi0uOTcyIDIuMi0yLjEzOCAwLS4xOTUtLjA2Ny0uMzktLjEzMy0uNjQ5TDcuMzMzIDkuNTI4Yy4yNjcuMDY1LjQ2Ny4xMy42NjcuMTNtOC0yLjEzOGMtLjY2Ny0xLjI5Ny0xLjgtMi40NjMtMy4xMzMtMy4zMDZsLTIgMS45NDRjLjIuMzkuMzMzLjkwOC4zMzMgMS4zNjIgMCAxLjc1LTEuNDY3IDMuMTEtMy4yIDMuMTEtLjUzMyAwLTEtLjEyOS0xLjQtLjMyM0w1LjEzMyAxMS43M0E4LjMgOC4zIDAgMCAwIDggMTIuMjVjMy42IDAgNi42NjctMi4xMzkgOC00LjczMSIvPjwvc3ZnPg==);background-position:6px 9px;opacity:1}.adsk-viewing-viewer.bim-theme .treeview .view lmvheader>icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjUxNDMxOERGQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjUxNDMxOEUwQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTE0MzE4RERCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTE0MzE4REVCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6dltUsAAAAvElEQVR42mL8//8/AyWAiYFCQLEBLCCira3tJZD6DhVjBGI+KI0MVldVVaUC1cL4qkCsBHPBRiDWh2JbIGYDYn40HA1VywnEKUB8DIibWaCCf6AYBH4jsZHBKyjdBcQhQCwCxFdhBiQBcRSSYl4sBvyD0jxA/APK/g8zgB2KiQF/QRoHJBphtnJDA5lkA7ig9HIgvg9lc7CQYIAElN4ExEeAuAGUXmAGHCDCgK9I7HdAXAoylHHoZyaAAAMA0EImBepZpP0AAAAASUVORK5CYII=);background-repeat:no-repeat;display:inline;padding:0 11px}.adsk-viewing-viewer.bim-theme .treeview .collapsed>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjExIj48cGF0aCBmaWxsPSIjMEExMzFDIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0uODk4Ljc2LjgyIDEwLjQ3N2w1LjA5Mi01LjA5MiIvPjwvc3ZnPg==);cursor:zoom-in}.adsk-viewing-viewer.bim-theme .treeview .expanded>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI2Ij48cGF0aCBmaWxsPSIjMEExMzFDIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjcxOS40NjIgMCAuMzg2bDUuMDkyIDUuMDkyIi8+PC9zdmc+);cursor:zoom-out}.adsk-viewing-viewer.bim-theme .treeview .expanded.selected>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI2Ij48cGF0aCBmaWxsPSIjMURDNkYyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05Ljg0Ny44OTguMTMuODIgNS4yMiA1LjkxMyIvPjwvc3ZnPg==);cursor:zoom-out}.adsk-viewing-viewer.bim-theme .treeview .collapsed.selected>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjEwIj48cGF0aCBmaWxsPSIjMURDNkYyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0uODk4LjE5NS44MiA5LjkxM2w1LjA5Mi01LjA5MiIvPjwvc3ZnPg==);cursor:zoom-in}.adsk-viewing-viewer.bim-theme .viewer-settings-panel .settings-environment-image{border:1px solid #d4dbe1!important}.adsk-viewing-viewer.bim-theme .propertysearch-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIHZpZXdCb3g9IjAgMCA1OC4zNzEgNTguMzcxIj48cGF0aCBkPSJtNTUuODMzIDU2LjY3OS01Ljk2OS02LjI0M2ExMC43NCAxMC43NCAwIDAgMCAyLjgyLTcuMjVjMC01Ljk1My00Ljg0My0xMC43OTYtMTAuNzk2LTEwLjc5NnMtMTAuNzk2IDQuODQzLTEwLjc5NiAxMC43OTYgNC44NDMgMTAuNzk2IDEwLjc5NiAxMC43OTZjMi40NDIgMCA0LjY4OS0uODI0IDYuNS0yLjE5Nmw2IDYuMjc2YTEgMSAwIDAgMCAxLjQxNC4wMzIgMSAxIDAgMCAwIC4wMzEtMS40MTVNMzMuMDkyIDQzLjE4NmMwLTQuODUgMy45NDYtOC43OTYgOC43OTYtOC43OTZzOC43OTYgMy45NDYgOC43OTYgOC43OTYtMy45NDYgOC43OTYtOC43OTYgOC43OTYtOC43OTYtMy45NDYtOC43OTYtOC43OTZNMjguMDk2IDQzLjFjLjAyNS00LjAyOSAxLjc5My03LjY0NCA0LjU3OC0xMC4xNTMtLjkxMS4wNTQtMS44NDQuMDk3LTIuODA3LjEyM2E4NCA4NCAwIDAgMS01LjIyLS4wMDFjLTcuMzQxLS4yMDEtMTMuMTkxLTEuMjM4LTE3LjQwMy0yLjcxNy0xLjk4LS42NjctMy42NzUtMS40NTMtNC45ODMtMi4zNTJ2OS40YzIuODQ2IDIuOTcxIDEyLjM5NCA1LjcxMSAyNSA1LjcxMS4yODMgMCAuNTU1LS4wMDguODM1LS4wMTFNMjQuODk2IDI5Ljk2NXEuNDg3LjAxNC45ODIuMDIzYTc5IDc5IDAgMCAwIDIuNzY2LjAwMXEuNDk0LS4wMS45ODItLjAyM2wuMzQ5LS4wMDhjMTEuMjUzLS4zNTkgMTkuNjQ4LTIuOTE1IDIyLjI4Ni01LjY2OHYtOS40MDFDNDcuMzkzIDE4LjIzMiAzNy4xMDUgMjAgMjcuMjYxIDIwcy0yMC4xMzMtMS43NjgtMjUtNS4xMTF2OS40YzIuNjM4IDIuNzU0IDExLjAzMyA1LjMxIDIyLjI4NiA1LjY2OHoiLz48cGF0aCBkPSJNNTIuMjYxIDExLjMwNlY5YS45LjkgMCAwIDAtLjEzNS0uNDU4QzUxLjAwMyA0LjI0MSA0Mi4zNzYgMCAyNy4yNjEgMCAxMi4xODMgMCAzLjU2NCA0LjIyIDIuNDA3IDguNTFhLjk3Ljk3IDAgMCAwLS4xNDYuNDl2Mi4zMDZDNS4wOTcgMTQuMjY3IDE0LjU3NyAxNyAyNy4yNjEgMTdzMjIuMTYzLTIuNzMzIDI1LTUuNjk0TTI4LjQzIDQ2LjE4N2MtLjM5LjAwNS0uNzcyLjAxNC0xLjE3LjAxNC0xMi4zNDYgMC0yMC44NjYtMi4yOS0yNS01LjIwMXY4LjIwMWEuOTQuOTQgMCAwIDAgLjExNy40NTFjMS4xODEgNC44OTUgMTEuNzQ3IDguNTQ5IDI0Ljg4MyA4LjU0OSA0Ljc2NCAwIDkuMTgyLS40ODYgMTIuOTQ1LTEuMzMyLTUuODE2LS43MTItMTAuNTE5LTUuMDUtMTEuNzc1LTEwLjY4MiIvPjwvc3ZnPg==);filter:invert(1)}.adsk-viewing-viewer.bim-theme .docking-panel.menu .menu-item-expand{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAA7BAAAOwQG4kWvtAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAG5JREFUeNq00qENwlAUBdAfEkwF/ghcJ6hkByZgj9rugOwSTTpABYaE/J0+Ftn3UsSVJ3m575bWWsmkHAox4oTymz2w4okuAysWXDOwYsOQgRVv3DPwg0cUvnCLnrqij5Yz4xJ9x4RzeAB/3ep3AGt8wANc/1TxAAAAAElFTkSuQmCC)}.adsk-viewing-viewer.acs-theme{color:#0a131c;font-size:14px}.adsk-viewing-viewer.acs-theme.quality-text{text-rendering:geometricPrecision}.adsk-viewing-viewer.acs-theme .viewcube{color:#000}.adsk-viewing-viewer.acs-theme .adsk-lmv-tftable input,.adsk-viewing-viewer.acs-theme .option-drop-down,.adsk-viewing-viewer.dark-theme .property-drop-down{background-color:#edf0f2;border:1px solid #d5dbe1;color:#000}.adsk-viewing-viewer.acs-theme .adsk-control-group{background-color:rgba(0,0,0,.85);box-shadow:1px 3px 10px 0 rgba(0,0,0,.5);color:#f4f4f4}.minimap3D .minimap-header.adsk-viewing-viewer.acs-theme{background-color:#fff;box-shadow:none;color:#0a131c}.adsk-viewing-viewer.acs-theme .adsk-button:hover{color:#00bfff}.adsk-viewing-viewer.acs-theme .adsk-button.active,.adsk-viewing-viewer.acs-theme .adsk-button:focus{border-radius:3px;box-shadow:inset 0 1px 1px 0 rgba(34,34,34,.3);color:#38abdf;outline:none}.adsk-viewing-viewer.acs-theme .adsk-label-button.active,.adsk-viewing-viewer.acs-theme .adsk-label-button:focus,.adsk-viewing-viewer.acs-theme .adsk-label-button:hover{border:1px solid transparent}.adsk-viewing-viewer.acs-theme .adsk-label-button label{background-color:#06a7df;color:#fff}.adsk-viewing-viewer.acs-theme .adsk-label-button.active label,.adsk-viewing-viewer.acs-theme .adsk-label-button:focus label,.adsk-viewing-viewer.acs-theme .adsk-label-button:hover label{background-color:#38abdf;color:#fff}.adsk-viewing-viewer.acs-theme .adsk-control-tooltip{background-color:rgba(24,42,61,.9);border-radius:3px;box-shadow:0 3px 5px 0 rgba(0,0,0,.1);color:#fff;opacity:1}.adsk-viewing-viewer.acs-theme .docking-panel{box-shadow:0 0 12px 0 rgba(0,0,0,.3)}.adsk-viewing-viewer.acs-theme .docking-panel-delimiter-shadow{box-shadow:0 3px 5px 0 rgba(0,0,0,.1)}.adsk-viewing-viewer.acs-theme .docking-panel-title{background-color:#edf0f2;border-bottom:1px solid rgba(0,0,0,.2);color:#0a131c}.adsk-viewing-viewer.acs-theme .docking-panel-close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0iIzRBNTU1QiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}.adsk-viewing-viewer.acs-theme .docking-panel-close:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNLjQ1NSAxMC45OTdhLjUuNSAwIDAgMS0uMzEtLjg1bDEwLTEwYS41MDIuNTAyIDAgMCAxIC43MS43MWwtMTAgMTBhLjUuNSAwIDAgMS0uNC4xNCIvPjxwYXRoIGQ9Ik0xMC40NTcgMTEuMDA3YS41LjUgMCAwIDEtLjMxLS4xNWwtMTAtMTBhLjUwMi41MDIgMCAwIDEgLjcxLS43MWwxMCAxMGEuNS41IDAgMCAxLS40Ljg2Ii8+PC9nPjwvc3ZnPg==)}.adsk-viewing-viewer.acs-theme .docking-panel-footer-resizer{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjciPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggc3Ryb2tlPSIjQkVDOEQyIiBkPSJtLjUgNi41IDYtNk00LjUgNi41bDEuNTM2LTEuNTM2Ii8+PHBhdGggc3Ryb2tlPSIjOTM5Q0E1IiBkPSJtMS41IDYuNSA2LTZNNS41IDYuNWwxLjUzNi0xLjUzNiIvPjwvZz48L3N2Zz4=);background-position-x:9px;background-position-y:8px;background-repeat:no-repeat}.adsk-viewing-viewer.acs-theme .docking-panel-footer-resizer:hover{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjciPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggc3Ryb2tlPSIjQkVDOEQyIiBkPSJtLjUgNi41IDYtNk00LjUgNi41bDEuNTM2LTEuNTM2Ii8+PHBhdGggc3Ryb2tlPSIjNEE1NTVCIiBkPSJtMS41IDYuNSA2LTZNNS41IDYuNWwxLjUzNi0xLjUzNiIvPjwvZz48L3N2Zz4=);background-position-x:9px;background-position-y:8px;background-repeat:no-repeat}.adsk-viewing-viewer.acs-theme .docking-panel-button{border:1px solid #d5dbe1;color:#4a555b}.adsk-viewing-viewer.acs-theme .docking-panel-primary-button{background-color:#0696d7;color:#fff}.adsk-viewing-viewer.acs-theme .docking-panel-primary-button.active,.adsk-viewing-viewer.acs-theme .docking-panel-primary-button:focus,.adsk-viewing-viewer.acs-theme .docking-panel-primary-button:hover{background-color:#38abdf;color:#fff}.adsk-viewing-viewer.acs-theme .docking-panel-secondary-button{background-color:#939ca5;color:#fff}.adsk-viewing-viewer.acs-theme .docking-panel-secondary-button.active,.adsk-viewing-viewer.acs-theme .docking-panel-secondary-button:focus,.adsk-viewing-viewer.acs-theme .docking-panel-secondary-button:hover{background-color:#bec8d2;color:#fff}.adsk-viewing-viewer.acs-theme .docking-panel-tertiary-button{border:1px solid #0696d7;color:#0696d7}.adsk-viewing-viewer.acs-theme .docking-panel-tertiary-button.active,.adsk-viewing-viewer.acs-theme .docking-panel-tertiary-button:focus,.adsk-viewing-viewer.acs-theme .docking-panel-tertiary-button:hover{border:1px solid #38abdf;color:#38abdf}.adsk-viewing-viewer.acs-theme .docking-panel-footer{background-color:#fff;border-top:1px solid rgba(0,0,0,.2)}.adsk-viewing-viewer.acs-theme .docking-panel-container-solid-color-a{background-color:hsla(0,0%,100%,.94)}.adsk-viewing-viewer.acs-theme .docking-panel-container-solid-color-b{background-color:#fff}.adsk-viewing-viewer.acs-theme .docking-panel-container-solid-color-c{background-color:#ecf0f3;color:#000}.adsk-viewing-viewer.acs-theme .docking-panel-container-gradient{background:repeating-linear-gradient(rgba(242,247,250,.7),rgba(242,247,250,.7) 36px,rgba(242,247,250,0) 0,rgba(242,247,250,0) 72px)}.adsk-viewing-viewer.acs-theme .docking-panel-textbox{background-color:transparent;border:1px solid #d5dbe1}.adsk-viewing-viewer.acs-theme .adsk-lmv-tftable tr td div{color:#4a555b}.adsk-viewing-viewer.acs-theme .adsk-lmv-tftable tr.logical-group{background-color:rgba(242,247,250,.7)}.adsk-viewing-viewer.acs-theme .adsk-lmv-tftable tr.logical-group td div{color:#0a131c}.adsk-viewing-viewer.acs-theme .docking-panel-scroll::-webkit-scrollbar-track{background:none}.adsk-viewing-viewer.acs-theme .docking-panel-scroll::-webkit-scrollbar-thumb{background:#bec8d2}.adsk-viewing-viewer.acs-theme .docking-panel-scroll::-webkit-scrollbar-thumb:hover{background:#939ca5}.adsk-viewing-viewer.acs-theme .docking-panel-scroll::-webkit-resizer{background-color:rgba(30,30,30,.8)}.adsk-viewing-viewer.acs-theme .docking-pane-scroll::-webkit-scrollbar-corner{background-color:rgba(0,0,0,.2)}.adsk-viewing-viewer.acs-theme .adsk-filterbox input.filter-box,.adsk-viewing-viewer.acs-theme .adsk-searchbox input.search-box{background:#fff;border:1px solid transparent;color:#0a131c}.adsk-viewing-viewer.acs-theme .adsk-filterbox input.filter-box:focus,.adsk-viewing-viewer.acs-theme .adsk-searchbox input.search-box:focus{border:1px solid #1dc6f2}.adsk-viewing-viewer.acs-theme .adsk-searchbox .search-box-icon{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyI+PHBhdGggZmlsbD0iIzRBNTU1QiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi4yMTQgOS4yMzZhNS4wMyA1LjAzIDAgMCAxLTEuNDUtMy41MTFjMC0xLjI5OC41MzQtMi41OTUgMS40NS0zLjUxMWE1LjAzIDUuMDMgMCAwIDEgMy41MS0xLjQ1YzEuMjk4IDAgMi41OTYuNTM0IDMuNTEyIDEuNDVhNS4wMyA1LjAzIDAgMCAxIDEuNDUgMy41MSA1LjAzIDUuMDMgMCAwIDEtMS40NSAzLjUxMiA1LjAzIDUuMDMgMCAwIDEtMy41MTEgMS40NSA1LjAzIDUuMDMgMCAwIDEtMy41MTEtMS40NU0xMi45IDEyLjI5bC0yLjgyNC0yLjgyNGMuOTE2LTEuMDY5IDEuNDUtMi4zNjYgMS40NS0zLjc0YTUuNzIgNS43MiAwIDAgMC0xLjY4LTQuMDQ2QzguNzc5LjYxMSA3LjI1MiAwIDUuNzI2IDBhNS43MiA1LjcyIDAgMCAwLTQuMDQ2IDEuNjhBNS43MiA1LjcyIDAgMCAwIDAgNS43MjQgNS43MiA1LjcyIDAgMCAwIDEuNjggOS43N2E1LjcyIDUuNzIgMCAwIDAgNC4wNDUgMS42OEE1LjYgNS42IDAgMCAwIDkuNDY1IDEwbDIuODI0IDIuODI0Yy4wNzcuMDc2LjE1My4wNzYuMzA2LjA3Ni4xNTIgMCAuMjI5IDAgLjMwNS0uMDc2LjA3Ni0uMDc3LjA3Ni0uMzgyIDAtLjUzNSIvPjwvc3ZnPg==)}.adsk-viewing-viewer.acs-theme .adsk-searchbox .search-box-icon.focused{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyI+PHBhdGggZmlsbD0iIzFEQzZGMiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMi4yMTQgOS4yMzZhNS4wMyA1LjAzIDAgMCAxLTEuNDUtMy41MTFjMC0xLjI5OC41MzQtMi41OTUgMS40NS0zLjUxMWE1LjAzIDUuMDMgMCAwIDEgMy41MS0xLjQ1YzEuMjk4IDAgMi41OTYuNTM0IDMuNTEyIDEuNDVhNS4wMyA1LjAzIDAgMCAxIDEuNDUgMy41MSA1LjAzIDUuMDMgMCAwIDEtMS40NSAzLjUxMiA1LjAzIDUuMDMgMCAwIDEtMy41MTEgMS40NSA1LjAzIDUuMDMgMCAwIDEtMy41MTEtMS40NU0xMi45IDEyLjI5bC0yLjgyNC0yLjgyNGMuOTE2LTEuMDY5IDEuNDUtMi4zNjYgMS40NS0zLjc0YTUuNzIgNS43MiAwIDAgMC0xLjY4LTQuMDQ2QzguNzc5LjYxMSA3LjI1MiAwIDUuNzI2IDBhNS43MiA1LjcyIDAgMCAwLTQuMDQ2IDEuNjhBNS43MiA1LjcyIDAgMCAwIDAgNS43MjQgNS43MiA1LjcyIDAgMCAwIDEuNjggOS43N2E1LjcyIDUuNzIgMCAwIDAgNC4wNDUgMS42OEE1LjYgNS42IDAgMCAwIDkuNDY1IDEwbDIuODI0IDIuODI0Yy4wNzcuMDc2LjE1My4wNzYuMzA2LjA3Ni4xNTIgMCAuMjI5IDAgLjMwNS0uMDc2LjA3Ni0uMDc3LjA3Ni0uMzgyIDAtLjUzNSIvPjwvc3ZnPg==)}.adsk-viewing-viewer.acs-theme .adsk-filterbox .filter-box-icon{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI3Ij48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzk3OTc5NyIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggZD0iTTcuNSA2LjVoLTVNOC41IDMuNWgtN005LjUuNWgtOSIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.acs-theme .adsk-filterbox .filter-box-icon.focused{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI3Ij48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwQkZGRiIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSI+PHBhdGggZD0iTTcuNSA2LjVoLTVNOC41IDMuNWgtN005LjUuNWgtOSIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.acs-theme .adsk-filterbox .filter-box-close,.adsk-viewing-viewer.acs-theme .adsk-searchbox .search-box-close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iNyIgZmlsbD0iI0JFQzhEMiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik00LjUxIDEwIDQgOS40OSA5LjQ5IDRsLjUxLjUxeiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Im0xMCA5LjQ5LS41MS41MUw0IDQuNTEgNC41MSA0eiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.acs-theme .adsk-filterbox .filter-box-close:hover,.adsk-viewing-viewer.acs-theme .adsk-searchbox .search-box-close:hover{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iNyIgZmlsbD0iIzkzOUNBNSIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik00LjUxIDEwIDQgOS40OSA5LjQ5IDRsLjUxLjUxeiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Im0xMCA5LjQ5LS41MS41MUw0IDQuNTEgNC41MSA0eiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.acs-theme .adsk-search-results-scrolling-panel .selected{background-color:#f2f7fa}.adsk-viewing-viewer.acs-theme .adsk-search-results-scrolling-panel>div[lmv-nodeid]:hover{background-color:rgba(0,191,255,.2)}.adsk-viewing-viewer.acs-theme .adsk-search-results-scrolling-panel .search-match{color:#1dc6f2}.adsk-viewing-viewer.acs-theme .adsk-search-results-scrolling-panel .search-path{color:#939ca5}.adsk-viewing-viewer.acs-theme .adsk-search-results-scrolling-panel .no-results-title{color:#000}.adsk-viewing-viewer.acs-theme .adsk-search-results-scrolling-panel .no-results-description{color:#939ca5}.adsk-viewing-viewer.acs-theme .loading-spinner path{stroke:#38abdf;fill:transparent}.adsk-viewing-viewer.acs-theme .loading-spinner path:first-child{stroke:#ecf0f3}.adsk-viewing-viewer.acs-theme .loading-spinner .message{color:#0a131c}.adsk-viewing-viewer.acs-theme .docking-panel.menu .menu-item:hover{background:rgba(0,191,255,.2)}.adsk-viewing-viewer.acs-theme .docking-panel.menu .menu-divider{background-color:#666}.adsk-viewing-viewer.acs-theme .viewer-settings-panel.docking-panel .settings-tabs span{color:#0a131c}.adsk-viewing-viewer.acs-theme .viewer-settings-panel.docking-panel .settings-tabs span:hover{color:#1dc6f2}.adsk-viewing-viewer.acs-theme .viewer-settings-panel.docking-panel .settings-tabs .tabselected span{border-color:#38abdf;color:#38abdf}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-environment-cell{border:1px solid #f2f7fa}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-environment-cell:hover{border:1px solid #939ca5}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-environment-cell.border-select{border:1px solid #38abdf}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-environment-name{color:#4a555b}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-cell{border:1px solid #f2f7fa}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-cell:hover{border:1px solid #939ca5}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-cell.border-select{border:1px solid #38abdf}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-description,.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-name{color:#4a555b}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .docking-panel-tertiary-button:active{border:1px solid #38abdf;color:#38abdf}.adsk-viewing-viewer.acs-theme .switch .slider,.adsk-viewing-viewer.acs-theme .switch .slider:before{background-color:#d9e1e9}.adsk-viewing-viewer.acs-theme .switch input:checked+.slider:before{background-color:#38abdf}.adsk-viewing-viewer.acs-theme .layers-panel .visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMCI+PHBhdGggZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNOC40MjQuMDEzYzEuMzkuMDA2IDIuNzY1LjI4MSA0LjA1LjgxLjkzNi4zOTMgMS44MS45MiAyLjU5MiAxLjU2NmE4LjggOC44IDAgMCAxIDEuNzgyIDIuMjE0IDcuMSA3LjEgMCAwIDEtMS41NjYgMi40MyA5LjEgOS4xIDAgMCAxLTIuNTM4IDEuNjc0Yy0xLjM4My41ODctMi44NzIuODgtNC4zNzQuODY0YTEwLjMgMTAuMyAwIDAgMS00LjMyLS43MDIgOC40IDguNCAwIDAgMS0yLjUzOC0xLjYyQTcuMSA3LjEgMCAwIDEgMCA0Ljc2NWE5LjEgOS4xIDAgMCAxIDEuNzgyLTIuNDNBOS41IDkuNSAwIDAgMSA0LjM3NC43MTVhOS4yIDkuMiAwIDAgMSA0LjA1LS43MDJtLjEwOCA4LjA0NmMuNDI4LS4wMDQuODUtLjA5NiAxLjI0Mi0uMjcuMzgzLS4xNjcuNzMtLjQwNiAxLjAyNi0uNzAyLjYxLS42MTYuOTQtMS40NTUuOTE4LTIuMzIyYTMuMTkgMy4xOSAwIDAgMC0uOTE4LTIuMjY4IDMuNCAzLjQgMCAwIDAtMS4wMjYtLjcwMiAzLjI0IDMuMjQgMCAwIDAtMi41MzggMGMtLjM4My4xNjgtLjczLjQwNi0xLjAyNi43MDJhMy4xOSAzLjE5IDAgMCAwLS45MTggMi4zMjJjLjAwNi40MjguMDk3Ljg1LjI3IDEuMjQyLjE2Ni4zODUuNDA0LjczMy43MDIgMS4wMjZhMy4zIDMuMyAwIDAgMCAyLjI2OC45NzJtMS44OS0zLjI5NGExLjggMS44IDAgMCAwLS4xNjItLjcwMiAxLjkgMS45IDAgMCAwLS4zNzgtLjU5NCAxLjggMS44IDAgMCAwLS41OTQtLjM3OGwtLjcwMi0uMTYyLS43MDIuMTYyYTEuODQgMS44NCAwIDAgMC0uOTcyLjk3MiAxLjg0IDEuODQgMCAwIDAgMCAxLjQ1OGMuMTczLjQyOC41Ljc3NS45MTguOTcybC43MDIuMTYyLjcwMi0uMTYyYy4yMi0uMDg2LjQyMi0uMjE0LjU5NC0uMzc4LjE2MS0uMTczLjI5LS4zNzQuMzc4LS41OTQuMTA5LS4yMzcuMTY0LS40OTUuMTYyLS43NTZ6Ii8+PC9zdmc+);opacity:1}.adsk-viewing-viewer.acs-theme .layers-panel .visibility.dim{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzk0OTQ5RiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTQuNDY3LjE5NGEuNjU3LjY1NyAwIDAgMC0uOTM0IDBsLTMuMDY2IDIuOTgyYy0uOC0uMTk1LTEuNi0uMzg5LTIuNDY3LS4zODktMy42IDAtNi42NjcgMi4xMzktOCA0LjczMi42IDEuMTY2IDEuNiAyLjI2OCAyLjggMy4xMUwuNDY3IDEyLjlhLjYxNS42MTUgMCAwIDAgMCAuOTA3Yy4yNjYuMjU5LjY2Ni4yNTkuOTMzIDBMMTQuNDY3IDEuMTAyYS42MTUuNjE1IDAgMCAwIDAtLjkwOE00LjggNy41MmMwLTEuNzUgMS40NjctMy4xMTIgMy4yLTMuMTEyLjMzMyAwIC43MzMuMDY1IDEgLjE5NWwtLjg2Ny44NDJoLS4yYy0xLjIgMC0yLjIuOTczLTIuMiAyLjE0di4xOTRsLS44NjYuODQyYzAtLjM4OS0uMDY3LS43NzctLjA2Ny0xLjEwMU04IDkuNjU3YzEuMiAwIDIuMi0uOTcyIDIuMi0yLjEzOCAwLS4xOTUtLjA2Ny0uMzktLjEzMy0uNjQ5TDcuMzMzIDkuNTI4Yy4yNjcuMDY1LjQ2Ny4xMy42NjcuMTNtOC0yLjEzOGMtLjY2Ny0xLjI5Ny0xLjgtMi40NjMtMy4xMzMtMy4zMDZsLTIgMS45NDRjLjIuMzkuMzMzLjkwOC4zMzMgMS4zNjIgMCAxLjc1LTEuNDY3IDMuMTEtMy4yIDMuMTEtLjUzMyAwLTEtLjEyOS0xLjQtLjMyM0w1LjEzMyAxMS43M0E4LjMgOC4zIDAgMCAwIDggMTIuMjVjMy42IDAgNi42NjctMi4xMzkgOC00LjczMSIvPjwvc3ZnPg==);opacity:1}.adsk-viewing-viewer.acs-theme .property-panel .no-properties,.adsk-viewing-viewer.acs-theme .property-panel .property-name{color:#4a555b}.adsk-viewing-viewer.acs-theme .property-panel .property-value{color:#939ca5}.adsk-viewing-viewer.acs-theme .property-panel .property-drop-down{background:hsla(0,0%,93%,.6);color:#4a555b}.adsk-viewing-viewer.acs-theme .property-panel .property-drop-down>option{background:hsla(0,0%,93%,.75)}.adsk-viewing-viewer.acs-theme .model-structure-panel .lmv-no-properties{color:#4a555b}.adsk-viewing-viewer.acs-theme .bimwalk .c-bimwalk-tooltip{background-color:#fff}.adsk-viewing-viewer.acs-theme .bimwalk .bimwalk-guide-dark-theme{display:none}.adsk-viewing-viewer.acs-theme .bimwalk .bimwalk-guide-bim-theme,.adsk-viewing-viewer.acs-theme .bimwalk .bimwalk-guide-light-theme{display:block}.adsk-viewing-viewer.acs-theme .bimwalk .bimwalk-tooltip-or{color:#939ca5}.adsk-viewing-viewer.acs-theme .toolbar-animation-play-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA3VjBsNyAzLjVMMTQgN2wtNyAzLjVMMCAxNHoiLz48L3N2Zz4=)}.adsk-viewing-viewer.acs-theme .adsk-button.active .toolbar-animation-play-icon,.adsk-viewing-viewer.acs-theme .adsk-button:focus .toolbar-animation-play-icon,.adsk-viewing-viewer.acs-theme .adsk-button:hover .toolbar-animation-play-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA3VjBsNyAzLjVMMTQgN2wtNyAzLjVMMCAxNHoiLz48L3N2Zz4=)}.adsk-viewing-viewer.acs-theme .toolbar-animation-pause-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMCAwaDR2MTRIMHpNOCAwaDR2MTRIOHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.acs-theme .adsk-button.active .toolbar-animation-pause-icon,.adsk-viewing-viewer.acs-theme .adsk-button:focus .toolbar-animation-pause-icon,.adsk-viewing-viewer.acs-theme .adsk-button:hover .toolbar-animation-pause-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMCAwaDR2MTRIMHpNOCAwaDR2MTRIOHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.acs-theme .toolbar-animation-backward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQgN1YwTDcgMy41IDAgN2w3IDMuNSA3IDMuNXpNMTggMGgtMnYxNGgyeiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.acs-theme .adsk-button.active .toolbar-animation-backward-icon,.adsk-viewing-viewer.acs-theme .adsk-button:focus .toolbar-animation-backward-icon,.adsk-viewing-viewer.acs-theme .adsk-button:hover .toolbar-animation-backward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQgN1YwTDcgMy41IDAgN2w3IDMuNSA3IDMuNXpNMTggMGgtMnYxNGgyeiIvPjwvZz48L3N2Zz4=)}.adsk-viewing-viewer.acs-theme .toolbar-animation-forward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNCA3VjBsNyAzLjVMMTggN2wtNyAzLjVMNCAxNHpNMCAwaDJ2MTRIMHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.acs-theme .adsk-button.active .toolbar-animation-forward-icon,.adsk-viewing-viewer.acs-theme .adsk-button:focus .toolbar-animation-forward-icon,.adsk-viewing-viewer.acs-theme .adsk-button:hover .toolbar-animation-forward-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNCI+PGcgZmlsbD0iIzAwQkZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNCA3VjBsNyAzLjVMMTggN2wtNyAzLjVMNCAxNHpNMCAwaDJ2MTRIMHoiLz48L2c+PC9zdmc+)}.adsk-viewing-viewer.acs-theme .treeview .group,.adsk-viewing-viewer.acs-theme .treeview .leaf,.adsk-viewing-viewer.acs-theme .treeview group,.adsk-viewing-viewer.acs-theme .treeview leaf{color:#0a131c}.adsk-viewing-viewer.acs-theme .treeview .group.selected label,.adsk-viewing-viewer.acs-theme .treeview .leaf.selected label,.adsk-viewing-viewer.acs-theme .treeview group.selected label,.adsk-viewing-viewer.acs-theme .treeview group.selected-ex>lmvheader>label,.adsk-viewing-viewer.acs-theme .treeview leaf.selected label,.adsk-viewing-viewer.acs-theme .treeview leaf.selected-ex>lmvheader>label{color:#1dc7f3!important}.adsk-viewing-viewer.acs-theme .treeview .group.category>lmvheader,.adsk-viewing-viewer.acs-theme .treeview group.category>lmvheader{background-color:rgba(242,247,250,.7)}.adsk-viewing-viewer.acs-theme .treeview .group>lmvheader>label,.adsk-viewing-viewer.acs-theme .treeview .leaf>lmvheader>label,.adsk-viewing-viewer.acs-theme .treeview group>lmvheader>label,.adsk-viewing-viewer.acs-theme .treeview leaf>lmvheader>label{color:#0a131c}.adsk-viewing-viewer.acs-theme .treeview .group>lmvheader:hover,.adsk-viewing-viewer.acs-theme .treeview .leaf>lmvheader:hover,.adsk-viewing-viewer.acs-theme .treeview group>lmvheader:hover,.adsk-viewing-viewer.acs-theme .treeview leaf>lmvheader:hover{background:rgba(0,191,255,.2)!important}.adsk-viewing-viewer.acs-theme .treeview .group.dim>lmvheader>label,.adsk-viewing-viewer.acs-theme .treeview .leaf.dim>lmvheader>label,.adsk-viewing-viewer.acs-theme .treeview group.dim>lmvheader>label,.adsk-viewing-viewer.acs-theme .treeview leaf.dim>lmvheader>label{color:#939ca5}.adsk-viewing-viewer.acs-theme .treeview div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMCI+PHBhdGggZmlsbD0iIzBBMTMxQyIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNOC40MjQuMDEzYzEuMzkuMDA2IDIuNzY1LjI4MSA0LjA1LjgxLjkzNi4zOTMgMS44MS45MiAyLjU5MiAxLjU2NmE4LjggOC44IDAgMCAxIDEuNzgyIDIuMjE0IDcuMSA3LjEgMCAwIDEtMS41NjYgMi40MyA5LjEgOS4xIDAgMCAxLTIuNTM4IDEuNjc0Yy0xLjM4My41ODctMi44NzIuODgtNC4zNzQuODY0YTEwLjMgMTAuMyAwIDAgMS00LjMyLS43MDIgOC40IDguNCAwIDAgMS0yLjUzOC0xLjYyQTcuMSA3LjEgMCAwIDEgMCA0Ljc2NWE5LjEgOS4xIDAgMCAxIDEuNzgyLTIuNDNBOS41IDkuNSAwIDAgMSA0LjM3NC43MTVhOS4yIDkuMiAwIDAgMSA0LjA1LS43MDJtLjEwOCA4LjA0NmMuNDI4LS4wMDQuODUtLjA5NiAxLjI0Mi0uMjcuMzgzLS4xNjcuNzMtLjQwNiAxLjAyNi0uNzAyLjYxLS42MTYuOTQtMS40NTUuOTE4LTIuMzIyYTMuMTkgMy4xOSAwIDAgMC0uOTE4LTIuMjY4IDMuNCAzLjQgMCAwIDAtMS4wMjYtLjcwMiAzLjI0IDMuMjQgMCAwIDAtMi41MzggMGMtLjM4My4xNjgtLjczLjQwNi0xLjAyNi43MDJhMy4xOSAzLjE5IDAgMCAwLS45MTggMi4zMjJjLjAwNi40MjguMDk3Ljg1LjI3IDEuMjQyLjE2Ni4zODUuNDA0LjczMy43MDIgMS4wMjZhMy4zIDMuMyAwIDAgMCAyLjI2OC45NzJtMS44OS0zLjI5NGExLjggMS44IDAgMCAwLS4xNjItLjcwMiAxLjkgMS45IDAgMCAwLS4zNzgtLjU5NCAxLjggMS44IDAgMCAwLS41OTQtLjM3OGwtLjcwMi0uMTYyLS43MDIuMTYyYTEuODQgMS44NCAwIDAgMC0uOTcyLjk3MiAxLjg0IDEuODQgMCAwIDAgMCAxLjQ1OGMuMTczLjQyOC41Ljc3NS45MTguOTcybC43MDIuMTYyLjcwMi0uMTYyYy4yMi0uMDg2LjQyMi0uMjE0LjU5NC0uMzc4LjE2MS0uMTczLjI5LS4zNzQuMzc4LS41OTQuMTA5LS4yMzcuMTY0LS40OTUuMTYyLS43NTZ6Ii8+PC9zdmc+);background-position:6px 12px;background-repeat:no-repeat;border:none;height:100%;margin:0;opacity:1;outline:none;padding:0;position:absolute;right:0;top:0;width:35px}.adsk-viewing-viewer.acs-theme .treeview div.visibility:hover{filter:drop-shadow(0 0 0 #fff)}.adsk-viewing-viewer.acs-theme .treeview .dim div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNCI+PHBhdGggZmlsbD0iIzk0OTQ5RiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTQuNDY3LjE5NGEuNjU3LjY1NyAwIDAgMC0uOTM0IDBsLTMuMDY2IDIuOTgyYy0uOC0uMTk1LTEuNi0uMzg5LTIuNDY3LS4zODktMy42IDAtNi42NjcgMi4xMzktOCA0LjczMi42IDEuMTY2IDEuNiAyLjI2OCAyLjggMy4xMUwuNDY3IDEyLjlhLjYxNS42MTUgMCAwIDAgMCAuOTA3Yy4yNjYuMjU5LjY2Ni4yNTkuOTMzIDBMMTQuNDY3IDEuMTAyYS42MTUuNjE1IDAgMCAwIDAtLjkwOE00LjggNy41MmMwLTEuNzUgMS40NjctMy4xMTIgMy4yLTMuMTEyLjMzMyAwIC43MzMuMDY1IDEgLjE5NWwtLjg2Ny44NDJoLS4yYy0xLjIgMC0yLjIuOTczLTIuMiAyLjE0di4xOTRsLS44NjYuODQyYzAtLjM4OS0uMDY3LS43NzctLjA2Ny0xLjEwMU04IDkuNjU3YzEuMiAwIDIuMi0uOTcyIDIuMi0yLjEzOCAwLS4xOTUtLjA2Ny0uMzktLjEzMy0uNjQ5TDcuMzMzIDkuNTI4Yy4yNjcuMDY1LjQ2Ny4xMy42NjcuMTNtOC0yLjEzOGMtLjY2Ny0xLjI5Ny0xLjgtMi40NjMtMy4xMzMtMy4zMDZsLTIgMS45NDRjLjIuMzkuMzMzLjkwOC4zMzMgMS4zNjIgMCAxLjc1LTEuNDY3IDMuMTEtMy4yIDMuMTEtLjUzMyAwLTEtLjEyOS0xLjQtLjMyM0w1LjEzMyAxMS43M0E4LjMgOC4zIDAgMCAwIDggMTIuMjVjMy42IDAgNi42NjctMi4xMzkgOC00LjczMSIvPjwvc3ZnPg==);background-position:6px 9px;opacity:1}.adsk-viewing-viewer.acs-theme .treeview .view lmvheader>icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjUxNDMxOERGQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjUxNDMxOEUwQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTE0MzE4RERCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTE0MzE4REVCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6dltUsAAAAvElEQVR42mL8//8/AyWAiYFCQLEBLCCira3tJZD6DhVjBGI+KI0MVldVVaUC1cL4qkCsBHPBRiDWh2JbIGYDYn40HA1VywnEKUB8DIibWaCCf6AYBH4jsZHBKyjdBcQhQCwCxFdhBiQBcRSSYl4sBvyD0jxA/APK/g8zgB2KiQF/QRoHJBphtnJDA5lkA7ig9HIgvg9lc7CQYIAElN4ExEeAuAGUXmAGHCDCgK9I7HdAXAoylHHoZyaAAAMA0EImBepZpP0AAAAASUVORK5CYII=);background-repeat:no-repeat;display:inline;padding:0 11px}.adsk-viewing-viewer.acs-theme .treeview .collapsed>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjExIj48cGF0aCBmaWxsPSIjMEExMzFDIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0uODk4Ljc2LjgyIDEwLjQ3N2w1LjA5Mi01LjA5MiIvPjwvc3ZnPg==);cursor:zoom-in}.adsk-viewing-viewer.acs-theme .treeview .expanded>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI2Ij48cGF0aCBmaWxsPSIjMEExMzFDIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjcxOS40NjIgMCAuMzg2bDUuMDkyIDUuMDkyIi8+PC9zdmc+);cursor:zoom-out}.adsk-viewing-viewer.acs-theme .treeview .expanded.selected>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSI2Ij48cGF0aCBmaWxsPSIjMURDNkYyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05Ljg0Ny44OTguMTMuODIgNS4yMiA1LjkxMyIvPjwvc3ZnPg==);cursor:zoom-out}.adsk-viewing-viewer.acs-theme .treeview .collapsed.selected>lmvheader>icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2IiBoZWlnaHQ9IjEwIj48cGF0aCBmaWxsPSIjMURDNkYyIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0uODk4LjE5NS44MiA5LjkxM2w1LjA5Mi01LjA5MiIvPjwvc3ZnPg==);cursor:zoom-in}.adsk-viewing-viewer.acs-theme .viewer-settings-panel .settings-environment-image{border:1px solid #d4dbe1!important}.adsk-viewing-viewer.acs-theme .propertysearch-icon{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIHZpZXdCb3g9IjAgMCA1OC4zNzEgNTguMzcxIj48cGF0aCBkPSJtNTUuODMzIDU2LjY3OS01Ljk2OS02LjI0M2ExMC43NCAxMC43NCAwIDAgMCAyLjgyLTcuMjVjMC01Ljk1My00Ljg0My0xMC43OTYtMTAuNzk2LTEwLjc5NnMtMTAuNzk2IDQuODQzLTEwLjc5NiAxMC43OTYgNC44NDMgMTAuNzk2IDEwLjc5NiAxMC43OTZjMi40NDIgMCA0LjY4OS0uODI0IDYuNS0yLjE5Nmw2IDYuMjc2YTEgMSAwIDAgMCAxLjQxNC4wMzIgMSAxIDAgMCAwIC4wMzEtMS40MTVNMzMuMDkyIDQzLjE4NmMwLTQuODUgMy45NDYtOC43OTYgOC43OTYtOC43OTZzOC43OTYgMy45NDYgOC43OTYgOC43OTYtMy45NDYgOC43OTYtOC43OTYgOC43OTYtOC43OTYtMy45NDYtOC43OTYtOC43OTZNMjguMDk2IDQzLjFjLjAyNS00LjAyOSAxLjc5My03LjY0NCA0LjU3OC0xMC4xNTMtLjkxMS4wNTQtMS44NDQuMDk3LTIuODA3LjEyM2E4NCA4NCAwIDAgMS01LjIyLS4wMDFjLTcuMzQxLS4yMDEtMTMuMTkxLTEuMjM4LTE3LjQwMy0yLjcxNy0xLjk4LS42NjctMy42NzUtMS40NTMtNC45ODMtMi4zNTJ2OS40YzIuODQ2IDIuOTcxIDEyLjM5NCA1LjcxMSAyNSA1LjcxMS4yODMgMCAuNTU1LS4wMDguODM1LS4wMTFNMjQuODk2IDI5Ljk2NXEuNDg3LjAxNC45ODIuMDIzYTc5IDc5IDAgMCAwIDIuNzY2LjAwMXEuNDk0LS4wMS45ODItLjAyM2wuMzQ5LS4wMDhjMTEuMjUzLS4zNTkgMTkuNjQ4LTIuOTE1IDIyLjI4Ni01LjY2OHYtOS40MDFDNDcuMzkzIDE4LjIzMiAzNy4xMDUgMjAgMjcuMjYxIDIwcy0yMC4xMzMtMS43NjgtMjUtNS4xMTF2OS40YzIuNjM4IDIuNzU0IDExLjAzMyA1LjMxIDIyLjI4NiA1LjY2OHoiLz48cGF0aCBkPSJNNTIuMjYxIDExLjMwNlY5YS45LjkgMCAwIDAtLjEzNS0uNDU4QzUxLjAwMyA0LjI0MSA0Mi4zNzYgMCAyNy4yNjEgMCAxMi4xODMgMCAzLjU2NCA0LjIyIDIuNDA3IDguNTFhLjk3Ljk3IDAgMCAwLS4xNDYuNDl2Mi4zMDZDNS4wOTcgMTQuMjY3IDE0LjU3NyAxNyAyNy4yNjEgMTdzMjIuMTYzLTIuNzMzIDI1LTUuNjk0TTI4LjQzIDQ2LjE4N2MtLjM5LjAwNS0uNzcyLjAxNC0xLjE3LjAxNC0xMi4zNDYgMC0yMC44NjYtMi4yOS0yNS01LjIwMXY4LjIwMWEuOTQuOTQgMCAwIDAgLjExNy40NTFjMS4xODEgNC44OTUgMTEuNzQ3IDguNTQ5IDI0Ljg4MyA4LjU0OSA0Ljc2NCAwIDkuMTgyLS40ODYgMTIuOTQ1LTEuMzMyLTUuODE2LS43MTItMTAuNTE5LTUuMDUtMTEuNzc1LTEwLjY4MiIvPjwvc3ZnPg==);filter:invert(1)}.adsk-viewing-viewer.acs-theme .docking-panel.menu .menu-item-expand{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAA7BAAAOwQG4kWvtAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAG5JREFUeNq00qENwlAUBdAfEkwF/ghcJ6hkByZgj9rugOwSTTpABYaE/J0+Ftn3UsSVJ3m575bWWsmkHAox4oTymz2w4okuAysWXDOwYsOQgRVv3DPwg0cUvnCLnrqij5Yz4xJ9x4RzeAB/3ep3AGt8wANc/1TxAAAAAElFTkSuQmCC)}@font-face{font-family:adsk-viewing;font-style:normal;font-weight:400;src:url(data:application/font-woff;base64,d09GRgABAAAAABuoAA0AAAAAKZwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAbjAAAABwAAAAckVtCKEdERUYAABtwAAAAHAAAAB4AJwBBT1MvMgAAAagAAABJAAAAYFHDXq9jbWFwAAACUAAAAJAAAAFa1aKU0mdhc3AAABtoAAAACAAAAAj//wADZ2x5ZgAAA1gAABXSAAAhuHrX4dpoZWFkAAABMAAAADUAAAA2FEuPKGhoZWEAAAFoAAAAHgAAACQETgMMaG10eAAAAfQAAABbAAAAtkEABYhsb2NhAAAC4AAAAHgAAAB48rT7lG1heHAAAAGIAAAAHgAAACAAkADNbmFtZQAAGSwAAADVAAABUysDfXlwb3N0AAAaBAAAAWMAAAII4quuh3icY2BkYGAA4il8b23j+W2+MnAzMYDA5bCMmSD6/vanc/7//P+ASZVJDMjlYABLAwBTswzcAAAAeJxjYGRgYGIAAj1mrv8//z9kUmVgZEAFCgBgZwRfAAB4nGNgZGBgsGY4xSDMAAJMQMzIABJzAPMZAB3hAV4AAHicY2BmYmGcwMDKwMHow5jGwMDgDqW/MkgytDAwMDGwcjLAACMDEghIc01hcGAwYKhifPD/AYMeE5IaxteM14GUAgMjANuWCxkAAAB4nGNigAAmCE6C0mpArA7EoUDszISQh+GjQLwbizgTEDNiEZeC0jA5N2YuhhlMDP9/MnAz9DFo//8DdkQhgyiDNoMDEDIAaQhUYjBkCGVQA4o4AGWhAAAjHwvEAHicY2BgYGaAYBkGRgYQCAHyGMF8FgYLIM3FwMHABIQMDMYMUQxV//+DVRkwODIkgtj/L/8/9v8AVC8UMLIxwAUYQTqZGFABIwMGYGZhZUMRYOfg5OLm4eXjFxAUEhYRFROXkJSSlpGVk1eAyCsqKauoqqlraGpp6+jq6RsYGhmbmJqZW1haYRo+AAAAqLwS0AAAAAAAAAAAAFwBdAGyAiICQAKaAsgDYgOUA7QD0gQKBDAEUARwBJAEygUcBd4F/gYYBjIGjgb8BzoIAAhMCJgJZgnoCfoKFgseC0oLZgu0C+oMCAwmDEIMygzeDP4NYg2UDdQOEA5ODn4OqA7UD0wPnhAMEHQQ3HicnVkLkBxHee6eR/c8dnZ3drZn9nX7vN25u73be+zOjHyS7vb0sCTbMpblOz0sG0W2hX1nYhwqMnYiOETsAMHg4NwBqcQ4BIKtqxAoMISEFAc2SWHKxGAfuJIQKyFAwpFAqoKrDNQqf8/uSSfbIhV2p9/9d/d0///f3/8PiqAT5/8bP4//DclIRQaykIP6UAlVUR2NIg9NIxR4TVZhAat4WzGrBFDwKg5EPDQ9CtFGYE0XooBWYthzmsGowEwWPJslN/mHfH8uy0iWsSyp+bx4KCx6N8pi+5q7M9bfJRJnK7ZRseFXMfzdu3+9zIwyg1+Zl9awOPO9z+LEU4l05wfpBIJ1ovPnBIS/j3JoGO1DB9AR9GvoDnQ3uhe9Hb0L/T76EPoT9Dj6FPo8+hL6KrxFjRRwpVzbjlu1MunDSXsrpsSxJ6ax71qVjaoJn3dwKoFfi2GgsCcCfxQ3J2ze3G1MlAnP8mEuSf3L1F8uvVz/jXryinSj/THNUuPT+boSUbYOTcdVVdLlmqYVXySKQnj0cai0NKiqSRFJ3ei7rRlRIGnriqIrbwnjsU35yz2PhnF7U/xoOM6rn12apcXq+QZfRmNwa1zVJMlVNfxlWJWsKDIszY2rSQ3qapKkbu7b2fFLVqDo7VfF05RPSV/dOawfC/O3b+oP3F1DN+Nz+AFEUQylUQb1I9RfrrX8CTtJNna3XHOn8ITtEBeqggYuE2rj2p7x8T0TbxwtlUaLb3//qXz+1PtP9fV9cfu9J7PZk/fels1+eOzKsbErk8VGsdj47QM7dhyAsOPUjOfNQEAIEeSiHTD34yBfJZCqnWgX2o1Q1fVrFOYD5mJJ4kAOZgRG7NU5Uey4Uc6yvMUNcDWKaR5a/KBb7bX8wKH4WtvwCrbK9MoE2ZZMVZX0rZNs2HASfmbvqZwxKNyQGLb33ZPTKplphu/rPJWo0PQbZuJFpSjHaWVCEG+f/Jdkoa4nZWm4qFkzifhAcmJSkRjV9k7lxu65itB921PDyS1W5xP/E3ET45OS2CeIw0VqkGQG3g+jWdTGK3gN3g9NY8eiLizMtSCabdysXVU5c6Z8tXZzY+XZ3LWYVDPbtmWqnZ/vzz0EtBLaef4l/Az+GRLhVPpA4/ARYtgOfLeB3VYY1wglXFarLi3gqODWAtiRVhj7tgN/Su6dlCcj8fHhqBDBpigW4zSrZXWFMTzUlqcjot7HXtWWPKMW1Oz1unadPqyJC+lcEKWS1rdjZGr/bxnZSNwqpOVu23y6L4gSUcvPjExdBRyEEMPrAoI1U6QDP3GtmUWIK0oLggNBhOCWWGkc0iqEpaWl1dXV5eV5xlbwQmcJVjZr2yvLeH11aRnbbcba7TYfkY/dwSug1XzQZ6jqtHwP9nPCbwY1l/NF0/G9Vq2OYWO4Aq4wGB2YhkJLwJm5wrka8sAdgRtG24F/aM3l0SiuUN7ZCSOWdKgT2N0Io34hUsthCVMlEWN9oqrIE+V+0RRHWZsNueyE8Wbpre9zCgXHLhSipmKpOcOgpCjlclJRkyORjKUqpsqoA9UKVAsZXm8YGZp4TsACLhYdIVNzcqzfJtWWKAnMtpnV3zCfINnCcCHfyH8qLxJbL9KIEDMNw4wJcTmvMVUol2XJ0nI0DvW6LnUbdFuWYLuQ0I0goagA2Z6epKzSmsKeXwtlquWHcgYyhOefX15+fvnhc9ddJxaSLCVu3zY+OuP6moCWecvzfv7I1VGjUjDjfTuvdHNNj106R/ziHGLFox6wYbM36Ll2W9ofK/ZG6rx0rtgWJ/RQRr4C0VagBxmpmnAosOcmj1ysudrWrZobxnn8VLfU2Ram3Wn/GsXx1fg8iqI8jJIk1IEXa9VAD1BbdIPuaNTpDre1mpdKA9UCbPiUdeSIbZSukVvHjrXka0oGjvVPmWpip1udsQSCBzov/OO3WmR/0WDf+a5tFPfLr9xP6+K7xjAINYg2n6/3uovHjxc3nt47a5uq0GX3LQZIwts00ANH2zcVbzraGyN+dPH0TZWjN72C3rxI7zLKcUhQ8XoDPPrQQ6sPPdSjt4urRXh+ybvQCkcxID2AWXojHF9sL8LTG+LdPL+I4N4QUAmfxy/C7OkeMkIWo5ypkjYoY6/lBk0P9W6SKowZhFLpNZ99UySWc91c1qUPvNx5XcIwEgbe+dGPbn0RfvjFv7+LuFugOR69/4XOXQZv/o6Ts/sc0IkY1WHONdixAmiBK2BGjq4qXVkPZZ62psTAKxOQ4KBWZXmBs3Ydh4zghsuqVYPK94fXhqvsGKv+DU25e0dvPz1RGMTjjW2JkdtnbplI33hj2j18x9LBzuzBg/htc3NDK8PDK0OP0hgzI3hg9/BAvsDeVifplB4p9U2kbjyScnePDV3RPtjdVwf2VQSc9cfAk7CyCafJ1U8dw/PLSnydcKlVym6oqbZieLxfsTSFAbLlBeey01GzYuJPp9OKXNXjcb0qK5fNYxb9UZThTVWp1P8vHw5BDZXg157jrg/hPRk5bsflDIlBnIV8jBjJpLGp+FodZC1CNlWs4xOdRy7wNugFEe4gNF4ySzK9KKMC6iC8WULx+Q9fIpwbsoGBPrJB35PLkPi+nlTij18QyIvyJHJNFtJckMWQ6HhPEhcvCKEAaIsKVcFEE8DNiKsREq6zF8j4RmZTRPi9HmAA3zVKbDAa8HvANND0YXuYMZvZm1Jdg3tE1yCXJbrul3Qdv1PXD+m6PgMk+Ht2r5XfNmxTqmuQ2aDT/LKmbabj2ASh34T9/Us0DnbQfnQINHcohN1QvhBdUlMpg6nQLE2AqVAZEoJktGd1gHpg8qUl6pWYG7CSh5/OZnIZuE3hyfJfLJIdNAz8vWhUjkXHJCISDm47WYlIMs/hpw90XjhwAA/8PJv1/c3BuNOAZxd0VMidHHbfeTHr+yMjvj84iPjpYWTjHws23CkW12nVEDqUPDNcmlkNQhBXc8N/xZvIY34g+J+pptFORYtpeMfO0Tdt88sCrCg1cvP9e95xa1Yl4hVaVE/g74TdWm9NPHgiPkr1iJXY2ri54t82w1gE8fuQwr7+EOYOYGf3oOvRUXQCzaPfQPehM7AWryF6VZBd2yn5QR6zENS4pajQg71mQ/DCC92Ru9c6oUIPwyd6KeI6MMTTF6osUgNjzwa77pIUsFA3dXsp/grVFbnzKQX0PL6Otox4xoo5cueTUsTUrIxpqIaSseIpCc9GHSsTN+yIqm48nVsiqkQl0iu+Q7P1xyBcC+EBCD/WmT4P6WFIR3rlPITX/0BQNINuS5DOM9S2qezE+MhKlIZz46Zo8Lmt6JTVXcyL4fi4FSadv1IJTArlxW75Gd3WHoPwuMb0+yG9AtJ5SD/Hp4X0LRAKUAf325Wogr+AvwH4tQB2Crf6Eeb4lWPuCj99kd84tQC07QQgbQcQrghlt0IcfhtxfwC+46CdwERWfq4QGSfSB3HUME+bEUNgLyef/dhpLN4j4oGB6+t1/GCj8w8qIRgTouJaI2UZkYhh7er8BG+LyIIonfzMZz6DQv78IMrAHfg88GYD5A+BasUcrsKB5kHpU2caNws4vOs4GHb5jed6lHMxvx3A1sdBIkUOp2QCKzMMeajvc/khORqVKJWcwySVYAogzEhEPfAR/HyTFplhPENUUhhjk5NsrADZZyJRVqTNI7yXabz+Eb4u6fzLSBAAfqIptAP49v7X0Gdj9HL6bBqHYC1wpgUnuKjaKGwsS1KwOl1g7+BXAu93glbTtGGHazeb1e0LKddydiTUcgDRvbKunSlaVRqrZ+JKyzi8ofAYG80lLCuRy1iJhGUmgTfLsZhCXalUkrIZKRYrOJqW1DNKNh5X1ZpcEguSq9N4vKCEOpbp6sbsm9Lu7LwFZte4bl7MToq0MJiX6rJ+TNf47G3o+7OElckmLIwTiVzWMp+riErGqCkxIZGMAx7R8mJ/JK2Jg4NEdiIl1RJMZkSlZEJIyv1GhnDgGkX6+XP4p4CbuI3vAD8PozHUQlvQNtQGm3svugYdQ2hDHfg9XkGvKMNpgBJvANJI5jGwOphzF4MZQjuvZ3h5FdHjOJJnu/+h4QJYMgMZC8QUv3tTgRGizT08mzv2yJl2e77dXmi36+026/3qcJXxBy8UOI1vcZrO1KZCRsjNPjx38yPH8Ft6NJ319hCMwdqdeaBc4uTczngvmsAP46+DZCNugbvBe4Ovfz34AP5AmHSv7zrqw6uwTzK/wy3KnMATXS9wGGU/ffprTz/92Sc+C+b8/Pott6x3np372+PH6Y1PIETO/+L8L/B/Aebrh129Ht2K/gh9GugBhNpdINxl6QIG3QoAmbpcn7rckeaIwL+EwQSES4HvVhsYqitg3QNHd51vTW7TuA53yFFOOApCzgfLg5XvigH3vfkeZGsEKIEA5uj5R0Acytwz57nd2aGx0POVUN67vLGsZsDX6ni1r+mF4aKeI4qpUEXRJImpZly1JUmnlKimSu9WTEco5jRNiQ1KEv49HJVrguqIcdmdkRWdXHG1YFJpPDIjSUVRTplqmZABIU407fpBSagqhhQV+wW532TSsJOp47RRlQRXMSIK1A4IsT3DI9f8VI6JKSK5USrFxgXFFA5N78d/EY2Y6bSpmjVdNylVqA4zEDCyYWkKkSxd7zxOyo5A20o5ElEUX5L+CW4/WxCoQD1dJe8hqn7bToMIYH1/Q5LakuyUyaQk+YIgRSK4ziRpElOR+zpEeZugjBPRSmqxTDppmBYdh6YrDFUxAkGdlEUmDrZ8DUYWBFuMxsUMDGLsvV0+q6AuPlrAa3jxogdkw5EK+Cf0lXKvMPeGBMwxf/EDGjUUbKuRgQ/Ozq7Zdn0WL0bpuhoxlC/kBhbabGlpqY1Z6ANJAj5Y7/lXEAYulh3mVikL8Ar8zqOVFQECXpqbm/v27Er4B76+G/o+BHQU+BPGCG+CCQuYDCwOzjUOWGzT2AwNN1gehw6gRkMzzuRtgY/r6f50uv+efUImWo+lxb00LgmqXDcU1WCqjvnWDMuaKEXxN3nHdOdHf0BiMbIUI4J2ovNDuFOUZaYReZnnsH1CE0KbmiAGNt06rE2GNzJ7XnYUhLpDDJVJFa7TpieGasUNZTKGvWBlob68sLAMVs1CvQ7p6sIb77BnZ2fnFvFSfXkZqjrzQ4vPTYE+Wbh1/Nbxnny34VzWYdYooKmuI1PqbQdGa5W7z9xdwazWqtVa6+9tTU21XuTZWkjbBtpVvBr6tRA307lJwI1a1yyZeKW+uAKmMRw6XlkGC3llsc46i8ACoY9jgzYWWoRd+zoAE8GkTby0tLJSn++s4MWFNoazW2ovAOHsPEKcl8bhvFdQMfR6TQEifB2g7dfDKBx8linAv25Kufx2oUgejD/Xr25Y8azCnK4RDmhwQ5WTbuq17J597r8ixc9plXo0qeWa4zktadVK2nh7JF1/ZCjjDGXjWOjApg/V6/VkX24ol/+IbZp2LMfjqFPLZQeyYd7M8DiO7ysD6jMMVSXltx64amyq1l+2Uq3KLpMPMVQ/1jfQl2NW/hyYcKadA7pERP9YrpbL1bbE+QgZk8d8H7vnt4o0zvucK8IAJze0OLc4hFfXVmA3QTo2+snd06pWaCmouGEMoYSvWrsKs6WZXnJDZ30J0tkVNnu2vdLlkwac1zeRyr/zWBech9Zm/BEq9tdGIOQSCPJS1fOqNc9LZY00azAnqm6hDUFoUF+NARJJpaLZKEsNMRbTt5AGFuq0pUPDSNLBR7xrPHg6ay1J7ze9aELK5uIKifZlJDMxYZYNacsWKVIyR0GdZvLEMFVAJFZ8wqzoIvfR1BGD9/g2aCQNOD4B9ibsGws8jpICr2rKJnU9h3ouczzXwysLix97YGWxswA20Brs6WIdnff3tpvf3fa6Xe1dhc65U7j48on/OLHL3XpmctwaDOWiDPK7FmKLgYu6xS2HGwFbE/rsu3YKv9Oc8PZp1Xr6JOEf79OL7F3Sfmf/yJW33XZlay4pmgrTUwszh0+fxolQl5z1RvbJ72RFwx257T23bR1TqKSb2/ec/uRp4IlxlMDn8E9gHfBuocePu8UBVPpwWBwC1wgjNIobOJjCDr5pp/qntaax589GRmv79q6MpWRFrlBV0cunbs0UCm+ewEfjraFPGu2hyp6rzzYa9f2FgDgCIVtMLz91T2vcyXOZltEs7O0K6BL+dTANaHww9ECGdtiEzXWCuMmX5m3Ol7wSbodKpraO5+zZ+tmz9Vl4INP5Fh7CC9lqNZup1U52hvC3OvMhAOJQEOK1Lk6poX1wrl9FEZgZWSzgxh4FRe6YMqBkm4QuycBZvT5CnIxOyE0vdj74JAPrS3nyBv3BIIe/+uWqNJBRxaG7MPrdQzShmOKhUs5/UN/wDXKdvAZc43BdlwT8vR1TOaiGHzAYf83tGNebWWUNo/XOqr2wYLcjiQi2DuZsm+jH5xcXz9rz83Z7TQVLYq2rP/fhp8I1p/hXR7cGiy5gj5qA+blnBiypAv5zVdQzDtUOrn/tDbAc7YYnLUW1nvxXUc0MSNUvL55Hd92sP+jnSocoS9BDXCcwsNefwC+BZuSj8q8iYCzAUYcfQHwXLOJa+DEkj30PZBbyyV4hgAI3L+zwg0n4yQT4hHJruiG4pwJFUETZEGWSzEfSSdnEoqbghC1iG0dhY20MPyOqCskkxklR1LCgkjiWBLFARXN7I9csZeRTRzQxIdKoJGtESFoDVND07J17qRmPxOX3aVRR3z0Sjehx+ocsAoWTE1EtEv1Q1JB0tW30qTJRh4z0F7NaKpfM5bQutuj6mRSQ5zz/LgS3f/cTrMAxhkObZou24I28KL68ExQrfXBe8JRo/D9L+xo33NksDOFUY1+pcfuODRfo/PKdC/kt/MKew0uG8kKJYqT8u5bNkro2fV2hwH6nTrJZzSj1dQl2jw9Mh3c6QrPhvTWKrkDb0QzajQ5e6iP6v0PJk7kmCZUH/17k9b4XwTuUui9SggivsZ6FcOkjoE6dXzmw9ib3voEFsc7Y1bFs57FszPNiWXwYUiAeGnp1WFyc7+7NPFtfXl5ejGW7NBCHGKyLVyy4ka/iPpnwk0M5BNCgaEC+a1XOVsx2+nBzO/YDrwaM2e1WudDvNcjwkpUC+J1OXEtXaWeV2pOkrWypMHs8kebfllJWc38CehRSYY/vE6nPsgsF2+qTiDs9Ozu9GI/lbTo4iefm8NYBWhnrT/E+TqEY9kmd3kwxMAUUIT+xkJ+SoEH5N1jQot3PrX7TDxVL+PmEQwwAG5RjwqBcbfnTuLLhZaf2q/gLf2JA39soBJYoS7V0PtfUWvaJ60+mjHRBj+WzfcUtCbnzpZP7+4X5ZR8Y7/PZyPjJqeMjnI1Gjs8v43tHrzs5MYyxPHywXc8evOXHEm5ofanW8DIblYd3jw0Wi/beYkSNlrMjqRuPpod3j+fgVf4XgYwtWwAAeJxVjj1uwkAQRp+xMYlAlKkQ2iKtLdsSkUDUHICCHqSVhWRsaYH0KVPQ5gY5QEpux2d7C7KrmXk7f98CE34IaE9AyIvnASNmnkPmHDxHen17HjLm13Os/F0WRK/KxN1UywOmUug5ZM2750g9X56HvHHzHOv+UXHiE6qT3BZLyVW5PU5PW16rvWBDQ82li04dFkNBSqa4kvU7el6SsJAVquZ8aLipL5vGldYUaWZWRkryy2SRFFmu+vMHdlrtOHPsBI0WtCLsrDsfm9rkafav/wGV5ysEAAAAeJx9UNlu2zAQ3LFkK7aT2GmO3mfS44Uvvc+PoaSVQ4QmhSVly/76MrXTvpUAMQtiODM7NKD/nx/pggZ0Smd0ThcYIEOOIUYocIAxJpjikI5xhGN6Tx/oI32iz/SFvtI3+p5+/6RfmGGOE9zDKc5wjgvcxwM8xCM8xhM8xTM8xwu8xCtc4gqv8QZv8S7fer/M19rejEOUroqd8CxwjMYtghJ2NcsocOVdPWyMhDhfsg6JpGoTonYVH909aLewPNK9CarfwWYH23FprC29lnr+d1JVJ8HLUIv4dVb6Piu7xajSSxZdcN9aX/PhH0fVcmK6aWOiil6tDK+zxq8mTWdtqITZzf6NinsTZ4sko1LmKN5alvzaL3lk9SYJHdwtN09bReNdyq3tJpiQ35IL4UY4XE9a8ck3Gg5Fa7Vjtd3jZo991mp34qVMsZJVak8bx3Wxr2NqzYpTgbdxJztWEubfdIOOWgAAAAAB//8AAnicY2BkYGDgAWIxIGZiYARCKyBmAfMYAAYcAGkAAAABAAAAAN5M8/IAAAAA01ZomQAAAADft+Wc)}[data-icon]:before{content:attr(data-icon)}[class*=" adsk-icon-"]:before,[class^=adsk-icon-]:before,[data-icon]:before{font-family:adsk-viewing!important;font-style:normal!important;font-variant:normal!important;font-weight:400!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.adsk-icon-arrow:before{content:"a"}.adsk-icon-box:before{content:"b"}.adsk-icon-selection:before{content:"0"}.adsk-icon-bug:before{content:"c"}.adsk-icon-camera:before{content:"d"}.adsk-icon-explode:before{content:"e"}.adsk-icon-first-person:before{content:"f"}.adsk-icon-fit-to-view:before{content:"g"}.adsk-icon-fov:before{content:"h"}.adsk-icon-fullscreen:before{content:"i"}.adsk-icon-fullscreen-exit:before{content:"j"}.adsk-icon-game-controller:before{content:"k"}.adsk-icon-home:before{content:"l"}.adsk-icon-layers:before{content:"m"}.adsk-icon-section-analysis:before{content:"o"}.adsk-icon-roll:before{content:"p"}.adsk-icon-refresh:before{content:"q"}.adsk-icon-properties:before{content:"r"}.adsk-icon-plane-z:before{content:"s"}.adsk-icon-plane-y:before{content:"t"}.adsk-icon-plane-x:before{content:"u"}.adsk-icon-pan:before{content:"v"}.adsk-icon-orbit-constrained:before{content:"w"}.adsk-icon-measure-menu:before{content:"x"}.adsk-icon-measure:before{content:"S"}.adsk-icon-measure-distance-new:before{content:"T"}.adsk-icon-measure-angle-new:before{content:"U"}.adsk-icon-measure-area-new:before{content:"V";text-transform:uppercase!important}.adsk-icon-measure-arc-new:before{content:"Z"}.adsk-icon-measure-calibration:before{content:"X"}.adsk-icon-measure-settings:before{content:"Y"}.adsk-icon-measure-trash:before{content:"W";text-transform:uppercase!important}.adsk-icon-live-review:before{content:"y"}.adsk-icon-orbit-free:before{content:"z"}.adsk-icon-zoom:before{content:"A"}.adsk-icon-walk:before{content:"B"}.adsk-icon-structure:before{content:"C"}.adsk-icon-settings-render:before{content:"D"}.adsk-icon-second:before{content:"E"}.adsk-icon-first:before{content:"F"}.adsk-icon-measure-distance:before{content:"G"}.adsk-icon-settings:before{content:"n"}.adsk-icon-measure-angle:before{content:"H"}.adsk-icon-axis-x:before{content:"I"}.adsk-icon-axis-y:before{content:"J"}.adsk-icon-axis-z:before{content:"K"}.adsk-icon-plus:before{content:"L"}.adsk-icon-delete:before{content:"W"}.adsk-icon-mem-mgr:before{content:"O"}.adsk-icon-visible:before{content:"2"}.adsk-icon-invisible:before{content:"3"}.adsk-viewing-viewer .loading-spinner{height:150px;width:100%}.adsk-viewing-viewer .loading-spinner .message{cursor:default;font-size:12px;font-weight:700;letter-spacing:1.2px;position:absolute;text-align:center!important;text-align:left;text-transform:uppercase;top:60px;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;width:100%}.adsk-viewing-viewer .loading-spinner .path{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:loading-spinner-perpetual-motion;animation-timing-function:linear;border:none;height:140px;left:calc(50% - 70px);position:absolute;transform-origin:50% 50%;width:140px}.adsk-viewing-viewer .loading-spinner path{stroke-width:5px;stroke-linejoin:round;stroke-linecap:round}@keyframes loading-spinner-perpetual-motion{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.adsk-viewing-viewer .alert-box{background:hsla(0,0%,98%,.9);border:1px solid #b8b8b8;border-radius:5px;display:block;font-family:Helvetica Neue Light,Segoe UI Semilight,sans-serif;height:auto;left:50%;max-width:40%;padding:10px;position:absolute;top:50%;visibility:hidden;white-space:-moz-pre-wrap;white-space:pre-line;z-index:1;word-wrap:break-word;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);word-break:break-all}.adsk-viewing-viewer .alert-box-image{display:block;float:left;height:60px;left:10px;padding-right:10px;top:10px;width:60px}.adsk-viewing-viewer .alert-box-msg{color:#333;display:block;margin-left:70px;margin-top:2px}.adsk-viewing-viewer .alert-box-title{display:block;word-wrap:break-word;font-size:18px;margin-bottom:10px;min-height:18px;word-break:break-all}.adsk-viewing-viewer .alert-box-text{display:block;word-wrap:break-word;font-size:12px;min-height:12px;word-break:break-word}.adsk-viewing-viewer .alert-box-content{display:block;font-size:12px;list-style:disc;margin-top:10px;min-height:12px}.adsk-viewing-viewer .alert-box-ok{background:transparent;border:1px solid #999;border-radius:2px;bottom:5%;color:#000;cursor:pointer;display:block;font-size:14px;height:auto;left:50%;line-height:20px;margin-left:-25px;margin-top:10px;padding:3px;position:relative;text-align:center;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;width:50px;z-index:2}.adsk-viewing-viewer .alert-box-ok:hover{background:#fff;color:#111}.adsk-viewing-viewer .alert-box.errors{max-height:200px}.adsk-viewing-viewer .alert-box-msg.errors{max-height:150px;overflow-y:auto;padding-right:15px}.adsk-viewing-viewer .alert-box-title.errors{margin-top:15px}.adsk-viewing-viewer .alert-box-text.errors{margin-top:5px}.adsk-viewing-viewer .alert-box-image.img-reload{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAMAAAANIilAAAAATlBMVEUAAAC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwXZW//AAAAGXRSTlMADdNH4Xntk8apUvNrMPqdZSAGuz2FFF2i4n3MhQAAAXVJREFUSMfdl9tuwyAMQDGQ0FByI+nF//+jm7Ywt4VA8KRJ63mNjrDBGEf8GwC/EEU8fOLrZVjduEjdtlouo1vhuOyVkfiENMofkmE6YYLTBGXZStxB2oI8d5ihm3Oy0phFq33ZnbHAudmTm5dlusbapnsOZghyztVGwbb7yjz6afk20Dc5XcUD10nm5b6lVR1Eh+90RgaqjPssElzHSI4TbqfXRb/x4AaS00EPNn0Hczn/xHQR1XJ/DuUP9fIlBL2KahnCMY6iXlahcnuGbMKVE/XMoUAUQ1bbIUuoVqm6TL1KKVuO3G17PXPkZUvZ/0JexF+uzM+Zv9v8c+ZXGBjFr22FuKhk0t3BzT3dfOk+E3G/kqrQSYi4Ueq11MNi1oGabLl7Jp4Vyq/ct1NNFsfSixFjQ9BtX3irYqYWNxpR+UrOd0TaGMb7TEFzJ4PhJoiKmYQSZkxD5PLmMCcCjAlQBDizJ8GYegnGvE0wJn2i4h/jnfgAT9VrCTWL7i0AAAAASUVORK5CYII=);background-repeat:no-repeat}.adsk-viewing-viewer .alert-box-image.img-unsupported{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAMAAAANIilAAAAAUVBMVEUAAAC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzYhxYwAAAAGnRSTlMA8Q73gDv9BiUazrVL6VrDbC+oeuDYkoqfYnTM6tcAAAFySURBVEjH7ZTbkoIwEAVNQgiBoNyR8/8fuoi6szEUZlL7pv1MKzVMz+nLP6I7neyaEqVMlXsAfaJb1ABEmyZ3uFEluQ53zgmuLB/yaPlyhicT220FnijNlSsQF6Z7xl8almtHT64LjjzD58oJQgHIV5RSQmDFMadVaq2LojBnAIxAFmzPG5pdfCB2wI3h8WcNwAhkwoaQFGZ0IDrHhipo8rGBmAvu5I+tvDICafDEUdYbU9T58N+zAr3KG67BRl8oEBN3PujTmjE2EFMCL0dADrGB9GENUoDooqZFa2EVQLh3x9afT0vyYSAOHqP5XTgiOzy2RC39XzwMJIOPsFQkUR0dW0K1/roeBVLhhdwZKYP3wWAPji2hxIrCK9PesY0lDGRGLGEgWu0802crs0JAE0wrIAt2ez+QBbFyGIgdouUwkAlcmQLROVtGRsd2l/kkVyzJ4e7S9oYLtpFjl4rORwLL6soOXCgQVyuRRL6cvnwGPzKpczNf1iTWAAAAAElFTkSuQmCC);background-repeat:no-repeat}.adsk-viewing-viewer .alert-box-image.img-unloack,.adsk-viewing-viewer .alert-box-image.img-unlock{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAMAAAANIilAAAAAVFBMVEUAAAC8vLy8vLy8vLy9vb28vLy/v7+8vLy9vb28vLy9vb27u7u8vLy9vb28vLy8vLy8vLy9vb28vLy9vb28vLy8vLy8vLy7u7vFxcW/v7+8vLy+vr4GHu50AAAAGnRSTlMADpDTFeJM/vBFMAf2YciIe+nbu7GgbmtVNgXq938AAAEkSURBVEjH7ZTbdoMgEEVxuCgqEK9JJ///n21WYGFjRMA+tF3uR4ft4GGEbMAEDLSrOjqAYCSJGjh6ONTxKoMKv1NBbHfR45peRLlzi+9o5wj3gltcdl1Vbsql2ou5WyymoIAuXtaFQ28GH/Akm8cTOfnohya4aXSMvks9okOFGmsX7ZUsuboD0IHWN/eB5qVg0CIC40GfSyh7nTlq5Sm0bzG2d0S1GUZfhA/LVG9WFLZ1+UHCMEkc66++kQykzXLOkQvuBjyDhv5CudiFWdnYtQsZkznlU37AQTImgefIWtiLTafLXLqi4Mky+CrEy+ubTiZ3LnyVpcr3I3JZH9h2aQ4Ehrw+cFSorS111ng+azzvx7C1U/7nclt90f61q/eUf1z+BAQm0DzJD1vhAAAAAElFTkSuQmCC);background-repeat:no-repeat}.adsk-viewing-viewer .alert-box-image.img-item-not-found{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAMAAAANIilAAAAAV1BMVEUAAAC8vLy/v7/c3Nzk5OT///+8vLy8vLy8vLy8vLy8vLy8vLy8vLz///+8vLz///+7u7u4uLjJycnW1tb+/v7n5+e/v7/z8/PQ0NDt7e3ExMT5+fnc3NyZffqfAAAADnRSTlMA8A8R/fHbyh69Ku4xHnuV7q4AAAEzSURBVEjH7dTZboMwEIVhCqRJt+EMi1fe/zk7TnFQZTWBSW8i5b+yBJ9GNjKVRDerq+pUlW3Gx/oOTG/1HVi0Hotu1DhrLaZjo8eiT0qctR6LVuFV6zG9nm5ggEFGIlkseNXv1zAQ3Dx5K/nWGV5xqQvrfOzW4vCScalLPHW/a5v80qo348MFr/rzKo6+nSdb4NzHFWyHQGCYIS646C88+8Ewzkt2O3D2uCys4K+mLipxGbdp9KEvHmzCc5dyCpyPflRNRogJx6DBsuXUBAVmN56x490Y7GIevBcD889cG/ZicO+XO9mD9mEYGbvMZdqJeciX2YCU2DqAlNgaJtLiCaTHnh4MIwyS02ECS9DilBaHPmVUGG03jt3YQ4XTv+sBsXLP+tPWf+eyJ37if8YvG0v4G00xpazwgfUzAAAAAElFTkSuQmCC);background-repeat:no-repeat}.adsk-viewing-viewer .docking-panel.hud{display:block;height:auto;left:50%;max-width:350px;min-width:250px;position:absolute;top:calc(50% - 50px);transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);width:auto}.adsk-viewing-viewer .docking-panel.hud.top{top:50px}.adsk-viewing-viewer .hud-client{position:relative;width:100%}.adsk-viewing-viewer .hud-message{display:block;font-size:12px;min-height:12px;padding:10px 15px}.adsk-viewing-viewer .hud-button{position:relative}.adsk-viewing-viewer .hud-checkbox{margin-bottom:10px!important;margin-left:20px!important}.adsk-viewing-viewer .docking-panel.menu{height:auto;min-height:0;min-width:120px;padding:8px 0;position:absolute;width:auto;z-index:20}.adsk-viewing-viewer .docking-panel.menu .menu-item{cursor:pointer;height:36px;margin-bottom:1px}.adsk-viewing-viewer .docking-panel.menu .menu-divider-container,.adsk-viewing-viewer .docking-panel.menu .menu-item{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:table-row;position:relative}.adsk-viewing-viewer .docking-panel.menu .menu-divider-container{cursor:default;height:17px}.adsk-viewing-viewer .docking-panel.menu .menu-divider{cursor:default;height:1px;margin-bottom:8px;margin-top:8px;position:absolute;width:100%}.adsk-viewing-viewer.touch .docking-panel.menu .menu-item{padding:20px}.adsk-viewing-viewer .docking-panel.menu .menu-ttem:last-child{margin-bottom:0}.adsk-viewing-viewer .docking-panel.menu .menu-item-text{display:table-cell;padding:5px 10px;vertical-align:middle;white-space:nowrap}.adsk-viewing-viewer .docking-panel.menu .menu-item-icon{cursor:pointer;display:table-cell;float:left;font-size:18px;height:100%;padding:5px 0 5px 10px;vertical-align:middle;width:100%}.adsk-viewing-viewer .docking-panel.menu .menu-item-shortcut{cursor:pointer;display:table-cell;float:right;height:100%;margin-bottom:1px;padding:5px 5px 5px 0;vertical-align:middle;width:100%}.adsk-viewing-viewer .docking-panel.menu .menu-item-expand{background-position:50%;background-repeat:no-repeat;display:table-cell;padding:0 10px;position:relative;top:0}.adsk-viewing-viewer .adsk-lmv-tftable{border-spacing:1px;border-style:none;width:100%}.adsk-viewing-viewer .adsk-lmv-tftable tr.logical-group td{border:none;font-size:14px;font-weight:700;height:40px}.adsk-viewing-viewer .adsk-lmv-tftable tr.logical-group:first-child{height:65px}.adsk-viewing-viewer .adsk-lmv-tftable tr.logical-group:first-child td{padding-bottom:0;padding-top:15px}.adsk-viewing-viewer .adsk-lmv-tftable tr.logical-group td div{padding-left:10px;text-transform:capitalize}.adsk-viewing-viewer .adsk-lmv-tftable tr td{border:none;font-size:12px;height:36px;padding:0 10px 0 16px}.adsk-viewing-viewer .adsk-lmv-tftable tr td div{padding-left:10px}.adsk-viewing-viewer .adsk-lmv-tftable.adsk-lmv-settings td:last-child{height:30px;padding:0;width:30px}.adsk-viewing-viewer .adsk-lmv-tftable input{margin:0 8px}.adsk-viewing-viewer .adsk-lmv-tftable input:disabled{background-color:#ddd;color:#777}.adsk-viewing-viewer .adsk-lmv-tftable input[type=range]:disabled{background-color:#aaa}.adsk-viewing-viewer .adsk-lmv-tftable tr.switch-slider-row td{padding-bottom:13px;padding-top:13px;vertical-align:top}.adsk-viewing-viewer .adsk-lmv-tftable tr.switch-slider-row td:first-child{width:150px}.adsk-viewing-viewer .adsk-lmv-tftable tr.switch-slider-row td:first-child div{font-weight:600}.adsk-viewing-viewer .adsk-lmv-tftable tr.switch-slider-row td:nth-child(2){padding-left:0;padding-right:0;width:350px}.adsk-viewing-viewer .adsk-lmv-tftable tr.switch-slider-row td:nth-child(2) div{font-weight:300;padding-left:0}.adsk-viewing-viewer .adsk-lmv-tftable tr.switch-slider-row td:nth-child(3){padding:13px 16px 13px 59px;width:20px}.progressbg{background:#000;border:1px solid #2c2c2c;bottom:2px;display:block;height:4px;left:4px;pointer-events:none;position:absolute;width:240px;will-change:opacity;z-index:2}.progressfg{background:linear-gradient(90deg,#189e1c,#22e328);border-radius:2px;height:4px;transform-origin:left;width:100%;will-change:transform}.progresslb{bottom:12px;display:block;left:4px;pointer-events:none;position:absolute;z-index:2}.adsk-viewing-viewer .treeview{margin-left:0;width:100%}.adsk-viewing-viewer .treeview group{color:#333;cursor:pointer;display:block;display:inline;font-size:14px;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.adsk-viewing-viewer .treeview .group.category,.adsk-viewing-viewer .treeview group.category{height:40px}.adsk-viewing-viewer .treeview .group.category,.adsk-viewing-viewer .treeview .leaf.category,.adsk-viewing-viewer .treeview group.category,.adsk-viewing-viewer .treeview leaf.category{font-weight:700}.adsk-viewing-viewer .treeview .group.property,.adsk-viewing-viewer .treeview .leaf.property,.adsk-viewing-viewer .treeview group.property,.adsk-viewing-viewer .treeview leaf.property{font-size:12px;font-weight:500}.adsk-viewing-viewer .treeview group:hover{cursor:pointer}.adsk-viewing-viewer .treeview leaf{display:block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;width:100%}.adsk-viewing-viewer .treeview group.selected>leaf,.adsk-viewing-viewer .treeview group.selected>lmvheader,.adsk-viewing-viewer leaf.selected>lmvheader{background-color:#e7e7e7}.adsk-viewing-viewer .treeview group.selected,.adsk-viewing-viewer .treeview leaf.selected{background-color:transparent;border-left:3px solid #999;transition:all .2s ease}.adsk-viewing-viewer .treeview group.collapsed>group,.adsk-viewing-viewer .treeview group.collapsed>leaf{display:none}.adsk-viewing-viewer .treeview label{font-weight:400}.adsk-viewing-viewer .treeview.on-demand{width:100%}.adsk-viewing-viewer .scroller{left:0;position:absolute;width:100%}.adsk-viewing-viewer .treeview .group{color:#333;display:block;font-size:14px;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.adsk-viewing-viewer .treeview .model-div{border:0;margin:0;padding:0}.adsk-viewing-viewer .treeview .group lmvheader:hover,.adsk-viewing-viewer .treeview .leaf lmvheader:hover{cursor:pointer}.adsk-viewing-viewer .treeview .group label:hover,.adsk-viewing-viewer .treeview .leaf label:hover{cursor:pointer;text-decoration:underline}.adsk-viewing-viewer .treeview lmvheader{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:1px;padding:6px;position:relative}.adsk-viewing-viewer .treeview .leaf{display:inline;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.adsk-viewing-viewer .treeview .group>lmvheader>label,.adsk-viewing-viewer .treeview .leaf>lmvheader>label,.adsk-viewing-viewer .treeview group>lmvheader>label,.adsk-viewing-viewer .treeview leaf>lmvheader>label{pointer-events:none}.adsk-viewing-viewer .treeview .group.selected .leaf,.adsk-viewing-viewer .treeview .group.selected>lmvheader,div.leaf.selected>lmvheader{background-color:#e7e7e7}.adsk-viewing-viewer .treeview .group.selected,.leaf.selected{background-color:transparent;border-left:3px solid #999;transition:all .2s ease}.adsk-viewing-viewer .treeview label{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:calc(100% - 50px)}.adsk-viewing-viewer .treeview .leaf label{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:calc(100% - 30px)}.adsk-viewing-viewer .treeview lmvheader{line-height:normal}.adsk-viewing-viewer .model-structure-panel .lmv-no-properties{display:inline-block;padding:6px 6px 6px 12px;position:absolute;top:0;width:calc(100% - 18px)}.adsk-viewing-viewer .model-structure-panel .tree-loading-spinner{margin-top:40px;position:absolute;top:0}.adsk-viewing-viewer .docking-panel{background:transparent;border:none;border-radius:5px;overflow-x:hidden;overflow-y:hidden;position:absolute;z-index:2;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.adsk-viewing-viewer .docking-panel-title{border:none;border-radius:5px 5px 0 0;cursor:move;font-size:20px;font-weight:300;line-height:27px;overflow:hidden;padding:11px 0 11px 14px;position:relative;resize:none;text-overflow:ellipsis;text-transform:capitalize;white-space:nowrap;z-index:1}.adsk-viewing-viewer .docking-panel-close{background-position:0 19px;background-repeat:no-repeat;cursor:pointer;height:50px;position:absolute;right:0;top:0;width:25px;z-index:1}.adsk-viewing-viewer .docking-panel-scroll{height:100%;overflow-x:auto;overflow-y:auto;position:relative;resize:none;width:100%}.adsk-viewing-viewer .docking-panel-footer{bottom:0;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;height:20px;left:0;position:absolute;width:100%}.adsk-viewing-viewer.docking-panel-resize-overlay{background-color:transparent;cursor:pointer;height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:999}.adsk-viewing-viewer .docking-panel-footer-resizer{background-position-x:9px;background-position-y:8px;background-repeat:no-repeat;bottom:0;cursor:pointer;height:20px;position:absolute;right:0;width:20px}.adsk-viewing-viewer .docking-panel-gradient-container,.adsk-viewing-viewer .docking-panel-solid-container{background:none}.adsk-viewing-viewer .docking-panel-textbox{border-radius:2px;left:0;outline:none;position:relative;text-align:right;width:calc(100% - 20px)}.adsk-viewing-viewer .docking-panel-primary-button,.adsk-viewing-viewer .docking-panel-secondary-button,.adsk-viewing-viewer .docking-panel-tertiary-button{border-radius:3px;cursor:pointer;font-size:12px;font-weight:700;height:34px;letter-spacing:-.1px;line-height:34px;margin:10px;text-align:center;vertical-align:middle}.adsk-viewing-viewer .docking-panel-tertiary-button{margin:7px 10px}.adsk-viewing-viewer .docking-panel-scroll.left{direction:rtl;overflow-x:hidden}.adsk-viewing-viewer .docking-panel-scroll.right{direction:ltr;overflow-x:hidden}.adsk-viewing-viewer .docking-panel-scroll::-webkit-scrollbar{height:6px;padding:12px;width:6px}.adsk-viewing-viewer .docking-panel-scroll::-webkit-scrollbar-track{border-radius:0}.adsk-viewing-viewer .docking-panel-scroll::-webkit-scrollbar-thumb{border-radius:1px;padding:12px}.adsk-viewing-viewer .docking-panel-version-label{float:right;font-size:10px;margin-right:20px;margin-top:2px}.adsk-viewing-viewer .model-structure-panel{height:250px;min-height:100px;min-width:250px;width:300px}.adsk-viewing-viewer .treeview{left:4px}.adsk-viewing-viewer .treeview .group,.adsk-viewing-viewer .treeview .leaf{direction:ltr;height:29px;position:relative;width:100%}.adsk-viewing-viewer .leaf.selected,.adsk-viewing-viewer .treeview .group.selected{border:none}.adsk-viewing-viewer .treeview lmvheader{white-space:nowrap;word-wrap:break-word;border-radius:4px;display:inline-block;width:calc(100% - 7px)}.adsk-viewing-viewer .treeview .leaf.selected{border:none}.adsk-viewing-viewer .exclude>lmvheader{display:none}.adsk-viewing-viewer .exclude{left:0;padding-left:0}.adsk-viewing-viewer .model-structure-panel .message-unexpected{color:#fff}.adsk-viewing-viewer .property-panel{border-color:transparent;height:250px;left:220px;min-height:100px;min-width:250px;top:180px;width:300px}.adsk-viewing-viewer .property-panel .treeview{margin-left:0;overflow:hidden;padding:0}.adsk-viewing-viewer .property-panel .treeview .indented{left:21px}.adsk-viewing-viewer .property-panel .treeview .indented>lmvheader>.category-value{padding-left:10px}.adsk-viewing-viewer .property-panel .treeview .indented .expanded>lmvheader>.property-value{padding-left:20px}.adsk-viewing-viewer .property-panel .treeview group{left:0;width:100%}.adsk-viewing-viewer .property-panel .no-properties{display:inline-block;padding:6px 6px 6px 12px;width:calc(100% - 18px)}.adsk-viewing-viewer .property-panel .treeview leaf{margin-left:0}.adsk-viewing-viewer .property-panel .category-name,.adsk-viewing-viewer .property-panel .category-value,.adsk-viewing-viewer .property-panel .property-drop-down,.adsk-viewing-viewer .property-panel .property-name,.adsk-viewing-viewer .property-panel .property-value{vertical-align:middle;white-space:normal}.adsk-viewing-viewer .property-panel .category-name{display:inline-block;max-width:100px;min-width:40%;position:relative;top:-4px;vertical-align:middle}.adsk-viewing-viewer .property-panel .category-value{display:inline-block;font-style:oblique;font-weight:200;padding-left:20px;position:relative;top:-4px;vertical-align:middle}.adsk-viewing-viewer .property-panel .property-name{display:table-cell;max-width:10px;overflow-x:hidden;padding-left:28px;text-overflow:ellipsis;top:-4px;-webkit-user-select:text;-khtml-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;white-space:nowrap;width:40%}.adsk-viewing-viewer .property-panel .aggregate-name{font-size:14px;font-weight:600;padding-left:20px}.adsk-viewing-viewer .property-panel .property-value{display:table-cell;font-weight:400;height:100%;padding-left:40px;position:relative;-webkit-user-select:text;-khtml-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;vertical-align:middle;width:60%}.adsk-viewing-viewer .property-panel .property-drop-down{border:none;border-radius:5px;height:85%;margin-left:20px;margin-top:3px;max-width:150px;min-width:60%;padding-left:5px}.adsk-viewing-viewer .property-panel .separator{display:table-cell;vertical-align:middle;width:1px}.adsk-viewing-viewer .property-panel .treeview lmvheader{display:table;padding-left:13px}.adsk-viewing-viewer .property-panel .treeview group>lmvheader{padding-bottom:10px;padding-top:15px}.adsk-viewing-viewer .property-panel .treeview leaf>lmvheader{padding-bottom:0;padding-top:0}.adsk-viewing-viewer.dark-theme .treeview .leaf>lmvheader:hover,.adsk-viewing-viewer.dark-theme .treeview leaf>lmvheader:hover{background:none!important}.adsk-viewing-viewer .settings-tabs{height:40px;position:absolute;width:100%;z-index:1}.adsk-viewing-viewer .settings-tabs ul{height:100%;position:absolute;width:100%}.adsk-viewing-viewer .settings-tabs ul,.adsk-viewing-viewer .settings-tabs ul li{list-style:none;margin:0;padding:0}.adsk-viewing-viewer .settings-tabs ul li{height:100%;width:25%;-webkit-box-flex:1;-moz-box-flex:1;background-color:transparent;cursor:pointer;display:inline-block;-ms-flex:1;min-width:50px;text-overflow:clip;white-space:nowrap}.adsk-viewing-viewer .for-2d-model ul li,.adsk-viewing-viewer .for-2d-model ul li a{width:33.33%!important}.adsk-viewing-viewer .for-2d-model ul li:first-child a{text-align:right!important}.adsk-viewing-viewer .for-2d-model ul li:last-child a{text-align:left!important}.adsk-viewing-viewer .settings-tabs ul li a{height:100%;position:absolute;text-align:center;text-decoration:none;width:25%}.adsk-viewing-viewer .settings-tabs ul li:last-child a{text-align:center}.adsk-viewing-viewer .settings-tabs span{border:solid;border-color:transparent;border-width:0 0 3px;font-size:12px;font-weight:700;padding-bottom:2px;position:relative;top:16px}.adsk-viewing-viewer .settings-tabs .dockingPanel .settings-table td,.dockingPanel .settings-table td>input{cursor:pointer;display:none}.adsk-viewing-viewer .settings-tabs table.settings-table td:last-child{height:30px;padding:0;width:30px}.adsk-viewing-viewer .settings-tabs-tables-container{min-height:calc(100% - 76px)}.adsk-viewing-viewer .settings-tabs-tables-container .adsk-lmv-tftable{display:none}.adsk-viewing-viewer .settings-tabs-tables-container .settings-selected-table{display:block}.adsk-viewing-viewer .model-structure-panel{overflow:visible}.adsk-viewing-viewer .model-structure-panel .adsk-searchbox{position:absolute;top:50px;width:100%}.adsk-viewing-viewer .model-structure-panel .docking-panel-scroll{top:34px}.adsk-viewing-viewer .model-structure-panel .docking-panel-scroll.no-search{top:0}.adsk-viewing-viewer .model-structure-panel .scroller{left:0;overflow:hidden;position:absolute}.adsk-viewing-viewer .treeview div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNyIgaGVpZ2h0PSIxMCI+PHBhdGggZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNMTIuNDc0LjgyM2MuOTM2LjM5MyAxLjgxLjkyIDIuNTkyIDEuNTY2YTguOCA4LjggMCAwIDEgMS43ODIgMi4yMTQgNy4xIDcuMSAwIDAgMS0xLjU2NiAyLjQzIDkuMSA5LjEgMCAwIDEtMi41MzggMS42NzRjLTEuMzgzLjU4Ny0yLjg3Mi44OC00LjM3NC44NjRhMTAuMyAxMC4zIDAgMCAxLTQuMzItLjcwMiA4LjQgOC40IDAgMCAxLTIuNTM4LTEuNjJBNy4xIDcuMSAwIDAgMSAwIDQuNzY1YTkuMSA5LjEgMCAwIDEgMS43ODItMi40M0E5LjUgOS41IDAgMCAxIDQuMzc0LjcxNWE5LjIgOS4yIDAgMCAxIDQuMDUtLjcwMmMxLjM5LjAwNiAyLjc2NS4yODEgNC4wNS44MU04LjUzMiA4LjA2Yy40MjgtLjAwNC44NS0uMDk2IDEuMjQyLS4yNy4zODMtLjE2Ny43My0uNDA2IDEuMDI2LS43MDIuNjEtLjYxNi45NC0xLjQ1NS45MTgtMi4zMjJhMy4xOSAzLjE5IDAgMCAwLS45MTgtMi4yNjggMy40IDMuNCAwIDAgMC0xLjAyNi0uNzAyIDMuMjQgMy4yNCAwIDAgMC0yLjUzOCAwYy0uMzgzLjE2OC0uNzMuNDA2LTEuMDI2LjcwMmEzLjE5IDMuMTkgMCAwIDAtLjkxOCAyLjMyMmMuMDA2LjQyOC4wOTcuODUuMjcgMS4yNDIuMTY2LjM4NS40MDQuNzMzLjcwMiAxLjAyNmEzLjMgMy4zIDAgMCAwIDIuMjY4Ljk3Mm0xLjg5LTMuMjk0YTEuOCAxLjggMCAwIDAtLjE2Mi0uNzAyIDEuOSAxLjkgMCAwIDAtLjM3OC0uNTk0IDEuOCAxLjggMCAwIDAtLjU5NC0uMzc4bC0uNzAyLS4xNjItLjcwMi4xNjJhMS44NCAxLjg0IDAgMCAwLS45NzIuOTcyIDEuODQgMS44NCAwIDAgMCAwIDEuNDU4Yy4xNzMuNDI4LjUuNzc1LjkxOC45NzJsLjcwMi4xNjIuNzAyLS4xNjJjLjIyLS4wODYuNDIyLS4yMTQuNTk0LS4zNzguMTYxLS4xNzMuMjktLjM3NC4zNzgtLjU5NC4xMDktLjIzNy4xNjQtLjQ5NS4xNjItLjc1NnoiLz48L3N2Zz4=);background-position:6px 12px;background-repeat:no-repeat;border:none;height:100%;margin:0;opacity:.7;outline:none;padding:0;position:absolute;right:0;top:0;width:35px}.adsk-viewing-viewer .treeview div.visibility:hover{filter:drop-shadow(0 0 0 #fff)}.adsk-viewing-viewer .treeview .dim div.visibility{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNSI+PHBhdGggZmlsbD0iI0Y0RjRGNCIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTQuMzIyLjU5NGEuNjQuNjQgMCAwIDAtLjkyNCAwTDEwLjM2MiAzLjYzYy0uNzkyLS4xOTgtMS41ODQtLjM5Ni0yLjQ0Mi0uMzk2LTMuNTY0IDAtNi42IDIuMTc4LTcuOTIgNC44MTguNTk0IDEuMTg4IDEuNTg0IDIuMzEgMi43NzIgMy4xNjhsLTIuMzEgMi4zMWEuNjQuNjQgMCAwIDAgMCAuOTI0Yy4yNjQuMjY0LjY2LjI2NC45MjQgMEwxNC4zMjIgMS41MThhLjY0LjY0IDAgMCAwIDAtLjkyNG0tOS41NyA3LjQ1OEEzLjE3IDMuMTcgMCAwIDEgNy45MiA0Ljg4NGMuMzMgMCAuNzI2LjA2Ni45OS4xOThsLS44NTguODU4aC0uMTk4Yy0xLjE4OCAwLTIuMTc4Ljk5LTIuMTc4IDIuMTc4di4xOThsLS44NTguODU4YzAtLjM5Ni0uMDY2LS43OTItLjA2Ni0xLjEyMk03LjkyIDEwLjIzYzEuMTg4IDAgMi4xNzgtLjk5IDIuMTc4LTIuMTc4IDAtLjE5OC0uMDY2LS4zOTYtLjEzMi0uNjZMNy4yNiAxMC4wOThjLjI2NC4wNjYuNDYyLjEzMi42Ni4xMzJtNy45Mi0yLjE3OGMtLjY2LTEuMzItMS43ODItMi41MDgtMy4xMDItMy4zNjZsLTEuOTggMS45OGMuMTk4LjM5Ni4zMy45MjQuMzMgMS4zODZBMy4xNyAzLjE3IDAgMCAxIDcuOTIgMTEuMjJjLS41MjggMC0uOTktLjEzMi0xLjM4Ni0uMzNsLTEuNDUyIDEuNDUyYy44NTguMzMgMS44NDguNTI4IDIuODM4LjUyOCAzLjU2NCAwIDYuNi0yLjE3OCA3LjkyLTQuODE4Ii8+PC9zdmc+);background-position:6px 9px;opacity:.3}.adsk-viewing-viewer .treeview{left:0;position:relative}.adsk-viewing-viewer .treeview .group,.adsk-viewing-viewer .treeview .leaf,.adsk-viewing-viewer .treeview group,.adsk-viewing-viewer .treeview leaf{min-height:36px}.adsk-viewing-viewer .treeview .group.selected,.adsk-viewing-viewer .treeview .leaf.selected,.adsk-viewing-viewer .treeview group.selected,.adsk-viewing-viewer .treeview leaf.selected{border:none}.adsk-viewing-viewer .treeview .group.selected lmvheader,.adsk-viewing-viewer .treeview .leaf.selected lmvheader,.adsk-viewing-viewer .treeview group.selected lmvheader,.adsk-viewing-viewer .treeview leaf.selected lmvheader{background:none;border:none}.adsk-viewing-viewer .treeview .group>lmvheader,.adsk-viewing-viewer .treeview .leaf>lmvheader,.adsk-viewing-viewer .treeview group>lmvheader,.adsk-viewing-viewer .treeview leaf>lmvheader{background:none;height:35px}.adsk-viewing-viewer .treeview .group label:hover,.adsk-viewing-viewer .treeview .leaf label:hover,.adsk-viewing-viewer .treeview group label:hover,.adsk-viewing-viewer .treeview leaf label:hover{text-decoration:none}.adsk-viewing-viewer .treeview lmvheader{border-radius:0;height:100%;padding-top:9px;width:100%}.adsk-viewing-viewer .treeview lmvheader icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjUxNDMxOERGQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjUxNDMxOEUwQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTE0MzE4RERCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTE0MzE4REVCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6dltUsAAAAvElEQVR42mL8//8/AyWAiYFCQLEBLCCira3tJZD6DhVjBGI+KI0MVldVVaUC1cL4qkCsBHPBRiDWh2JbIGYDYn40HA1VywnEKUB8DIibWaCCf6AYBH4jsZHBKyjdBcQhQCwCxFdhBiQBcRSSYl4sBvyD0jxA/APK/g8zgB2KiQF/QRoHJBphtnJDA5lkA7ig9HIgvg9lc7CQYIAElN4ExEeAuAGUXmAGHCDCgK9I7HdAXAoylHHoZyaAAAMA0EImBepZpP0AAAAASUVORK5CYII=);background-repeat:no-repeat;display:inline}.adsk-viewing-viewer .treeview .collapsed lmvheader>icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAA7BAAAOwQG4kWvtAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAG5JREFUeNq00qENwlAUBdAfEkwF/ghcJ6hkByZgj9rugOwSTTpABYaE/J0+Ftn3UsSVJ3m575bWWsmkHAox4oTymz2w4okuAysWXDOwYsOQgRVv3DPwg0cUvnCLnrqij5Yz4xJ9x4RzeAB/3ep3AGt8wANc/1TxAAAAAElFTkSuQmCC);background-repeat:no-repeat;padding:1px 10px;position:relative;top:2px}.adsk-viewing-viewer .treeview .expanded lmvheader>icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAA7BAAAOwQG4kWvtAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAEhJREFUeNrM0rENACAIAEHW+AHZlp2wMzEqCo0WX1734u5SSd5CIEorUAHLQgUsCzvKwAHdwgndwCU6wS0K4d/LNQAAAP//AwCPnLa8l9W0kAAAAABJRU5ErkJggg==);background-repeat:no-repeat;padding:1px 10px;position:relative;top:1px}.adsk-viewing-viewer .treeview .dim .dim>:not(.visible)>lmvheader>icon,.adsk-viewing-viewer .treeview .dim lmvheader>icon{opacity:.3}.adsk-viewing-viewer .treeview .visible .dim>:not(.dim) lmvheader>icon,.adsk-viewing-viewer .treeview .visible lmvheader>icon{opacity:1}.adsk-viewing-viewer .treeview .leaf>lmvheader>icon,.adsk-viewing-viewer .treeview leaf>lmvheader>icon{display:none;padding:1px 10px}.adsk-viewing-viewer .search-box-icon{height:13px;left:12px;position:absolute;top:58px;width:13px}.adsk-viewing-viewer .spinner.search-in-progress{bottom:0;left:calc(100% - 65px);margin:0;position:absolute;text-align:center;top:56px;visibility:visible;width:60px;z-index:1}.adsk-viewing-viewer .viewer-settings-panel{border-radius:0;border-radius:6px;left:50%;top:5px}.adsk-viewing-viewer .viewer-settings-panel .docking-panel-title{border-radius:6px 6px 0 0}.adsk-viewing-viewer .viewer-settings-panel.docking-panel .docking-panel-scroll.right{height:calc(100% - 60px);position:absolute;top:90px}.adsk-viewing-viewer .viewer-settings-panel.docking-panel .restore-defaults-container{background-color:transparent;display:table;left:50%;position:absolute;transform:translateX(-50%);width:fit-content;width:-moz-max-content}.adsk-viewing-viewer .viewer-settings-panel.docking-panel .docking-panel-tertiary-button{margin:20px 0;padding:0 10px}.adsk-viewing-viewer .viewer-settings-panel .adsk-lmv-tftable tr td{padding-left:10px}.adsk-viewing-viewer .viewer-settings-panel .environments-container{padding-top:15px;position:relative}.adsk-viewing-viewer .viewer-settings-panel .environments-lighting-table{left:20px;position:relative;width:calc(100% - 44px)}.adsk-viewing-viewer .viewer-settings-panel .settings-row-title{font-weight:600}.adsk-viewing-viewer .viewer-settings-panel .settings-environment-cell{cursor:pointer;display:block;height:36px;text-align:left;width:100%}.adsk-viewing-viewer .viewer-settings-panel .settings-environment-image{display:inline-block;height:24px;left:4px;position:relative;top:4px;width:40px}.adsk-viewing-viewer .viewer-settings-panel .settings-environment-name{font-size:10px;font-weight:700;left:11px;position:relative;top:-4px}.adsk-viewing-viewer .viewer-settings-panel .settings-container{padding-top:15px;position:relative}.adsk-viewing-viewer .viewer-settings-panel .settings-table{left:10px;position:relative;width:calc(100% - 20px)}.adsk-viewing-viewer .viewer-settings-panel .settings-cell{cursor:pointer;display:block;text-align:left;width:100%}.adsk-viewing-viewer .viewer-settings-panel .settings-name{display:block;font-size:18px;font-weight:700;margin-left:5px}.adsk-viewing-viewer .viewer-settings-panel .settings-description{display:block;font-size:11px;font-weight:700;margin-bottom:7px;margin-left:13px}.adsk-viewing-viewer .adsk-toolbar{bottom:10px;left:10px;pointer-events:none;position:absolute;text-align:center;width:calc(100% - 20px);z-index:5}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical{display:flex;flex-direction:column;height:calc(100% - 20px);justify-content:center;left:unset;right:15px;width:50px}.adsk-viewing-viewer .adsk-control.adsk-hidden{display:none}.adsk-viewing-viewer .adsk-control:hover>.adsk-control-tooltip{visibility:visible}.adsk-viewing-viewer .adsk-control-tooltip{border-radius:3px;bottom:120%;font-size:11px;left:0;line-height:1.2;opacity:1;padding:4px;position:absolute;text-align:center;text-transform:capitalize;visibility:hidden;white-space:nowrap;z-index:5}.adsk-viewing-viewer .adsk-toolbar-vertical .adsk-control-tooltip{bottom:25%;left:unset;right:120%}.adsk-toolbar .adsk-control-group{border-radius:5px;display:inline-block;margin:0 5px;pointer-events:all}.adsk-toolbar.adsk-toolbar-vertical .adsk-control-group{margin:5px 0}.adsk-viewing-viewer .adsk-button{border:1px solid rgba(34,34,34,0);border-radius:4px;cursor:pointer;float:left;height:28px;margin:4px;padding:6px;position:relative;width:28px}.adsk-viewing-viewer .adsk-button-icon{background-position:50%;background-repeat:no-repeat;display:inline-block;font-size:24px;height:100%;line-height:1;padding-top:3px;position:relative;width:100%}.adsk-viewing-viewer .adsk-button.disabled{-ms-filter:"alpha(opacity=40)";filter:alpha(opacity=40);opacity:.4}.adsk-viewing-viewer .adsk-button.collapsed{display:none}.adsk-viewing-viewer .adsk-toolbar .adsk-label-button{margin:3px 3px 3px 1px;opacity:1;vertical-align:middle;width:auto}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-label-button{height:auto;margin:1px 3px 3px;width:28px}.adsk-viewing-viewer .adsk-toolbar .adsk-label-button label{border-radius:3px;cursor:pointer;display:block;font-size:12px;padding:8px 10px}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-label-button label{padding:10px 8px;writing-mode:sideways-lr}.adsk-button-arrow{position:absolute;right:-5px;top:-5px}.adsk-button-arrow>.adsk-button-icon{font-size:18px}.adsk-button-arrow>.adsk-button-icon:before{content:"\25b4";padding:0 5px}.adsk-toolbar.adsk-toolbar-vertical .adsk-button-arrow{left:-5px;right:unset}.adsk-toolbar.adsk-toolbar-vertical .adsk-button-arrow>.adsk-button-icon:before{content:"\25c2"}.adsk-viewing-viewer .adsk-searchbox input.search-box{box-sizing:border-box;direction:ltr;font-size:12px;height:34px;line-height:normal;margin:0;outline:none;padding:7px 12px 8px 40px;position:relative;width:100%;z-index:1}.adsk-viewing-viewer .adsk-searchbox .search-box-icon{height:13px;left:12px;position:absolute;top:10px;width:13px;z-index:1}.adsk-viewing-viewer .adsk-searchbox .search-box-close{cursor:pointer;height:14px;position:absolute;right:13px;top:10px;width:14px;z-index:1}.adsk-viewing-viewer .adsk-searchbox.empty>.search-box-close{display:none}.adsk-viewing-viewer .adsk-filterbox{position:relative}.adsk-viewing-viewer .adsk-filterbox input.filter-box{box-sizing:border-box;direction:ltr;font-size:12px;height:34px;line-height:normal;margin:0;outline:none;padding:7px 12px 8px 40px;position:relative;width:100%;z-index:1}.adsk-viewing-viewer .adsk-filterbox .filter-box-icon{height:7px;left:22px;position:absolute;top:12px;width:10px;z-index:1}.adsk-viewing-viewer .adsk-filterbox .filter-box-close{cursor:pointer;height:14px;position:absolute;right:13px;top:10px;width:14px;z-index:1}.adsk-viewing-viewer .adsk-filterbox.empty>.filter-box-close{display:none}.adsk-viewing-viewer .adsk-search-results{border-radius:0;height:450px;left:0;margin:0;max-height:400px;min-height:70px;min-width:250px;overflow:hidden;position:absolute;top:34px;width:550px}.adsk-viewing-viewer .adsk-search-results.no-content{min-height:105px}.adsk-viewing-viewer .adsk-search-results .docking-panel-scroll{height:calc(100% - 20px);left:0;position:absolute;top:0}.adsk-viewing-viewer .adsk-search-results.no-content .docking-panel-scroll{overflow:hidden}.adsk-viewing-viewer .adsk-search-results-scrolling-panel .search-result-container{overflow-x:hidden;padding-left:20px;padding-top:6px;white-space:nowrap}.adsk-viewing-viewer .adsk-search-results-scrolling-panel .search-result{height:50px}.adsk-viewing-viewer .adsk-search-results-scrolling-panel .no-results-container{padding-bottom:20px;padding-top:20px;text-align:center}.adsk-viewing-viewer .adsk-search-results-scrolling-panel .no-results-title{font-size:18px}.adsk-viewing-viewer .adsk-search-results-scrolling-panel>div[lmv-nodeid]:hover{cursor:pointer}.adsk-viewing-viewer .adsk-search-results-scrolling-panel .search-path{display:block;font-size:11px;overflow:hidden;padding-top:2px;text-overflow:ellipsis;width:calc(100% - 5px)}.geometry{color:#333;cursor:pointer;display:inline-block;font-family:Helvetica Neue Light,Segoe UI Semilight,sans-serif;font-size:13px;margin-left:1em;margin-top:10px;max-width:200px;opacity:.8;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.browserview item:hover{opacity:1;transition:all .5s ease}.browserview:hover item.selected{opacity:1;transition:all .38s ease}.geometry label{backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;background:rgba(34,34,34,.6);color:#f4f4f4;cursor:pointer;display:block;height:72px;line-height:1.5;max-width:200px;overflow:hidden;padding:10px;position:relative;text-overflow:ellipsis;top:162px;white-space:nowrap;z-index:203}.geometry label,.geometry label:hover{opacity:0;transition:all .2s ease-in-out}.geometry label:hover{height:200px;margin-top:-72px;overflow:visible;white-space:normal}.geometry label:hover~img{display:block;margin-top:-148px;transition:all .2s ease-in-out;width:200px}.flipped>.browserElement label{opacity:0!important}.browserview>item:hover label{filter:alpha(opacity=50);opacity:1}.geometry img{display:block;margin-top:-92px;transition:all .2s ease-in-out;width:200px}.geometry img:hover{cursor:pointer}.browserview>item.selected,.browserview>item.selected label{opacity:1;transition:all .2s ease-in-out}.geometry .selected:hover{background-color:rgba(0,0,0,.15);opacity:1}.browserVisible{opacity:1;transition:opacity 1s linear;visibility:visible}.browserHidden{height:0;opacity:0;visibility:hidden;overlfow:hidden}.cameraview{background-color:hsla(0,0%,88%,.8);background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjUxNDMxOERGQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjUxNDMxOEUwQjQzRTExRTNBMTcxRkZFNEJEN0E2NjU2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTE0MzE4RERCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTE0MzE4REVCNDNFMTFFM0ExNzFGRkU0QkQ3QTY2NTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6dltUsAAAAvElEQVR42mL8//8/AyWAiYFCQLEBLCCira3tJZD6DhVjBGI+KI0MVldVVaUC1cL4qkCsBHPBRiDWh2JbIGYDYn40HA1VywnEKUB8DIibWaCCf6AYBH4jsZHBKyjdBcQhQCwCxFdhBiQBcRSSYl4sBvyD0jxA/APK/g8zgB2KiQF/QRoHJBphtnJDA5lkA7ig9HIgvg9lc7CQYIAElN4ExEeAuAGUXmAGHCDCgK9I7HdAXAoylHHoZyaAAAMA0EImBepZpP0AAAAASUVORK5CYII=);background-position:5px 5px;background-repeat:no-repeat;margin:1px 2px 0;padding:6px 6px 6px 28px;transition:all .2s ease-in-out}.cameraview-selected{border-left:3px solid #999;transition:all .2s ease}.cameraview:hover{background-color:hsla(0,0%,80%,.8)}.geometry{background-color:#f4f4f4;border:1px solid hsla(0,0%,80%,.8);height:200px;overflow:hidden;perspective:800px;-webkit-perspective:800;-moz-perspective:800;-ms-perspective:800;-o-perspective:800;position:relative;width:200px}.adsk-viewing-viewer .card{height:100%;position:absolute;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;-o-transform-style:preserve-3d;transition:transform .38s ease-in;width:100%}.browserElement{transform:perspective(800px) rotateY(0deg);-webkit-transform:rotateY(0deg);-moz-transform:rotateY(0deg);-ms-transform:rotateY(0deg);-o-transform:rotateY(0deg)}.browserElement,.wrappercam{backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;display:block;height:100%;overflow:hidden;transition:all .38s;width:100%}.wrappercam{background-color:hsla(0,0%,100%,.7);position:relative;top:-200px;transform:perspective(800px) rotateY(180deg);-webkit-transform:rotateY(180deg);-moz-transform:rotateY(180deg);-ms-transform:rotateY(180deg);-o-transform:rotateY(180deg)}.cameraviews{height:calc(100% - 44px)!important;transition:all .38s}.card .cameraviews{overflow-Y:scroll}.flipped .browserElement{transform:perspective(800px) rotateX(-180deg);transform:rotateY(-180deg);-webkit-transform:rotateY(-180deg);-moz-transform:rotateY(-180deg);-ms-transform:rotateY(-180deg);-o-transform:rotateY(-180deg)}.flipped .wrappercam{transform:perspective(800px) rotateX(0deg);transform:rotateY(0deg);-webkit-transform:rotateY(0deg);-moz-transform:rotateY(0deg);-ms-transform:rotateY(0deg);-o-transform:rotateY(0deg)}.wrappercam p{backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;font-weight:700;margin:15px 6px 15px 10px}.viewsbtn{background-color:rgba(34,34,34,.8);background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY3OUM5RjIyQjlCNTExRTM4MzIyREIzMEE0OTQxMjA3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY3OUM5RjIzQjlCNTExRTM4MzIyREIzMEE0OTQxMjA3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Rjc5QzlGMjBCOUI1MTFFMzgzMjJEQjMwQTQ5NDEyMDciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Rjc5QzlGMjFCOUI1MTFFMzgzMjJEQjMwQTQ5NDEyMDciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6o3qeAAAAAsElEQVR42mL8//8/A7UAEwMVweA1jOXr16/hQHoqEAsTof4tEGcD8UqYADc3N1yS8cuXLx+AND8JDvgIxALIhgEdJA1kzmJCMkgPZDga1sNiGIrFQIMSgNRVIPYCuQyWNhhxuARb2mGEijMiyyNHgC4WTbokRQAS+9JoomXAEQkgkAhNLmDDPpJoCIp6YDpbAKS0gXgbyLB0aMpmIDIHpKMLAg18CsTejKNFEMkAIMAAglkqhjcW+DoAAAAASUVORK5CYII=);background-position:25px 4px;background-repeat:no-repeat;border-radius:16px;color:#f4f4f4;cursor:pointer;height:14px;padding:6px;position:absolute;right:10px;top:10px;width:40px}.viewsbtn,.viewsbtn:hover{transition:all .38s ease-in-out}.viewsbtn:hover{background-color:rgba(96,96,96,.8)}.flipped~.viewsbtn{background-image:none;background-position:35px 4px;width:14px}.flipped~.viewsbtn,.viewsbtn p{transition:all .38s ease-in-out}.viewsbtn p{font-weight:700;margin:0 0 0 3px;text-align:left}.adsk-viewing-viewer #count{opacity:1}.adsk-viewing-viewer #close{opacity:0;position:relative;text-shadow:0 1px 1px #333;top:-16px}.flipped~.viewsbtn>#count{opacity:0}.flipped~.viewsbtn>#close{opacity:1}.adsk-viewing-viewer{background:#ededed;font-family:ArtifaktElement,Helvetica Neue,Segoe UI Semilight,sans-serif;-webkit-touch-callout:none;position:absolute;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1}.adsk-viewing-viewer *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.adsk-viewing-viewer.viewer-fill-browser{height:100%;left:0;position:fixed;top:0;width:100%;z-index:10}.adsk-viewing-viewer highlight{background-color:#ff9;color:#555}.adsk-viewing-viewer .hide-while-context-lost{display:none}.adsk-viewing-viewer .viewer-container .alert-box-content,.adsk-viewing-viewer .viewer-container .alert-box-text,.adsk-viewing-viewer .viewer-container .alert-box-title{word-wrap:normal;word-break:normal}.adsk-viewing-viewer .forge-logo-canvas{animation:fadeIn 1.5s ease;-webkit-animation:fadeIn 1.5s ease;border-top:2px solid hsla(0,0%,50%,.4);bottom:0;height:35px;position:absolute;right:0;text-align:right;width:100%}.adsk-viewing-viewer .forge-logo-canvas img{max-height:100%;max-width:100%;position:relative}.adsk-viewing-viewer .spinner{bottom:0;height:12.5%;left:0;margin:auto;position:absolute;right:0;text-align:center;top:0;visibility:visible;width:25%}.adsk-viewing-viewer .spinner>div{-webkit-animation:bouncedelay 1.4s ease-in-out infinite;animation:bouncedelay 1.4s ease-in-out infinite;-webkit-animation-fill-mode:both;animation-fill-mode:both;background-color:#fff;border-radius:100%;display:inline-block;height:0;margin:0 1.5%;padding-bottom:12%;width:12%}.adsk-viewing-viewer .spinner .bounce1{-webkit-animation-delay:-.75s;animation-delay:-.75s}.adsk-viewing-viewer .spinner .bounce2{-webkit-animation-delay:-.5s;animation-delay:-.5s}.adsk-viewing-viewer .spinner .bounce3{-webkit-animation-delay:-.25s;animation-delay:-.25s}@-webkit-keyframes bouncedelay{0%,95%,to{-webkit-transform:scale(0)}40%{-webkit-transform:scale(1)}}@keyframes bouncedelay{0%,95%,to{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}.adsk-viewing-viewer .forge-spinner{animation:fadeIn .9s ease;-webkit-animation:fadeIn .9s ease;left:50%;position:absolute;text-align:center;top:50%;visibility:visible;width:min-content}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.adsk-viewing-viewer .forge-spinner svg{transform:rotate(90deg)}.adsk-viewing-viewer .forge-spinner img{padding-top:50px;transform:scale(.7)}.adsk-viewing-viewer .forge-spinner .light-blue{fill:#65bee7;fill-rule:nonzero;opacity:0}.adsk-viewing-viewer .forge-spinner .dark-blue{fill:#0895d7;fill-rule:nonzero;opacity:0}.adsk-viewing-viewer .message-panel table{display:block;position:relative;-webkit-border-horizontal-spacing:0;-webkit-border-vertical-spacing:0}.adsk-viewing-viewer .message-panel tbody,.adsk-viewing-viewer .message-panel tr{position:absolute;width:100%}.adsk-viewing-viewer .message-panel .name{display:inline-block;padding-left:10px;position:relative;text-align:left;width:calc(60% - 10px)}.adsk-viewing-viewer .message-panel .value{display:inline-block;padding-right:10px;position:absolute;text-align:right;width:calc(40% - 10px)}.adsk-viewing-viewer .message-panel td{line-height:34px;vertical-align:middle}.adsk-viewing-viewer .focal-length{height:34px;left:50%;min-height:0;min-width:0;position:absolute;top:40px;transform:translateX(-50%);width:160px}[tooltipText*=Inspect]{left:100%}.adsk-viewing-viewer .toolbar-layers-tool{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAJ1BMVEUAAADS1dbS1dbS1dbS1dbS1dbS1dbS1dbS1dbS1dbS1dbS1dbS1dbKDmVBAAAADHRSTlMA8NCgYDAgEJBQsHC3H/WiAAAAT0lEQVQY02MgAdicAYFDYDbHGTBQB3N8wOyDCSA2J0RCFCwRCOFMALHZZMDsI2tABhRBJJrBBuiA2Yf3AA2AARZaGgBkwg1oADLhBpAQFgDkeF4dRV5pxwAAAABJRU5ErkJggg==)}.adsk-viewing-viewer .toolbar-menu-collapsed .toolbar-subtoolbar:first-child,.adsk-viewing-viewer .toolbar-menu-collapsed .toolbar-subtoolbar:nth-child(2),.adsk-viewing-viewer .toolbar-menu-collapsed .toolbar-subtoolbar:nth-child(n+3){display:none}.adsk-viewing-viewer .toolbar-settings-sub-menu{background:#222;bottom:40px;color:#fff;display:block;font-size:14px;left:0;line-height:14px;list-style:none;margin-bottom:10px;min-width:300px;position:absolute;text-align:left;-webkit-padding-start:0;-moz-padding-start:0;-ms-padding-start:0;border:1px solid hsla(0,0%,59%,.15);border-radius:5px;box-shadow:0 3px 5px rgba(0,0,0,.5);transition:all .2s ease}.adsk-viewing-viewer .toolbar-settings-sub-menu.adsk-hidden{display:block;opacity:0;visibility:hidden}.adsk-viewing-viewer .toolbar-submenu .toolbar-submenu-checkbox{cursor:pointer;height:14px;margin:0 5px 0 0;padding:0;width:14px}.adsk-viewing-viewer .toolbar-submenu .toolbar-submenu-horizontal-divider{border-top:1px solid #000;height:1px}.adsk-viewing-viewer .toolbar-submenu .toolbar-submenu-listitem{padding:20px;position:relative;width:calc(100% - 40px)}.adsk-viewing-viewer .toolbar-submenu .toolbar-submenu-listitem:hover{background-color:rgba(166,194,255,.8);border-radius:4px}.adsk-viewing-viewer .toolbar-submenu .toolbar-submenu-listitem input[type=checkbox]{vertical-align:middle}.adsk-viewing-viewer .toolbar-submenu .toolbar-submenu-listitem input[type=checkbox]+label{cursor:pointer;vertical-align:middle}.adsk-viewing-viewer .toolbar-submenu .toolbar-submenu-select{display:block;padding:20px 20px 0;position:relative;width:calc(100% - 40px)}.adsk-viewing-viewer .toolbar-submenu .toolbar-submenu-selectlabel{cursor:default;display:block;padding-bottom:4px;position:relative}.adsk-viewing-viewer .toolbar-menu div>li{float:left;padding:4px}.adsk-viewing-viewer .docking-panel .adsk-lmv-tftable{padding:0}.adsk-viewing-viewer .statspanel{background:rgba(0,0,0,.5);bottom:12px;box-sizing:border-box;color:#eee;display:block;left:4px;min-height:10px;padding:8px;user-select:text;white-space:nowrap;width:240px}.adsk-viewing-viewer .fps,.adsk-viewing-viewer .statspanel{font-family:consolas,courier,"monospace";font-size:14px;position:absolute;visibility:hidden;z-index:1}.adsk-viewing-viewer .fps{bottom:0;color:#000;right:0}.adsk-viewing-viewer .option-drop-down{font-size:11px;width:160px}.adsk-viewing-viewer .option-drop-down.tabcell{left:20px;position:relative;width:calc(100% - 45px)}.adsk-viewing-viewer .adsk-toolbar .adsk-button>.toolbar-vertical-group{bottom:125%;left:-5px;margin:0;position:absolute;transition:all .2s ease;z-index:1}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-button>.toolbar-vertical-group{bottom:-5px;left:unset;right:50px}.adsk-viewing-viewer .adsk-toolbar .adsk-button>.toolbar-vertical-group:last-child{margin-top:0}.adsk-viewing-viewer .adsk-toolbar .adsk-button>.toolbar-vertical-group.adsk-hidden{display:block;opacity:0;visibility:hidden}.adsk-viewing-viewer .adsk-control-tooltip{pointer-events:none}.adsk-viewing-viewer .notouch .adsk-toolbar .adsk-button>.toolbar-vertical-group:hover~.adsk-control-tooltip{visibility:hidden}.adsk-viewing-viewer .adsk-toolbar .adsk-button>.toolbar-vertical-group~.adsk-control-tooltip{left:120%}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-button>.toolbar-vertical-group:not(.adsk-hidden)~.adsk-control-tooltip{visibility:hidden}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-button>.toolbar-vertical-group.adsk-hidden~.adsk-control-tooltip{bottom:25%;left:unset;right:120%;top:unset}.adsk-viewing-viewer .adsk-toolbar .adsk-button>.toolbar-vertical-group>.adsk-button>.adsk-control-tooltip{bottom:25%;left:120%;top:unset}.adsk-viewing-viewer .adsk-toolbar.adsk-toolbar-vertical .adsk-button>.toolbar-vertical-group>.adsk-button>.adsk-control-tooltip{left:unset}.adsk-viewing-viewer .explode-submenu{bottom:calc(100% + 10px);cursor:default;display:none;height:34px;left:50%;min-height:0;min-width:0;position:absolute;transform:translateX(-50%);width:160px}.adsk-viewing-viewer .explode-submenu.visible{display:block}.adsk-viewing-viewer .explode-submenu.android,.adsk-viewing-viewer .explode-submenu.ios{width:80%}.adsk-viewing-viewer input[type=range].explode-slider{cursor:col-resize;display:block;height:14px;margin:10px;padding:0;width:calc(100% - 20px)}.adsk-viewing-viewer input[type=range].explode-slider::-ms-tooltip{display:none}.adsk-viewing-viewer #toolbar-inspectTools .explode-submenu{bottom:0;left:55px;margin:0}.adsk-viewing-viewer .switch-slider-row{cursor:pointer}.adsk-viewing-viewer .switch-slider-row-beta-label{background-color:#f8dba4;border-radius:10px;color:#3c3c3c;margin-top:5px;padding-left:10px;padding-right:10px;width:fit-content}.adsk-viewing-viewer .switch{display:inline-block;height:8px;margin:0;padding-bottom:2px;padding-top:10px;pointer-events:none;position:relative;width:31px}.adsk-viewing-viewer .switch input{display:none}.adsk-viewing-viewer .switch .slider{height:2px;left:15px;top:5px;-webkit-transition:.4s;transition:.4s;width:16px}.adsk-viewing-viewer .switch .slider:before{border-radius:50%;content:"";height:16px;left:0;position:absolute;top:3px;-webkit-transition:.4s;transition:.4s;width:16px}.adsk-viewing-viewer .switch input:checked+.slider:before{-webkit-transform:translateX(12px);-ms-transform:translateX(12px);transform:translateX(12px)}.adsk-viewing-viewer .table-button{border:1px solid #fefffe;color:#fefffe;height:auto;text-align:center;width:80%}.adsk-viewing-viewer .datatable .clusterize-scroll{max-height:200px;overflow:auto}.adsk-viewing-viewer .datatable table{border:1px solid #000;border-collapse:collapse;border-spacing:0;margin-bottom:0;width:100%}.adsk-viewing-viewer .datatable .subrow{font-size:0;-webkit-transition:all 1s ease-in-out;transition:all 1s ease-in-out}.adsk-viewing-viewer .datatable .parentrow{background-color:#4a4747}.adsk-viewing-viewer .datatable table td,.adsk-viewing-viewer .datatable table th{border:1px solid #000;white-space:nowrap}.adsk-viewing-viewer .datatable .table-striped>tbody>tr:nth-child(odd)>td,.adsk-viewing-viewer .datatable .table-striped>tbody>tr:nth-child(odd)>th{background-color:#4a4747}.adsk-viewing-viewer .datatable td>span{float:right;height:1em;margin-left:5px;margin-right:3px;margin-top:4px;position:relative;white-space:nowrap;width:1em}.adsk-viewing-viewer .datatable td>span:before{border-top:2px solid #000;border-color:inherit;content:"";height:0;left:10%;margin-top:-1px;position:absolute;top:50%;width:80%}.adsk-viewing-viewer .datatable td>span.collapsed:after{border-left:2px solid #000;border-color:inherit;content:"";height:80%;left:50%;margin-left:-1px;position:absolute;top:10%;width:0}.adsk-viewing-viewer .datatable td>span:hover{border-color:orange}.adsk-viewing-viewer .datatable .aggregate-headers{overflow-x:scroll}.adsk-viewing-viewer .datatable .aggregateArea td{font-family:initial!important;font-size:16px!important;text-align:center}.split-view-container{height:100%;left:0;position:relative;width:100%}.split-view-container .split-view-viewer-container{background-color:#e5e5e5;height:100%;position:absolute;width:100%}.split-view-container .resize-handler{background:transparent;position:absolute;z-index:4}.split-view-container .resize-handler.vertical{cursor:col-resize;height:100%;left:100%;top:0}.split-view-container .resize-handler.horizontal{cursor:row-resize;left:0;top:100%;width:100%}.split-view-container .resize-handler-center-mark{background:#73a9e8;position:absolute}.split-view-container .resize-handler-center-mark.vertical{height:100%;left:7.5px;width:1px}.split-view-container .resize-handler-center-mark.horizontal{height:1px;top:7.5px;width:100%}.noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.orbit-gizmo{height:500px;left:calc(50% - 250px);pointer-events:none;position:absolute;top:calc(50% - 250px);width:500px}div.orbit-gizmo div{border:0;border-color:#989898;border-style:solid}.orbit-gizmo .layout-ver{float:left;height:100%;width:10%}.orbit-gizmo .layout-hor{height:10%;margin:0 auto;width:80%}.orbit-gizmo .layout-mid{height:80%;text-align:center;width:100%}.orbit-gizmo .outside{cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGd27GMAAAEAdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT9wclAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGXRFWHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS44NzuAXQAAAHJJREFUOE/Vk0ESwCAIA+n/H02FItBK8Go5ObqDMUTiTdERAPUyiOlqCQFaQoGOeIBEfCUZ4MSiaAJGiKBXsQNK6HW5xnFspqUzAWhf2CGsqDVks6pXDHXJzcIHiQz22wa1BXCLOWrYwrOAcnNGqn/w9W4hXTJqyBXrqAAAAABJRU5ErkJggg==),auto;height:1000%;margin-bottom:-550%;margin-left:-450%;margin-top:-450%;pointer-events:auto;width:1000%}.orbit-gizmo .ring{border:50px solid hsla(0,0%,100%,0);border-radius:2500px;cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAALGPC/xhBQAAAwBQTFRFAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ3bsYwAAAQB0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AFP3ByUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAAZdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41Ljg3O4BdAAAAlklEQVQ4T81TwRbAIAiy///ozaQUN31d61IRKYbJcxhyHUHmyKp4KzJ0tAQc9wTcRgpOswPOc8cllg8RIjmzF6oQiYMaAC1BBspdNA9ge9WQAUV2QJt7gqlDjK3pk0LvInNH+Isuq6AAdZkFgSFW4A81CdsAs9XfNRbuZvacHFr9wLaGFyh+mZR6KjfYoSfLP3TfzypkvjV8LGaZGHW7AAAAAElFTkSuQmCC) 16 16,nesw-resize;height:80%;margin-bottom:-100%;pointer-events:auto;width:80%}.orbit-gizmo .ring:hover{border-color:hsla(0,0%,100%,.1)}.orbit-gizmo .circle{border-radius:2500px;border-width:1px;cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAt1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAzMzP6+vri4uISEhKKioqtra2dnZ2EhIR9fX10dHRkZGQdHR3t7e3Hx8e5ubm1tbWoqKhWVlZKSko4ODgICAjv7+/o6OjMzMyxsbFOTk4pKSkXFxcEBAT29vbW1tZ6enpISEgLCwvhzeX+AAAAGXRSTlMANRO0nHRJHfnskIxQRKh89syDVwTWZjEJxPFEswAAAOFJREFUKM+1j+lygkAQhIflEAJe0Rw9u4CCeKKoSTTX+z9XoMJWWeX+ssrvZ3f19DQ5zOw/0DUMQPlmQ72bE2adBp8/Rp3CQUi3ILx+bxj4fjDs9T1Bmo6bbPPN8aDU4bjJt4nb+de789kSFyxn826jW3ICLNZZKU8nWWbrBTCRVm04U8TpjquRFf1Go0d7l8aYOrUR7FGEFr1S9LGymwthgX2gE/Kl0cHPOtF2xOWZ5QpIC93RflW4InkDoPRXesd5LJIMQPzV7tCMa7f6BvhJL79AVDmYTNQ1NhnxbI/uwB8H5Bjd4zQPBAAAAABJRU5ErkJggg==),auto;float:left;height:calc(100% - 3px);pointer-events:auto;width:calc(80% - 3px)}.orbit-gizmo .circle .crosshair-area{height:10%;margin:45% auto 0;width:10%}.orbit-gizmo .circle .crosshair-area .crosshair-v{border-left-width:1px;height:100%;margin:0 auto;width:0}.orbit-gizmo .circle .crosshair-area .crosshair-h{border-bottom-width:1px;height:0;margin-top:-50%;width:100%}.orbit-gizmo .edgemark-area{pointer-events:auto}.orbit-gizmo .edgemark-area .edgemark{pointer-events:none}.orbit-gizmo .edgemark-area:hover{background-color:hsla(0,0%,100%,.1)}.orbit-gizmo .layout-hor .edgemark-area{cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGd27GMAAAEAdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT9wclAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGXRFWHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS44NzuAXQAAAHJJREFUOE/dk8EOwCAIQ/H/P1ot6gZd7A5LPIyb6UsxUKy+lJ0GDJWbhmfXCioTEYAIKBEEFJgooGtkkR3wUoDTAphumbhbXCPYAuv7/wbWCD/twhe9dxgSByKGA4BKlLurTI7+lNnKIefUM/A8xAO32QA2rkRBShFyJgAAAABJRU5ErkJggg==) 16 16,ns-resize;height:100%;margin:0 auto;width:12.5%}.orbit-gizmo .layout-ver .edgemark-area{cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAALGPC/xhBQAAAwBQTFRFAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ3bsYwAAAQB0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AFP3ByUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAAZdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41Ljg3O4BdAAAAeUlEQVQ4T+VTwRbAIAhy///RTUWMtt7bbZc8LaEEVjY+ys4jWNXivHNw8EKRZ4kVodEkFDFPAgGtHpFLbiXu6JwtjOj6UlFsiSZH8FvVh5CF8PqrSkiNqgGWS//GBSSqC/qspMRkBzVmkM9xYr4zXuycdye3jn94mzejtD9JdIFZgAAAAABJRU5ErkJggg==) 16 16,ew-resize;height:12.5%;margin-top:350%;width:100%}.orbit-gizmo .layout-hor .edgemark-area .edgemark{border-left-width:1px;height:100%;margin:0 auto;width:0}.orbit-gizmo .layout-ver .edgemark-area .edgemark{border-bottom-width:1px;height:0;padding-top:50%;width:100%} \ No newline at end of file diff --git a/public/autodesk/viewer3D.min.js b/public/autodesk/viewer3D.min.js new file mode 100644 index 0000000..00cfee2 --- /dev/null +++ b/public/autodesk/viewer3D.min.js @@ -0,0 +1,109 @@ +/*! + * LMV v7.99.1 + * + * Copyright 2024 Autodesk, Inc. + * All rights reserved. + * + * This computer source code and related instructions and comments are the + * unpublished confidential and proprietary information of Autodesk, Inc. + * and are protected under Federal copyright and state trade secret law. + * They may not be disclosed to, copied or used by any third party without + * the prior written consent of Autodesk, Inc. + * + * Autodesk Viewer SDK Usage Limitations: + * + * The Autodesk Viewer SDK JavaScript must be delivered from an + * Autodesk-hosted URL. + */ +var LMV;(()=>{var e,t,i={90002:e=>{e.exports="#if NUM_CUTPLANES > 0\n#ifdef LINE_CUTPLANE\nuniform vec4 cutplanes[NUM_CUTPLANES];\nuniform bool cutplanesHideInterior;\nbool checkHideInterior(vec3 worldPosition) {\n int insideCount = 0;\n for (int i=0; i 0.0) {\n return false;\n }\n }\n return true;\n}\nbool checkCutPlanes(vec3 worldPosition) {\n if (!checkInsideCutplanes(vWorldPosition)) {\n #if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n \n gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n gl_FragDepth = 1.0;\n \n return true;\n #else\n discard;\n #endif\n }\n return false;\n}\n#else\nuniform vec4 cutplanes[NUM_CUTPLANES];\nuniform bool cutplanesHideInterior;\nvoid checkHideInterior(vec3 worldPosition) {\n int insideCount = 0;\n for (int i=0; i 0.0) {\n discard;\n }\n }\n}\n#endif\n#endif\n"},92070:e=>{e.exports="uniform float point_size;"},96900:e=>{e.exports="\nuniform sampler2D tDepth;\nuniform vec4 projInfo;\nuniform float isOrtho;\nuniform mat4 worldMatrix_mainPass;\nvec3 reconstructCSPosition(vec2 fragCoords, float z) {\n return vec3((fragCoords * projInfo.xy + projInfo.zw) * mix(z, -1.0, isOrtho), z);\n}\nvec3 reconstructWorldPosition(vec2 fragCoords, vec2 screenUv) {\n float zCam = texture(tDepth, screenUv).z;\n vec3 csPos = reconstructCSPosition(fragCoords, zCam);\n return (worldMatrix_mainPass * vec4(csPos, 1.0)).xyz;\n}\n"},1081:e=>{e.exports="\nuniform float envRotationSin;\nuniform float envRotationCos;\nvec3 adjustLookupVector(in vec3 lookup) {\n return vec3(\n envRotationCos * lookup.x - envRotationSin * lookup.z,\n lookup.y,\n envRotationSin * lookup.x + envRotationCos * lookup.z);\n}\nvec3 RGBMDecode(in vec4 vRGBM, in float exposure) {\n vec3 ret = vRGBM.rgb * (vRGBM.a * 16.0);\n ret *= ret;\n ret *= exposure;\n return ret;\n}\nvec3 GammaDecode(in vec4 vRGBA, in float exposure) {\n return vRGBA.xyz * vRGBA.xyz * exposure;\n}\nvec3 sampleIrradianceMap(vec3 dirWorld, samplerCube irrMap, float exposure) {\n vec4 cubeColor4 = texture(irrMap, adjustLookupVector(dirWorld));\n#ifdef IRR_GAMMA\n vec3 indirectDiffuse = GammaDecode(cubeColor4, exposure);\n#elif defined(IRR_RGBM)\n vec3 indirectDiffuse = RGBMDecode(cubeColor4, exposure);\n#else\n vec3 indirectDiffuse = cubeColor4.xyz;\n#ifdef GAMMA_INPUT\n indirectDiffuse.xyz *= indirectDiffuse.xyz;\n#endif\n#endif\n return indirectDiffuse;\n}\n"},26750:e=>{e.exports="#ifdef HATCH_PATTERN\noutFragColor = calculateHatchPattern(hatchParams, gl_FragCoord.xy, outFragColor, hatchTintColor, hatchTintIntensity);\n#endif\n#ifdef MRT_NORMALS\noutNormal = vec4(geomNormal.x, geomNormal.y, depth, outFragColor.a < 1.0 ? 0.0 : 1.0);\n#endif\n#include \n"},40304:e=>{e.exports="float averageOfFloat3(in vec3 value) { \n const float oneThird = 1.0 / 3.0; \n return dot(value, vec3(oneThird, oneThird, oneThird)); \n} \n"},22826:e=>{e.exports="#ifdef HATCH_PATTERN\nuniform vec2 hatchParams;\nuniform vec3 hatchTintColor;\nuniform float hatchTintIntensity;\nfloat curveGaussian(float r, float invWidth) {\n float amt = clamp(r * invWidth, 0.0, 1.0);\n float exponent = amt * 3.5;\n return exp(-exponent*exponent);\n}\nvec4 calculateHatchPattern(vec2 hatchParams, vec2 coord, vec4 fragColor, vec3 hatchTintColor, float hatchTintIntensity ) {\n float hatchSlope = hatchParams.x;\n float hatchPeriod = hatchParams.y;\n if (abs(hatchSlope) <= 1.0) {\n float hatchPhase = coord.y - hatchSlope * coord.x;\n float dist = abs(mod((hatchPhase), (hatchPeriod)));\n if (dist < 1.0) {\n fragColor = vec4(0.0,0.0,0.0,1.0);\n } else {\n fragColor.xyz = mix(fragColor.xyz, hatchTintColor, hatchTintIntensity);\n }\n } else {\n float hatchPhase = - coord.y / hatchSlope + coord.x;\n float dist = abs(mod((hatchPhase), (hatchPeriod)));\n if (dist < 1.0) {\n fragColor = vec4(0.0,0.0,0.0,1.0);\n } else {\n fragColor.xyz = mix(fragColor.xyz, hatchTintColor, hatchTintIntensity);\n }\n }\n return fragColor;\n}\n#endif\n"},17028:e=>{e.exports="vec3 rgb2hsv(vec3 color)\n{\n float delta;\n float colorMax, colorMin;\n float h,s,v;\n vec3 hsv;\n colorMax = max(color.r,color.g);\n colorMax = max(colorMax,color.b);\n colorMin = min(color.r,color.g);\n colorMin = min(colorMin,color.b);\n v = colorMax;\n if(colorMax != 0.0)\n {\n s = (colorMax - colorMin)/colorMax;\n }\n else\n {\n s = 0.0;\n }\n if(s != 0.0)\n {\n delta = colorMax-colorMin;\n if (color.r == colorMax)\n {\n h = (color.g-color.b)/delta;\n }\n else if (color.g == colorMax)\n {\n h = 2.0 + (color.b-color.r) / delta;\n }\n else\n {\n h = 4.0 + (color.r-color.g)/delta;\n }\n h /= 6.0;\n if( h < 0.0)\n {\n h +=1.0;\n }\n }\n else\n {\n h = 0.0;\n }\n hsv = vec3(h,s,v);\n return hsv;\n}\nvec3 hsv2rgb(vec3 hsv)\n{\n vec3 color;\n float f,p,q,t;\n float h,s,v;\n float i,hi;\n {\n h = hsv.x*6.0;\n s = hsv.y;\n v = hsv.z;\n i = floor(h);\n f = h-i;\n p = v * (1.0 - s);\n q = v * (1.0 - (s * f));\n t = v * (1.0 - (s * (1.0 - f)));\n float r,g,b;\n if (i == 0.0)\n {\n r = v;\n g = t;\n b = p;\n }\n else if (i == 1.0)\n {\n r = q;\n g = v;\n b = p;\n }\n else if (i == 2.0)\n {\n r = p;\n g = v;\n b = t;\n }\n else if (i == 3.0)\n {\n r = p;\n g = q;\n b = v;\n }\n else if (i == 4.0)\n {\n r = t;\n g = p;\n b = v;\n }\n else\n {\n r = v;\n g = p;\n b = q;\n }\n color = vec3(r,g,b);\n }\n return color;\n}"},14804:e=>{e.exports="#if defined(MRT_NORMALS) || defined(MRT_ID_BUFFER)\n varying highp float depth;\n#endif\n#if defined(MRT_ID_BUFFER) || defined(ID_COLOR)\n #ifdef USE_VERTEX_ID\n varying vec3 vId;\n #elif defined(LINE_2D_SHADER)\n varying vec4 dbId;\n #else\n uniform vec3 dbId;\n #endif\n#endif\n#if defined(MRT_ID_BUFFER) || defined(MODEL_COLOR)\n uniform vec3 modelId;\n#endif\n#if defined(MRT_NORMALS)\n layout(location = 1) out vec4 outNormal;\n #if defined(MRT_ID_BUFFER)\n layout(location = 2) out vec4 outId;\n #if defined(MODEL_COLOR)\n layout(location = 3) out vec4 outModelId;\n #endif\n #endif\n#elif defined(MRT_ID_BUFFER)\n layout(location = 1) out vec4 outId;\n #if defined(MODEL_COLOR)\n layout(location = 2) out vec4 outModelId;\n #endif\n#endif"},31371:e=>{e.exports="#ifdef USE_VERTEX_ID\nin vec3 id;\nout vec3 vId;\n#endif\n"},11255:e=>{e.exports="\n#if defined(USE_VERTEX_ID) && (defined(MRT_ID_BUFFER) || defined(ID_COLOR))\n vec3 dbId = vId;\n#endif\n#ifdef MRT_ID_BUFFER\n #ifndef ENABLE_ID_DISCARD\n const float writeId = 1.0;\n #endif\n outId = vec4(dbId.rgb, writeId);\n #ifdef MODEL_COLOR\n outModelId = vec4(modelId.rgb, writeId);\n #endif\n#elif defined(ID_COLOR)\n #ifdef ENABLE_ID_DISCARD\n if (writeId==0.0) {\n discard;\n }\n #endif\n outFragColor = vec4(dbId.rgb, 1.0);\n#elif defined(MODEL_COLOR)\n #ifdef ENABLE_ID_DISCARD\n if (writeId==0.0) {\n discard;\n }\n #endif\n outFragColor = vec4(modelId.rgb, 1.0);\n#endif\n"},91952:e=>{e.exports="\n#ifdef USE_VERTEX_ID\nvId = id;\n#endif\n"},45631:e=>{e.exports="#if defined( IMPORTANTSAMPLING )\n#define SAMPLECOUNT 32\nvec2 Hammersley(int index)\n{\n float u = (float(index) + 0.5) / 32.0;\n float v = 0.5;\n float noise = texture(importantSamplingRandomMap, vec2(u, v), 0.0).r;\n return vec2(2.0 * PI * float(index/SAMPLECOUNT), noise);\n}\nvec3 ImportanceSampleAnisotropicGGX(int index, vec2 alpha, vec3 N, vec3 Tu, vec3 Tv)\n{\n vec2 uniformSample2D = Hammersley(index);\n float coef = sqrt(uniformSample2D.y / (1.0 - uniformSample2D.y));\n float sinSigma, cosSigma;\n sinSigma = sin(uniformSample2D.x);\n cosSigma = cos(uniformSample2D.x);\n vec3 H = coef * ((alpha.x * cosSigma) * Tu + (alpha.y * sinSigma) * Tv) + N;\n H = normalize(H);\n return H;\n}\nfloat ComputePDF(vec2 alpha, float NdotH, float HdotTu, float HdotTv, float VdotH)\n{\n float factor1 = HdotTu / alpha.x;\n float factor2 = HdotTv / alpha.y;\n float factor3 = factor1 * factor1 + factor2 * factor2 + NdotH * NdotH;\n float factor = factor3 * factor3 * alpha.x * alpha.y * VdotH * 4.0 * PI;\n if (factor > 0.0)\n {\n return (NdotH / factor);\n }\n else\n {\n return 0.0;\n }\n}\n#define INVFACESIZE 0.0078125\nfloat DirectionToSolidAngle(vec3 dir)\n{\n dir = abs(dir);\n float first = min(dir.x, dir.y);\n float temp = max(dir.x, dir.y);\n float second = min(temp, dir.z);\n float third = max(temp, dir.z);\n first /= third;\n second /= third;\n float u = (first+1.0)/2.0;\n float v = (second + 1.0) / 2.0;\n float solidAngle = texture(importantSamplingSolidAngleMap, vec2(u, v), 0.0).r * 0.000255;\n return solidAngle;\n}\nfloat Smith_GGX(float value)\n{\n return 2.0 / (1.0 + sqrt(1.0 + value));\n}\nvec2 RoughnessAnisotropyToAlpha(float roughness, float anisotropy)\n{\n float aspect = sqrt(1.0 - 0.9 * anisotropy);\n vec2 alpha = vec2(roughness * roughness / aspect, roughness * roughness * aspect);\n return alpha;\n}\nvec3 ImportanceSamplingSpecular(float angle, vec3 reflectance, float roughness, float anisotropy, vec3 V, vec3 N, vec3 Tu, vec3 Tv)\n{\n vec3 specular = vec3(0.0);\n float radAngle;\n if (anisotropy < 1e-10)\n {\n radAngle = 0.0;\n }\n else\n {\n radAngle = -PI * angle;\n }\n vec2 alpha = RoughnessAnisotropyToAlpha(roughness, anisotropy);\n float alpha2 = max(alpha.x * alpha.x, alpha.y * alpha.y);\n float NdotV = dot(N, V);\n float alpha2NV = aSqrd(alpha2, NdotV);\n vec2 sincosTheta;\n sincosTheta.x = sin(radAngle);\n sincosTheta.y = cos(radAngle);\n vec3 Tu1, Tv1;\n Tu1 = sincosTheta.y * Tu - sincosTheta.x * Tv;\n Tv1 = sincosTheta.x * Tu + sincosTheta.y * Tv;\n vec3 H;\n vec3 sampleLightIntensity;\n vec3 L;\n float effectiveSample = 0.0;\n for (int i = 0; i < SAMPLECOUNT; i++)\n {\n H = ImportanceSampleAnisotropicGGX(i, alpha, N, Tu1, Tv1);\n float VdotH = dot(V, H);\n L = 2.0 * VdotH * H - V;\n float NdotH = dot(N, H);\n float NdotL = dot(N, L);\n if (NdotL >= 0.0 && NdotV > 0.0 && NdotH > 0.0)\n {\n float alpha2NL = aSqrd(alpha2, NdotL);\n float HdotTu = dot(H, Tu1);\n float HdotTv = dot(H, Tv1);\n float pdf = ComputePDF(alpha, NdotH, HdotTu, HdotTv, VdotH);\n float mipmapLevel = 0.0;\n if (pdf > 0.0)\n {\n mipmapLevel = 0.3 * log2(1.0 / (float(SAMPLECOUNT) * pdf * DirectionToSolidAngle(L)));\n }\n mipmapLevel = clamp(mipmapLevel, 0.0, 4.0);\n L = normalize(L);\n sampleLightIntensity = sampleReflection(L, L, mipmapLevel).rgb;\n float G = Smith_GGX(alpha2NL) * Smith_GGX(alpha2NV);\n vec3 F = Fresnel_Schlick(reflectance, VdotH);\n float factor = G * VdotH / (NdotH * NdotV);\n if (factor >= 0.0)\n {\n specular += abs(sampleLightIntensity * F * factor);\n effectiveSample += 1.0;\n }\n }\n }\n if (effectiveSample > 0.0)\n {\n specular /= effectiveSample;\n }\n return specular;\n}\n#endif"},74490:e=>{e.exports="\n#ifdef USE_INSTANCING\nin vec3 instOffset;\nin vec4 instRotation;\nin vec3 instScaling;\nvec3 applyQuaternion(vec3 p, vec4 q) {\n return p + 2.0 * cross(q.xyz, cross(q.xyz, p) + q.w * p);\n}\nvec3 getInstancePos(vec3 pos) {\n return instOffset + applyQuaternion(instScaling * pos, instRotation);\n}\nvec3 getInstanceNormal(vec3 normal) {\n return applyQuaternion(normal/instScaling, instRotation);\n}\n#else\nvec3 getInstancePos(vec3 pos) { return pos; }\nvec3 getInstanceNormal(vec3 normal) { return normal; }\n#endif\n"},53634:e=>{e.exports="\n#define LINE_2D_SHADER 1\n#define TAU 6.28318530718\n#define PI 3.14159265358979\n#define HALF_PI 1.57079632679\n#define PI_0_5 HALF_PI\n#define PI_1_5 4.71238898038\n#define ENABLE_ID_DISCARD\n#define VBB_GT_TRIANGLE_INDEXED 0.0\n#define VBB_GT_LINE_SEGMENT 1.0\n#define VBB_GT_ARC_CIRCULAR 2.0\n#define VBB_GT_ARC_ELLIPTICAL 3.0\n#define VBB_GT_TEX_QUAD 4.0\n#define VBB_GT_ONE_TRIANGLE 5.0\n#define VBB_GT_MSDF_TRIANGLE_INDEXED 6.0\n#define VBB_GT_LINE_SEGMENT_CAPPED 8.0\n#define VBB_GT_LINE_SEGMENT_CAPPED_START 9.0\n#define VBB_GT_LINE_SEGMENT_CAPPED_END 10.0\n#define VBB_GT_LINE_SEGMENT_MITER 11.0\n#define VBB_INSTANCED_FLAG 0.0\n#define VBB_SEG_START_RIGHT 0.0\n#define VBB_SEG_START_LEFT 1.0\n#define VBB_SEG_END_RIGHT 2.0\n#define VBB_SEG_END_LEFT 3.0\n#define LTSCALE 0.25\nvarying vec4 fsColor;\nvarying vec2 fsOffsetDirection;\nvarying vec4 fsMultipurpose;\nvarying float fsHalfWidth;\nvarying vec2 fsVpTC;\nvarying float fsGhosting;\n#ifdef LOADING_ANIMATION\nvarying float loadingProgress;\n#endif\n"},1179:e=>{e.exports="\n#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n#ifdef POLYGON_OFFSET\n uniform vec2 polygonOffset;\n const float epsilon7 = 0.0000001;\n#endif\n uniform float logDepthBufFC;\n varying float vFragDepth;\n varying float vIsPerspective;\n#endif"},40444:e=>{e.exports="\n#ifdef USE_LOGDEPTHBUF\n #ifdef USE_LOGDEPTHBUF_EXT\n varying float vFragDepth;\n varying float vIsPerspective;\n #else\n uniform float logDepthBufFC;\n #endif\n bool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == - 1.0;\n }\n#endif"},20990:e=>{e.exports="#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n float logz_depth = vFragDepth;\n#ifdef POLYGON_OFFSET\n float factor = polygonOffset[0];\n float units = polygonOffset[1];\n#if __VERSION__ == 300 \n if (factor != 0.0) {\n float x = dFdx(logz_depth);\n float y = dFdy(logz_depth);\n float dz = sqrt(x * x + y * y);\n logz_depth += dz * factor;\n }\n#endif\n#endif\n gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( logz_depth ) * logDepthBufFC * 0.5;\n#endif"},13353:e=>{e.exports="#ifdef USE_LOGDEPTHBUF\n #ifdef USE_LOGDEPTHBUF_EXT\n vFragDepth = 1.0 + gl_Position.w;\n vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n #else\n if ( isPerspectiveMatrix( projectionMatrix ) ) {\n gl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n gl_Position.z *= gl_Position.w;\n }\n #endif\n#endif"},72373:e=>{e.exports="#if defined(USE_SURFACE_NORMAL_MAP) || defined( USE_LAYERED_NORMAL_MAP ) || defined( USE_TILING_NORMAL )\nvoid heightMapTransform(\n sampler2D bumpTexture,\n vec2 uv,\n mat3 transform,\n vec2 bumpScale,\n inout vec3 T,\n inout vec3 B,\n inout vec3 N\n) {\n vec2 st = (transform * vec3(uv, 1.0)).xy;\n mat3 mtxTangent = mat3(T, B, N);\n T = normalize(mtxTangent * (transform * vec3(1.0, 0.0, 0.0)));\n B = normalize(mtxTangent * (transform * vec3(0.0, 1.0, 0.0)));\n const float oneThird = 1.0 / 3.0;\n vec3 avg = vec3(oneThird, oneThird, oneThird);\n vec2 offset = fwidth(st);\n float h0 = dot(texture(bumpTexture, st).xyz, avg);\n float hx = dot(texture(bumpTexture, st + vec2(offset.x, 0.0)).xyz, avg);\n float hy = dot(texture(bumpTexture, st + vec2(0.0, offset.y)).xyz, avg);\n vec2 diff = vec2(h0 - hx, h0 - hy) / offset;\n N = normalize(\n N + (\n diff.x * T * bumpScale.x +\n diff.y * B * bumpScale.y\n )\n );\n}\nvoid normalMapTransform(\n sampler2D bumpTexture,\n vec2 uv,\n mat3 transform,\n vec2 bumpScale,\n inout vec3 T,\n inout vec3 B,\n inout vec3 N\n) {\n vec2 st = (transform * vec3(uv, 1.0)).xy;\n vec3 mapN = 2.0 * texture(bumpTexture, st).xyz - 1.0;\n mapN.xy *= bumpScale.x;\n mapN.z *= bumpScale.y;\n vec3 v = vec3(mapN.y, -mapN.x, 0.0);\n float c = -mapN.z;\n mat3 skewV = mat3(\n 0.0, v.z, -v.y,\n -v.z, 0.0, v.x,\n v.y, -v.x, 0.0\n );\n mat3 rot = mat3(1.0) + skewV + skewV*skewV * 1.0/(1.0-c);\n N *= rot;\n T *= rot;\n B *= rot;\n}\n#endif\n"},1221:e=>{e.exports="vec3 orderedDithering(vec3 col) {\n const vec4 m0 = vec4( 1.0, 13.0, 4.0, 16.0);\n const vec4 m1 = vec4( 9.0, 5.0, 12.0, 8.0);\n const vec4 m2 = vec4( 3.0, 15.0, 2.0, 14.0);\n const vec4 m3 = vec4(11.0, 7.0, 10.0, 6.0);\n int i = int(gl_FragCoord.x) & 3;\n int j = int(gl_FragCoord.y) & 3;\n vec4 biasRow;\n if (i==0) biasRow = m0;\n else if (i==1) biasRow = m1;\n else if (i==2) biasRow = m2;\n else biasRow = m3;\n float bias;\n if (j==0) bias = biasRow.x;\n else if (j==1) bias = biasRow.y;\n else if (j==2) bias = biasRow.z;\n else bias = biasRow.w;\n return col + bias * (1.0 / (17.0 * 256.0));\n}\n"},35496:e=>{e.exports="\nvec4 packDepth( const in float depth ) {\n vec4 enc = vec4(1.0, 255.0, 65025.0, 160581375.0) * depth;\n enc = fract(enc);\n enc -= enc.yzww * vec4(1.0/255.0,1.0/255.0,1.0/255.0,0.0);\n return enc;\n}\nfloat unpackDepth( const in vec4 rgba_depth ) {\n return dot( rgba_depth, vec4(1.0, 1.0/255.0, 1.0/65025.0, 1.0/160581375.0) );\n}\n"},9641:e=>{e.exports="\n#define kPI 3.14159265358979\nvec2 encodeNormal (vec3 n) {\n return (vec2(atan(n.y,n.x)/kPI, n.z)+1.0)*0.5;\n}\nvec3 decodeNormal (vec2 enc) {\n vec2 ang = enc * 2.0 - 1.0;\n vec2 scth = vec2(sin(ang.x * kPI), cos(ang.x * kPI));\n vec2 scphi = vec2(sqrt(1.0 - ang.y * ang.y), ang.y);\n return vec3(scth.y * scphi.x, scth.x * scphi.x, scphi.y);\n}\n"},50433:e=>{e.exports="gl_PointSize = point_size;"},6147:e=>{e.exports="\nvec3 TransmitAdjust(vec3 transmission, vec3 f0) \n{ \n vec3 limit = max(1.0 - f0, 0.00001); \n return clamp(transmission, vec3(0.0, 0.0, 0.0), limit) / limit; \n} \nfloat ColorToIlluminance(in vec3 color) \n{ \n const vec3 rgb2grey = vec3(0.299, 0.587, 0.114); \n float illuminance = dot(rgb2grey, color); \n return illuminance; \n} \nvoid applyPrismGlazingOpacity(\n inout vec4 color,\n vec3 transmissionF,\n float transmissionAlpha,\n float NdotV,\n float glazingIlluminace) \n{\n const float third = 1.0/3.0; \n float transSurface = exp(-(transmissionAlpha + (transmissionAlpha < 0.0025 ? 0.0 : 0.25)) * NdotV * PI); \n float opacity = 1.0- dot((1.0 - transmissionF), vec3(third,third,third)) * transSurface * glazingIlluminace; \n opacity = clamp(opacity, 0.01, 0.99);\n color.a *= opacity;\n} \n"},77019:e=>{e.exports="void applyPrismTransparency(\n inout vec4 color,\n vec3 transparentColor,\n float transparentIor\n) {\n float fsLevel = max(max(color.r, color.g), color.b);\n color = vec4(color.rgb/fsLevel, fsLevel);\n float transLevel = min(min(transparentColor.r, transparentColor.g), transparentColor.b);\n transLevel = min( (1.0 - surface_roughness), transLevel );\n float transAlpha = (1.0 - transLevel) * 0.4 + surface_roughness * 0.55;\n vec3 tr_g_color = sqrt(transparentColor);\n vec4 transColor = vec4(0.5 * vec3(tr_g_color), transAlpha);\n float strength = 1.0 - (1.0 - fsLevel) * (1.0 - fsLevel);\n color = mix(transColor, color, strength);\n color.a = max(color.a, 0.05);\n if (transparentIor == 1.0 && tr_g_color == vec3(1.0)) {\n color.a = 0.0;\n }\n}"},76332:e=>{e.exports="#if defined( PRISMWOOD )\n#define ONE 0.00390625\nfloat GetIndexedValue(vec4 array, int index)\n{\n if (index == 0)\n return array[0];\n else if (index == 1)\n return array[1];\n else if (index == 2)\n return array[2];\n else if (index == 3)\n return array[3];\n else\n return 0.0;\n}\nint GetIndexedValue(ivec2 array, int index)\n{\n if (index == 0)\n return array[0];\n else if (index == 1)\n return array[1];\n else\n return 0;\n}\n#if defined( USE_WOOD_CURLY_DISTORTION_MAP )\nfloat SampleCurlyPattern(vec2 uv)\n{\n vec2 uv_wood_curly_distortion_map = (wood_curly_distortion_map_texMatrix * vec3(uv, 1.0)).xy;\n WOOD_CURLY_DISTORTION_CLAMP_TEST;\n vec3 curlyDistortion = texture(wood_curly_distortion_map, uv_wood_curly_distortion_map).xyz;\n if(wood_curly_distortion_map_invert) curlyDistortion = vec3(1.0) - curlyDistortion;\n return curlyDistortion.r;\n}\nvec3 DistortCurly(vec3 p)\n{\n if (!wood_curly_distortion_enable) return p;\n float r = length(p.xy);\n if (r < 0.00001) return p;\n const float INV_ANGLE_INTERVAL = 1.27323954;\n const float NUM_INTERVAL = 8.0;\n float theta = atan(p.y, p.x);\n if (theta < 0.0)\n theta += PI2;\n float intIdx = theta * INV_ANGLE_INTERVAL;\n int idx0 = int(mod(floor(intIdx), NUM_INTERVAL));\n int idx1 = int(mod(ceil(intIdx), NUM_INTERVAL));\n const vec4 HASH_TABLE1 = vec4(0.450572,0.114598, 0.886043, 0.315119);\n const vec4 HASH_TABLE2 = vec4(0.216133,0.306264, 0.685616, 0.317907);\n float offset0 = idx0 < 4 ? GetIndexedValue(HASH_TABLE1, idx0) : GetIndexedValue(HASH_TABLE2, idx0-4);\n float offset1 = idx1 < 4 ? GetIndexedValue(HASH_TABLE1, idx1) : GetIndexedValue(HASH_TABLE2, idx1-4);\n const float maxOffset = 100.0;\n offset0 = (offset0 - 0.5) * maxOffset;\n offset1 = (offset1 - 0.5) * maxOffset;\n vec2 uv0 = vec2(p.z + offset0, r);\n float shiftWeight0 = SampleCurlyPattern(uv0);\n vec2 uv1 = vec2(p.z + offset1, r);\n float shiftWeight1 = SampleCurlyPattern(uv1);\n float interpWeight = fract(intIdx);\n float shiftWeight = mix(shiftWeight0, shiftWeight1, interpWeight);\n const float INV_MIN_RADIUS = 2.0;\n float shiftWeightAdjust = smoothstep(0.0, 1.0, r * INV_MIN_RADIUS);\n r -= wood_curly_distortion_scale * (shiftWeight * shiftWeightAdjust);\n float thetaNew = atan(p.y, p.x);\n vec3 pNew = p;\n pNew.x = r * cos(thetaNew);\n pNew.y = r * sin(thetaNew);\n return pNew;\n}\n#endif\nvec3 un2sn(vec3 range)\n{\n return range * 2.0 - 1.0;\n}\nfloat inoise(vec3 p)\n{\n vec3 modp = mod(floor(p), 256.0);\n modp.xy = modp.xy * ONE;\n vec4 AA = texture(perm2DMap, vec2(modp.x, modp.y), 0.0) * 255.0;\n AA = AA + modp.z;\n AA = mod(floor(AA), 256.0);\n AA *= ONE;\n vec3 gradx1 = un2sn(texture(permGradMap,vec2(AA.x,0.0),0.0).xyz);\n vec3 grady1 = un2sn(texture(permGradMap,vec2(AA.y,0.0),0.0).xyz);\n vec3 gradz1 = un2sn(texture(permGradMap,vec2(AA.z,0.0),0.0).xyz);\n vec3 gradw1 = un2sn(texture(permGradMap,vec2(AA.w,0.0),0.0).xyz);\n vec3 gradx2 = un2sn(texture(permGradMap,vec2(AA.x + ONE,0.0),0.0).xyz);\n vec3 grady2 = un2sn(texture(permGradMap,vec2(AA.y + ONE,0.0),0.0).xyz);\n vec3 gradz2 = un2sn(texture(permGradMap,vec2(AA.z + ONE,0.0),0.0).xyz);\n vec3 gradw2 = un2sn(texture(permGradMap,vec2(AA.w + ONE,0.0),0.0).xyz);\n p -= floor(p);\n vec3 fadep = p * p * p * (p * (p * 6.0 - 15.0) + 10.0);\n return mix( mix( mix( dot(gradx1, p ),\n dot(gradz1, p + vec3(-1.0, 0.0, 0.0)), fadep.x),\n mix( dot(grady1, p + vec3(0.0, -1.0, 0.0)),\n dot(gradw1, p + vec3(-1.0, -1.0, 0.0)), fadep.x), fadep.y),\n mix( mix( dot(gradx2, p + vec3(0.0, 0.0, -1.0)),\n dot(gradz2, p + vec3(-1.0, 0.0, -1.0)), fadep.x),\n mix( dot(grady2, p + vec3(0.0, -1.0, -1.0)),\n dot(gradw2, p + vec3(-1.0, -1.0, -1.0)), fadep.x), fadep.y), fadep.z);\n}\nfloat inoise(float p)\n{\n float modp = mod(floor(p), 256.0);\n modp = (modp + 256.0) * ONE;\n float permx = texture(permutationMap, vec2(modp, 0.0), 0.0).r;\n float gradx = texture(gradientMap, vec2(permx, 0.0), 0.0).r*2.0-1.0;\n float permy = texture(permutationMap, vec2(modp + ONE, 0.0), 0.0).r;\n float grady = texture(gradientMap, vec2(permy, 0.0), 0.0).r*2.0-1.0;\n p -= floor(p);\n float fadep = p * p * p * (p * (p * 6.0 - 15.0) + 10.0);\n return mix(gradx * p, grady * (p - 1.0), fadep);\n}\nfloat multiband_inoise(vec3 p, int bands, vec4 w, vec4 f)\n{\n float noise = 0.0;\n for(int i = 0; i < 4; ++i)\n {\n if (i >= bands) break;\n noise += GetIndexedValue(w, i) * inoise(p * GetIndexedValue(f, i));\n }\n return noise;\n}\nfloat multiband_inoise(float p, int bands, vec4 w, vec4 f)\n{\n float noise = 0.0;\n for(int i = 0; i < 4; ++i)\n {\n if (i >= bands) break;\n noise += GetIndexedValue(w, i) * inoise(p * GetIndexedValue(f, i));\n }\n return noise;\n}\nvec3 Distort3DCosineRadialDir(vec3 p)\n{\n float radius = length(p.xy);\n if (radius < 0.00001) return p;\n vec2 theta = p.xy / radius;\n float radiusShift = 0.0;\n for (int i = 0; i < 4; ++i)\n {\n if (i >= wood_fiber_cosine_bands) break;\n radiusShift += GetIndexedValue(wood_fiber_cosine_weights, i) * cos(p.z * RECIPROCAL_PI2 * GetIndexedValue(wood_fiber_cosine_frequencies, i));\n }\n const float MIN_RADIUS = 1.5;\n float weight = clamp(radius / MIN_RADIUS, 0.0, 1.0);\n if(weight >= 0.5)\n weight = weight * weight * (3.0 - (weight + weight));\n p.xy += theta * radiusShift * weight;\n return p;\n}\nvec3 Distort3DPerlin(vec3 p)\n{\n vec3 pAniso = vec3(p.xy, p.z * wood_fiber_perlin_scale_z);\n p.xy += multiband_inoise(pAniso, wood_fiber_perlin_bands, wood_fiber_perlin_weights, wood_fiber_perlin_frequencies);\n return p;\n}\nvec3 Distort(vec3 p)\n{\n if(wood_fiber_cosine_enable)\n p = Distort3DCosineRadialDir(p);\n if(wood_fiber_perlin_enable)\n p = Distort3DPerlin(p);\n return p;\n}\nfloat DistortRadiusLength(float radiusLength)\n{\n radiusLength += multiband_inoise(radiusLength, wood_growth_perlin_bands, wood_growth_perlin_weights, wood_growth_perlin_frequencies);\n if (radiusLength < 0.0) radiusLength = 0.0;\n return radiusLength;\n}\nfloat ComputeEarlyWoodRatio(float radiusLength)\n{\n float fraction = mod(radiusLength, wood_ring_thickness) / wood_ring_thickness;\n if (fraction <= wood_ring_fraction.y)\n return 1.0;\n else if(fraction <= wood_ring_fraction.x)\n return (1.0 - (fraction - wood_ring_fraction.y) / wood_fall_rise.x);\n else if(fraction <= wood_ring_fraction.w)\n return 0.0;\n else\n return ((fraction - wood_ring_fraction.w) / wood_fall_rise.y);\n}\nvec3 DistortEarlyColor(vec3 earlyColor, float radiusLength)\n{\n float expValue = 1.0 + multiband_inoise(radiusLength,wood_earlycolor_perlin_bands,wood_earlycolor_perlin_weights,wood_earlycolor_perlin_frequencies);\n earlyColor = pow(abs(earlyColor), vec3(expValue));\n return earlyColor;\n}\nvec3 DistortLateColor(vec3 lateColor, float radiusLength)\n{\n float expValue = 1.0 + multiband_inoise(radiusLength,wood_latecolor_perlin_bands,wood_latecolor_perlin_weights,wood_latecolor_perlin_frequencies);\n lateColor = pow(abs(lateColor), vec3(expValue));\n return lateColor;\n}\nvec3 DistortDiffuseColor(vec3 diffAlbedo, vec3 p)\n{\n p.z *= wood_diffuse_perlin_scale_z;\n float expValue = 1.0 + multiband_inoise(p, wood_diffuse_perlin_bands, wood_diffuse_perlin_weights, wood_diffuse_perlin_frequencies);\n diffAlbedo = pow(abs(diffAlbedo), vec3(expValue));\n return diffAlbedo;\n}\nfloat LayerRoughnessVar(float roughness, float earlyWoodRatio)\n{\n return earlyWoodRatio * wood_groove_roughness + (1.0 - earlyWoodRatio) * roughness;\n}\nfloat hashword(vec2 k)\n{\n k = mod(k, vec2(256.0)) * ONE;\n float a = texture(permutationMap, vec2(k.x, 0.0)).x + k.y ;\n a = texture(permutationMap, vec2(a, 0.0)).x ;\n return a*255.0;\n}\nfloat wyvillsq(float rsq)\n{\n if (rsq >= 1.0) return 0.0;\n float tmp = 1.0 - rsq;\n return tmp*tmp*tmp;\n}\nfloat Weight2DNeighborImpulses(vec3 p, float woodWeight)\n{\n if(woodWeight <= 0.0) return 0.0;\n float poreRadius = wood_pore_radius * woodWeight;\n vec2 left = floor((p.xy - poreRadius) / wood_pore_cell_dim);\n vec2 right = floor((p.xy + poreRadius) / wood_pore_cell_dim);\n float weight = 0.0;\n float invRsq = 1.0 / (poreRadius * poreRadius);\n const float norm = 1.0 / 15.0;\n for (int j = 0; j <= 4; j++)\n {\n if (j > int(right.y - left.y)) continue;\n for (int i = 0; i <= 4; i++)\n {\n if (i > int(right.x - left.x)) continue;\n vec2 pij = vec2(float(i) + left.x,float(j) + left.y);\n float hRNum = hashword(pij);\n float impPosX = mod(hRNum, 16.0) * norm;\n float impPosY = floor(hRNum / 16.0) * norm;\n impPosX = (pij.x + impPosX)* wood_pore_cell_dim;\n impPosY = (pij.y + impPosY)* wood_pore_cell_dim;\n float dsq = (p.x - impPosX) * (p.x - impPosX) + (p.y - impPosY) * (p.y - impPosY);\n weight += wyvillsq(dsq * invRsq);\n }\n }\n return weight;\n}\nfloat Weight3DRayImpulses(vec3 p)\n{\n int segIdx = int(floor(p.z / wood_ray_seg_length_z));\n float factor = p.z / wood_ray_seg_length_z - float(segIdx);\n int segIdx1 = segIdx - 1;\n if ( factor > 0.5 )\n segIdx1 = segIdx + 1;\n float theta = atan(p.y, p.x);\n float sliceIdx = floor(((theta + PI) * RECIPROCAL_PI2) * wood_ray_num_slices);\n if ( sliceIdx == wood_ray_num_slices)\n sliceIdx-=1.0;\n ivec2 arrSegs = ivec2(segIdx, segIdx1);\n float weight = 0.0;\n const float norm = 1.0 / 15.0;\n float radialOffset = 5.0;\n float radialLength = length(p.xy);\n for (int seg = 0; seg < 2; seg++)\n {\n float hRNum = hashword(vec2(sliceIdx, GetIndexedValue(arrSegs, seg)));\n float rn1 = mod(hRNum,16.0) * norm;\n if (radialLength < radialOffset * rn1)\n continue;\n float rayTheta = rn1;\n rayTheta = ( ( sliceIdx + rayTheta ) / wood_ray_num_slices ) * ( 2.0 * PI ) - PI;\n float rayPosZ = (hRNum/16.0)* norm;\n rayPosZ = ( float(GetIndexedValue(arrSegs, seg)) + rayPosZ ) * wood_ray_seg_length_z;\n vec3 pt1 = vec3(0.0);\n vec3 pt2 = vec3(cos(rayTheta), sin(rayTheta), 0.0);\n vec3 p1 = p;\n p1.z -= rayPosZ;\n p1.z /= wood_ray_ellipse_z2x;\n vec3 v1 = pt2 - pt1;\n vec3 v2 = pt1 - p1;\n v2 = cross(v1, v2);\n float dist = length(v2) / length(v1);\n float invRsq = 1.0 / ( wood_ray_ellipse_radius_x * wood_ray_ellipse_radius_x);\n weight += wyvillsq( (dist * dist) * invRsq );\n }\n return weight;\n}\nvec3 DarkenColorWithPores(vec3 p, vec3 diffColor, float woodWeight)\n{\n float poresWeight = Weight2DNeighborImpulses(p, woodWeight);\n float a = wood_pore_color_power - 1.0;\n float b = 1.0;\n float y = a * poresWeight + b;\n return pow(abs(diffColor), vec3(y));\n}\nvec3 DarkenColorWithRays(vec3 p, vec3 diffColor)\n{\n float raysWeight = Weight3DRayImpulses(p);\n float a = wood_ray_color_power - 1.0;\n float b = 1.0;\n float y = a * raysWeight + b;\n return pow(abs(diffColor), vec3(y));\n}\nfloat ComputeWoodWeight(float earlyWoodRatio)\n{\n float woodWeight = 0.0;\n if (wood_pore_type == 0)\n woodWeight = 1.0;\n else if (wood_pore_type == 1)\n woodWeight = earlyWoodRatio;\n else if (wood_pore_type == 2)\n woodWeight = 1.0 - earlyWoodRatio;\n else\n woodWeight = -1.0;\n return woodWeight;\n}\n#if defined( PRISMWOODBUMP )\nfloat ComputeEarlyWoodRatioAA(float radiusLength, float invUnitExt)\n{\n float transPixels = min(wood_fall_rise.x, wood_fall_rise.y) * wood_ring_thickness * invUnitExt;\n float samplesf = clamp(4.0 / transPixels, 1.0, 4.0);\n int samples = int(samplesf);\n float inverseSamples = 1.0 / float(samples);\n vec2 rdelta = vec2(dFdx(radiusLength), dFdy(radiusLength)) * inverseSamples;\n float earlywoodRatio = 0.0;\n for (int i = 0; i < 4; ++i)\n {\n if (i >= samples) break;\n for (int j = 0; j < 4; ++j)\n {\n if (j >= samples) break;\n float r = radiusLength + dot(vec2(i, j), rdelta);\n earlywoodRatio += ComputeEarlyWoodRatio(r);\n }\n }\n return earlywoodRatio * (inverseSamples * inverseSamples);\n}\nfloat LatewoodDepthVariation(float invUnitExt)\n{\n float transPixels = min(wood_fall_rise.x, wood_fall_rise.y) * wood_ring_thickness * invUnitExt;\n return clamp(transPixels * 0.5, 0.0, 1.0);\n}\nfloat LatewoodHeightVariation(float earlyWoodRatio, float latewoodBumpDepth,\n float depthVar)\n{\n return ( 1.0 - earlyWoodRatio ) * latewoodBumpDepth * depthVar;\n}\nfloat PoreDepthVariation(float woodWeight, float invUnitExt)\n{\n float porePixels = woodWeight * wood_pore_radius * invUnitExt;\n return clamp(porePixels, 0.0, 1.0);\n}\nfloat PoreHeightVariation(float earlyWoodRatio, float poresWeight, float poreDepth,\n float depthVar)\n{\n return poresWeight * (-1.0 * poreDepth) * depthVar;\n}\nvoid ComputeTangents(vec3 normal, out vec3 u, out vec3 v)\n{\n float scale = normal.z < 0.0 ? -1.0 : 1.0;\n vec3 temp = scale * normal;\n float e = temp.z;\n float h = 1.0/(1.0 + e);\n float hvx = h * temp.y;\n float hvxy = hvx * -temp.x;\n u = vec3(e + hvx * temp.y, hvxy, -temp.x);\n v = vec3(hvxy, e + h * temp.x * temp.x, -temp.y);\n u *= scale;\n v *= scale;\n}\nvec3 WoodBumpHeight(float heightLeft, float heightRight, float heightBack, float heightFront)\n{\n const float epsilon = 0.001;\n float heightDeltaX = heightRight - heightLeft;\n vec3 Tu = vec3(2.0 * epsilon, 0.0, heightDeltaX);\n float heightDeltaY = heightFront - heightBack;\n vec3 Tv = vec3(0.0, 2.0 * epsilon, heightDeltaY);\n return cross(Tu, Tv);\n}\nvec3 SelectNormal(vec3 N, vec3 bumpN, vec3 V)\n{\n float bumpNdotV = dot(bumpN, V);\n if(bumpNdotV > 0.0)\n return bumpN;\n else return N;\n}\nfloat MinInverseUnitExtent(vec3 p)\n{\n return 1.0 / max(max(length(dFdx(p.xy)), length(dFdy(p.xy))), 0.000001);\n}\nfloat HeightVariation(vec3 pos)\n{\n vec3 p = Distort(pos);\n float radiusLength = length(p.xy);\n if (wood_growth_perlin_enable)\n radiusLength = DistortRadiusLength(radiusLength);\n float invUnitExt = MinInverseUnitExtent(p);\n float earlyWoodRatio = ComputeEarlyWoodRatioAA(radiusLength, invUnitExt);\n float woodWeight = ComputeWoodWeight(earlyWoodRatio);\n float poresWeight = Weight2DNeighborImpulses(p, woodWeight);\n float depthVar = PoreDepthVariation(woodWeight, invUnitExt);\n float poreHeightVariation = -1.0 * poresWeight * wood_pore_depth * depthVar;\n float latewoodHeightVariation = 0.0;\n if (wood_use_latewood_bump)\n {\n float latewoodDepthVar = LatewoodDepthVariation(invUnitExt);\n latewoodHeightVariation = (1.0 - earlyWoodRatio) * wood_latewood_bump_depth * latewoodDepthVar;\n }\n float sumHeightVariation = poreHeightVariation + latewoodHeightVariation;\n return sumHeightVariation;\n}\n#endif\nvec3 NoiseWood(vec3 p, inout float roughness)\n{\n p = Distort(p);\n float radiusLength = length(p.xy);\n if(wood_growth_perlin_enable)\n radiusLength = DistortRadiusLength(radiusLength);\n#if defined( PRISMWOODBUMP )\n float invUnitExt = MinInverseUnitExtent( p );\n float earlyWoodRatio = ComputeEarlyWoodRatioAA(radiusLength, invUnitExt);\n#else\n float earlyWoodRatio = ComputeEarlyWoodRatio(radiusLength);\n#endif\n vec3 earlyColor = wood_early_color;\n if (wood_earlycolor_perlin_enable)\n earlyColor = DistortEarlyColor(earlyColor, radiusLength);\n vec3 lateColor;\n if (wood_use_manual_late_color)\n lateColor = wood_manual_late_color;\n else\n lateColor = pow(abs(earlyColor), vec3(wood_late_color_power));\n if(wood_latecolor_perlin_enable)\n lateColor = DistortLateColor(lateColor, radiusLength);\n vec3 diffAlbedo = earlyWoodRatio * earlyColor + (1.0 - earlyWoodRatio) * lateColor;\n if(wood_diffuse_perlin_enable)\n diffAlbedo = DistortDiffuseColor(diffAlbedo, p);\n if (wood_use_pores)\n {\n float woodWeight = ComputeWoodWeight(earlyWoodRatio);\n diffAlbedo = DarkenColorWithPores(p, diffAlbedo, woodWeight);\n }\n if (wood_use_rays)\n diffAlbedo = DarkenColorWithRays(p, diffAlbedo);\n if(wood_use_groove_roughness)\n roughness = LayerRoughnessVar(roughness, earlyWoodRatio);\n return clamp(diffAlbedo, vec3(0.0), vec3(1.0));\n}\n#if defined(PRISMWOODBUMP)\nvoid getFinalWoodContext(\n inout vec3 N, vec3 V, inout vec3 Tu, inout vec3 Tv, vec3 p,\n vec3 geoNormal, vec3 tNormal, mat3 normalMatrix\n) {\n vec3 offsetTuLeft = p - 0.001 * Tu;\n vec3 offsetTuRight = p + 0.001 * Tu;\n vec3 offsetTvLeft = p - 0.001 * Tv;\n vec3 offsetTvRight = p + 0.001 * Tv;\n float heightVariationTuLeft = HeightVariation(offsetTuLeft);\n float heightVariationTuRight = HeightVariation(offsetTuRight);\n float heightVariationTvLeft = HeightVariation(offsetTvLeft);\n float heightVariationTvRight = HeightVariation(offsetTvRight);\n vec3 bumpHeight = WoodBumpHeight(heightVariationTuLeft, heightVariationTuRight, heightVariationTvLeft, heightVariationTvRight);\n vec3 newNormal = normalize(bumpHeight.x * Tu + bumpHeight.y * Tv + bumpHeight.z * vtNormal);\n vec3 newNormalView = normalize(vNormalMatrix * newNormal);\n vec3 selectedNormal = SelectNormal(geoNormal, newNormalView, V);\n ComputeTangents(selectedNormal, Tu, Tv);\n Tu = normalize(Tu);\n Tv = normalize(Tv);\n N = faceforward(selectedNormal, -V, selectedNormal);\n}\n#endif\n#endif\n"},25424:e=>{e.exports="\nuniform float shadowESMConstant;\nuniform float shadowMapRangeMin;\nuniform float shadowMapRangeSize;\n"},79317:e=>{e.exports="\n#ifdef USE_SHADOWMAP\nuniform sampler2D shadowMap;\nuniform vec2 shadowMapSize;\nuniform float shadowDarkness;\nuniform float shadowBias;\nuniform vec3 shadowLightDir;\nin vec4 vShadowCoord;\n#include \nfloat getShadowValue() {\n float fDepth;\n vec3 shadowColor = vec3( 1.0 );\n vec3 shadowCoord = vShadowCoord.xyz / vShadowCoord.w;\n shadowCoord.xyz = 0.5 * (shadowCoord.xyz + vec3(1.0, 1.0, 1.0));\n bvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n bool inFrustum = all( inFrustumVec );\n float shadowValue = 1.0;\n if (inFrustum) {\n shadowCoord.z = min(0.999, shadowCoord.z);\n shadowCoord.z -= shadowBias;\n#ifdef USE_HARD_SHADOWS\n vec4 rgbaDepth = texture( shadowMap, shadowCoord.xy );\n float fDepth = rgbaDepth.r;\n if ( fDepth < shadowCoord.z ) {\n shadowValue = 1.0 - shadowDarkness;\n }\n#else\n vec4 rgbaDepth = texture( shadowMap, shadowCoord.xy );\n float shadowMapValue = rgbaDepth.r;\n shadowValue = exp(-shadowESMConstant * shadowCoord.z) * shadowMapValue;\n shadowValue = min(shadowValue, 1.0);\n shadowValue = mix(1.0 - shadowDarkness, 1.0, shadowValue);\n#endif\n }\n return shadowValue;\n}\n#else\nfloat getShadowValue() { return 1.0; }\n#endif\nvec3 applyEnvShadow(vec3 colorWithoutShadow, vec3 worldNormal) {\n#if defined(USE_SHADOWMAP)\n float dp = dot(shadowLightDir, worldNormal);\n float dpValue = (dp + 1.0) / 2.0;\n dpValue = min(1.0, dpValue * 1.5);\n float sv = getShadowValue();\n vec3 result = colorWithoutShadow * min(sv, dpValue);\n return result;\n#else\n return colorWithoutShadow;\n#endif\n}\n"},30133:e=>{e.exports="\n#ifdef USE_SHADOWMAP\nout vec4 vShadowCoord;\nuniform mat4 shadowMatrix;\n#endif\n"},40947:e=>{e.exports="\n#ifdef USE_SHADOWMAP\n{\n vec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n vShadowCoord = shadowMatrix * worldPosition;\n}\n#endif\n"},15373:e=>{e.exports="#ifdef USE_THEMING\nuniform vec4 themingColor;\n#endif\n"},78148:e=>{e.exports="#ifdef USE_THEMING\noutFragColor.rgb = mix(outFragColor.rgb, themingColor.rgb, themingColor.a);\n#endif\n"},99607:e=>{e.exports="\nfloat luminance_post(vec3 rgb) {\n return dot(rgb, vec3(0.299, 0.587, 0.114));\n}\nfloat luminance_pre(vec3 rgb) {\n return dot(rgb, vec3(0.212671, 0.715160, 0.072169));\n}\nvec3 xyz2rgb(vec3 xyz) {\n vec3 R = vec3( 3.240479, -1.537150, -0.498535);\n vec3 G = vec3(-0.969256, 1.875992, 0.041556);\n vec3 B = vec3( 0.055648, -0.204043, 1.057311);\n vec3 rgb;\n rgb.b = dot(xyz, B);\n rgb.g = dot(xyz, G);\n rgb.r = dot(xyz, R);\n return rgb;\n}\nvec3 rgb2xyz(vec3 rgb) {\n vec3 X = vec3(0.412453, 0.35758, 0.180423);\n vec3 Y = vec3(0.212671, 0.71516, 0.0721688);\n vec3 Z = vec3(0.0193338, 0.119194, 0.950227);\n vec3 xyz;\n xyz.x = dot(rgb, X);\n xyz.y = dot(rgb, Y);\n xyz.z = dot(rgb, Z);\n return xyz;\n}\nvec3 xyz2xyY(vec3 xyz) {\n float sum = xyz.x + xyz.y + xyz.z;\n sum = 1.0 / sum;\n vec3 xyY;\n xyY.z = xyz.y;\n xyY.x = xyz.x * sum;\n xyY.y = xyz.y * sum;\n return xyY;\n}\nvec3 xyY2xyz(vec3 xyY) {\n float x = xyY.x;\n float y = xyY.y;\n float Y = xyY.z;\n vec3 xyz;\n xyz.y = Y;\n xyz.x = x * (Y / y);\n xyz.z = (1.0 - x - y) * (Y / y);\n return xyz;\n}\nfloat toneMapCanon_T(float x)\n{\n float xpow = pow(x, 1.60525727);\n float tmp = ((1.05542877*4.68037409)*xpow) / (4.68037409*xpow + 1.0);\n return clamp(tmp, 0.0, 1.0);\n}\nconst float Shift = 1.0 / 0.18;\nfloat toneMapCanonFilmic_NoGamma(float x) {\n x *= Shift;\n const float A = 0.2;\n const float B = 0.34;\n const float C = 0.002;\n const float D = 1.68;\n const float E = 0.0005;\n const float F = 0.252;\n const float scale = 1.0/0.833837;\n return (((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F) * scale;\n}\nvec3 toneMapCanonFilmic_WithGamma(vec3 x) {\n x *= Shift;\n const float A = 0.27;\n const float B = 0.29;\n const float C = 0.052;\n const float D = 0.2;\n const float F = 0.18;\n const float scale = 1.0/0.897105;\n return (((x*(A*x+C*B))/(x*(A*x+B)+D*F))) * scale;\n}\nvec3 toneMapCanonOGS_WithGamma_WithColorPerserving(vec3 x) {\n vec3 outColor = x.rgb;\n outColor = min(outColor, vec3(3.0));\n float inLum = luminance_pre(outColor);\n if (inLum > 0.0) {\n float outLum = toneMapCanon_T(inLum);\n outColor = outColor * (outLum / inLum);\n outColor = clamp(outColor, vec3(0.0), vec3(1.0));\n }\n float gamma = 1.0/2.2;\n outColor = pow(outColor, vec3(gamma));\n return outColor;\n}\n"},97713:e=>{e.exports="\n#ifdef WIDE_LINES\nin vec3 prev;\nin vec3 next;\nin float side;\nuniform vec2 view_size;\nvec2 to2d(vec4 i) {\n return i.xy / i.w;\n}\n#endif\n"},80862:e=>{e.exports="\n#ifdef WIDE_LINES\nvec4 mvpPosition = projectionMatrix * mvPosition; \nmat3 vectorMatrix = mat3(modelViewMatrix);\nvec2 _pos = to2d(mvpPosition) * view_size;\nvec2 _prev = to2d(projectionMatrix * vec4(mvPosition.xyz + vectorMatrix * (prev * 0.01), 1.0)) * view_size;\nvec2 _next = to2d(projectionMatrix * vec4(mvPosition.xyz - vectorMatrix * (next * 0.01), 1.0)) * view_size;\nvec2 dir1 = _pos - _next;\nvec2 dir2 = _prev - _pos;\ndir2 = (length(dir2) > 0.0000001) ? normalize(dir2) : vec2(0.0, 0.0);\ndir1 = (length(dir1) > 0.0000001) ? normalize(dir1) : dir2;\nvec2 dir_sharp = normalize(dir1 + dir2);\nvec2 dir = normalize(dir1 + dir_sharp);\nvec2 offset = vec2(-dir.y, dir.x);\nfloat len = 1.0 / cross(vec3(offset, 0), vec3(dir1, 0)).z;\noffset *= len;\noffset /= view_size;\noffset *= side;\noffset *= mvpPosition.w;\nmvpPosition.xy += offset;\ngl_Position = mvpPosition;\n#endif\n"},70984:e=>{e.exports="in vec3 vColor;\nin vec2 vUv;\nuniform samplerCube envMap;\nuniform vec3 uCamDir;\nuniform vec3 uCamUp;\nuniform vec2 uResolution;\nuniform float uHalfFovTan;\nuniform float opacity;\nuniform bool envMapBackground;\n#ifdef USE_BACKGROUND_TEXTURE\nuniform sampler2D backgroundTexture;\n#endif\n#include \nconst int bloomRange = 4;\n#include \nuniform float envMapExposure;\n#if TONEMAP_OUTPUT > 0\nuniform float exposureBias;\n#include \n#endif\nvec3 rayDir(in vec2 vUv) {\n vec3 A = (uResolution.x/uResolution.y)*normalize(cross(uCamDir,uCamUp)) * (uHalfFovTan * 2.0);\n vec3 B = normalize(uCamUp) * (uHalfFovTan * 2.0);\n vec3 C = normalize(uCamDir);\n vec3 ray = normalize( C + (2.0*vUv.x-1.0)*A + (2.0*vUv.y-1.0)*B );\n return ray;\n}\nvec3 getColor(in vec3 rd) {\n return RGBMDecode(texture(envMap, adjustLookupVector(rd)), envMapExposure);\n}\nvoid main() {\n vec3 rd = rayDir(vUv);\n vec3 outColor;\n float alpha = opacity;\n#ifdef USE_BACKGROUND_TEXTURE\n vec4 texel = texture(backgroundTexture, vUv);\n outColor = texel.rgb;\n alpha *= texel.a;\n#else\n if (envMapBackground) {\n outColor = getColor(rd);\n#if TONEMAP_OUTPUT == 1\n outColor = toneMapCanonOGS_WithGamma_WithColorPerserving(exposureBias * outColor);\n#elif TONEMAP_OUTPUT == 2\n outColor = toneMapCanonFilmic_WithGamma(exposureBias * outColor);\n#endif\n }\n else {\n outColor = vColor;\n }\n#endif\n outFragColor = vec4(orderedDithering(outColor), alpha);\n}\n"},8071:e=>{e.exports="uniform vec3 color1;\nuniform vec3 color2;\nout vec2 vUv;\nout vec3 vColor;\nvoid main() {\n if (uv.y == 0.0)\n vColor = color2;\n else\n vColor = color1;\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}\n"},27608:e=>{e.exports="uniform vec3 diffuse;\nuniform float opacity;\n#if defined(DEPTH_OCCLUSION) && DEPTH_OCCLUSION == 1\nuniform sampler2D tDepthTest;\nuniform vec2 tDepthResolution;\nin float vDepthPositionZ;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#if NUM_CUTPLANES > 0\nin highp vec3 vWorldPosition;\n#endif\n#if defined( PARTICLE_UV )\nin highp vec4 vUVp;\n#endif\n#include \n#include \n#include \n#include \nvoid main() {\n#if NUM_CUTPLANES > 0\n checkCutPlanes(vWorldPosition);\n#endif\n vec3 outgoingLight = vec3( 0.0 );\n vec4 diffuseColor = vec4( diffuse, opacity );\n#if defined( USE_MAP ) && defined ( PARTICLE_FRAGMENT )\n #if defined( PARTICLE_UV )\n vec2 uv3 = mix( vUVp.xy, vUVp.zw, gl_PointCoord );\n diffuseColor = texture( map, uv3);\n #else\n \tdiffuseColor = texture( map, gl_PointCoord );\n #endif\n#else\n #include \n#endif\n#include \n#include \n#include \n#include \n outgoingLight = diffuseColor.rgb;\n#if !defined ( PARTICLE_FRAGMENT )\n #include \n #include \n#endif\n#include \n outFragColor = vec4( outgoingLight, diffuseColor.a );\n vec3 geomNormal = vec3(0.0,0.0,0.0);\n float depth = 0.0;\n#include \n#if defined(DEPTH_OCCLUSION) && DEPTH_OCCLUSION == 1\n vec2 depthUV = gl_FragCoord.xy * tDepthResolution;\n float depthVal = texture(tDepthTest, depthUV).z;\n if(depthVal > vDepthPositionZ && depthVal != 0.) {\n discard;\n }\n#endif\n#include \n#include \n}\n"},21175:e=>{e.exports="#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#ifdef USE_INSTANCING\n #include \n#endif\n#if defined( PARTICLE_UV )\nin vec4 uvp;\nout highp vec4 vUVp;\n#endif\n#if defined (PARTICLE_FLAGS)\nin float pointScale;\n#endif\n#if NUM_CUTPLANES > 0\nout vec3 vWorldPosition;\n#endif\n#if defined(DEPTH_OCCLUSION) && DEPTH_OCCLUSION == 1\nout float vDepthPositionZ;\n#endif\nvoid main() {\n#ifdef USE_INSTANCING\n vec3 instancePosition = getInstancePos(position);\n #define position instancePosition\n#endif\n#if defined(USE_ENVMAP) && (defined(UNPACK_NORMALS) || defined(USE_INSTANCE))\n vec3 correctNormal;\n #ifdef UNPACK_NORMALS\n correctNormal = decodeNormal(normal);\n #else\n correctNormal = normal;\n #endif\n #ifdef USE_INSTANCING\n correctNormal = getInstanceNormal(correctNormal);\n #endif\n #define normal correctNormal\n#endif\n#include \n#include \n#include \n#ifdef USE_ENVMAP\n#include \n#endif\n#include \n#include \n#include \n#if NUM_CUTPLANES > 0\n vec4 _worldPosition = modelMatrix * vec4( position, 1.0 );\n vWorldPosition = _worldPosition.xyz;\n#endif\n#if defined(DEPTH_OCCLUSION) && DEPTH_OCCLUSION == 1\n vec4 _vDepthPosition = modelViewMatrix * vec4( position, 1.0 );\n vDepthPositionZ = _vDepthPosition.z;\n#endif\n#if defined( PARTICLE_UV )\n vUVp = uvp;\n#endif\n#include \n#include \n#include \n#if defined (PARTICLE_FLAGS) \n gl_PointSize *= clamp(pointScale, 0.0, 2.0);\n#endif\n#include \n}\n"},66299:e=>{e.exports="uniform sampler2D tDiffuse;\nuniform sampler2D tAO;\nuniform int useAO;\nuniform float aoOpacity;\nuniform sampler2D tOverlay;\nuniform int useOverlay;\nuniform int useOverlayAlpha;\nuniform vec2 resolution;\nuniform vec4 objIDv4;\nuniform sampler2D tID;\nuniform vec4 edgeObjIDv4;\n#if defined(USE_MODEL_ID)\n#if defined(HIGHLIGHT_MODEL_ID_COUNT)\nuniform vec2 modelIDsv2v[HIGHLIGHT_MODEL_ID_COUNT];\n#else\nuniform vec2 modelIDv2;\n#endif\nuniform sampler2D tID2;\nuniform vec2 edgeModelIDv2;\n#endif\nuniform float highlightIntensity;\nuniform vec3 selectionColor;\nuniform float highlightFullModel;\nuniform vec3 highlightColor;\n#ifdef IS_2D\nuniform float expand2dSelection;\n#endif\nuniform sampler2D tCrossFadeTex0;\nuniform sampler2D tCrossFadeTex1;\nuniform float crossFadeOpacity0;\nuniform float crossFadeOpacity1;\nin vec2 vUv;\n#ifdef SPATIAL_FILTER\n#include \n#endif\n#include \n#ifdef USE_IDBUFFER_SELECTION\nbool isSelection(vec2 vUv, float I, float J) {\n vec4 idAtPixel = texture(tID, vUv+resolution*vec2(I,J));\n if (idAtPixel.rgb == vec3(0.0))\n return false;\n#if defined(USE_MODEL_ID)\n vec4 modelAtPixel = texture(tID2, vUv+resolution*vec2(I,J));\n idAtPixel.a = modelAtPixel.b;\n vec4 idDelta = abs(idAtPixel.rgba - edgeObjIDv4.rgba);\n vec2 modelDelta = abs(modelAtPixel.rg - edgeModelIDv2.rg);\n#else\n vec4 idDelta = vec4(abs(idAtPixel.rgb - edgeObjIDv4.rgb), 0.0);\n vec2 modelDelta = vec2(0.0, 0.0);\n#endif\n if (max(max(modelDelta.r, modelDelta.g), max(max(idDelta.r, idDelta.g), max(idDelta.b, idDelta.a))) < 1e-3) {\n return true;\n } else {\n return false;\n }\n}\n#else\nbool isSelected(vec3 C) {\n float minS = min(selectionColor.r, min(selectionColor.g, selectionColor.b));\n float maxS = max(selectionColor.r, max(selectionColor.g, selectionColor.b));\n float satS = maxS - minS;\n float minC = min(C.r, min(C.g, C.b));\n float maxC = max(C.r, max(C.g, C.b));\n float satC = maxC - minC;\n if (satC < .01 || satS < .01)\n return false;\n vec3 S = (selectionColor - minS) / satS;\n vec3 H = (C - minC) / satC;\n vec3 D = H - S;\n float eps = .15;\n return (abs(D.r) + abs(D.g) + abs(D.b) < eps)\n || (maxC >= (1.0 - eps) && D.r >= -eps && D.g >= -eps && D.b >= -eps);\n}\n#define IS_SELECTION(C) isSelected((C).rgb)\n#endif\nvec4 overlayEdgeDetect(vec2 vUv) {\n#ifdef IS_2D\n#define MAX_ALPHA(c)\n#define SUM_ALPHA(c, w) sumAlpha += c.a * w; sumWeight += w;\n#else\n#define MAX_ALPHA(c) maxAlpha = max(maxAlpha, c.a);\n#define SUM_ALPHA(c, w) \n#endif\n#ifdef USE_IDBUFFER_SELECTION\n#define CHECK_EDGE_ALPHA(I, J, W) { vec4 c = texture( tOverlay, vUv+resolution*vec2((I),(J)) ); MAX_ALPHA(c) if (c.a > 0.0 && isSelection(vUv, I, J)) { hasEdge++; SUM_ALPHA(c, W) selectionPixel = c; } }\n#else\n#define CHECK_EDGE_ALPHA(I, J, W) { vec4 c = texture( tOverlay, vUv+resolution*vec2((I),(J)) ); MAX_ALPHA(c) if (c.a > 0.0 && IS_SELECTION(c)) { hasEdge++; SUM_ALPHA(c, W) selectionPixel = c; } }\n#endif\n#ifndef IS_2D\n#define CHECK_EDGE_SELECTION(I, J) { vec4 c = texture( tOverlay, vUv+resolution*vec2((I),(J)) ); MAX_ALPHA(c) if (c.a <= 0.0) hasEdge++; }\n#endif\n int hasEdge = 0;\n vec4 center = texture(tOverlay, vUv);\n vec4 selectionPixel = vec4(0.0);\n#ifdef IS_2D\n float sumAlpha = 0.0, sumWeight = 0.0;\n#else\n float maxAlpha = 0.0;\n bool paintOutline = false;\n#endif\n if (center.a <= 0.0) {\n CHECK_EDGE_ALPHA(-1.0,-1.0, 1.0);\n CHECK_EDGE_ALPHA( 0.0,-1.0, 2.0);\n CHECK_EDGE_ALPHA( 1.0,-1.0, 1.0);\n CHECK_EDGE_ALPHA(-1.0, 0.0, 2.0);\n CHECK_EDGE_ALPHA( 1.0, 0.0, 2.0);\n CHECK_EDGE_ALPHA(-1.0, 1.0, 1.0);\n CHECK_EDGE_ALPHA( 0.0, 1.0, 2.0);\n CHECK_EDGE_ALPHA( 1.0, 1.0, 1.0);\n if (hasEdge != 0) {\n#ifdef IS_2D\n center.a = -clamp(expand2dSelection - 1.0 + sumAlpha / sumWeight, 0.0, 1.0);\n center.rgb = center.a < 0.0 ? selectionPixel.rgb : center.rgb;\n#else\n center = selectionPixel;\n paintOutline = true;\n#endif\n }\n }\n#ifdef USE_IDBUFFER_SELECTION\n else if (center.a > 0.0 && isSelection(vUv, 0.0, 0.0)) {\n#else\n else if (center.a > 0.0 && IS_SELECTION(center)) {\n#endif\n#ifdef IS_2D\n center.a = -clamp(center.a + expand2dSelection, 0.0, 1.0);\n#else\n CHECK_EDGE_SELECTION(-1.0,-1.0);\n CHECK_EDGE_SELECTION( 0.0,-1.0);\n CHECK_EDGE_SELECTION( 1.0,-1.0);\n CHECK_EDGE_SELECTION(-1.0, 0.0);\n CHECK_EDGE_SELECTION( 1.0, 0.0);\n CHECK_EDGE_SELECTION(-1.0, 1.0);\n CHECK_EDGE_SELECTION( 0.0, 1.0);\n CHECK_EDGE_SELECTION( 1.0, 1.0);\n if (hasEdge != 0)\n paintOutline = true;\n else\n center.a = -center.a;\n#endif\n }\n#ifndef IS_2D\n if (paintOutline) {\n float maxComponent = max(center.r, max(center.g, center.b));\n center.rgb /= maxComponent;\n center.rgb = sqrt(center.rgb);\n center.a = 0.5 + 0.5 * maxAlpha * 0.125 * float(hasEdge);\n }\n#endif\n return center;\n}\n#ifdef SPATIAL_FILTER\nSPATIAL_FILTER\n#endif\nvec4 sampleColor() {\n return texture( tDiffuse, vUv );\n}\nfloat sampleAO() {\n return (useAO != 0) ? sqrt(texture(tAO, vUv).r) : 1.0;\n}\nvec3 applyCrossFade(vec3 srcColor, sampler2D fadeTex, float opacity, vec2 vUv) {\n vec4 blendCol = texture(fadeTex, vUv);\n return mix(srcColor.rgb, blendCol.rgb, blendCol.a * opacity);\n}\nvoid applyHighlighting(inout vec3 rgb, float filterValue) {\n#ifdef IS_2D\n rgb = mix(rgb, vec3(1.0,1.0,0.0), filterValue * highlightIntensity * 0.25);\n#else\n rgb += highlightColor * filterValue * highlightIntensity * 0.20;\n#endif\n}\n#ifdef USE_MODEL_ID\nfloat getModelIdDelta(vec2 a, vec2 b) {\n vec2 delta = abs(a-b);\n return max(delta.r, delta.g);\n}\nfloat getModelIdDelta(vec2 modelAtPixel) {\n \n#ifdef HIGHLIGHT_MODEL_ID_COUNT\n float delta = 1.0;\n for (int i=0; i 1)\n #if (TARGET_FADE_MODE == 0)\n texel.rgb = applyCrossFade(texel.rgb, tCrossFadeTex0, crossFadeOpacity0, vUv);\n texel.rgb = applyCrossFade(texel.rgb, tCrossFadeTex1, crossFadeOpacity1, vUv);\n #else\n vec4 t0 = texture(tCrossFadeTex0, vUv);\n vec4 t1 = texture(tCrossFadeTex1, vUv);\n vec4 mixed = mix(t0, t1, crossFadeOpacity1);\n texel.rgb = mix(texel.rgb, mixed.rgb, mixed.a);\n float aoGamma = 1.0 + 3.0 * (1.0 - 2.0 * abs(crossFadeOpacity1 - 0.5));\n if (aoGamma == 0.0)\n aoGamma = 1.0;\n ao = pow(ao, 1.0 / aoGamma);\n #endif\n #else\n vec4 mixed = texture(tCrossFadeTex0, vUv);\n texel.rgb = mix(texel.rgb, mixed.rgb, mixed.a);\n #endif\n #else\n #endif\n ao = 1.0 - (1.0 - ao) * aoOpacity;\n texel.rgb *= ao;\n if (useOverlay != 0) {\n vec4 overlay = overlayEdgeDetect(vUv);\n if (overlay.a < 0.0) {\n overlay.a = -overlay.a;\n#ifdef IS_2D\n overlay.a *= 0.6;\n#else\n if (overlay.a >= 0.99) {\n overlay.a = 0.75;\n texel.rgb = vec3(luminance_post(texel.rgb));\n }\n#endif\n }\n#ifdef IS_2D\n texel.rgb = texel.rgb * (1.0 - overlay.a) + overlay.rgb;\n#else\n texel.rgb = texel.rgb * (1.0 - overlay.a) + sqrt(overlay.rgb * overlay.a);\n#endif\n if (useOverlayAlpha != 0) {\n texel.a += overlay.a * (1.0 - texel.a);\n }\n }\n if (objIDv4 != vec4(0.0)) {\n vec4 idAtPixel = texture(tID, vUv);\n #ifdef SPATIAL_FILTER\n vec3 worldPos = reconstructWorldPosition(gl_FragCoord.xy, vUv);\n float filterValue = (spatialFilter(worldPos) ? 1.0 : 0.0);\n if (idAtPixel != vec4(1,1,1,1)) {\n applyHighlighting(texel.rgb, filterValue);\n }\n #else\n #if defined(USE_MODEL_ID)\n vec4 modelAtPixel = texture(tID2, vUv);\n idAtPixel.a = modelAtPixel.b;\n vec4 idDelta = abs(idAtPixel.rgba - objIDv4.rgba) * (1.0 - highlightFullModel);\n float modelDelta = getModelIdDelta(modelAtPixel.rg);\n #else\n vec4 idDelta = vec4(abs(idAtPixel.rgb - objIDv4.rgb), 0.0);\n float modelDelta = 0.0;\n #endif\n if (max(modelDelta, max(max(idDelta.r, idDelta.g), max(idDelta.b, idDelta.a))) < 1e-3) {\n applyHighlighting(texel.rgb, 1.0);\n }\n #endif\n }\n outFragColor = texel;\n}\n"},91342:e=>{e.exports="\n#include \nuniform sampler2D tDiffuse;\nuniform sampler2D tID;\nuniform vec2 resolution;\nuniform float cameraNear;\nuniform float cameraFar;\nuniform sampler2D tFill;\nuniform sampler2D tPaper;\nuniform int style;\nuniform int idEdges;\nuniform int normalEdges;\nuniform int depthEdges;\nuniform float brightness;\nuniform float contrast;\nuniform int grayscale;\nuniform int preserveColor;\nuniform int outlineNoise;\nuniform float levels;\nuniform float repeats;\nuniform float rotation;\nuniform float outlineRadius;\nuniform sampler2D tGraphite1;\nuniform sampler2D tGraphite2;\nuniform sampler2D tGraphite3;\nuniform sampler2D tGraphite4;\nuniform sampler2D tGraphite5;\nuniform sampler2D tGraphite6;\nuniform sampler2D tGraphite7;\nuniform sampler2D tGraphite8;\nin vec2 vUv;\nvec4 recoverNZ(vec4 nrmz) {\n float z = sqrt(1.0 - dot(nrmz.xy, nrmz.xy));\n nrmz.w = -(nrmz.z + cameraNear) / (cameraFar - cameraNear);\n nrmz.z = z;\n return nrmz;\n}\n#include \n#include \nvec3 quantize(vec3 c) {\n float L = max(c.r, max(c.g, c.b));\n c *= floor(L * (levels-1.0) + 0.5) / (L * (levels-1.0));\n return c;\n}\nvec3 quantizeRGB(vec3 c) {\n c *= c;\n c *= floor(c * levels * 0.9999) / (levels-1.0);\n return sqrt(c);\n}\nvec3 clampHue(vec3 c, float hues, float sats, float vals) {\n vec3 hsv = rgb2hsv(c);\n hsv.x = floor(hsv.x * hues + 0.5) / hues;\n hsv.y = floor(hsv.y * sats + 0.5) / sats;\n hsv.z = floor(hsv.z * vals + 0.5) / vals;\n vec3 col = hsv2rgb(hsv);\n return col;\n}\nvec3 reconstructCSFaceNormal(vec3 C) {\n return normalize(cross(dFdy(C), dFdx(C)));\n}\nvec3 getPosition(ivec2 ssP, float depth) {\n vec3 P;\n P = reconstructCSPosition(vec2(ssP) + vec2(0.5), depth);\n return P;\n}\nint isObjectEdge() {\n vec2 uv = vUv;\n if (outlineNoise == 1) {\n vec4 noise = texture(tGraphite7, vUv);\n uv = vUv + 0.02 * (noise.xy - vec2(0.25));\n }\n vec4 MM = texture(tID, uv);\n vec4 LL = texture(tID, uv + vec2(-outlineRadius, -outlineRadius) * resolution);\n if (MM != LL) return 1;\n vec4 LM = texture(tID, uv + vec2( 0.0, -outlineRadius) * resolution);\n if (MM != LM) return 1;\n vec4 LR = texture(tID, uv + vec2( outlineRadius, -outlineRadius) * resolution);\n if (MM != LR) return 1;\n vec4 ML = texture(tID, uv + vec2(-outlineRadius, 0.0) * resolution);\n if (MM != ML) return 1;\n vec4 MR = texture(tID, uv + vec2( outlineRadius, 0.0) * resolution);\n if (MM != MR) return 1;\n vec4 UL = texture(tID, uv + vec2(-outlineRadius, outlineRadius) * resolution);\n if (MM != UL) return 1;\n vec4 UM = texture(tID, uv + vec2( 0.0, outlineRadius) * resolution);\n if (MM != UM) return 1;\n vec4 UR = texture(tID, uv + vec2( outlineRadius, outlineRadius) * resolution);\n if (MM != UR) return 1;\n return (MM.x + MM.y + MM.z + MM.w) >= 4.0 ? 0 : -1;\n}\nfloat normalDiff(vec3 n1, vec3 n2) {\n float d = dot(n1.xyz, n2.xyz);\n return acos(clamp(d, -1.0, 1.0));\n}\nint isNormalDepthEdge() {\n ivec2 ssC = ivec2(gl_FragCoord.xy);\n vec2 uv = vUv;\n if (outlineNoise == 1) {\n vec4 noise = texture(tGraphite7, vUv);\n uv = vUv + 0.02 * (noise.xy - vec2(0.25));\n }\n vec4 MM = texture(tDepth, uv);\n vec4 LL = texture(tDepth, uv + vec2(-outlineRadius, -outlineRadius) * resolution);\n vec4 LM = texture(tDepth, uv + vec2( 0.0, -outlineRadius) * resolution);\n vec4 LR = texture(tDepth, uv + vec2( outlineRadius, -outlineRadius) * resolution);\n \n vec4 ML = texture(tDepth, uv + vec2(-outlineRadius, 0.0) * resolution);\n vec4 MR = texture(tDepth, uv + vec2( outlineRadius, 0.0) * resolution);\n vec4 UL = texture(tDepth, uv + vec2(-outlineRadius, outlineRadius) * resolution);\n vec4 UM = texture(tDepth, uv + vec2( 0.0, outlineRadius) * resolution);\n vec4 UR = texture(tDepth, uv + vec2( outlineRadius, outlineRadius) * resolution);\n LL = recoverNZ(LL);\n LM = recoverNZ(LM);\n LR = recoverNZ(LR);\n ML = recoverNZ(ML);\n MM = recoverNZ(MM);\n MR = recoverNZ(MR);\n UL = recoverNZ(UL);\n UM = recoverNZ(UM);\n UR = recoverNZ(UR);\n float dd = 0.0;\n if ( depthEdges == 1 ) {\n float G = (abs(UL.w - MM.w) + 2.0 * abs(UM.w - MM.w) + abs(UR.w - MM.w) + 2.0 * abs(ML.w - MM.w) + 2.0 * abs(MR.w - MM.w) + abs(LL.w - MM.w) + 2.0 * abs(LM.w - MM.w) + abs(LR.w - MM.w));\n dd = abs(dFdx(G)) + abs(dFdy(G));\n }\n float Gn = 0.0;\n if ( normalEdges == 1 ) {\n float pLL = normalDiff(LL.xyz, MM.xyz);\n float pLM = normalDiff(LM.xyz, MM.xyz);\n float pLR = normalDiff(LR.xyz, MM.xyz);\n float pML = normalDiff(ML.xyz, MM.xyz);\n float pMM = normalDiff(MM.xyz, MM.xyz);\n float pMR = normalDiff(MR.xyz, MM.xyz);\n float pUL = normalDiff(UL.xyz, MM.xyz);\n float pUM = normalDiff(UM.xyz, MM.xyz);\n float pUR = normalDiff(UR.xyz, MM.xyz);\n Gn = (abs(pUL - pMM) + 2.0 * abs(pUM - pMM) + abs(pUR - pMM) + 2.0 * abs(pML - pMM) + 2.0 * abs(pMR - pMM) + abs(pLL - pMM) + 2.0 * abs(pLM - pMM) + abs(pLR - pMM));\n }\n \n return (dd > 0.004 || Gn > 2.0) ? 1 : 0;\n}\nvec3 computeGraphite( vec3 color, vec2 loc ) {\n float lum = 0.299 * color.r + 0.587 * color.g + 0.114 * color.b;\n float offset;\n vec3 col1, col2;\n if ( lum > 6.0/7.0 ) {\n col1 = texture(tGraphite1, loc ).xyz;\n col2 = texture(tGraphite2, loc ).xyz;\n offset = 6.0/7.0;\n } else if ( lum > 5.0/7.0 ) {\n col1 = texture(tGraphite2, loc ).xyz;\n col2 = texture(tGraphite3, loc ).xyz;\n offset = 5.0/7.0;\n } else if ( lum > 4.0/7.0 ) {\n col1 = texture(tGraphite3, loc ).xyz;\n col2 = texture(tGraphite4, loc ).xyz;\n offset = 4.0/7.0;\n } else if ( lum > 3.0/7.0 ) {\n col1 = texture(tGraphite4, loc ).xyz;\n col2 = texture(tGraphite5, loc ).xyz;\n offset = 3.0/7.0;\n } else if ( lum > 2.0/7.0 ) {\n col1 = texture(tGraphite5, loc ).xyz;\n col2 = texture(tGraphite6, loc ).xyz;\n offset = 2.0/7.0;\n } else if ( lum > 1.0/7.0 ) {\n col1 = texture(tGraphite6, loc ).xyz;\n col2 = texture(tGraphite7, loc ).xyz;\n offset = 1.0/7.0;\n } else {\n col1 = texture(tGraphite7, loc ).xyz;\n col2 = texture(tGraphite8, loc ).xyz;\n offset = 0.0;\n }\n if ( col1.r == 0.0 && col2.r == 0.0 ) {\n return vec3(lum,lum,lum);\n }\n float t = (lum-offset)*7.0;\n return (col1 * t + col2 * (1.0 - t));\n}\nvec3 colorWithAdjustments() {\n vec3 sceneRGB = texture(tDiffuse, vUv).xyz;\n if ( brightness != 0.0 || contrast != 0.0) {\n if ( brightness < 0.0 )\n {\n sceneRGB = sceneRGB * (1.0 + brightness);\n }\n else\n {\n sceneRGB = sceneRGB + ((1.0 - sceneRGB) * brightness);\n }\n float slant = tan(( clamp(contrast,-1.0,1.0) + 1.0) * 3.141592/4.001);\n sceneRGB = (sceneRGB - 0.5) * slant + 0.5;\n if ( preserveColor == 1 )\n {\n float maxval = max( sceneRGB.r, sceneRGB.g );\n maxval = max( maxval, sceneRGB.b );\n if ( maxval > 1.0 )\n {\n sceneRGB /= maxval;\n }\n }\n sceneRGB = clamp(sceneRGB,0.0,1.0);\n }\n if ( grayscale == 1 ) {\n sceneRGB.rgb = vec3(luminance_post(sceneRGB.rgb));\n }\n return sceneRGB;\n}\nvoid main() {\n int foundEdge = 0;\n foundEdge = ( idEdges == 1 && isObjectEdge() == 1 ) ? 1 : 0;\n if ( foundEdge == 0 && (normalEdges == 1 || depthEdges == 1) ) {\n foundEdge = isNormalDepthEdge();\n }\n vec2 loc = vec2((vUv.x-0.5)*(resolution.y/resolution.x),vUv.y-0.5)*repeats;\n if ( style > 2 && rotation != 0.0 ) {\n float rot = 3.14159*rotation;\n float sinr = sin(rot);\n float cosr = cos(rot);\n loc = vec2(loc.x*cosr + -loc.y*sinr, loc.x*sinr + loc.y*cosr);\n }\n loc += vec2(0.5,0.5);\n vec3 color;\n if ( style == 2 ) {\n if ( foundEdge == 1 ) {\n outFragColor = vec4(0.0,0.0,0.0,1.0);\n } else {\n outFragColor = vec4(quantize(colorWithAdjustments()),1.0);\n }\n } else if ( style == 3 ) {\n color = colorWithAdjustments();\n vec3 graphColor = computeGraphite( color, loc );\n if ( foundEdge == 1 ) {\n outFragColor = vec4(0.16,0.16,0.16,1.0) + vec4(0.18 * graphColor,0.0);\n } else {\n outFragColor = vec4(graphColor,1.0);\n }\n return;\n } else if ( style == 4 ) {\n float fill = texture(tFill, loc ).r;\n float paperStrength = 0.3;\n vec3 paper = texture(tPaper, loc ).rgb;\n paper = paperStrength * paper + (1.0-paperStrength)*vec3(1.0,1.0,1.0);\n if ( foundEdge == 1 ) {\n outFragColor = 0.75 * vec4(paper * fill, 1.0);\n } else {\n fill = pow(fill,1.6);\n outFragColor = vec4(colorWithAdjustments() * (1.0 - fill) + paper * fill, 1.0);\n }\n } else {\n if ( foundEdge == 1 ) {\n outFragColor = vec4(0.0,0.0,0.0,1.0);\n } else {\n outFragColor = vec4(colorWithAdjustments(),1.0);\n }\n return; \n }\n}\n"},78551:e=>{e.exports="uniform sampler2D tDiffuse;\nin vec2 vUv;\nvoid main() {\n outFragColor = texture(tDiffuse, vUv);\n}\n"},94727:e=>{e.exports="\n#if NUM_CUTPLANES > 0\nin vec3 vWorldPosition;\n#endif\n#include \n#define LINE_CUTPLANE\n#include \nuniform vec4 color;\n#include \nvoid main() {\n#include \n#if NUM_CUTPLANES > 0\n if (checkCutPlanes(vWorldPosition)) return;\n#endif\n outFragColor = color;\n#ifdef MRT_NORMALS\noutNormal = vec4(0.0);\n#endif\n#ifdef MRT_ID_BUFFER\n outId = vec4(0.0);\n #ifdef MODEL_COLOR\n outModelId = vec4(0.0);\n #endif\n#elif defined(ID_COLOR)\n outFragColor = vec4(0.0);\n#elif defined(MODEL_COLOR)\n outFragColor = vec4(0.0);\n#endif\n}\n"},9696:e=>{e.exports="\n#if NUM_CUTPLANES > 0\nout vec3 vWorldPosition;\n#endif\n#include \n#include \nvoid main() {\n vec3 instPos = getInstancePos(position);\n#if NUM_CUTPLANES > 0\n vec4 worldPosition = modelMatrix * vec4( instPos, 1.0 );\n vWorldPosition = worldPosition.xyz;\n#endif\n vec4 mvPosition = modelViewMatrix * vec4( instPos, 1.0 );\n vec4 p_Position = projectionMatrix * mvPosition;\n gl_Position = p_Position;\n#include \n}"},49248:e=>{e.exports="#define FXAA_EDGE_SHARPNESS (8.0)\n#define FXAA_EDGE_THRESHOLD (0.125)\n#define FXAA_EDGE_THRESHOLD_MIN (0.05)\n#define FXAA_RCP_FRAME_OPT (0.50)\n#define FXAA_RCP_FRAME_OPT2 (2.0)\nuniform sampler2D tDiffuse;\nuniform highp vec2 uResolution;\nin vec2 vPos;\nin vec4 vPosPos;\nfloat FxaaLuma(vec3 rgb) {\n return dot(rgb, vec3(0.299, 0.587, 0.114));\n}\nvoid main() {\n float lumaNw = FxaaLuma(texture(tDiffuse, vPosPos.xy).rgb);\n float lumaSw = FxaaLuma(texture(tDiffuse, vPosPos.xw).rgb);\n float lumaNe = FxaaLuma(texture(tDiffuse, vPosPos.zy).rgb) + 1.0/384.0;\n float lumaSe = FxaaLuma(texture(tDiffuse, vPosPos.zw).rgb);\n vec4 rgbaM = texture(tDiffuse, vPos.xy); \n float lumaM = FxaaLuma(rgbaM.rgb);\n float lumaMax = max(max(lumaNe, lumaSe), max(lumaNw, lumaSw));\n float lumaMin = min(min(lumaNe, lumaSe), min(lumaNw, lumaSw));\n float lumaMaxSubMinM = max(lumaMax, lumaM) - min(lumaMin, lumaM);\n float lumaMaxScaledClamped = max(FXAA_EDGE_THRESHOLD_MIN, lumaMax * FXAA_EDGE_THRESHOLD);\n if (lumaMaxSubMinM < lumaMaxScaledClamped) {\n outFragColor = rgbaM;\n return;\n }\n float dirSwMinusNe = lumaSw - lumaNe;\n float dirSeMinusNw = lumaSe - lumaNw;\n vec2 dir1 = normalize(vec2(dirSwMinusNe + dirSeMinusNw, dirSwMinusNe - dirSeMinusNw));\n vec3 rgbN1 = texture(tDiffuse, vPos.xy - dir1 * FXAA_RCP_FRAME_OPT*uResolution).rgb;\n vec3 rgbP1 = texture(tDiffuse, vPos.xy + dir1 * FXAA_RCP_FRAME_OPT*uResolution).rgb;\n float dirAbsMinTimesC = min(abs(dir1.x), abs(dir1.y)) * FXAA_EDGE_SHARPNESS;\n vec2 dir2 = clamp(dir1.xy / dirAbsMinTimesC, -2.0, 2.0);\n vec3 rgbN2 = texture(tDiffuse, vPos.xy - dir2 * FXAA_RCP_FRAME_OPT2*uResolution).rgb;\n vec3 rgbP2 = texture(tDiffuse, vPos.xy + dir2 * FXAA_RCP_FRAME_OPT2*uResolution).rgb;\n vec3 rgbA = rgbN1 + rgbP1;\n vec3 rgbB = ((rgbN2 + rgbP2) * 0.25) + (rgbA * 0.25);\n float lumaB = FxaaLuma(rgbB);\n float alpha = rgbaM.a;\n if ((lumaB < lumaMin) || (lumaB > lumaMax))\n outFragColor = vec4(rgbA * 0.5, rgbaM.a);\n else\n outFragColor = vec4(rgbB, rgbaM.a);\n}\n"},2303:e=>{e.exports="uniform vec2 uResolution;\nout vec2 vPos;\nout vec4 vPosPos;\nvoid main() {\n vPos = uv;\n vPosPos.xy = uv + vec2(-0.5, -0.5) * uResolution;\n vPosPos.zw = uv + vec2( 0.5, 0.5) * uResolution;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}\n"},15201:e=>{e.exports="uniform sampler2D tDiffuse;\nuniform vec4 uColor;\nin vec2 vUv;\n#ifdef HORIZONTAL\n#define GET_UV(X) vec2(vUv.x + KERNEL_SCALE_H*(X), vUv.y)\n#else\n#define GET_UV(Y) vec2(vUv.x, vUv.y + KERNEL_SCALE_V*(Y))\n#endif\n#define PI 3.14159265358979\n#define SIGMA ((KERNEL_RADIUS+KERNEL_RADIUS+1.0) / 6.0)\n#define SIGMASQ2 (2.0 * SIGMA * SIGMA)\n#define GAUSSIAN(X) ( (1.0 / sqrt(PI * SIGMASQ2)) * exp(-(X)*(X)/SIGMASQ2) )\nvoid main() {\n vec4 texColSum = vec4(0.0);\n float gaussSum = 0.0;\n for (float x=-KERNEL_RADIUS; x<=KERNEL_RADIUS; x+=1.0) {\n float gauss = GAUSSIAN(x);\n vec4 texCol = texture(tDiffuse, GET_UV(x));\n#ifdef HAS_ALPHA\n texCol.rgb *= texCol.a;\n#endif\n texColSum += texCol * gauss;\n gaussSum += gauss;\n }\n#ifdef HAS_ALPHA\n texColSum.rgb /= (texColSum.a == 0.0 ? 0.0001 : texColSum.a);\n#endif\n#ifdef HORIZONTAL\n outFragColor = texColSum/gaussSum;\n#else\n outFragColor = texColSum/gaussSum * uColor;\n#endif\n}\n"},8102:e=>{e.exports="out vec2 vUv;\nvoid main() {\n#if defined(HORIZONTAL) && defined(FLIP_UV)\n vUv = vec2(uv.x, 1.0-uv.y);\n#else\n vUv = vec2(uv.x, uv.y);\n#endif\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}\n"},99885:e=>{e.exports="uniform sampler2D tDiffuse;\nin vec2 vUv;\nvoid main() {\n vec4 texel = texture( tDiffuse, vUv );\n outFragColor = texel;\n}\n"},63694:e=>{e.exports="#define NUM_SAMPLES 29.0\n#define NUM_SPIRAL_TURNS 7.0\nuniform sampler2D tDepth;\nuniform vec3 worldSize;\nin vec2 vUv;\n#ifdef PRESET_2\n#define SAMPLE_RADIUS 0.3\n#define AO_GAMMA 1.0\n#define AO_INTENSITY 1.0\n#else\n#define SAMPLE_RADIUS 0.2\n#define AO_GAMMA 3.0\n#define AO_INTENSITY 0.8\n#endif\n#include \n#define PI 3.14159265358979\nfloat rand(vec2 co) {\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\nfloat getRandomAngle(vec2 pos) {\n return rand(pos) * (2.0 * PI);\n}\nvec2 tapLocation(float sampleNumber, float spinAngle, out float ssR){\n float alpha = float(sampleNumber + 0.5) * (1.0 / NUM_SAMPLES);\n float angle = alpha * (NUM_SPIRAL_TURNS * PI * 2.0) + spinAngle;\n ssR = alpha;\n return vec2(cos(angle), sin(angle));\n}\nvec2 sampleAO(vec2 unitDirection, float radius) {\n vec2 sampleOffset = unitDirection * radius;\n float idepth = unpackDepth(texture(tDepth, vUv + sampleOffset));\n float depth = 1.0 - idepth;\n if (depth < 1e-6) {\n if (radius == 0.0)\n return vec2(1.0, 1.0);\n else\n return vec2(0.0, 1.0);\n }\n vec3 dir = vec3(sampleOffset.x, depth, sampleOffset.y) * worldSize;\n float distance2 = dot(dir,dir);\n float idistance = 1.0 / sqrt(distance2);\n vec3 ndir = dir * idistance;\n#ifdef PRESET_2\n float importance = ndir.y * idistance;\n#else\n float importance = ndir.y / distance2;\n#endif\n vec2 ret;\n ret.x = (idepth == 0.0) ? 0.0 : importance;\n ret.y = importance;\n return ret;\n}\nvoid main() {\n vec2 sum = vec2(0.0);\n float angle = getRandomAngle(vUv);\n for (float i = 0.0; i{e.exports="uniform sampler2D tDepth;\nin vec2 vUv;\n#ifdef HORIZONTAL\n#define GET_UV(X) vec2(vUv.x + KERNEL_SCALE*(X), vUv.y)\n#else\n#define GET_UV(Y) vec2(vUv.x, vUv.y + KERNEL_SCALE*(Y))\n#endif\n#include \n#define PI 3.14159265358979\n#define SIGMA ((2.0 * KERNEL_RADIUS+1.0) / 6.0)\n#define SIGMASQ2 (2.0 * SIGMA * SIGMA)\n#ifdef BOX\n#define KERNEL_VAL(X) 1.0\n#else\n#define KERNEL_VAL(X) ( (1.0 / sqrt(PI * SIGMASQ2)) * exp(-(X)*(X)/SIGMASQ2) )\n#endif\nvoid main() {\n float depthVal = 0.0;\n float sum = 0.0;\n for (float x=-KERNEL_RADIUS; x<=KERNEL_RADIUS; x+=1.0) {\n depthVal += unpackDepth(texture(tDepth, GET_UV(x))) * KERNEL_VAL(x);\n sum += KERNEL_VAL(x);\n }\n outFragColor = packDepth(depthVal/sum);\n}\n"},17797:e=>{e.exports="uniform sampler2D tDepth;\nuniform vec4 uShadowColor;\nin vec2 vUv;\n#include \nvoid main() {\n float depthVal = unpackDepth(texture(tDepth, vUv));\n outFragColor = vec4(uShadowColor.rgb, uShadowColor.a * depthVal);\n}\n"},2647:e=>{e.exports="#include \n#if NUM_CUTPLANES > 0\nin vec3 vWorldPosition;\n#endif\n#include \nvoid main() {\n#if NUM_CUTPLANES > 0\n checkCutPlanes(vWorldPosition);\n#endif\n float depth = gl_FragCoord.z / gl_FragCoord.w;\n depth = 1.0 - depth;\n outFragColor = packDepth(depth);\n}\n"},67312:e=>{e.exports="#if NUM_CUTPLANES > 0\nout vec3 vWorldPosition;\n#endif\nvoid main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );;\n#if NUM_CUTPLANES > 0\n vec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n vWorldPosition = worldPosition.xyz;\n#endif\n}\n"},4965:e=>{e.exports="#include \n#include \n#include \n#include \n#include \n#include \n#define ENABLE_ID_DISCARD\nuniform float opacity;\nuniform vec4 selectionColor;\n#if NUM_CUTPLANES>0\nin highp vec3 vWorldPosition;\n#endif\n#ifdef VIEWPORT_CLIPPING\nuniform highp vec4 viewportBounds;\nin vec4 vPosition;\n#endif\n#include \nvoid main(){\n #if NUM_CUTPLANES>0\n checkCutPlanes(vWorldPosition);\n #endif\n \n #ifdef VIEWPORT_CLIPPING\n \n if (vPosition.x < viewportBounds.x || vPosition.x > viewportBounds.z || vPosition.y < viewportBounds.y || vPosition.y > viewportBounds.w) {\n discard;\n }\n #endif\n \n float depth = 0.;\n vec3 geomNormal = vec3(0.);\n vec3 outgoingLight = vec3(0.);\n vec4 diffuseColor = vec4(opacity);\n \n #include \n #include \n #include \n \n outgoingLight = diffuseColor.rgb;\n \n #include \n \n outFragColor = vec4(outgoingLight, diffuseColor.a);\n float writeId = 1.0;\n #ifdef GHOSTED \n writeId = 0.;\n outFragColor.a *= 0.1;\n #endif\n \n #include \n outFragColor.rgb = mix(outFragColor.rgb, selectionColor.rgb, selectionColor.a);\n #include \n #include \n}\n"},86546:e=>{e.exports="#include \n#include \n#include \n#if NUM_CUTPLANES>0\nout vec3 vWorldPosition;\n#endif\n#ifdef VIEWPORT_CLIPPING\nuniform mat4 modelLocalMatrix;\nout vec4 vPosition;\n#endif\nvoid main(){\n vUv = uv * offsetRepeat.zw + offsetRepeat.xy;\n \n #if NUM_CUTPLANES>0\n vWorldPosition = (modelMatrix * vec4(position,1.)).xyz;\n #endif\n \n #ifdef VIEWPORT_CLIPPING\n vPosition = modelLocalMatrix * vec4(position.xy,0.,1.);\n #endif\n \n gl_Position = projectionMatrix * modelViewMatrix * vec4(position.xy,0.,1.);\n#include \n}\n"},24314:e=>{e.exports="\r\n\r\n#define LINE\r\n#include \r\n#include \r\n#include \r\n\r\nuniform highp float pixelsPerUnit;\r\nuniform highp float aaRange;\r\n\r\nuniform float opacity;\r\nuniform highp float viewportId;\r\nuniform highp float swap;\r\nuniform highp float grayscale;\r\n\r\n#ifdef HAS_RASTER_QUADS\r\nuniform sampler2D tRaster;\r\n#endif\r\n\r\n#ifdef HAS_LINESTYLES\r\nuniform sampler2D tLineStyle;\r\nuniform vec2 vLineStyleTexSize;\r\n#endif\r\n\r\n#ifdef VIEWPORT_CLIPPING\r\nuniform highp vec4 viewportBounds;\r\nin highp vec2 vPosition;\r\n#endif\r\n\r\n#ifdef IMAGE_UV_TEXTURE\r\nin highp vec2 vuv;\r\nuniform sampler2D tRaster;\r\n#endif\r\n\r\n\r\nfloat curveGaussian(float r, float invWidth) {\r\n float amt = clamp(r * invWidth, 0.0, 1.0);\r\n\r\n float exponent = amt * 2.0;\r\n\r\n return exp(-exponent*exponent);\r\n\r\n\r\n\r\n}\r\n\r\n#ifdef HAS_LINESTYLES\r\nfloat getLinePatternPixel(int i, int j) {\r\n\r\n return texture(tLineStyle, (vec2(i, j) + 0.5) / vLineStyleTexSize).x * 255.0;\r\n}\r\n\r\nfloat getPatternLength(int whichPattern) {\r\n float p1 = getLinePatternPixel(0, whichPattern);\r\n float p2 = getLinePatternPixel(1, whichPattern);\r\n return (p2 * 256.0 + p1);\r\n}\r\n#endif\r\n\r\n\r\nvoid fillLineSegment() {\r\n\r\n float radius = abs(fsHalfWidth);\r\n float parametricDistance = fsMultipurpose.x;\r\n float segmentLength = fsMultipurpose.y;\r\n float totalDistance = fsMultipurpose.z;\r\n\r\n#ifdef LOADING_ANIMATION\r\n float distFromStart = parametricDistance / segmentLength;\r\n if (loadingProgress < 1.0 && distFromStart > loadingProgress) {\r\n discard;\r\n }\r\n#endif\r\n\r\n\r\n#ifdef HAS_LINESTYLES\r\n int whichPattern = int(fsMultipurpose.w);\r\n\r\n if (whichPattern > 0) {\r\n const float TEX_TO_UNIT = 1.0 / 96.0;\r\n\r\n float patternScale;\r\n\r\n\r\n\r\n if (fsHalfWidth < 0.0) {\r\n patternScale = LTSCALE;\r\n } else {\r\n patternScale = LTSCALE * TEX_TO_UNIT * pixelsPerUnit;\r\n }\r\n\r\n float patLen = patternScale * getPatternLength(whichPattern);\r\n float phase = mod((totalDistance + parametricDistance) * pixelsPerUnit, patLen);\r\n\r\n bool onPixel = true;\r\n float radiusPixels = radius * pixelsPerUnit;\r\n\r\n for (int i=2; i aaRange) {\r\n discard;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n outFragColor = fsColor;\r\n outFragColor.a *= curveGaussian(range+aaRange, pixelsPerUnit);\r\n}\r\n\r\n#ifdef HAS_CIRCLES\r\nvoid fillCircularArc() {\r\n\r\n float dist = length(fsOffsetDirection);\r\n vec2 angles = fsMultipurpose.xz;\r\n float radius = abs(fsMultipurpose.y);\r\n float range = abs(dist - radius);\r\n range -= fsHalfWidth;\r\n\r\n\r\n\r\n if (range > aaRange) {\r\n discard;\r\n }\r\n\r\n vec2 direction = fsOffsetDirection;\r\n float angle = atan(direction.y, direction.x);\r\n\r\n\r\n\r\n\r\n if (angles.x > angles.y) {\r\n\r\n if (angle > angles.x && angle < PI) {\r\n angle -= TAU;\r\n }\r\n angles.x -= TAU;\r\n\r\n\r\n\r\n if (angle < angles.x ) {\r\n angle += TAU;\r\n }\r\n }\r\n else if (angle < 0.0)\r\n angle += TAU;\r\n\r\n#ifdef LOADING_ANIMATION\r\n if ((angle - angles.x) / (angles.y - angles.x) > loadingProgress) {\r\n discard;\r\n }\r\n#endif\r\n\r\n\r\n if (angle > angles.x && angle < angles.y) {\r\n outFragColor = fsColor;\r\n outFragColor.a *= curveGaussian(range+aaRange, pixelsPerUnit);\r\n }\r\n else {\r\n discard;\r\n }\r\n\r\n}\r\n#endif\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n#ifdef HAS_ELLIPTICALS\r\n\r\n\r\n\r\n\r\n\r\n\r\nfloat EllipticalApprox(\r\n const int iters,\r\n inout float t0, inout float t1,\r\n const vec2 y, out vec2 x,\r\n const vec2 e, const vec2 ey, const vec2 esqr\r\n ) {\r\n vec2 r;\r\n for (int i = 0; i < 10; ++i) {\r\n if(i >= iters) break;\r\n\r\n float t = mix(t0, t1, 0.5);\r\n r = ey / (vec2(t) + esqr);\r\n\r\n vec2 rsq = r * r;\r\n float f = rsq.x + rsq.y - 1.0;\r\n\r\n if(f > 0.0) { t0 = t; } else { t1 = t; }\r\n }\r\n\r\n x = e * r;\r\n return distance(x, y);\r\n}\r\n\r\nfloat DistancePointEllipseSpecial (vec2 e, vec2 y, out vec2 x, float width, float aaRange) {\r\n float dist;\r\n\r\n\r\n vec2 esqr = e * e;\r\n vec2 ey = e * y;\r\n float t0 = -esqr[1] + ey[1];\r\n float t1 = -esqr[1] + length(ey);\r\n\r\n\r\n\r\n dist = EllipticalApprox(6, t0, t1, y, x, e, ey, esqr);\r\n\r\n\r\n if (dist > max(2.0 * (width + aaRange), e[0] * 0.05))\r\n return dist;\r\n\r\n\r\n dist = EllipticalApprox(6, t0, t1, y, x, e, ey, esqr);\r\n\r\n\r\n\r\n\r\n float ecc = 1.0 + 0.1 * e[0] / e[1];\r\n\r\n if (dist > max(ecc * (width + aaRange), e[0] * 0.001))\r\n return dist;\r\n if (dist < (width - aaRange) / ecc)\r\n return dist;\r\n\r\n\r\n\r\n\r\n dist = EllipticalApprox(10, t0, t1, y, x, e, ey, esqr);\r\n return dist;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\nfloat DistancePointEllipse(vec2 e, vec2 y, out vec2 locX, float width, float aaRange) {\r\n vec2 locE, locY;\r\n\r\n\r\n\r\n\r\n float diff = sign(e[0] - e[1]);\r\n vec2 swizzle = vec2(max(diff, 0.0), -min(diff, 0.0));\r\n locE.x = dot(e, swizzle.xy);\r\n locE.y = dot(e, swizzle.yx);\r\n locY.x = dot(y, swizzle.xy);\r\n locY.y = dot(y, swizzle.yx);\r\n\r\n\r\n vec2 refl = sign(locY);\r\n locY *= refl;\r\n\r\n vec2 x;\r\n float distance = DistancePointEllipseSpecial(locE, locY, x, width, aaRange);\r\n\r\n x *= refl;\r\n\r\n locX.x = dot(x, swizzle.xy);\r\n locX.y = dot(x, swizzle.yx);\r\n\r\n return distance;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\nvoid fillEllipticalArc() {\r\n vec2 angles = fsMultipurpose.xz;\r\n vec2 radii = abs(fsMultipurpose.yw);\r\n vec2 dir = fsOffsetDirection;\r\n\r\n\r\n\r\n\r\n vec2 pos;\r\n float range = DistancePointEllipse(radii, dir, pos, fsHalfWidth, aaRange);\r\n range -= fsHalfWidth;\r\n\r\n if (range > aaRange)\r\n discard;\r\n\r\n float ar = radii[0] / radii[1];\r\n\r\n\r\n\r\n\r\n float angle = atan(ar * pos.y, pos.x);\r\n\r\n\r\n\r\n\r\n if (angles.x > angles.y) {\r\n\r\n if (angle > angles.x && angle < PI) {\r\n angle -= TAU;\r\n }\r\n angles.x -= TAU;\r\n\r\n\r\n\r\n if (angle < angles.x ) {\r\n angle += TAU;\r\n }\r\n }\r\n else if (angle < 0.0)\r\n angle += TAU;\r\n\r\n#ifdef LOADING_ANIMATION\r\n if ((angle - angles.x) / (angles.y - angles.x) > loadingProgress) {\r\n discard;\r\n }\r\n#endif\r\n\r\n\r\n if (angle > angles.x && angle < angles.y) {\r\n outFragColor = fsColor;\r\n outFragColor.a *= curveGaussian(range+aaRange, pixelsPerUnit);\r\n }\r\n else {\r\n discard;\r\n }\r\n}\r\n#endif\r\n\r\n#ifdef HAS_RASTER_QUADS\r\n void fillTexQuad() {\r\n outFragColor = texture(tRaster, fsMultipurpose.xy);\r\n #ifdef LOADING_ANIMATION\r\n outFragColor.a *= loadingProgress;\r\n #endif\r\n }\r\n#endif\r\n\r\nvoid fillTriangle() {\r\n#ifdef IMAGE_UV_TEXTURE\r\n outFragColor = texture(tRaster, fract(vuv));\r\n#else\r\n outFragColor = fsColor;\r\n#endif\r\n\r\n#ifdef LOADING_ANIMATION\r\n outFragColor.a *= loadingProgress;\r\n#endif\r\n}\r\n\r\n#if NUM_CUTPLANES > 0\r\nin highp vec3 vWorldPosition;\r\n#endif\r\n\r\n#ifdef MSDF_TEXTURE_FONT\r\nin highp vec2 vuv;\r\nin float isMSDFQuards;\r\nuniform sampler2D tRaster;\r\nfloat median(float r, float g, float b) {\r\n return max(min(r, g), min(max(r, g), b));\r\n}\r\n\r\n#endif\r\n\r\n#define LINE_CUTPLANE\r\n#include \r\n\r\nvoid main() {\r\n\r\n\r\n\r\n\r\n\r\n if (fsColor == vec4(0.0)) {\r\n discard;\r\n }\r\n\r\n\r\n#ifdef VIEWPORT_CLIPPING\r\n if(vPosition.x < viewportBounds.x || vPosition.x > viewportBounds.z || vPosition.y < viewportBounds.y || vPosition.y > viewportBounds.w) {\r\n discard;\r\n }\r\n#endif\r\n\r\n#ifdef MSDF_TEXTURE_FONT\r\n vec4 msdfColor = texture(tRaster, vuv);\r\n float dist = median(msdfColor.r, msdfColor.g, msdfColor.b);\r\n\r\n\r\n float delta = mix(0.25, 0.5, 1.0 - fwidth(dist));\r\n\r\n float sigDist = dist - delta;\r\n float msdfAlpha = clamp(sigDist/fwidth(sigDist) + delta, 0.0, 1.0);\r\n\r\n msdfAlpha = smoothstep(0., 1., msdfAlpha);\r\n outFragColor.a = mix(msdfAlpha, 1., 1.-isMSDFQuards);\r\n if (outFragColor.a < 0.0001) discard;\r\n\r\n#endif\r\n\r\n\r\n if (fsHalfWidth == 0.0) {\r\n#ifdef HAS_RASTER_QUADS\r\n if (fsMultipurpose.z != 0.0)\r\n fillTexQuad();\r\n else\r\n#endif\r\n fillTriangle();\r\n }\r\n else if (fsMultipurpose.y < 0.0) {\r\n#ifdef HAS_CIRCLES\r\n#ifdef HAS_ELLIPTICALS\r\n if (abs(fsMultipurpose.y) == fsMultipurpose.w)\r\n#endif\r\n fillCircularArc();\r\n#endif\r\n#ifdef HAS_ELLIPTICALS\r\n#ifdef HAS_CIRCLES\r\n else\r\n#endif\r\n fillEllipticalArc();\r\n#endif\r\n }\r\n else\r\n fillLineSegment();\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n float writeId = 1.0;\r\n \r\n outFragColor.a *= opacity;\r\n\r\n if (outFragColor.a == 0.0) {\r\n discard;\r\n }\r\n\r\n\r\n\r\n\r\n if (fsGhosting != 0.0 || \r\n ((viewportId != 0.0) && (abs(fsVpTC.x * 255.0 + fsVpTC.y) >= 0.5 && abs(fsVpTC.x * 255.0 + fsVpTC.y - viewportId) >= 0.5))) {\r\n\r\n writeId = 0.0;\r\n\r\n\r\n\r\n outFragColor.a *= ((swap == 1.0) ? 0.21 : 0.1);\r\n }\r\n\r\n#ifndef SELECTION_RENDERER\r\n\r\n if (grayscale != 0.0) {\r\n const vec3 rgb2grey = vec3(0.299, 0.587, 0.114);\r\n float gray = dot(outFragColor.rgb, rgb2grey);\r\n outFragColor.rgb = vec3(gray);\r\n }\r\n#endif\r\n\r\n#if NUM_CUTPLANES > 0\r\n if (checkCutPlanes(vWorldPosition)) return;\r\n#endif\r\n\r\n#ifdef MRT_NORMALS\r\n\r\n outNormal = vec4(0.0, 0.0, 0.0, 1.0);\r\n#endif\r\n\r\n#ifdef NO_ID_OUTPUT\r\n\r\n writeId = 0.0;\r\n#endif\r\n\r\n#include \r\n#include \r\n}\r\n"},49965:e=>{e.exports="\r\n\r\n#include \r\n#include \r\n\r\nin vec2 fields1;\r\nin vec4 fields2;\r\nin vec4 flags4b;\r\nin vec4 layerVp4b;\r\n\r\n#ifdef HAS_ELLIPTICALS\r\nin vec3 extraParams;\r\n#endif\r\n\r\n#ifdef USE_INSTANCING\r\nin vec4 instFlags4b;\r\n#endif\r\n\r\n#ifdef MSDF_TEXTURE_FONT\r\nout highp vec2 vuv;\r\nout float isMSDFQuards;\r\n#endif\r\n\r\n#ifdef IMAGE_UV_TEXTURE\r\nout highp vec2 vuv;\r\n#endif\r\n\r\n#ifdef VIEWPORT_CLIPPING\r\nout vec2 vPosition;\r\n#endif\r\n\r\nuniform mat4 mvpMatrix;\r\n\r\nuniform float pixelsPerUnit;\r\nuniform float aaRange;\r\nuniform float viewportId;\r\nuniform float swap;\r\n\r\n\r\n\r\n\r\n\r\n#ifdef HAS_LAYERS\r\nuniform sampler2D tLayerMask;\r\n#endif\r\n\r\n#ifdef SELECTION_RENDERER\r\nuniform sampler2D tSelectionTexture;\r\nuniform vec2 vSelTexSize;\r\n#endif\r\n\r\n#ifdef SELECTION_RENDERER\r\nuniform vec4 selectionColor;\r\n#endif\r\n\r\n#ifdef LOADING_ANIMATION\r\nuniform float meshAnimTime;\r\n#endif\r\n\r\n#if NUM_CUTPLANES > 0\r\nout vec3 vWorldPosition;\r\n#endif\r\n\r\nout vec4 dbId;\r\n\r\n#ifdef UNPACK_POSITIONS\r\nuniform sampler2D tIdColor;\r\nuniform vec2 vIdColorTexSize;\r\nuniform vec4 unpackXform;\r\nin vec2 uvIdColor;\r\nfloat unpackLineWeight(float w) {\r\n if (w > 0.5) {\r\n return - (w - 0.5) * 1024.0;\r\n } else {\r\n return w * max(unpackXform.x, unpackXform.y) * 2.0;\r\n }\r\n}\r\nvec4 getVertexColor() {\r\n float u = (uvIdColor.x + 0.5) / vIdColorTexSize.x;\r\n return texture(tIdColor, vec2(u, 0.5));\r\n}\r\nvec4 getDbId() {\r\n float u = (uvIdColor.y + 0.5) / vIdColorTexSize.x;\r\n vec4 normDbId = texture(tIdColor, vec2(u, 0.5));\r\n return normDbId * 255.0;\r\n}\r\n#else\r\nin vec4 color4b;\r\nin vec4 dbId4b;\r\nvec4 unpackXform;\r\nfloat unpackLineWeight(float w) {\r\n return w;\r\n}\r\nvec4 getVertexColor() {\r\n return color4b;\r\n}\r\nvec4 getDbId() {\r\n return dbId4b;\r\n}\r\n#endif\r\n\r\n\r\nvec2 centralVertex;\r\nvec2 offsetPosition;\r\n\r\nvec2 cos_sin(const float angle) { return vec2(cos(angle), sin(angle)); }\r\n\r\nvoid min_max(inout vec2 minPt, inout vec2 maxPt, const vec2 p) {\r\n minPt = min(minPt, p);\r\n maxPt = max(maxPt, p);\r\n}\r\n\r\n#if defined(USE_INSTANCING)\r\nfloat getVertexId() { return instFlags4b.x; }\r\n#else\r\nfloat getVertexId() { return flags4b.x; }\r\n#endif\r\n\r\nbool isStartVertex() { return (getVertexId() < VBB_SEG_END_RIGHT); }\r\nbool isLeftVertex() { float id = getVertexId(); return ((id == VBB_SEG_END_LEFT || id == VBB_SEG_START_LEFT)); }\r\n\r\nstruct SegmentData { float angle, distAlong, distTotal, lineWidthHalf, lineType; };\r\nvoid decodeSegmentData(out SegmentData seg) {\r\n seg.angle = fields2.x * TAU - PI;\r\n seg.distAlong = fields2.y * max(unpackXform.x, unpackXform.y);\r\n seg.distTotal = fields2.w;\r\n seg.lineWidthHalf = unpackLineWeight(fields2.z);\r\n seg.lineType = flags4b.z;\r\n}\r\n\r\nvoid strokeLineSegment() {\r\n SegmentData seg; decodeSegmentData(seg);\r\n\r\n float isStartCapVertex = isStartVertex() ? -1.0 : 1.0;\r\n float isLeftSide = isLeftVertex( ) ? 1.0 : -1.0;\r\n\r\n\r\n float angleTransverse = seg.angle + isLeftSide * HALF_PI;\r\n float lwAdjustment = fsHalfWidth + aaRange;\r\n vec2 transverseOffset = cos_sin(angleTransverse) * lwAdjustment;\r\n offsetPosition.xy += transverseOffset;\r\n\r\n\r\n\r\n\r\n float distanceFromStart = max(isStartCapVertex, 0.0) * seg.distAlong;\r\n vec2 along = distanceFromStart * cos_sin(seg.angle);\r\n offsetPosition.xy += along;\r\n centralVertex.xy += along;\r\n\r\n\r\n vec2 moveOffset = isStartCapVertex * isLeftSide * vec2(-transverseOffset.y, transverseOffset.x);\r\n offsetPosition.xy -= moveOffset;\r\n centralVertex.xy -= moveOffset;\r\n\r\n\r\n\r\n\r\n fsMultipurpose.x = (isStartCapVertex * lwAdjustment) + distanceFromStart;\r\n fsMultipurpose.y = seg.distAlong;\r\n fsMultipurpose.z = seg.distTotal;\r\n fsMultipurpose.w = seg.lineType;\r\n\r\n if (seg.lineWidthHalf < 0.0)\r\n fsHalfWidth = -fsHalfWidth;\r\n}\r\n\r\n\r\n#ifdef HAS_TRIANGLE_GEOMS\r\nstruct TriangleData { vec2 p0, p1, p2; };\r\nvoid decodeTriangleData(out TriangleData tri) {\r\n\r\n tri.p1 = vec2(fields2.x, fields2.y) * unpackXform.xy + unpackXform.zw;\r\n tri.p2 = fields2.zw * unpackXform.xy + unpackXform.zw;\r\n}\r\n\r\nvoid strokeOneTriangle() {\r\n TriangleData tri; decodeTriangleData(tri);\r\n\r\n\r\n\r\n\r\n\r\n\r\n fsHalfWidth = 0.0;\r\n fsMultipurpose.z = 0.0;\r\n\r\n\r\n\r\n\r\n\r\n float vertexId = getVertexId();\r\n if (vertexId == VBB_SEG_END_RIGHT)\r\n offsetPosition.xy = tri.p1;\r\n else if (vertexId == VBB_SEG_END_LEFT)\r\n offsetPosition.xy = tri.p2;\r\n}\r\n#endif\r\n\r\n\r\n\r\n\r\n#ifdef HAS_RASTER_QUADS\r\nstruct TexQuadData { float angle; vec2 size; };\r\nvoid decodeTexQuadData(out TexQuadData quad) {\r\n quad.angle = fields2.x * TAU;\r\n quad.size = fields2.yz * max(unpackXform.x, unpackXform.y);\r\n}\r\n\r\nvoid strokeTexQuad() {\r\n TexQuadData quad; decodeTexQuadData(quad);\r\n\r\n vec2 corner = vec2(isLeftVertex() ? -1.0 : 1.0, isStartVertex() ? -1.0 : 1.0);\r\n\r\n vec2 p = 0.5 * corner * quad.size;\r\n vec2 rot = cos_sin(quad.angle);\r\n vec2 offset = vec2(p.x * rot.x - p.y * rot.y, p.x * rot.y + p.y * rot.x);\r\n\r\n offsetPosition.xy += offset;\r\n\r\n fsMultipurpose.xy = max(vec2(0.0), corner);\r\n\r\n\r\n fsMultipurpose.z = 1.0;\r\n fsHalfWidth = 0.0;\r\n}\r\n#endif\r\n\r\n#if defined(HAS_CIRCLES) || defined(HAS_ELLIPTICALS)\r\nstruct ArcData { vec2 c; float start, end, major, minor, tilt; };\r\nvoid decodeArcData(out ArcData arc) {\r\n arc.c = fields1.xy * unpackXform.xy + unpackXform.zw;\r\n arc.start = fields2.x * TAU;\r\n arc.end = fields2.y * TAU;\r\n arc.major = fields2.w * max(unpackXform.x, unpackXform.y);\r\n#if defined(HAS_ELLIPTICALS)\r\n arc.minor = extraParams.x;\r\n arc.tilt = extraParams.y * TAU;\r\n#endif\r\n}\r\n\r\nvoid strokeArc(const ArcData arc) {\r\n\r\n\r\n float isStart = isStartVertex() ? -1.0 : 1.0;\r\n float isLeft = isLeftVertex() ? -1.0 : 1.0;\r\n\r\n\r\n\r\n\r\n vec2 minPt;\r\n vec2 maxPt;\r\n\r\n vec2 angles = vec2(arc.start, arc.end);\r\n vec2 endsX = vec2(arc.c.x) + arc.major * cos(angles);\r\n vec2 endsY = vec2(arc.c.y) + arc.minor * sin(angles);\r\n minPt = maxPt = vec2(endsX.x, endsY.x);\r\n min_max(minPt, maxPt, vec2(endsX.y, endsY.y));\r\n\r\n if (arc.end > arc.start) {\r\n if (arc.start < PI_0_5 && arc.end > PI_0_5) {\r\n min_max(minPt, maxPt, vec2(arc.c.x, arc.c.y + arc.minor));\r\n }\r\n if (arc.start < PI && arc.end > PI) {\r\n min_max(minPt, maxPt, vec2(arc.c.x - arc.major, arc.c.y));\r\n }\r\n if (arc.start < PI_1_5 && arc.end > PI_1_5) {\r\n min_max(minPt, maxPt, vec2(arc.c.x, arc.c.y - arc.minor));\r\n }\r\n } else {\r\n\r\n min_max(minPt, maxPt, vec2(arc.c.x + arc.major, arc.c.y));\r\n\r\n\r\n\r\n if (arc.start < PI_0_5 || arc.end > PI_0_5) {\r\n min_max(minPt, maxPt, vec2(arc.c.x, arc.c.y + arc.minor));\r\n }\r\n if (arc.start < PI || arc.end > PI) {\r\n min_max(minPt, maxPt, vec2(arc.c.x - arc.major, arc.c.y));\r\n }\r\n if (arc.start < PI_1_5 || arc.end > PI_1_5) {\r\n min_max(minPt, maxPt, vec2(arc.c.x, arc.c.y - arc.minor));\r\n }\r\n }\r\n\r\n minPt -= fsHalfWidth + aaRange;\r\n maxPt += fsHalfWidth + aaRange;\r\n\r\n offsetPosition.x = (isStart < 0.0) ? minPt.x : maxPt.x;\r\n offsetPosition.y = (isLeft < 0.0) ? minPt.y : maxPt.y;\r\n\r\n\r\n\r\n\r\n\r\n fsMultipurpose.x = arc.start;\r\n fsMultipurpose.y = -arc.major;\r\n fsMultipurpose.z = arc.end;\r\n fsMultipurpose.w = arc.minor;\r\n}\r\n#endif\r\n\r\n#if defined(HAS_CIRCLES)\r\n\r\nvoid strokeCircularArc() {\r\n ArcData arc; decodeArcData(arc);\r\n\r\n float r = arc.major;\r\n if (r * pixelsPerUnit < 0.125)\r\n r = 0.25 * aaRange;\r\n arc.major = arc.minor = r;\r\n\r\n strokeArc(arc);\r\n}\r\n\r\n#endif\r\n\r\n#if defined(HAS_ELLIPTICALS)\r\nvoid strokeEllipticalArc() {\r\n ArcData arc; decodeArcData(arc);\r\n strokeArc(arc);\r\n}\r\n#endif\r\n\r\nstruct CommonAttribs { vec2 pos; vec4 color; vec2 layerTC, vpTC; float lineWidthHalf, geomType, ghosting; };\r\nvoid decodeCommonAttribs(out CommonAttribs attribs) {\r\n attribs.pos = fields1.xy * unpackXform.xy + unpackXform.zw;\r\n attribs.color = getVertexColor();\r\n attribs.geomType = flags4b.y;\r\n attribs.layerTC = layerVp4b.xy / 255.0;\r\n attribs.vpTC = layerVp4b.zw / 255.0;\r\n attribs.lineWidthHalf = unpackLineWeight(fields2.z);\r\n attribs.ghosting = flags4b.w;\r\n}\r\n\r\nvoid strokeIndexedTriangle() {\r\n\r\n fsHalfWidth = 0.0;\r\n fsMultipurpose.z = 0.0;\r\n}\r\n\r\n#ifdef SELECTION_RENDERER\r\nbool isSelected(const CommonAttribs attribs) {\r\n\r\n\r\n vec3 oid = getDbId().rgb;\r\n\r\n\r\n float id01 = oid.r + oid.g * 256.0;\r\n float t = (id01 + 0.5) * (1.0 / 4096.0);\r\n float flrt = floor(t);\r\n float texU = t - flrt;\r\n\r\n\r\n float id23 = oid.b * (65536.0 / 4096.0) + flrt;\r\n t = (id23 + 0.5) / vSelTexSize.y;\r\n float texV = fract(t);\r\n\r\n vec4 selBit = texture(tSelectionTexture, vec2(texU, texV));\r\n return selBit.r == 1.0;\r\n}\r\n#endif\r\n\r\nbool isLayerOff(const CommonAttribs attribs) {\r\n#ifdef HAS_LAYERS\r\n vec4 layerBit = texture(tLayerMask, attribs.layerTC);\r\n return (layerBit.r == 0.0);\r\n#else\r\n return false;\r\n#endif\r\n}\r\n\r\nvec4 getColor(const CommonAttribs attribs) {\r\n\r\n if (isLayerOff(attribs)) { return vec4(0.0); }\r\n\r\n#ifdef SELECTION_RENDERER\r\n if (isSelected(attribs)) { return selectionColor; }\r\n return vec4(0.0);\r\n#else\r\n return attribs.color;\r\n#endif\r\n}\r\n\r\n#ifdef GAMMA_INPUT\r\nvec4 inputToLinear(vec4 c) {\r\n return vec4(vec3(c*c), c.a);\r\n}\r\n#endif\r\n\r\nvoid main() {\r\n#ifndef UNPACK_POSITIONS\r\n unpackXform = vec4(1.0, 1.0, 0.0, 0.0);\r\n#endif\r\n\r\n CommonAttribs attribs; decodeCommonAttribs(attribs);\r\n#ifdef MSDF_TEXTURE_FONT\r\n vuv = fields2.xy;\r\n isMSDFQuards = 1.0 - abs(sign(attribs.geomType - VBB_GT_MSDF_TRIANGLE_INDEXED));\r\n#endif\r\n\r\n#ifdef IMAGE_UV_TEXTURE\r\n vuv = fields2.xy;\r\n#endif\r\n\r\n fsColor = getColor(attribs);\r\n\r\n #ifdef GAMMA_INPUT\r\n fsColor = inputToLinear(fsColor);\r\n #endif\r\n\r\n\r\n if (swap != 0.0 ) {\r\n\r\n if ( fsColor.r == 0.0 && fsColor.g == 0.0 && fsColor.b == 0.0 )\r\n fsColor.rgb = vec3(1.0,1.0,1.0);\r\n\r\n else if ( fsColor.r == 1.0 && fsColor.g == 1.0 && fsColor.b == 1.0 )\r\n fsColor.rgb = vec3(0.0,0.0,0.0);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n centralVertex = offsetPosition = attribs.pos;\r\n\r\n float lineWeight = attribs.lineWidthHalf;\r\n if (lineWeight > 0.0) {\r\n\r\n\r\n if(lineWeight < 0.5 / pixelsPerUnit) {\r\n lineWeight = 0.5 / pixelsPerUnit;\r\n }\r\n }\r\n else {\r\n\r\n\r\n lineWeight = abs(lineWeight) / pixelsPerUnit;\r\n }\r\n\r\n fsHalfWidth = lineWeight;\r\n\r\n dbId = getDbId() / 255.0;\r\n\r\n fsVpTC = attribs.vpTC;\r\n fsGhosting = attribs.ghosting;\r\n\r\n if (attribs.geomType == VBB_GT_LINE_SEGMENT || attribs.geomType == VBB_GT_LINE_SEGMENT_CAPPED || attribs.geomType == VBB_GT_LINE_SEGMENT_CAPPED_START || attribs.geomType == VBB_GT_LINE_SEGMENT_CAPPED_END || attribs.geomType == VBB_GT_LINE_SEGMENT_MITER) strokeLineSegment();\r\n#ifdef HAS_CIRCLES\r\n else if (attribs.geomType == VBB_GT_ARC_CIRCULAR) strokeCircularArc();\r\n#endif\r\n#ifdef HAS_ELLIPTICALS\r\n else if (attribs.geomType == VBB_GT_ARC_ELLIPTICAL) strokeEllipticalArc();\r\n#endif\r\n#ifdef HAS_RASTER_QUADS\r\n else if (attribs.geomType == VBB_GT_TEX_QUAD) strokeTexQuad();\r\n#endif\r\n#ifdef HAS_TRIANGLE_GEOMS\r\n else if (attribs.geomType == VBB_GT_ONE_TRIANGLE) strokeOneTriangle();\r\n#endif\r\n else if (attribs.geomType == VBB_GT_TRIANGLE_INDEXED) strokeIndexedTriangle();\r\n\r\n\r\n\r\n fsOffsetDirection = offsetPosition - centralVertex;\r\n\r\n\r\n gl_Position = mvpMatrix * modelMatrix * vec4( offsetPosition.xy, 0.0, 1.0 );\r\n#include \r\n\r\n#ifdef LOADING_ANIMATION\r\n\r\n if (dbId.rgb == vec3(1.0)) {\r\n loadingProgress = 1.0;\r\n } else {\r\n loadingProgress = smoothstep(0.0, 1.0, meshAnimTime);\r\n }\r\n#endif\r\n\r\n#ifdef IMAGE_UV_TEXTURE\r\n fsHalfWidth = 0.0;\r\n#endif\r\n\r\n\r\n#if NUM_CUTPLANES > 0\r\n vec4 worldPosition = modelMatrix * vec4( offsetPosition.xy, 0.0, 1.0 );\r\n vWorldPosition = worldPosition.xyz;\r\n#endif\r\n\r\n#ifdef VIEWPORT_CLIPPING\r\n vPosition = offsetPosition.xy;\r\n#endif\r\n}\r\n"},65144:e=>{e.exports="\n#define LINE_SS\n#include \n#include \n#include \nuniform highp float aaRange;\nuniform float opacity;\nuniform highp float viewportId;\nuniform highp float swap;\nuniform highp float grayscale;\n#ifdef HAS_LINESTYLES\nuniform sampler2D tLineStyle;\nuniform vec2 vLineStyleTexSize;\nin highp float vPixelsPerUnit;\n#endif\n#ifdef VIEWPORT_CLIPPING\nuniform highp vec4 viewportBounds;\nin highp vec2 vPosition;\nuniform mat4 mvpMatrix;\nuniform mat4 modelMatrix;\n#endif\nfloat curveGaussian(float r, float width) {\n float amt = clamp(abs(r / (width * 1.0)), 0.0, 1.0);\n amt = max(amt - 0.0, 0.0);\n float exponent = amt * 2.0;\n return clamp(exp(-exponent*exponent), 0.0, 1.0);\n}\n#ifdef HAS_LINESTYLES\nfloat getLinePatternPixel(int i, int j) {\n return texture(tLineStyle, (vec2(i, j) + 0.5) / vLineStyleTexSize).x * 255.0;\n}\nfloat getPatternLength(int whichPattern) {\n float p1 = getLinePatternPixel(0, whichPattern);\n float p2 = getLinePatternPixel(1, whichPattern);\n return (p2 * 256.0 + p1);\n}\n#endif\nvoid fillLineSegment() {\n float radius = abs(fsHalfWidth);\n float parametricDistance = fsMultipurpose.x;\n float segmentLength = fsMultipurpose.y;\n float totalDistance = fsMultipurpose.z;\n#ifdef LOADING_ANIMATION\n float distFromStart = parametricDistance / segmentLength;\n if (loadingProgress < 1.0 && distFromStart > loadingProgress) {\n discard;\n }\n#endif\n#ifdef HAS_LINESTYLES\n int whichPattern = int(fsMultipurpose.w);\n float roundedEnd = fsMultipurpose.w;\n if (whichPattern > 0) {\n const float TEX_TO_UNIT = 1.0 / 96.0;\n float patternScale;\n if (fsHalfWidth < 0.0) {\n patternScale = LTSCALE;\n } else {\n patternScale = LTSCALE * TEX_TO_UNIT * vPixelsPerUnit;\n }\n float patLen = patternScale * getPatternLength(whichPattern);\n float phase = mod((totalDistance + parametricDistance), patLen);\n bool onPixel = true;\n float radiusPixels = radius + aaRange;\n for (int i=2; i aaRange) {\n discard;\n }\n outFragColor = fsColor;\n if (range > -aaRange)\n outFragColor.a *= curveGaussian(range+aaRange, aaRange * 2.0);\n}\n#ifdef LOADING_ANIMATION\n void fillTriangle() { outFragColor = vec4(fsColor.rgb, fsColor.a * loadingProgress); }\n#else\n void fillTriangle() { outFragColor = fsColor; }\n#endif\n#if NUM_CUTPLANES > 0\nin highp vec3 vWorldPosition;\n#endif\n#define LINE_CUTPLANE\n#include \nfloat getSide(vec2 a, vec2 b, vec2 c) {\n return sign((b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x));\n}\nvoid main() {\n if (fsColor == vec4(0.0)) {\n discard;\n }\n#ifdef VIEWPORT_CLIPPING\n vec2 bottomLeft = (mvpMatrix * modelMatrix * vec4(viewportBounds.xy, 0., 1.)).xy;\n vec2 bottomRight = (mvpMatrix * modelMatrix * vec4(viewportBounds.zy, 0., 1.)).xy;\n vec2 topRight = (mvpMatrix * modelMatrix * vec4(viewportBounds.zw, 0., 1.)).xy;\n vec2 topLeft = (mvpMatrix * modelMatrix * vec4(viewportBounds.xw, 0., 1.)).xy;\n float side = getSide(topLeft, topRight, bottomLeft);\n if (side * getSide(topRight, bottomRight, vPosition) < 0.0 ||\n side * getSide(bottomRight, bottomLeft, vPosition) < 0.0 ||\n side * getSide(bottomLeft, topLeft, vPosition) < 0.0 ||\n side * getSide(topLeft, topRight, vPosition) < 0.0) {\n discard;\n }\n#endif\n if (fsHalfWidth == 0.0) {\n fillTriangle();\n }\n else\n fillLineSegment();\n float writeId = 1.0;\n outFragColor.a *= opacity;\n if (outFragColor.a == 0.0) {\n discard;\n }\n if (fsGhosting != 0.0 || \n ((viewportId != 0.0) && (abs(fsVpTC.x * 255.0 + fsVpTC.y) >= 0.5 && abs(fsVpTC.x * 255.0 + fsVpTC.y - viewportId) >= 0.5))) {\n writeId = 0.0;\n outFragColor.a *= ((swap == 1.0) ? 0.21 : 0.1);\n }\n#ifndef SELECTION_RENDERER\n if (grayscale != 0.0) {\n const vec3 rgb2grey = vec3(0.299, 0.587, 0.114);\n float gray = dot(outFragColor.rgb, rgb2grey);\n outFragColor.rgb = vec3(gray);\n }\n#endif\n#if NUM_CUTPLANES > 0\n if (checkCutPlanes(vWorldPosition)) return;\n#endif\n#ifdef MRT_NORMALS\n outNormal = vec4(0.0, 0.0, 0.0, 1.0);\n#endif\n#ifdef NO_ID_OUTPUT\n writeId = 0.0;\n#endif\n#include \n#include \n}\n"},97431:e=>{e.exports="\n#include \n#include \nin vec2 fields1;\nin vec4 fields2;\nin vec4 flags4b;\nin vec4 layerVp4b;\n#ifdef HAS_MITER_LINES\nin vec3 extraParams;\nuniform float miterLimit;\nuniform float miterScaleFactor;\nuniform float miterCP;\n#endif\n#ifdef USE_INSTANCING\nin vec4 instFlags4b;\n#endif\n#ifdef VIEWPORT_CLIPPING\nout vec2 vPosition;\n#endif\nuniform mat4 mvpMatrix;\nuniform float pixelsPerUnit;\nuniform float aaRange;\nuniform vec2 size;\nuniform float viewportId;\nuniform float swap;\nuniform vec3 cameraPos;\nuniform float tanHalfFov;\n#ifdef HAS_LINESTYLES\nout float vPixelsPerUnit;\n#endif\n#ifdef HAS_LAYERS\nuniform sampler2D tLayerMask;\n#endif\n#ifdef SELECTION_RENDERER\nuniform sampler2D tSelectionTexture;\nuniform vec2 vSelTexSize;\n#endif\n#ifdef SELECTION_RENDERER\nuniform vec4 selectionColor;\n#endif\n#ifdef LOADING_ANIMATION\nuniform float meshAnimTime;\n#endif\n#if NUM_CUTPLANES > 0\nout vec3 vWorldPosition;\n#endif\nout vec4 dbId;\n#ifdef UNPACK_POSITIONS\nuniform sampler2D tIdColor;\nuniform vec2 vIdColorTexSize;\nuniform vec4 unpackXform;\nin vec2 uvIdColor;\nfloat unpackLineWeight(float w) {\n if (w > 0.5) {\n return - (w - 0.5) * 1024.0;\n } else {\n return w * max(unpackXform.x, unpackXform.y) * 2.0;\n }\n}\nvec4 getVertexColor() {\n float u = (uvIdColor.x + 0.5) / vIdColorTexSize.x;\n return texture(tIdColor, vec2(u, 0.5));\n}\nvec4 getDbId() {\n float u = (uvIdColor.y + 0.5) / vIdColorTexSize.x;\n vec4 normDbId = texture(tIdColor, vec2(u, 0.5));\n return normDbId * 255.0;\n}\n#else\nin vec4 color4b;\nin vec4 dbId4b;\nvec4 unpackXform;\nfloat unpackLineWeight(float w) {\n return w;\n}\nvec4 getVertexColor() {\n return color4b;\n}\nvec4 getDbId() {\n return dbId4b;\n}\n#endif\nvec2 centralVertex;\nvec2 offsetPosition;\nvec2 offsetPosDepth;\nvec2 cos_sin(const float angle) { return vec2(cos(angle), sin(angle)); }\nvoid min_max(inout vec2 minPt, inout vec2 maxPt, const vec2 p) {\n minPt = min(minPt, p);\n maxPt = max(maxPt, p);\n}\n#if defined(USE_INSTANCING)\nfloat getVertexId() { return instFlags4b.x; }\n#else\nfloat getVertexId() { return flags4b.x; }\n#endif\nbool isStartVertex() { return (getVertexId() < VBB_SEG_END_RIGHT); }\nbool isLeftVertex() { float id = getVertexId(); return ((id == VBB_SEG_END_LEFT || id == VBB_SEG_START_LEFT)); }\nstruct SegmentData { float angle, distAlong, distTotal, lineWidthHalf, lineType; };\nvoid decodeSegmentData(out SegmentData seg) {\n seg.angle = fields2.x * TAU - PI;\n seg.distAlong = fields2.y * max(unpackXform.x, unpackXform.y);\n seg.distTotal = fields2.w;\n seg.lineWidthHalf = unpackLineWeight(fields2.z);\n seg.lineType = flags4b.z;\n}\nvoid strokeLineSegment(float geomType) {\n SegmentData seg; decodeSegmentData(seg);\n float isStartCapVertex = isStartVertex() ? -1.0 : 1.0;\n float isLeftSide = isLeftVertex( ) ? 1.0 : -1.0;\n vec4 startPosition = (mvpMatrix * modelMatrix * vec4(centralVertex.xy, 0.0, 1.0));\n float distanceAlong = seg.distAlong;\n vec2 along = distanceAlong * cos_sin(seg.angle);\n vec4 endPosition = (mvpMatrix * modelMatrix * vec4(centralVertex.xy + along, 0.0, 1.0));\n vec2 screenStart = startPosition.xy * 0.5 * size / startPosition.w;\n vec2 screenEnd = endPosition.xy * 0.5 * size / endPosition.w;\n float roundedEnd = 0.0;\n if (isStartCapVertex < 0.0) {\n offsetPosition = centralVertex = screenStart;\n offsetPosDepth = startPosition.zw;\n roundedEnd = (geomType == VBB_GT_LINE_SEGMENT || geomType == VBB_GT_LINE_SEGMENT_CAPPED_END) ? 0.5 : 0.0;\n } else {\n offsetPosition = centralVertex = screenEnd;\n offsetPosDepth = endPosition.zw;\n roundedEnd = (geomType == VBB_GT_LINE_SEGMENT || geomType == VBB_GT_LINE_SEGMENT_CAPPED_START) ? 0.5 : 0.0;\n }\n#ifdef HAS_LINESTYLES\n roundedEnd += seg.lineType;\n#endif\n vec2 screenDelta = screenEnd - screenStart;\n float screenAngle = (distanceAlong == 0.0) ? 0.0 : atan(screenDelta.y, screenDelta.x);\n float angleTransverse = screenAngle - isLeftSide * HALF_PI;\n float lwAdjustment = fsHalfWidth + aaRange;\n vec2 transverseDir = cos_sin(angleTransverse);\n offsetPosition += transverseDir * lwAdjustment;\n fsOffsetDirection = offsetPosition - centralVertex;\n float distanceFromStart = max(0.0, isStartCapVertex) * length(screenDelta);\n float segmentExtension = (roundedEnd > 0.0) ? lwAdjustment : aaRange;\n vec2 moveOffset = isStartCapVertex * isLeftSide * vec2(-transverseDir.y, transverseDir.x) * segmentExtension;\n offsetPosition += moveOffset;\n fsMultipurpose.x = (isStartCapVertex * segmentExtension) + distanceFromStart;\n fsMultipurpose.y = length(screenDelta);\n fsMultipurpose.z = seg.distTotal;\n fsMultipurpose.w = roundedEnd;\n if (seg.lineWidthHalf < 0.0)\n fsHalfWidth = -fsHalfWidth;\n gl_Position = vec4(2.0 * offsetPosition / size * offsetPosDepth.y, offsetPosDepth.xy);\n#include \n}\n#ifdef HAS_MITER_LINES\nstruct MiterSegmentData { float angle, distAlong, distAlongPN, anglePrev, angleNext, lineWidthHalf, lineType; };\nvoid decodeMiterSegment(out MiterSegmentData seg) {\n seg.angle = fields2.x * TAU - PI;\n seg.distAlong = fields2.y * max(unpackXform.x, unpackXform.y);\n seg.anglePrev = fields2.w * TAU - PI;\n seg.lineWidthHalf = unpackLineWeight(fields2.z);\n seg.lineType = flags4b.z;\n seg.angleNext = extraParams.x * TAU - PI;\n seg.distAlongPN = extraParams.y * max(unpackXform.x, unpackXform.y);\n}\nvoid strokeMiterLineSegment() {\n MiterSegmentData seg; decodeMiterSegment(seg);\n float isStartCapVertex = isStartVertex() ? -1.0 : 1.0;\n float isLeftSide = isLeftVertex( ) ? 1.0 : -1.0;\n float next = floor(seg.distAlongPN / miterCP);\n float prev = seg.distAlongPN - (next * miterCP);\n float distanceAlongNext = floor(next) / miterScaleFactor;\n float distanceAlongPrev = floor(prev) / miterScaleFactor;\n float distanceAlong = seg.distAlong;\n vec2 along = cos_sin(seg.anglePrev) * distanceAlongPrev;\n vec2 along2 = cos_sin(seg.angle) * distanceAlong;\n vec2 along3 = along2 + cos_sin(seg.angleNext) * distanceAlongNext;\n vec4 prevPosition = (mvpMatrix * modelMatrix * vec4(centralVertex.xy - along , 0.0, 1.0));\n vec4 startPosition = (mvpMatrix * modelMatrix * vec4(centralVertex.xy , 0.0, 1.0));\n vec4 endPosition = (mvpMatrix * modelMatrix * vec4(centralVertex.xy + along2, 0.0, 1.0));\n vec4 nextPosition = (mvpMatrix * modelMatrix * vec4(centralVertex.xy + along3, 0.0, 1.0));\n vec2 screenPrev = prevPosition.xy * 0.5 * size / prevPosition.w;\n vec2 screenStart = startPosition.xy * 0.5 * size / startPosition.w;\n vec2 screenEnd = endPosition.xy * 0.5 * size / endPosition.w;\n vec2 screenNext = nextPosition.xy * 0.5 * size / nextPosition.w;\n if (isStartCapVertex < 0.0) {\n offsetPosition = centralVertex = screenStart;\n offsetPosDepth = startPosition.zw;\n } else {\n offsetPosition = centralVertex = screenEnd;\n offsetPosDepth = endPosition.zw;\n }\n vec2 screenDelta = screenEnd - screenStart;\n vec2 AB = normalize(screenStart.xy - screenPrev.xy);\n vec2 BC = normalize(screenDelta);\n vec2 CD = normalize(screenNext.xy - screenEnd.xy);\n vec2 a = screenPrev;\n vec2 b = screenStart;\n vec2 c = screenEnd;\n vec2 d = screenNext;\n vec2 p = (isStartCapVertex < 0.0) ? a : d;\n vec2 a2 = (isStartCapVertex < 0.0) ? a : c;\n vec2 b2 = (isStartCapVertex < 0.0) ? b : d;\n vec2 p2 = (isStartCapVertex < 0.0) ? c : b;\n vec2 PP = (isStartCapVertex < 0.0) ? AB : CD;\n vec2 normalBC = vec2(-BC.y, BC.x);\n vec2 normalPP = vec2(-PP.y, PP.x);\n float pIsLeftOfBC = ((c.x - b.x)*(p.y - b.y) - (c.y - b.y)*(p.x - b.x)) > 0.0 ? 1.0 : -1.0;\n vec2 bN = b + normalBC * fsHalfWidth * pIsLeftOfBC;\n vec2 cN = c + normalBC * fsHalfWidth * pIsLeftOfBC;\n vec2 pN = p + normalPP * fsHalfWidth * pIsLeftOfBC;\n float isPIntersecting = ((cN.x - bN.x)*(pN.y - bN.y) - (cN.y - bN.y)*(pN.x - bN.x)) * pIsLeftOfBC;\n float p2IsLeftOfPP = ((b2.x - a2.x)*(p2.y - a2.y) - (b2.y - a2.y)*(p2.x - a2.x)) > 0.0 ? 1.0 : -1.0;\n vec2 a2N = a2 + normalPP * fsHalfWidth * p2IsLeftOfPP;\n vec2 b2N = b2 + normalPP * fsHalfWidth * p2IsLeftOfPP;\n vec2 p2N = p2 + normalBC * fsHalfWidth * p2IsLeftOfPP;\n float isP2Intersecting = ((b2N.x - a2N.x)*(p2N.y - a2N.y) - (b2N.y - a2N.y)*(p2N.x - a2N.x)) * p2IsLeftOfPP;\n float tangentLength = (isStartCapVertex < 0.0) ? length(AB + BC) : length(BC + CD);\n vec2 tangent = (isStartCapVertex < 0.0) ? normalize(AB + BC) : normalize(BC + CD);\n vec2 miter = vec2(-tangent.y, tangent.x);\n vec2 normal = (isStartCapVertex < 0.0) ? vec2(-AB.y, AB.x) : vec2(-BC.y, BC.x);\n float miterLength = abs(1.0 / dot(miter, normal));\n vec2 moveOffset;\n float lwAdjustment = fsHalfWidth + aaRange;\n if (miterLength > miterLimit || min(isPIntersecting, isP2Intersecting) < 0.0) {\n moveOffset = isLeftSide * lwAdjustment * normalBC;\n } else {\n moveOffset = isLeftSide * miter * lwAdjustment * miterLength;\n }\n offsetPosition += moveOffset;\n float distanceFromStart = max(0.0, isStartCapVertex) * (length(screenDelta) + dot(moveOffset, BC));\n fsMultipurpose.x = distanceFromStart;\n fsMultipurpose.y = length(screenDelta) + dot(moveOffset, BC);\n fsMultipurpose.z = 0.0;\n#ifdef HAS_LINESTYLES\n fsMultipurpose.w = seg.lineType + 0.5;\n#else\n fsMultipurpose.w = 0.5;\n#endif\n if (seg.lineWidthHalf < 0.0)\n fsHalfWidth = -fsHalfWidth;\n fsOffsetDirection = offsetPosition - BC * dot(moveOffset, BC) - centralVertex;\n gl_Position = vec4(2.0 * offsetPosition / size * offsetPosDepth.y, offsetPosDepth.xy);\n#include \n}\n#endif\nstruct CommonAttribs { vec2 pos; vec4 color; vec2 layerTC, vpTC; float lineWidthHalf, geomType, ghosting; };\nvoid decodeCommonAttribs(out CommonAttribs attribs) {\n attribs.pos = fields1.xy * unpackXform.xy + unpackXform.zw;\n attribs.color = getVertexColor();\n attribs.geomType = flags4b.y;\n attribs.layerTC = layerVp4b.xy / 255.0;\n attribs.vpTC = layerVp4b.zw / 255.0;\n attribs.lineWidthHalf = unpackLineWeight(fields2.z);\n attribs.ghosting = flags4b.w;\n}\nvoid strokeIndexedTriangle() {\n fsHalfWidth = 0.0;\n fsMultipurpose.z = 0.0;\n gl_Position = (mvpMatrix * modelMatrix * vec4(centralVertex.xy, 0.0, 1.0));\n#include \n}\n#ifdef SELECTION_RENDERER\nbool isSelected(const CommonAttribs attribs) {\n vec3 oid = getDbId().rgb;\n float id01 = oid.r + oid.g * 256.0;\n float t = (id01 + 0.5) * (1.0 / 4096.0);\n float flrt = floor(t);\n float texU = t - flrt;\n float id23 = oid.b * (65536.0 / 4096.0) + flrt;\n t = (id23 + 0.5) / vSelTexSize.y;\n float texV = fract(t);\n vec4 selBit = texture(tSelectionTexture, vec2(texU, texV));\n return selBit.r == 1.0;\n}\n#endif\nbool isLayerOff(const CommonAttribs attribs) {\n#ifdef HAS_LAYERS\n vec4 layerBit = texture(tLayerMask, attribs.layerTC);\n return (layerBit.r == 0.0);\n#else\n return false;\n#endif\n}\nvec4 getColor(const CommonAttribs attribs) {\n if (isLayerOff(attribs)) { return vec4(0.0); }\n#ifdef SELECTION_RENDERER\n if (isSelected(attribs)) { return selectionColor; }\n return vec4(0.0);\n#else\n return attribs.color;\n#endif\n}\n#ifdef GAMMA_INPUT\nvec4 inputToLinear(vec4 c) {\n return vec4(vec3(c*c), c.a);\n}\n#endif\nvoid main() {\n#ifndef UNPACK_POSITIONS\n unpackXform = vec4(1.0, 1.0, 0.0, 0.0);\n#endif\n CommonAttribs attribs; decodeCommonAttribs(attribs);\n fsColor = getColor(attribs);\n #ifdef GAMMA_INPUT\n fsColor = inputToLinear(fsColor);\n #endif\n if (swap != 0.0 ) {\n if ( fsColor.r == 0.0 && fsColor.g == 0.0 && fsColor.b == 0.0 )\n fsColor.rgb = vec3(1.0,1.0,1.0);\n else if ( fsColor.r == 1.0 && fsColor.g == 1.0 && fsColor.b == 1.0 )\n fsColor.rgb = vec3(0.0,0.0,0.0);\n }\n centralVertex = offsetPosition = attribs.pos;\n float lineWeight = attribs.lineWidthHalf;\n float ppu = pixelsPerUnit;\n if (tanHalfFov > 0.0) {\n vec4 worldPos = modelMatrix * vec4(offsetPosition.xy, 0.0, 1.0);\n float distanceToCamera = length(cameraPos - worldPos.xyz);\n ppu = size.y / (2.0 * distanceToCamera * tanHalfFov);\n }\n#ifdef HAS_LINESTYLES\n vPixelsPerUnit = ppu;\n#endif\n if (lineWeight > 0.0) {\n lineWeight = max(0.5, lineWeight * ppu);\n }\n else {\n lineWeight = max(0.5, abs(lineWeight));\n }\n fsHalfWidth = lineWeight;\n dbId = dbId4b / 255.0;\n fsVpTC = attribs.vpTC;\n fsGhosting = attribs.ghosting;\n#ifdef LOADING_ANIMATION\n if (dbId.rgb == vec3(1.0)) {\n loadingProgress = 1.0;\n } else {\n loadingProgress = smoothstep(0.0, 1.0, meshAnimTime);\n }\n#endif\n if (attribs.geomType == VBB_GT_LINE_SEGMENT || attribs.geomType == VBB_GT_LINE_SEGMENT_CAPPED || attribs.geomType == VBB_GT_LINE_SEGMENT_CAPPED_START || attribs.geomType == VBB_GT_LINE_SEGMENT_CAPPED_END) strokeLineSegment(attribs.geomType);\n#ifdef HAS_MITER_LINES\n else if (attribs.geomType == VBB_GT_LINE_SEGMENT_MITER) strokeMiterLineSegment();\n#endif\n else strokeIndexedTriangle();\n#if NUM_CUTPLANES > 0\n vec4 worldPosition = modelMatrix * vec4( offsetPosition.xy, 0.0, 1.0 );\n vWorldPosition = worldPosition.xyz;\n#endif\n#ifdef VIEWPORT_CLIPPING\n vPosition = gl_Position.xy;\n#endif\n}\n"},29126:e=>{e.exports="in highp vec3 vNormal;\nin highp float depth;\n#if NUM_CUTPLANES > 0\nin vec3 vWorldPosition;\n#endif\n#include \n#include \nvoid main() {\n#if NUM_CUTPLANES > 0\n checkCutPlanes(vWorldPosition);\n#endif\n vec3 n = vNormal;\n n = n * ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n n = normalize( n );\n outFragColor = vec4(n.x, n.y, depth, 1.0);\n#include \n}\n"},47697:e=>{e.exports="out vec3 vNormal;\nout float depth;\n#if NUM_CUTPLANES > 0\nout vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \nvoid main() {\n#ifdef UNPACK_NORMALS\n vec3 objectNormal = decodeNormal(normal);\n#else\n vec3 objectNormal = normal;\n#endif\n#ifdef FLIP_SIDED\n objectNormal = -objectNormal;\n#endif\n objectNormal = getInstanceNormal(objectNormal);\n vec3 instPos = getInstancePos(position);\n vec3 transformedNormal = normalMatrix * objectNormal;\n vNormal = normalize( transformedNormal );\n#if NUM_CUTPLANES > 0\n vec4 worldPosition = modelMatrix * vec4( instPos, 1.0 );\n vWorldPosition = worldPosition.xyz;\n#endif\n vec4 mvPosition = modelViewMatrix * vec4( instPos, 1.0 );\n depth = mvPosition.z;\n vec4 p_Position = projectionMatrix * mvPosition;\n gl_Position = p_Position;\n#include \n}\n"},73560:e=>{e.exports="uniform vec3 diffuse;\r\nuniform float opacity;\r\n\r\nuniform vec3 emissive;\r\nuniform vec3 specular;\r\nuniform float shininess;\r\n\r\n#include \r\n\r\n#include \r\n\r\n#ifdef USE_COLOR\r\nin vec3 vColor;\r\n#endif\r\n\r\n#ifdef GAMMA_INPUT\r\nvec3 InputToLinear(vec3 c) {\r\n return c * c;\r\n}\r\nfloat InputToLinear(float c) {\r\n return c * c;\r\n}\r\n#else\r\nvec3 InputToLinear(vec3 c) {\r\n return c;\r\n}\r\nfloat InputToLinear(float c) {\r\n return c;\r\n}\r\n#endif\r\n\r\n#if defined( USE_MAP ) || defined( USE_SPECULARMAP )\r\nin vec2 vUv;\r\n#endif\r\n\r\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\r\nin vec2 vUvBump;\r\n#endif\r\n\r\n#if defined( USE_ALPHAMAP )\r\nin vec2 vUvAlpha;\r\n#endif\r\n\r\n#ifdef USE_MAP\r\nuniform sampler2D map;\r\n#endif\r\n\r\n#if TONEMAP_OUTPUT > 0\r\nuniform float exposureBias;\r\n#include \r\n#endif\r\n\r\n#if defined(IRR_RGBM) || defined(ENV_RGBM) || defined(ENV_GAMMA) || defined(IRR_GAMMA)\r\nuniform float envMapExposure;\r\n#endif\r\n\r\n#ifdef USE_FOG\r\nuniform vec3 fogColor;\r\nuniform float fogNear;\r\nuniform float fogFar;\r\n#endif\r\n#include \r\n#include \r\n#include \r\n\r\n#ifdef USE_ENVMAP\r\n\r\nuniform float reflMipIndex;\r\n\r\nuniform float reflectivity;\r\nuniform samplerCube envMap;\r\n\r\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\r\n\r\nuniform float refractionRatio;\r\n\r\n#endif\r\n\r\nvec3 sampleReflection(vec3 dir, float mipIndex) {\r\n\r\n vec3 adjDir = adjustLookupVector(dir);\r\n\r\n#ifdef ENV_GAMMA\r\n\r\n vec4 envTexColor = textureLod( envMap, adjDir, mipIndex );\r\n return GammaDecode(envTexColor, envMapExposure);\r\n\r\n#elif defined(ENV_RGBM)\r\n\r\n vec4 envTexColor = textureLod( envMap, adjDir, mipIndex );\r\n return RGBMDecode(envTexColor, envMapExposure);\r\n\r\n#else\r\n\r\n\r\n\r\n vec4 envTexColor = texture( envMap, adjDir );\r\n vec3 cubeColor = envTexColor.xyz;\r\n\r\n#ifdef GAMMA_INPUT\r\n cubeColor *= cubeColor;\r\n#endif\r\n\r\n return cubeColor;\r\n\r\n#endif\r\n\r\n}\r\n\r\n#endif\r\n\r\n\r\nuniform vec3 ambientLightColor;\r\n\r\n#if MAX_DIR_LIGHTS > 0\r\n\r\nuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\r\nuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\r\n\r\n#endif\r\n\r\n#if MAX_POINT_LIGHTS > 0\r\n\r\nuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\r\n\r\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\r\nuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\r\n\r\n#endif\r\n\r\n#if MAX_SPOT_LIGHTS > 0\r\n\r\nuniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\r\nuniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\r\nuniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\r\nuniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\r\nuniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\r\n\r\nuniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\r\n\r\n#endif\r\n\r\n#ifdef USE_IRRADIANCEMAP\r\nuniform samplerCube irradianceMap;\r\n#endif\r\n\r\n#if MAX_SPOT_LIGHTS > 0 || NUM_CUTPLANES > 0\r\nin highp vec3 vWorldPosition;\r\n#endif\r\n\r\nin highp vec3 vViewPosition;\r\n#ifndef FLAT_SHADED\r\nin highp vec3 vNormal;\r\n#endif\r\n\r\n#ifdef USE_BUMPMAP\r\n\r\nuniform sampler2D bumpMap;\r\nuniform float bumpScale;\r\n\r\n\r\n\r\n\r\n\r\n\r\nvec2 dHdxy_fwd() {\r\n\r\n vec2 dSTdx = dFdx( vUvBump );\r\n vec2 dSTdy = dFdy( vUvBump );\r\n\r\n float Hll = bumpScale * GET_BUMPMAP(vUvBump).x;\r\n float dBx = bumpScale * GET_BUMPMAP(vUvBump + dSTdx).x - Hll;\r\n float dBy = bumpScale * GET_BUMPMAP(vUvBump + dSTdy).x - Hll;\r\n\r\n return vec2( dBx, dBy );\r\n\r\n}\r\n\r\nvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\r\n\r\n vec3 vSigmaX = dFdx( surf_pos );\r\n vec3 vSigmaY = dFdy( surf_pos );\r\n vec3 vN = surf_norm;\r\n\r\n vec3 R1 = cross( vSigmaY, vN );\r\n vec3 R2 = cross( vN, vSigmaX );\r\n\r\n float fDet = dot( vSigmaX, R1 );\r\n\r\n vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\r\n return normalize( abs( fDet ) * surf_norm - vGrad );\r\n\r\n}\r\n\r\n#endif\r\n\r\n\r\n#ifdef USE_NORMALMAP\r\n\r\nuniform sampler2D normalMap;\r\nuniform vec2 normalScale;\r\n\r\n\r\n\r\n\r\nvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\r\n\r\n vec3 q0 = dFdx( eye_pos.xyz );\r\n vec3 q1 = dFdy( eye_pos.xyz );\r\n vec2 st0 = dFdx( vUvBump.st );\r\n vec2 st1 = dFdy( vUvBump.st );\r\n\r\n vec3 S = normalize( q0 * st1.t - q1 * st0.t );\r\n vec3 T = normalize( -q0 * st1.s + q1 * st0.s );\r\n vec3 N = normalize( surf_norm );\r\n\r\n vec3 mapN = GET_NORMALMAP(vUvBump).xyz * 2.0 - 1.0;\r\n mapN.xy = normalScale * mapN.xy;\r\n mat3 tsn = mat3( S, T, N );\r\n return normalize( tsn * mapN );\r\n\r\n}\r\n\r\n#endif\r\n\r\n\r\n#ifdef USE_SPECULARMAP\r\nuniform sampler2D specularMap;\r\n#endif\r\n\r\n#ifdef USE_ALPHAMAP\r\nuniform sampler2D alphaMap;\r\n#endif\r\n\r\n#include \r\n\r\nvec3 Schlick_v3(vec3 v, float cosHV) {\r\n float facing = max(1.0 - cosHV, 0.0);\r\n return v + (1.0 - v) * pow(facing, 5.0);\r\n}\r\n\r\nfloat Schlick_f(float v, float cosHV) {\r\n float facing = max(1.0 - cosHV, 0.0);\r\n return v + ( 1.0 - v ) * pow(facing, 5.0);\r\n}\r\n\r\n#include \r\n\r\nvoid main() {\r\n\r\n#if NUM_CUTPLANES > 0\r\n checkCutPlanes(vWorldPosition);\r\n#endif\r\n\r\n outFragColor = vec4( vec3 ( 1.0 ), opacity );\r\n\r\n#ifdef USE_MAP\r\n vec4 texelColor = GET_MAP(vUv);\r\n#ifdef MAP_INVERT\r\n texelColor.xyz = 1.0-texelColor.xyz;\r\n#endif\r\n#ifdef GAMMA_INPUT\r\n texelColor.xyz *= texelColor.xyz;\r\n#endif\r\n outFragColor = outFragColor * texelColor;\r\n#endif\r\n\r\n#ifdef USE_ALPHAMAP\r\n vec4 texelAlpha = GET_ALPHAMAP(vUvAlpha);\r\n outFragColor.a *= texelAlpha.r;\r\n#endif\r\n\r\n#ifdef ALPHATEST\r\n if ( outFragColor.a < ALPHATEST ) discard;\r\n#endif\r\n\r\n float specularStrength;\r\n\r\n#ifdef USE_SPECULARMAP\r\n vec4 texelSpecular = GET_SPECULARMAP(vUv);\r\n specularStrength = texelSpecular.r;\r\n#else\r\n specularStrength = 1.0;\r\n#endif\r\n\r\n#ifndef FLAT_SHADED\r\n vec3 normal = normalize( vNormal );\r\n#ifdef DOUBLE_SIDED\r\n\r\n#endif\r\n#else\r\n vec3 fdx = dFdx( vViewPosition );\r\n vec3 fdy = dFdy( vViewPosition );\r\n vec3 normal = normalize( cross( fdx, fdy ) );\r\n#endif\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n vec3 viewDirection;\r\n if (projectionMatrix[3][3] == 0.0) {\r\n viewDirection = normalize( vViewPosition );\r\n } else {\r\n viewDirection = vec3(0.0, 0.0, 1.0);\r\n }\r\n normal = faceforward(normal, -viewDirection, normal);\r\n\r\n vec3 geomNormal = normal;\r\n\r\n#ifdef USE_NORMALMAP\r\n normal = perturbNormal2Arb( -vViewPosition, normal );\r\n#elif defined( USE_BUMPMAP )\r\n normal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\r\n#endif\r\n\r\n vec3 totalDiffuse = vec3( 0.0 );\r\n vec3 totalSpecular = vec3( 0.0 );\r\n\r\n\r\n\r\n float shininessB = shininess * 4.0;\r\n\r\n#if MAX_POINT_LIGHTS > 0\r\n\r\n vec3 pointDiffuse = vec3( 0.0 );\r\n vec3 pointSpecular = vec3( 0.0 );\r\n\r\n for ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\r\n\r\n vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\r\n vec3 lVector = lPosition.xyz + vViewPosition.xyz;\r\n\r\n float lDistance = 1.0;\r\n if ( pointLightDistance[ i ] > 0.0 )\r\n lDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\r\n\r\n lVector = normalize( lVector );\r\n\r\n\r\n\r\n float dotProduct = dot( normal, lVector );\r\n\r\n float pointDiffuseWeight = max( dotProduct, 0.0 );\r\n\r\n\r\n pointDiffuse += InputToLinear(diffuse) * InputToLinear(pointLightColor[ i ]) * pointDiffuseWeight * lDistance;\r\n\r\n\r\n\r\n vec3 pointHalfVector = normalize( lVector + viewDirection );\r\n float pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );\r\n\r\n float pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininessB ), 0.0 );\r\n float specularNormalization = shininessB * 0.125 + 0.25;\r\n vec3 schlick = Schlick_v3(InputToLinear(specular), dot( lVector, pointHalfVector ) );\r\n pointSpecular += schlick * InputToLinear(pointLightColor[ i ]) * pointSpecularWeight * pointDiffuseWeight * lDistance * specularNormalization ;\r\n\r\n }\r\n\r\n totalDiffuse += pointDiffuse;\r\n totalSpecular += pointSpecular;\r\n\r\n#endif\r\n\r\n#if MAX_SPOT_LIGHTS > 0\r\n\r\n vec3 spotDiffuse = vec3( 0.0 );\r\n vec3 spotSpecular = vec3( 0.0 );\r\n\r\n for ( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\r\n\r\n vec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\r\n vec3 lVector = lPosition.xyz + vViewPosition.xyz;\r\n\r\n float lDistance = 1.0;\r\n if ( spotLightDistance[ i ] > 0.0 )\r\n lDistance = 1.0 - min( ( length( lVector ) / spotLightDistance[ i ] ), 1.0 );\r\n\r\n lVector = normalize( lVector );\r\n\r\n float spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - vWorldPosition ) );\r\n\r\n if ( spotEffect > spotLightAngleCos[ i ] ) {\r\n\r\n spotEffect = max( pow( spotEffect, spotLightExponent[ i ] ), 0.0 );\r\n\r\n\r\n\r\n float dotProduct = dot( normal, lVector );\r\n\r\n float spotDiffuseWeight = max( dotProduct, 0.0 );\r\n\r\n spotDiffuse += InputToLinear(diffuse) * InputToLinear(spotLightColor[ i ]) * spotDiffuseWeight * lDistance * spotEffect;\r\n\r\n\r\n\r\n vec3 spotHalfVector = normalize( lVector + viewDirection );\r\n float spotDotNormalHalf = max( dot( normal, spotHalfVector ), 0.0 );\r\n float spotSpecularWeight = specularStrength * max( pow( spotDotNormalHalf, shininessB ), 0.0 );\r\n\r\n float specularNormalization = shininessB * 0.125 + 0.25;\r\n vec3 schlick = Schlick_v3(InputToLinear(specular), dot( lVector, spotHalfVector ) );\r\n spotSpecular += schlick * InputToLinear(spotLightColor[ i ]) * spotSpecularWeight * spotDiffuseWeight * lDistance * specularNormalization * spotEffect;\r\n }\r\n\r\n }\r\n\r\n totalDiffuse += spotDiffuse;\r\n totalSpecular += spotSpecular;\r\n\r\n#endif\r\n\r\n#if MAX_DIR_LIGHTS > 0\r\n\r\n vec3 dirDiffuse = vec3( 0.0 );\r\n vec3 dirSpecular = vec3( 0.0 );\r\n\r\n for( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\r\n\r\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\r\n vec3 dirVector = normalize( lDirection.xyz );\r\n\r\n\r\n\r\n float dotProduct = dot( normal, dirVector );\r\n\r\n float dirDiffuseWeight = max( dotProduct, 0.0 );\r\n\r\n dirDiffuse += InputToLinear(diffuse) * InputToLinear(directionalLightColor[ i ]) * dirDiffuseWeight;\r\n\r\n\r\n\r\n vec3 dirHalfVector = normalize( dirVector + viewDirection );\r\n float dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );\r\n float dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininessB ), 0.0 );\r\n\r\n float specularNormalization = shininessB * 0.125 + 0.25;\r\n vec3 schlick = Schlick_v3(InputToLinear(specular), dot( dirVector, dirHalfVector ));\r\n\r\n dirSpecular += schlick * InputToLinear(directionalLightColor[ i ]) * dirSpecularWeight * dirDiffuseWeight * specularNormalization;\r\n\r\n }\r\n\r\n totalDiffuse += dirDiffuse;\r\n totalSpecular += dirSpecular;\r\n\r\n#endif\r\n\r\n\r\n\r\n#ifdef USE_IRRADIANCEMAP\r\n vec3 worldNormal = mat3(viewMatrixInverse) * normal;\r\n vec3 indirectDiffuse = sampleIrradianceMap(worldNormal, irradianceMap, envMapExposure);\r\n\r\n indirectDiffuse = applyEnvShadow(indirectDiffuse, worldNormal);\r\n\r\n totalDiffuse += InputToLinear(diffuse) * indirectDiffuse;\r\n#endif\r\n\r\n\r\n#ifdef METAL\r\n outFragColor.xyz = outFragColor.xyz * ( InputToLinear(emissive) + totalDiffuse + ambientLightColor * InputToLinear(diffuse) + totalSpecular );\r\n#else\r\n outFragColor.xyz = outFragColor.xyz * ( InputToLinear(emissive) + totalDiffuse + ambientLightColor * InputToLinear(diffuse) ) + totalSpecular;\r\n#endif\r\n\r\n\r\n\r\n#ifdef USE_COLOR\r\n outFragColor = outFragColor * vec4( vColor, 1.0 );\r\n#endif\r\n\r\n\r\n#if defined(USE_ENVMAP)\r\n\r\n vec3 reflectVec;\r\n\r\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\r\n\r\n#ifdef ENVMAP_MODE_REFLECTION\r\n reflectVec = reflect( -viewDirection, normal );\r\n#else \r\n reflectVec = refract( -viewDirection, normal, refractionRatio );\r\n#endif\r\n\r\n#else\r\n\r\n reflectVec = reflect( -viewDirection, normal );\r\n\r\n#endif\r\n\r\n reflectVec = mat3(viewMatrixInverse) * reflectVec;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n float reflectScale = 1.0;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n vec3 cubeColor = sampleReflection(reflectVec, reflMipIndex);\r\n\r\n cubeColor *= reflectScale;\r\n\r\n float facing = dot( viewDirection, normal );\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n if (facing < -1e-2 || reflectivity == 0.0)\r\n facing = 1.0;\r\n else\r\n facing = max(1e-6, facing);\r\n\r\n#ifdef USE_BUMPMAP\r\n\r\n\r\n\r\n facing = min(1.0, facing + bumpScale * 7.0);\r\n\r\n#endif\r\n\r\n vec3 schlickRefl;\r\n\r\n#ifdef METAL\r\n\r\n\r\n schlickRefl = InputToLinear(specular);\r\n\r\n#else\r\n\r\n\r\n schlickRefl = Schlick_v3(InputToLinear(specular), facing);\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n outFragColor.a = mix(outFragColor.a, Schlick_f(outFragColor.a, facing), reflectivity);\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n float invSchlick = pow(1.0 - facing * 0.5, 5.0);\r\n\r\n\r\n float norm_factor = (28.0 / 23.0) * (1.0 - invSchlick) * (1.0 - invSchlick);\r\n\r\n outFragColor.xyz *= norm_factor * (1.0 - InputToLinear(specular));\r\n\r\n#endif\r\n\r\n\r\n outFragColor.xyz += cubeColor.xyz * specularStrength * schlickRefl.xyz;\r\n\r\n#ifdef CLEARCOAT\r\n\r\n vec3 reflectVecClearcoat = reflect( -viewDirection, geomNormal );\r\n reflectVecClearcoat = mat3(viewMatrixInverse) * reflectVecClearcoat;\r\n\r\n vec3 cubeColorClearcoat = sampleReflection(reflectVecClearcoat, 0.0);\r\n\r\n\r\n float schlickClearcoat = Schlick_f(InputToLinear(reflectivity), facing);\r\n\r\n\r\n\r\n outFragColor.xyz = mix(outFragColor.xyz, cubeColorClearcoat * schlickClearcoat, 0.5);\r\n\r\n#endif\r\n\r\n\r\n\r\n\r\n#endif\r\n\r\n#if TONEMAP_OUTPUT == 1\r\n outFragColor.xyz = toneMapCanonOGS_WithGamma_WithColorPerserving(exposureBias * outFragColor.xyz);\r\n#elif TONEMAP_OUTPUT == 2\r\n outFragColor.xyz = toneMapCanonFilmic_WithGamma( exposureBias * outFragColor.xyz );\r\n#endif\r\n\r\n\r\n\r\n#ifdef USE_FOG\r\n float depth = gl_FragCoord.z / gl_FragCoord.w;\r\n float fogFactor = smoothstep( fogNear, fogFar, depth );\r\n outFragColor = mix( outFragColor, vec4( fogColor, outFragColor.w ), fogFactor );\r\n#endif\r\n#include \r\n#include \r\n\r\n#include \r\n}\r\n"},77431:e=>{e.exports="out vec3 vViewPosition;\n#ifndef FLAT_SHADED\nout vec3 vNormal;\n#endif\n#if defined( USE_MAP ) || defined( USE_SPECULARMAP )\nout vec2 vUv;\nuniform mat3 texMatrix;\n#endif\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\nout vec2 vUvBump;\nuniform mat3 texMatrixBump;\n#endif\n#if defined( USE_ALPHAMAP )\nout vec2 vUvAlpha;\nuniform mat3 texMatrixAlpha;\n#endif\n#if defined( USE_ENVMAP )\n#if ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP )\nuniform float refractionRatio;\n#endif\n#endif\n#if MAX_SPOT_LIGHTS > 0 || NUM_CUTPLANES > 0\nout vec3 vWorldPosition;\n#endif\n#ifdef USE_COLOR\nout vec3 vColor;\n#endif\n#ifdef MRT_NORMALS\nout float depth;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n#if defined( USE_MAP ) || defined( USE_SPECULARMAP )\n vUv = (texMatrix * vec3(uv, 1.0)).xy;\n#endif\n#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\n vUvBump = (texMatrixBump * vec3(uv, 1.0)).xy;\n#endif\n#if defined( USE_ALPHAMAP )\n vUvAlpha = (texMatrixAlpha * vec3(uv, 1.0)).xy;\n#endif\n#ifdef USE_COLOR\n#ifdef GAMMA_INPUT\n vColor = color * color;\n#else\n vColor = color;\n#endif\n#endif\n#ifdef UNPACK_NORMALS\n vec3 objectNormal = decodeNormal(normal);\n#else\n vec3 objectNormal = normal;\n#endif\n#ifdef FLIP_SIDED\n objectNormal = -objectNormal;\n#endif\n objectNormal = getInstanceNormal(objectNormal);\n vec3 instPos = getInstancePos(position);\n vec3 transformedNormal = normalMatrix * objectNormal;\n#ifndef FLAT_SHADED\n vNormal = normalize( transformedNormal );\n#endif\n vec4 mvPosition = modelViewMatrix * vec4( instPos, 1.0 );\n gl_Position = projectionMatrix * mvPosition;\n#include \n \n#include \n vViewPosition = -mvPosition.xyz;\n#if MAX_SPOT_LIGHTS > 0 || NUM_CUTPLANES > 0\n vec4 worldPosition = modelMatrix * vec4( instPos, 1.0 );\n vWorldPosition = worldPosition.xyz;\n#endif\n#ifdef MRT_NORMALS\n depth = mvPosition.z;\n#endif\n#include \n#include \n}\n"},9893:e=>{e.exports="\n#define EDGE_SHARPNESS (3.0)\n#define SCALE (2)\n#define R (4)\n#define VALUE_TYPE float\n#define VALUE_COMPONENTS r\n#define VALUE_IS_KEY 0\n#define KEY_COMPONENTS gb\n#if __VERSION__ >= 330\nconst float gaussian[R + 1] =\nfloat[](0.153170, 0.144893, 0.122649, 0.092902, 0.062970);\n#endif\nuniform sampler2D tDiffuse;\nuniform vec2 size;\nuniform vec2 resolution;\nuniform vec2 axis;\nuniform float radius;\n#define result outFragColor.VALUE_COMPONENTS\n#define keyPassThrough outFragColor.KEY_COMPONENTS\nfloat unpackKey(vec2 p) {\n return p.x + p.y * (1.0 / 255.0);\n}\nin vec2 vUv;\nvoid main() {\n# if __VERSION__ < 330\n float gaussian[R + 1];\n# if R == 3\n gaussian[0] = 0.153170; gaussian[1] = 0.144893; gaussian[2] = 0.122649; gaussian[3] = 0.092902;\n# elif R == 4\n gaussian[0] = 0.153170; gaussian[1] = 0.144893; gaussian[2] = 0.122649; gaussian[3] = 0.092902; gaussian[4] = 0.062970;\n# elif R == 6\n gaussian[0] = 0.111220; gaussian[1] = 0.107798; gaussian[2] = 0.098151; gaussian[3] = 0.083953; gaussian[4] = 0.067458; gaussian[5] = 0.050920; gaussian[6] = 0.036108;\n# endif\n# endif\n ivec2 axisi = ivec2(axis);\n ivec2 ssC = ivec2(gl_FragCoord.xy);\n vec4 temp = texture(tDiffuse, vUv);\n outFragColor.gb = temp.KEY_COMPONENTS;\n outFragColor.a = temp.a;\n VALUE_TYPE sum = temp.VALUE_COMPONENTS;\n if (temp.a == 0.0) {\n result = sum;\n return;\n }\n float key = unpackKey(keyPassThrough);\n float BASE = gaussian[0];\n float totalWeight = BASE;\n sum *= totalWeight;\n float scale = 1.5 / radius;\n int r = -4; {\n vec2 ssUV = vec2(ssC + axisi * (r * SCALE))*resolution;\n temp = texture(tDiffuse, ssUV);\n float tapKey = unpackKey(temp.KEY_COMPONENTS);\n VALUE_TYPE value = temp.VALUE_COMPONENTS;\n float weight = 0.3 + gaussian[4];\n float dz = tapKey - key;\n weight *= max(0.0, 1.0 - (EDGE_SHARPNESS * 2000.0) * abs(dz) * scale);\n sum += value * weight;\n totalWeight += weight;\n }\n r = -3; {\n vec2 ssUV = vec2(ssC + axisi * (r * SCALE))*resolution;\n temp = texture(tDiffuse, ssUV);\n float tapKey = unpackKey(temp.KEY_COMPONENTS);\n VALUE_TYPE value = temp.VALUE_COMPONENTS;\n float weight = 0.3 + gaussian[3];\n float dz = tapKey - key;\n weight *= max(0.0, 1.0 - (EDGE_SHARPNESS * 2000.0) * abs(dz) * scale);\n sum += value * weight;\n totalWeight += weight;\n }\n r = -2; {\n vec2 ssUV = vec2(ssC + axisi * (r * SCALE))*resolution;\n temp = texture(tDiffuse, ssUV);\n float tapKey = unpackKey(temp.KEY_COMPONENTS);\n VALUE_TYPE value = temp.VALUE_COMPONENTS;\n float weight = 0.3 + gaussian[2];\n float dz = tapKey - key;\n weight *= max(0.0, 1.0 - (EDGE_SHARPNESS * 2000.0) * abs(dz) * scale);\n sum += value * weight;\n totalWeight += weight;\n }\n r=-1; {\n vec2 ssUV = vec2(ssC + axisi * (r * SCALE))*resolution;\n temp = texture(tDiffuse, ssUV);\n float tapKey = unpackKey(temp.KEY_COMPONENTS);\n VALUE_TYPE value = temp.VALUE_COMPONENTS;\n float weight = 0.3 + gaussian[1];\n float dz = tapKey - key;\n weight *= max(0.0, 1.0 - (EDGE_SHARPNESS * 2000.0) * abs(dz) * scale);\n sum += value * weight;\n totalWeight += weight;\n }\n r = 1; {\n vec2 ssUV = vec2(ssC + axisi * (r * SCALE))*resolution;\n temp = texture(tDiffuse, ssUV);\n float tapKey = unpackKey(temp.KEY_COMPONENTS);\n VALUE_TYPE value = temp.VALUE_COMPONENTS;\n float weight = 0.3 + gaussian[1];\n float dz = tapKey - key;\n weight *= max(0.0, 1.0 - (EDGE_SHARPNESS * 2000.0) * abs(dz) * scale);\n sum += value * weight;\n totalWeight += weight;\n }\n r = 2; {\n vec2 ssUV = vec2(ssC + axisi * (r * SCALE))*resolution;\n temp = texture(tDiffuse, ssUV);\n float tapKey = unpackKey(temp.KEY_COMPONENTS);\n VALUE_TYPE value = temp.VALUE_COMPONENTS;\n float weight = 0.3 + gaussian[2];\n float dz = tapKey - key;\n weight *= max(0.0, 1.0 - (EDGE_SHARPNESS * 2000.0) * abs(dz) * scale);\n sum += value * weight;\n totalWeight += weight;\n }\n r = 3; {\n vec2 ssUV = vec2(ssC + axisi * (r * SCALE))*resolution;\n temp = texture(tDiffuse, ssUV);\n float tapKey = unpackKey(temp.KEY_COMPONENTS);\n VALUE_TYPE value = temp.VALUE_COMPONENTS;\n float weight = 0.3 + gaussian[3];\n float dz = tapKey - key;\n weight *= max(0.0, 1.0 - (EDGE_SHARPNESS * 2000.0) * abs(dz) * scale);\n sum += value * weight;\n totalWeight += weight;\n }\n r = 4; {\n vec2 ssUV = vec2(ssC + axisi * (r * SCALE))*resolution;\n temp = texture(tDiffuse, ssUV);\n float tapKey = unpackKey(temp.KEY_COMPONENTS);\n VALUE_TYPE value = temp.VALUE_COMPONENTS;\n float weight = 0.3 + gaussian[4];\n float dz = tapKey - key;\n weight *= max(0.0, 1.0 - (EDGE_SHARPNESS * 2000.0) * abs(dz) * scale);\n sum += value * weight;\n totalWeight += weight;\n }\n const float epsilon = 0.0001;\n result = sum / (totalWeight + epsilon);\n}\n"},78101:e=>{e.exports="\n#include \nuniform float cameraNear;\nuniform float cameraFar;\nuniform vec2 size;\nuniform vec2 resolution;\nuniform float lumInfluence;\nin vec2 vUv;\n#define NUM_SAMPLES (17)\n#define LOG_MAX_OFFSET (3)\n#define NUM_SPIRAL_TURNS (5)\n#define MIN_RADIUS (3.0)\n#define TAU 6.28318530718\nuniform float projScale;\n#ifdef USE_MIPMAP\nuniform sampler2D tDepth_mip1;\nuniform sampler2D tDepth_mip2;\nuniform sampler2D tDepth_mip3;\nuniform sampler2D tDepth_mip4;\nuniform sampler2D tDepth_mip5;\n#endif\nuniform float radius;\nuniform float bias;\nuniform float intensity;\nvec2 tapLocation(int sampleNumber, float spinAngle, out float ssR){\n float alpha = float(float(sampleNumber) + 0.5) * (1.0 / float(NUM_SAMPLES));\n float angle = alpha * (float(NUM_SPIRAL_TURNS) * TAU) + spinAngle;\n ssR = alpha;\n return vec2(cos(angle), sin(angle));\n}\nfloat CSZToKey(float z) {\n return clamp( (z+cameraNear) / (cameraNear-cameraFar), 0.0, 1.0);\n}\nvoid packKey(float key, out vec2 p) {\n float temp = floor(key * 255.0);\n p.x = temp * (1.0 / 255.0);\n p.y = key * 255.0 - temp;\n}\n#include \nfloat unpackDepthNearFar( const in vec4 rgba_depth ) {\n float depth = unpackDepth( rgba_depth );\n if (depth == 0.0)\n return -cameraFar * 1.0e10;\n return depth * (cameraNear - cameraFar) - cameraNear;\n}\nvec3 reconstructCSFaceNormal(vec3 C) {\n return normalize(cross(dFdy(C), dFdx(C)));\n}\nvec3 reconstructNonUnitCSFaceNormal(vec3 C) {\n return cross(dFdy(C), dFdx(C));\n}\nvec3 getPosition(ivec2 ssP, float depth) {\n vec3 P;\n P = reconstructCSPosition(vec2(ssP) + vec2(0.5), depth);\n return P;\n}\nvec3 getOffsetPosition(ivec2 ssC, vec2 unitOffset, float ssR) {\n ivec2 ssP = ivec2(ssR * unitOffset) + ssC;\n vec3 P;\n#ifdef USE_MIPMAP\n int mipLevel = clamp(int(floor(log2(ssR))) - LOG_MAX_OFFSET, 0, MAX_MIP_LEVEL);\n if (mipLevel == 0) {\n P.z = texelFetch(tDepth, ssP, 0).z;\n if (P.z == 0.0) P.z = -cameraFar * 1.0e10;\n }\n else if (mipLevel == 1) {\n ivec2 mipP = clamp(ssP >> mipLevel, ivec2(0), textureSize(tDepth_mip1, 0) - ivec2(1));\n P.z = unpackDepthNearFar(texelFetch(tDepth_mip1, mipP, 0));\n } else if (mipLevel == 2) {\n ivec2 mipP = clamp(ssP >> mipLevel, ivec2(0), textureSize(tDepth_mip2, 0) - ivec2(1));\n P.z = unpackDepthNearFar(texelFetch(tDepth_mip2, mipP, 0));\n } else if (mipLevel == 3) {\n ivec2 mipP = clamp(ssP >> mipLevel, ivec2(0), textureSize(tDepth_mip3, 0) - ivec2(1));\n P.z = unpackDepthNearFar(texelFetch(tDepth_mip3, mipP, 0));\n } else if (mipLevel == 4) {\n ivec2 mipP = clamp(ssP >> mipLevel, ivec2(0), textureSize(tDepth_mip4, 0) - ivec2(1));\n P.z = unpackDepthNearFar(texelFetch(tDepth_mip4, mipP, 0));\n } else if (mipLevel == 5) {\n ivec2 mipP = clamp(ssP >> mipLevel, ivec2(0), textureSize(tDepth_mip5, 0) - ivec2(1));\n P.z = unpackDepthNearFar(texelFetch(tDepth_mip5, mipP, 0));\n }\n#else\n P.z = texelFetch(tDepth, ssP, 0).z;\n if (P.z == 0.0) P.z = -cameraFar * 1.0e10;\n#endif\n P = reconstructCSPosition(vec2(ssP) + vec2(0.5), P.z);\n return P;\n}\nfloat sampleAO(in ivec2 ssC, in vec3 C, in vec3 n_C, in float ssDiskRadius, in int tapIndex, in float randomPatternRotationAngle) {\n float ssR;\n vec2 unitOffset = tapLocation(tapIndex, randomPatternRotationAngle, ssR);\n ssR = max(0.75, ssR * ssDiskRadius);\n vec3 Q = getOffsetPosition(ssC, unitOffset, ssR);\n vec3 v = Q - C;\n float vv = dot(v, v);\n float vn = dot(v, n_C);\n const float epsilon = 0.001;\n float angAdjust = mix(1.0, max(0.0, 1.5 * n_C.z), 0.35);\n#define HIGH_QUALITY\n#ifdef HIGH_QUALITY\n float f = max(1.0 - vv / (radius * radius), 0.0); return angAdjust * f * max((vn - bias) / sqrt(epsilon + vv), 0.0);\n#else\n float f = max(radius * radius - vv, 0.0); return angAdjust * f * f * f * max((vn - bias) / (epsilon + vv), 0.0);\n#endif\n}\nconst bool useNoise = true;\nfloat getRandomAngle(vec2 pos) {\n float dt= dot(pos ,vec2(12.9898,78.233));\n return TAU * fract(sin(mod(dt,3.14)) * 43758.5453);\n}\nvoid main() {\n ivec2 ssC = ivec2(gl_FragCoord.xy);\n vec4 nrmz = texture(tDepth, vUv);\n if (nrmz.z == 0.0) {\n outFragColor.r = 1.0;\n outFragColor.a = 0.0;\n packKey(1.0, outFragColor.gb);\n return;\n }\n vec3 C = getPosition(ssC, nrmz.z);\n packKey(CSZToKey(C.z), outFragColor.gb);\n float ssDiskRadius = -projScale * radius / mix(C.z, -1.0, isOrtho);\n float A;\n if (ssDiskRadius <= MIN_RADIUS) {\n A = 1.0;\n } else {\n float sum = 0.0;\n float randomPatternRotationAngle = getRandomAngle(vUv);\n vec3 n_C = vec3(nrmz.x, nrmz.y, sqrt(1.0 - dot(nrmz.xy, nrmz.xy)));\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 0, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 1, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 2, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 3, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 4, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 5, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 6, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 7, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 8, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 9, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 10, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 11, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 12, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 13, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 14, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 15, randomPatternRotationAngle);\n sum += sampleAO(ssC, C, n_C, ssDiskRadius, 16, randomPatternRotationAngle);\n float intensityDivR6 = intensity / pow(radius, 6.0);\n#ifdef HIGH_QUALITY\n A = pow(max(0.0, 1.0 - sqrt(sum * (3.0 / float(NUM_SAMPLES)))), intensity);\n#else\n A = max(0.0, 1.0 - sum * intensityDivR6 * (5.0 / float(NUM_SAMPLES)));\n A = (pow(A, 0.2) + 1.2 * A*A*A*A) / 2.2;\n#endif\n if (abs(dFdx(C.z)) < 0.02) {\n A -= dFdx(A) * (mod(float(ssC.x), 2.0) - 0.5);\n }\n if (abs(dFdy(C.z)) < 0.02) {\n A -= dFdy(A) * (mod(float(ssC.y), 2.0) - 0.5);\n }\n A = mix(1.0, A, clamp(ssDiskRadius - MIN_RADIUS,0.0,1.0));\n }\n outFragColor.r = A;\n outFragColor.a = 1.0;\n}\n"},67020:e=>{e.exports="uniform sampler2D tDiffuse;\nuniform vec2 resolution;\nvoid main() {\n vec2 ssP = vec2(gl_FragCoord.xy);\n ssP = ssP * 2.0 + mod(ssP, 2.0);\n ssP = (ssP + 0.5) * resolution * 0.5;\n outFragColor = texture(tDiffuse, ssP);\n}\n"},18952:e=>{e.exports="uniform sampler2D tDiffuse;\nuniform vec2 resolution;\nuniform float cameraNear;\nuniform float cameraInvNearFar;\n#include \nvoid main() {\n vec2 ssP = vec2(gl_FragCoord.xy);\n ssP = ssP * 2.0 + mod(ssP, 2.0);\n ssP = (ssP + 0.5) * resolution * 0.5;\n float depth = texture(tDiffuse, ssP).z;\n if (depth != 0.0)\n depth = (depth + cameraNear) * cameraInvNearFar;\n outFragColor = packDepth(depth);\n}\n"},44203:e=>{e.exports="out vec2 vUv;\nvoid main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}\n"},37787:e=>{e.exports="\nvoid main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}\n"},32968:e=>{e.exports="#include \nin float depth;\n#ifdef USE_SURFACE_CUTOUT_MAP\n#include \n#if defined( USE_SURFACE_CUTOUT_MAP )\n uniform sampler2D surface_cutout_map;\n uniform mat3 surface_cutout_map_texMatrix;\n uniform bool surface_cutout_map_invert;\n#endif\nin vec2 vUv;\n#else\n#ifdef USE_MAP\nin vec2 vUv;\nuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\nin vec2 vUvAlpha;\nuniform sampler2D alphaMap;\n#endif\n#endif\nuniform float shadowMinOpacity;\nvoid applyCutoutMaps() {\n float opacity = 1.0;\n#ifdef USE_SURFACE_CUTOUT_MAP\n #if defined( USE_SURFACE_CUTOUT_MAP )\n vec2 uv_surface_cutout_map = (surface_cutout_map_texMatrix * vec3(uv, 1.0)).xy;\n SURFACE_CUTOUT_CLAMP_TEST;\n vec3 opacity_v3 = texture(surface_cutout_map, uv_surface_cutout_map).xyz;\n if(surface_cutout_map_invert) opacity_v3 = vec3(1.0) - opacity_v3;\n opacity = average(opacity_v3);\n #else\n opacity = surface_cutout;\n #endif\n#else\n#ifdef USE_MAP\n opacity *= GET_MAP(vUv).a;\n#endif\n#ifdef USE_ALPHAMAP\n opacity *= GET_ALPHAMAP(vUvAlpha).r;\n#endif\n#endif\n#if defined(USE_SURFACE_CUTOUT_MAP) || defined(USE_MAP) || defined(USE_ALPHAMAP)\n if (opacity < shadowMinOpacity) discard;\n#endif\n}\nvoid main() {\n float normalizedLinearDepth = (depth - shadowMapRangeMin) / shadowMapRangeSize;\n float val = exp(shadowESMConstant * normalizedLinearDepth);\n#ifdef USE_HARD_SHADOWS\n val = normalizedLinearDepth;\n#endif\n applyCutoutMaps();\n outFragColor = vec4(val, 0, 0, 1);\n}\n"},77500:e=>{e.exports="#include \nvoid main() {\n float shadowIntensity = 0.5 * (1.0 - getShadowValue());\n outFragColor = vec4(0.0, 0.0, 0.0, shadowIntensity);\n}\n"},54707:e=>{e.exports="#include \nvoid main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n#include \n}\n"},9063:e=>{e.exports="#include \nout float depth;\n#ifdef USE_SURFACE_CUTOUT_MAP\nout vec2 vUv;\n#else\n#ifdef USE_MAP\nout vec2 vUv;\nuniform mat3 texMatrix;\n#endif\n#ifdef USE_ALPHAMAP\nout vec2 vUvAlpha;\nuniform mat3 texMatrixAlpha;\n#endif\n#endif\nvoid passCutoutUVCoords() {\n#ifdef USE_SURFACE_CUTOUT_MAP\n vUv = uv;\n#else\n#ifdef USE_MAP\n vUv = (texMatrix * vec3(uv, 1.0)).xy;\n#endif\n#ifdef USE_ALPHAMAP\n vUvAlpha = (texMatrixAlpha * vec3(uv, 1.0)).xy;\n#endif\n#endif\n}\nvoid main() {\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n vec4 p_Position = projectionMatrix * mvPosition;\n gl_Position = p_Position;\n depth = -mvPosition.z;\n passCutoutUVCoords();\n}\n"},88368:e=>{e.exports="#include \n#include \nuniform sampler2D sheetMap;\nuniform sampler2D idMap;\nuniform vec2 resolution;\nuniform vec3 modelIDv2;\nuniform float alphaTest;\nvoid main() {\n vec2 uv = vec2(gl_FragCoord.x * resolution.x, gl_FragCoord.y * resolution.y);\n vec4 c = texture(sheetMap, uv);\n if (c.a <= alphaTest)\n discard;\n \n outFragColor = c;\n vec4 dbId = texture(idMap, uv);\n#ifdef MRT_NORMALS\n outNormal = vec4(0.0, 0.0, 0.0, 1.0);\n#endif\n#ifdef MRT_ID_BUFFER\n outId = vec4(dbId.rgb, 1.0);\n #ifdef MODEL_COLOR\n outModelId = vec4(modelIDv2.rgb, 1.0);\n #endif\n#elif defined(ID_COLOR)\n outFragColor = vec4(dbId.rgb, 1.0);\n#elif defined(MODEL_COLOR)\n outFragColor = vec4(modelIDv2.rgb, 1.0);\n#endif\n#include \n}\n"},38383:e=>{e.exports="#include \nvoid main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n #include \n}"},6614:(e,t,i)=>{"use strict";i.r(t);var n=i(55270),r=i(82712),o=i(14813),s=i(87471),a=i(22767),l=i(19556),c=i(35922);function h(e,t){r.Extension.call(this,e,t),this.name="propertiesmanager",this._panel=null,this._onIsolateEvent=this._onIsolateEvent.bind(this),this._onSelectionChangeEvent=this._onSelectionChangeEvent.bind(this),this._onPrefChange=this._onPrefChange.bind(this),this._onContextMenu=this._onContextMenu.bind(this)}h.prototype=Object.create(r.Extension.prototype),h.prototype.constructor=h;var u=h.prototype;const d=Autodesk.Viewing.Private;u.load=function(){return this.viewer.addEventListener(l.ISOLATE_EVENT,this._onIsolateEvent),this.viewer.addEventListener(l.AGGREGATE_SELECTION_CHANGED_EVENT,this._onSelectionChangeEvent),this.viewer.prefs.addListeners(c.Prefs.OPEN_PROPERTIES_ON_SELECT,this._onPrefChange),this.viewer.registerContextMenuCallback(this.name,this._onContextMenu),!0},u.unload=function(){this.viewer.removeEventListener(l.ISOLATE_EVENT,this._onIsolateEvent),this.viewer.removeEventListener(l.AGGREGATE_SELECTION_CHANGED_EVENT,this._onSelectionChangeEvent),this.viewer.prefs.removeListeners(c.Prefs.OPEN_PROPERTIES_ON_SELECT,this._onPrefChange),this.viewer.unregisterContextMenuCallback(this.name),this.deactivate(),this.setPanel(null),this._toolbarButton&&(this.viewer.settingsTools.removeControl(this._toolbarButton),this.viewer.settingsTools.propertiesbutton=null,this._toolbarButton=null)},u.onToolbarCreated=function(){this.setDefaultPanel(),this._addToolbarButton()},u.activate=function(){return!!this._panel&&(this._panel.setVisible(!0),!0)},u.deactivate=function(){return this._panel&&this._panel.setVisible(!1),!0},u.isActive=function(){return!!this._panel&&this._panel.isVisible()},u.setPanel=function(e){return(e instanceof o.PropertyPanel||!e)&&(this._panel&&(this._panel.setVisible(!1),this.viewer.removePanel(this._panel),this._panel.uninitialize()),this._panel=e,e&&(this.viewer.addPanel(e),e.addVisibilityListener((e=>{e&&this.viewer.onPanelVisible(this._panel),this._toolbarButton.setState(e?a.Button.State.ACTIVE:a.Button.State.INACTIVE)}))),!0)},u.setDefaultPanel=function(){this.setPanel(new s.ViewerPropertyPanel(this.viewer))},u.getPanel=function(){return this._panel},u.getToolbarButton=function(){return this._toolbarButton},u._addToolbarButton=function(){if(!this._toolbarButton){var e=this._toolbarButton=new a.Button("toolbar-propertiesTool");e.setToolTip("Properties"),e.setIcon("adsk-icon-properties"),e.onClick=()=>{this._panel.setVisible(!this._panel.isVisible()),this._panel.isVisible()&&d.analytics.track("viewer.properties",{action:"View List",from:"Toolbar"})},e.setVisible(!this.viewer.prefs.get("openPropertiesOnSelect")),this.viewer.settingsTools.addControl(e,{index:1}),this.viewer.settingsTools.propertiesbutton=e}},u._onIsolateEvent=function(e){this._panel&&(this.viewer.prefs.get("openPropertiesOnSelect")||e.nodeIdArray[0]===e.model.getRootId())&&this._panel.setVisible(e.nodeIdArray.length>0||this.viewer.impl.selector.hasSelection())},u._onSelectionChangeEvent=function(e){if(!this.viewer.prefs.get("openPropertiesOnSelect"))return;let t=!1;for(let i=0;i0){t=!0;break}t?this.activate():this.deactivate()},u._onPrefChange=function(e){this._toolbarButton&&this._toolbarButton.setVisible(!e)},u._onContextMenu=function(e,t){if(this.isActive())return;if(!t.hasSelected)return;const i={title:"Show Properties",target:()=>{this.activate(),d.analytics.track("viewer.properties",{action:"View List",from:"Contextual"})}};e.unshift(i)};var f=i(11337);function p(e,t){r.Extension.call(this,e,t),this.viewer=e,this.options=t,this.name="viewersettings"}p.prototype=Object.create(r.Extension.prototype),p.prototype.constructor=p;var m=p.prototype;m.activate=function(){this.activeStatus||(this.viewer.showViewer3dOptions(!0),this.viewer.getSettingsPanel(!0).selectTab(f.ViewerSettingTab.Performance),this.activeStatus=!0);return!0},m.deactivate=function(){return this.activeStatus&&(this.viewer.showViewer3dOptions(!1),this.activeStatus=!1),!0};var g=i(72738),v=i(55280);const y=Autodesk.Viewing.Private;function b(e,t){r.Extension.call(this,e,t),this.viewer=e,this.options=t,this.name="modelstructure",this._modelstructure=null,this._onLoadModel=this._onLoadModel.bind(this),this._onUnloadModel=this._onUnloadModel.bind(this)}b.prototype=Object.create(r.Extension.prototype),b.prototype.constructor=b;var x=b.prototype;x.load=function(){return this.viewer.addEventListener(l.MODEL_ADDED_EVENT,this._onLoadModel),this.viewer.addEventListener(l.MODEL_ROOT_LOADED_EVENT,this._onLoadModel),this.viewer.addEventListener(l.MODEL_UNLOADED_EVENT,this._onUnloadModel),this.viewer.addEventListener(l.MODEL_REMOVED_EVENT,this._onUnloadModel),!0},x.unload=function(){return this.deactivate(),this.setModelStructurePanel(null),this._structureButton&&(this.viewer.settingsTools.removeControl(this._structureButton),this.viewer.settingsTools.structurebutton=null,this._structureButton=null),this.viewer.removeEventListener(l.MODEL_ADDED_EVENT,this._onLoadModel),this.viewer.removeEventListener(l.MODEL_ROOT_LOADED_EVENT,this._onLoadModel),this.viewer.removeEventListener(l.MODEL_UNLOADED_EVENT,this._onUnloadModel),this.viewer.removeEventListener(l.MODEL_REMOVED_EVENT,this._onUnloadModel),!0},x.onToolbarCreated=function(){const e=new a.Button("toolbar-modelStructureTool");e.setToolTip("Model browser"),e.setIcon("adsk-icon-structure"),e.onClick=()=>{!this._modelstructure.isVisible()?this.activate():this.deactivate()};const t=this.viewer.settingsTools;t.addControl(e,{index:0}),t.structurebutton=e,this._structureButton=e,this.restoreDefaultPanel()},x.activate=function(){return!!this._modelstructure&&(this._modelstructure.setVisible(!0),y.analytics.track("viewer.model_browser",{action:"View List"}),!0)},x.deactivate=function(){return this._modelstructure&&this._modelstructure.setVisible(!1),!0},x.isActive=function(){return!!this._modelstructure&&this._modelstructure.isVisible()},x.setModelStructurePanel=function(e){if(e===this._modelstructure)return!1;if(this._modelstructure&&(this._modelstructure.setVisible(!1),this.viewer.removePanel(this._modelstructure),this._modelstructure.uninitialize()),this._modelstructure=e,this.viewer.modelstructure=e,!e)return!0;this.viewer.addPanel(this._modelstructure);for(var t=this.viewer.impl.modelQueue().getModels(),i=0;i{e&&this.viewer.onPanelVisible(this._modelstructure),this._structureButton.setState(e?a.Button.State.ACTIVE:a.Button.State.INACTIVE)})),!0},x.restoreDefaultPanel=function(){const e=this.viewer.config;var t={docStructureConfig:e.docStructureConfig,hideSearch:(0,v.isMobileDevice)(),excludeRoot:e.modelBrowserExcludeRoot,startCollapsed:e.modelBrowserStartCollapsed},i=e.defaultModelStructureTitle||"Browser",n=new g.ViewerModelStructurePanel({...t,...(0,g.generateDefaultViewerHandlerOptions)(this.viewer)},i);this.setModelStructurePanel(n)},x._onLoadModel=function(e){this._modelstructure&&this._modelstructure.addModel(e.model)},x._onUnloadModel=function(e){this._modelstructure&&this._modelstructure.unloadModel(e.model)};var _=i(36523),E=i(66277),S=i(28833),A=i(60687),w=i(38842),T=i(41129),M=i(88946),C="dolly",P="freeorbit",D="orbit",L="worldup",I="fittoview";function R(e,t){r.Extension.call(this,e,t),this.name="navtools",this.modes=["pan",C,P,D,"fov",L,I],this.onToolChanged=this.onToolChanged.bind(this),this.onNavigationModeChanged=this.onNavigationModeChanged.bind(this),this.navToolsConfig=t.navToolsConfig||{}}R.prototype=Object.create(r.Extension.prototype),R.prototype.constructor=R;var O=R.prototype;function N(e,t,i){return function(){e.isActive(i)?e.deactivate():e.activate(i)}}O.load=function(){var e=this.viewer,t=new S.FovTool(e);if(e.toolController.registerTool(t),!this.navToolsConfig.isAECCameraControls){var i=new A.WorldUpTool(e.impl,e);e.toolController.registerTool(i)}return this.initFocalLengthOverlay(),e.addEventListener(l.TOOL_CHANGE_EVENT,this.onToolChanged),e.addEventListener(l.NAVIGATION_MODE_CHANGED_EVENT,this.onNavigationModeChanged),!0},O.updateUI=function(e){e!==this.is3d&&(this._destroyUI(),this._createUI(e))},O.onToolbarCreated=function(){var e=!this.viewer.impl.is2d;this._createUI(e)},O.navActionDisplayMode=function(e){return this.viewer.navigation.isActionEnabled(e)?"block":"none"},O._createUI=function(e){var t=this.viewer.getToolbar().getControl(_.TOOLBAR.NAVTOOLSID);if(e){var i=new E.ComboButton("toolbar-orbitTools");i.setToolTip("Orbit"),i.setIcon("adsk-icon-orbit-constrained"),i.setDisplay(this.navActionDisplayMode("orbit")),this.createOrbitSubmenu(i),t.addControl(i),t.orbittoolsbutton=i,i.setState(a.Button.State.ACTIVE),t.returnToDefault=function(){i.setState(a.Button.State.ACTIVE)}}var n=new a.Button("toolbar-panTool");n.setToolTip("Pan"),n.setIcon("adsk-icon-pan"),n.onClick=N(this,0,"pan"),n.setDisplay(this.navActionDisplayMode("pan")),t.addControl(n),t.panbutton=n,e||(t.returnToDefault=function(){n.setState(a.Button.State.ACTIVE)},t.returnToDefault());var r=new a.Button("toolbar-zoomTool");if(r.setToolTip("Zoom"),r.setIcon("adsk-icon-zoom"),r.onClick=N(this,0,C),r.setDisplay(this.navActionDisplayMode("zoom")),t.addControl(r),t.dollybutton=r,this.navToolsConfig.isAECCameraControls)t.addControl(this.createFitViewButton(t));else{var o=new E.ComboButton("toolbar-cameraSubmenuTool");o.setToolTip("Camera interactions"),o.setIcon("adsk-icon-camera"),o.saveAsDefault(),this.createCameraSubmenu(o,e),t.addControl(o),t.camerabutton=o}this.is3d=e},O.createOrbitSubmenu=function(e){var t=this.viewer.getToolbar().getControl(_.TOOLBAR.NAVTOOLSID),i=new a.Button("toolbar-freeOrbitTool");i.setToolTip("Free orbit"),i.setIcon("adsk-icon-orbit-free"),i.onClick=N(this,0,P),e.addControl(i),t.freeorbitbutton=i;var n=new a.Button("toolbar-orbitTool");n.setToolTip("Orbit"),n.setIcon("adsk-icon-orbit-constrained"),n.onClick=N(this,0,D),e.addControl(n),t.orbitbutton=n,e.onClick=n.onClick},O.createFitViewButton=function(e,t){var i=this.viewer,n=new a.Button("toolbar-fitToViewTool");return n.setToolTip("Fit to view"),n.setIcon("adsk-icon-fit-to-view"),n.onClick=function(){i.impl.fitToView(i.impl.selector.getAggregateSelection());Autodesk.Viewing.Private.analytics.track("viewer.fit_to_view",{from:"UI"});var e=i.getDefaultNavigationToolName();i.setActiveNavigationTool(e),t&&t.restoreDefault()},n.setDisplay(this.navActionDisplayMode("gotoview")),e.fittoviewbutton=n,n},O.createCameraSubmenu=function(e,t){var i=this,n=this.viewer,r=n.getToolbar().getControl(_.TOOLBAR.NAVTOOLSID);if((0,v.isTouchDevice)()){var o=new a.Button("toolbar-homeTool");o.setToolTip("Home"),o.setIcon("adsk-icon-home"),o.onClick=function(){n.navigation.setRequestHomeView(!0);var t=n.getDefaultNavigationToolName();i.activate(t),e.restoreDefault()},o.setDisplay(this.navActionDisplayMode("gotoview")),e.addControl(o),r.homebutton=o}if(e.addControl(this.createFitViewButton(r,e)),t){var s=new a.Button("toolbar-focalLengthTool");s.setToolTip("Focal length"),s.setIcon("adsk-icon-fov"),s.onClick=N(this,0,"fov"),s.setDisplay(this.navActionDisplayMode("fov")),e.addControl(s),r.fovbutton=s}var l=new a.Button("toolbar-rollTool");l.setToolTip("Roll"),l.setIcon("adsk-icon-roll"),l.onClick=N(this,0,L),l.setDisplay(this.navActionDisplayMode("roll")),e.addControl(l),r.rollbutton=l},O.onToolChanged=function(e){if("fov"===e.toolName&&this.showFocalLengthOverlay(e.active),e.active)switch(e.toolName){case"dolly":this.handleAltRelease("dollybutton");break;case"pan":this.handleAltRelease("panbutton");break;case"worldup":this.handleAltRelease("rollbutton");break;case"fov":this.handleAltRelease("fovbutton")}},O.onNavigationModeChanged=function(e){if(this.viewer.getDefaultNavigationToolName()===e.id){var t=this.viewer.getToolbar();if(!t)return;var i=t.getControl(_.TOOLBAR.NAVTOOLSID);if(!i)return;i.returnToDefault&&i.returnToDefault()}},O.handleAltRelease=function(e){var t=this.viewer.getToolbar();if(t){var i=t.getControl(_.TOOLBAR.NAVTOOLSID),n=i&&i[e];n&&n.setState(a.Button.State.ACTIVE)}},O.initFocalLengthOverlay=function(){const e=this.getDocument();var t=this.focallength=e.createElement("div");t.classList.add("message-panel"),t.classList.add("docking-panel"),t.classList.add("focal-length"),t.classList.add("docking-panel-container-solid-color-b");var i=e.createElement("table"),n=e.createElement("tbody");i.appendChild(n),t.appendChild(i),this.viewer.container.appendChild(t);var r=n.insertRow(-1),o=r.insertCell(0);o.classList.add("name"),o.setAttribute("data-i18n","Focal Length"),o.textContent=w.A.t("Focal Length"),(o=r.insertCell(1)).classList.add("value"),o.textContent="",this.fovCell=o,t.style.visibility="hidden"},O.showFocalLengthOverlay=function(e){var t=this,i=this.viewer,n=0;function r(e){if(e){M.HudMessage.displayMessage(i.container,{msgTitleKey:"Orthographic View Set",messageKey:"The view is set to Orthographic",messageDefaultValue:"The view is set to Orthographic. Changing the focal length will switch to Perspective."})}else M.HudMessage.dismiss()}function o(e){e&&s(),t.focallength&&(t.focallength.style.visibility=e?"visible":"hidden")}function s(){var e=i.getFocalLength();n!==e&&(n=e,t.fovCell.textContent=e.toString()+" mm")}function a(){if(s(),"fov"===i.toolController.getActiveToolName()){var e=i.navigation.getCamera(),t=e&&!e.isPerspective;o(!t),r(t)}}var c=i.navigation.getCamera(),h=c&&!c.isPerspective;o(e&&!h),r(e&&h),e?i.addEventListener(l.CAMERA_CHANGE_EVENT,a):i.removeEventListener(l.CAMERA_CHANGE_EVENT,a)},O.unload=function(){return this._destroyUI(),!0},O._destroyUI=function(){var e=this.viewer,t=e.getToolbar();if(!t)return!0;var i=t.getControl(_.TOOLBAR.NAVTOOLSID);if(!i)return!0;function n(e){e&&(e.subMenu.removeEventListener(T.RadioButtonGroup.Event.ACTIVE_BUTTON_CHANGED,e.subMenuActiveButtonChangedHandler(i)),i.removeControl(e.getId()),e.onClick=null)}function r(e){e&&(i.removeControl(e.getId()),e.onClick=null)}return this.is3d&&(n(i.orbittoolsbutton),i.orbittoolsbutton=null,r(i.orbitbutton),i.orbitbutton=null,r(i.freeorbitbutton),i.freeorbitbutton=null,r(i.fovbutton),i.fovbutton=null),r(i.panbutton),i.panbutton=null,r(i.dollybutton),i.dollybutton=null,n(i.camerabutton),i.camerabutton=null,r(i.rollbutton),i.rollbutton=null,r(i.fittoviewbutton),i.fittoviewbutton=null,this.focallength&&(e.container.removeChild(this.focallength),this.focallength=null),e.removeEventListener(l.TOOL_CHANGE_EVENT,this.onToolChanged),this.onToolChanged=null,e.removeEventListener(l.NAVIGATION_MODE_CHANGED_EVENT,this.onNavigationModeChanged),this.onNavigationModeChanged=null,!0},O.activate=function(e){if(this.isActive(e))return!1;if(e===I)return this.viewer.impl.fitToView(this.viewer.impl.selector.getAggregateSelection()),!0;if(-1!=this.modes.indexOf(e)){const t=this.viewer.getDefaultNavigationToolName();return-1===this.modes.indexOf(t)&&this.viewer.activateDefaultNavigationTools(this.viewer.model.is2d()),this.viewer.setActiveNavigationTool(e),!0}return!1},O.deactivate=function(){return this.viewer.setActiveNavigationTool(),!0},O.isActive=function(e){return this.viewer.getActiveNavigationTool()===e};var F=i(74481);const U=Autodesk.Viewing.GlobalManagerMixin;class B extends F.ToolInterface{constructor(e){var t;super(),t=this,this.names=["explode"],this.viewer=e,this.setGlobalManager(this.viewer.globalManager),this.active=!1,this.activate=()=>{this.active=!0},this.deactivate=function(){(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&t.setScale(0),t.active=!1},this.isActive=()=>this.active}setScale(e){let t=e,i=this.viewer.getExplodeOptions();return this.viewer.explode(t,i)}getScale(){return this.viewer.getExplodeScale()}setMagnitude(e){let t=this.viewer.getExplodeScale(),i=this.viewer.getExplodeOptions();return i.magnitude=e,this.viewer.explode(t,i)}getMagnitude(){return this.viewer.getExplodeOptions().magnitude}setDepthDampening(e){let t=this.viewer.getExplodeScale(),i=this.viewer.getExplodeOptions();return i.depthDampening=e,this.viewer.explode(t,i)}getDepthDampening(){return this.viewer.getExplodeOptions().depthDampening}}U.call(B.prototype);var k=i(8600),V=i(83081);class G{constructor(e){this.ext=e;const t=e.viewer,i=new a.Button("toolbar-explodeTool");i.setIcon("adsk-icon-explode"),i.setToolTip("Explode model"),t.modelTools.addControl(i);let n=(0,k.stringToDOM)('
');const r=t.getToolbar().container.querySelector("#toolbar-explodeTool").parentNode;(0,v.isIOSDevice)()?n.classList.add("ios"):(0,v.isAndroidDevice)()&&n.classList.add("android"),r.appendChild(n),i.addEventListener(Autodesk.Viewing.UI.Control.Event.VISIBILITY_CHANGED,(function(e){e.isVisible?n.classList.add("visible"):n.classList.remove("visible")}));const o=n.querySelector(".explode-slider");o.addEventListener("input",(function(){e.setScale(o.value)})),n.onclick=function(e){e.stopPropagation()};var s=i.container.querySelector(".adsk-control-tooltip");i.onClick=function(){e.isActive()?e.deactivate():(e.activate(),V.logger.track({category:"tool_changed",name:"explode"}))},this._slider=o,this._explodeButton=i,this._explodeSubmenu=n,this._tooltip=s,t.explodeSlider=o,t.explodeSubmenu=n,this._onExplode=this._onExplode.bind(this)}activate(){this._explodeSubmenu.classList.add("visible"),this._explodeButton.setState(a.Button.State.ACTIVE),this._tooltip.style.display="none";let e=this.ext.getScale();this._slider.value=e,this.ext.viewer.addEventListener(l.EXPLODE_CHANGE_EVENT,this._onExplode)}deactivate(){this._explodeButton.setState(a.Button.State.INACTIVE),this._hideSlider(this),this.ext.viewer.removeEventListener(l.EXPLODE_CHANGE_EVENT,this._onExplode)}destroy(){const e=this.ext.viewer;this._slider&&(this._explodeButton&&this._explodeButton.removeFromParent(),this._slider=null,this._explodeButton=null,this._explodeSubmenu=null,this._tooltip=null,e.explodeSlider=null,e.explodeSubmenu=null)}setUIEnabled(e){this._explodeButton&&(e?(this._explodeButton.setState(Autodesk.Viewing.UI.Button.State.INACTIVE),this._wasActive&&this.ext.activate()):(this._wasActive=this.ext.isActive(),this._hideSlider(this),this._explodeButton.setState(Autodesk.Viewing.UI.Button.State.DISABLED)))}_hideSlider(){this._explodeSubmenu.classList.remove("visible"),this._tooltip.style.display=""}_onExplode(e){this._slider.value=e.scale}}var z=Autodesk.Viewing.Private;class H extends r.Extension{constructor(e,t){super(e,t),this.viewer=e,this.options=t,this.name="explode",this.tool=null,this.explodeUI=null}load(){return this.tool=new B(this.viewer),this.viewer.toolController.registerTool(this.tool,this.setActive.bind(this)),!0}unload(){return this.deactivate(),this.explodeUI&&(this.explodeUI.destroy(),this.explodeUI=null),this.viewer.toolController.deregisterTool(this.tool),this.tool=null,!0}onToolbarCreated(e){this.explodeUI=new G(this,e)}activate(){return!!this.isActive()||!!this.explodeUI&&(this.explodeUI.activate(),this.viewer.toolController.activateTool("explode"),!0)}deactivate(){return!this.isActive()||(!this.explodeUI||(this.explodeUI.deactivate(),this.viewer.toolController.deactivateTool("explode"),!0))}isActive(){return this.tool.isActive()}getScale(){return this.tool.getScale()}setScale(e){return this.tool.setScale(e)}getMagnitude(){return this.tool.getMagnitude()}setMagnitude(e){return this.tool.setMagnitude(e)}getDepthDampening(){return this.tool.getDepthDampening()}setDepthDampening(e){return this.tool.setDepthDampening(e)}setStrategy(e){e!==this.getStrategy()&&this.viewer.prefs.set(z.Prefs3D.EXPLODE_STRATEGY,e)}getStrategy(){return this.viewer.prefs.get(z.Prefs3D.EXPLODE_STRATEGY)}setUIEnabled(e){this.explodeUI.setUIEnabled(e),e||this.tool.deactivate(!1)}}function W(e,t){r.Extension.call(this,e,t),this.viewer=e,this.options=t,this.name="fullscreen"}W.prototype=Object.create(r.Extension.prototype),W.prototype.constructor=W;var j=W.prototype;function q(e,t){r.Extension.call(this,e,t),this.viewer=e,this.options=t,this.name="gohome"}j.activate=function(){return this.activeStatus||(this.viewer.nextScreenMode(),this.activeStatus=!0),!0},j.deactivate=function(){return this.activeStatus&&(this.viewer.escapeScreenMode(),this.activeStatus=!1),!0},q.prototype=Object.create(r.Extension.prototype),q.prototype.constructor=q;var X=q.prototype;X.activate=function(){return this.viewer.navigation.setRequestHomeView(!0),!0},X.deactivate=function(){return!1};var Y=i(17016);const K=Autodesk.Viewing,Q=['
','
','
','
','
',"
",'
','
','
',"
",'
','
','
','
',"
","
",'
','
',"
","
",'
','
',"
","
"].join("\n");function Z(){var e,t,i,n,r,o=["fusion orbit","fusion orbit constrained"],s=0,a=1,l=2,c=.005,h=.005,u=1,d={},f=(0,v.isTouchDevice)(),p=!1,m={buttons:[],src:void 0,x:0,y:0,dx:0,dy:0,firstMove:!0,mode:void 0},g=this;this.setViewer=function(e){this.viewer=e,this.navapi=e?e.navigation:null,e&&this.setGlobalManager(e.globalManager)};var y=function(e){m.buttons[e.touches?0:e.button]=!0,m.src=e.target.className,m.x=0,m.y=0,m.dx=0,m.dy=0,m.firstMove=!0,m.mode=void 0,"ring"===m.src?m.mode=l:"edgemark-area"===m.src&&("layout-ver"===e.target.parentNode.className?m.mode=s:"layout-hor"===e.target.parentNode.className&&(m.mode=a)),A(),e.stopPropagation()},b=function(e){m.buttons[e.touches?0:e.button]=!1,m.src=void 0},x=function(e){m.buttons[0]&&(_(e),E(),m.firstMove=!1)},_=function(e){var t=e.touches?e.touches[0].pageX:e.pageX,i=e.touches?e.touches[0].pageY:e.pageY;m.firstMove||(m.dx=t-m.x,m.dy=i-m.y),m.x=t,m.y=i},E=function(){switch(m.mode){case l:if(!g.navapi.isActionEnabled("roll"))return;break;case s:case a:if(!g.navapi.isActionEnabled("orbit"))return}var e=r.target.clone().sub(r.position).normalize(),t=e.clone().cross(r.up).normalize(),i=t.clone().cross(e).normalize();if(r.up.copy(i),m.mode===l){var o=new THREE.Vector3(m.x-d.center.x,m.y-d.center.y,0),f=new THREE.Vector3(m.dx,m.dy,0).add(o);o.normalize(),f.normalize();var p=o.clone().cross(f),v=Math.asin(p.z);r.up.applyAxisAngle(e,-v*u)}else{var y,b;m.mode===s?(b=-m.dx*c,n&&(r.up=Y.Navigation.snapToAxis(r.up.clone())),y=r.up):m.mode===a&&(b=-m.dy*h,n?(m.firstMove&&(r.up=Y.Navigation.snapToAxis(r.up.clone())),y=e.clone().cross(r.up).normalize()):y=t,r.up.applyAxisAngle(y,b));var x=g.navapi.getPivotPoint(),_=r.position.clone().sub(x);_.applyAxisAngle(y,b),r.position.addVectors(x,_);var E=r.target.clone().sub(x);E.applyAxisAngle(y,b),r.target.addVectors(x,E)}r.dirty=!0},S=function(e,t){var i=t||e.clone().sub(r.position).normalize();return new THREE.Plane(i,-i.x*e.x-i.y*e.y-i.z*e.z)},A=function(){var e=r.target.clone().sub(r.position).normalize(),t=S(r.position,e).distanceToPoint(r.pivot);r.pivot.copy(e).multiplyScalar(t).add(r.position)},w=function(e){e.touches||0!==e.button||A()},T=function(){p&&g.viewer.setActiveNavigationTool()},M=function(e,t){var i,n=g.viewer.impl.hitTest(e,t);if(n&&n.intersectPoint)i=n.intersectPoint;else{var o=g.viewer.impl.viewportToRay(g.viewer.impl.clientToViewport(e,t));i=new THREE.Vector3,o.intersectPlane(S(r.target),i)}var s=r.position.clone().sub(function(){var e=r.target.clone().sub(r.position).normalize(),t=g.viewer.impl.rayIntersect(new THREE.Ray(r.position,e));return t&&t.intersectPoint?t.intersectPoint:r.target}()).add(i);g.navapi.setRequestTransition(!0,s,i,r.fov)};this.register=function(){(e=(0,k.stringToDOM)(Q)).style.display="none",this.viewer.canvasWrap.insertBefore(e,this.viewer.canvasWrap.firstChild),(t=e.querySelector(".ring")).addEventListener("mousedown",y),Array.prototype.forEach.call(e.querySelectorAll(".edgemark-area"),(function(e){e.addEventListener("mousedown",y),f&&e.addEventListener("touchstart",y)})),this.addWindowEventListener("mouseup",b),this.addWindowEventListener("mousemove",x),(i=e.querySelector(".outside")).addEventListener("mousedown",T);var n=e.querySelector(".circle");n.addEventListener("mousedown",w),f&&(t.addEventListener("touchstart",y),this.addWindowEventListener("touchend",b),this.addWindowEventListener("touchmove",x),i.addEventListener("touchstart",T),n.addEventListener("touchstart",w)),r=this.viewer.impl.camera},this.deregister=function(){this.removeWindowEventListener("mouseup",b),this.removeWindowEventListener("mousemove",x),i.removeEventListener("mousedown",T),f&&(this.removeWindowEventListener("touchend",b),this.removeWindowEventListener("touchmove",x),i.removeEventListener("touchstart",T)),this.viewer.canvasWrap.removeChild(e),e=void 0,t=void 0,i=void 0},this.activate=function(t){e.style.display="",this.handleResize(),n="fusion orbit constrained"===t;var i=this.viewer.toolController.isToolActivated("hyperlink");i&&this.viewer.toolController.deactivateTool("hyperlink"),n?(this.viewer.setDefaultNavigationTool("orbit"),this.viewer.prefs.set("fusionOrbitConstrained",!0)):(this.viewer.setDefaultNavigationTool("freeorbit"),this.viewer.prefs.set("fusionOrbitConstrained",!1)),i&&this.viewer.toolController.activateTool("hyperlink"),this.viewer.navigation.setZoomTowardsPivot(!0)},this.deactivate=function(){e.style.display="none",this.viewer.navigation.setZoomTowardsPivot(this.viewer.prefs.get("zoomTowardsPivot"))},this.getNames=function(){return o},this.getName=function(){return o[0]},this.update=function(){return!1},this.handleSingleClick=function(e){return M(e.canvasX,e.canvasY),!0},this.handleDoubleClick=function(){return!0},this.handleSingleTap=function(e){return M(e.canvasX,e.canvasY),!0},this.handleDoubleTap=function(){return!1},this.handleKeyDown=function(){return!1},this.handleKeyUp=function(){return!1},this.handleWheelInput=function(){return!1},this.handleButtonDown=function(){return!1},this.handleButtonUp=function(){return!1},this.handleMouseMove=function(e){var t=this.viewer.impl.getCanvasBoundingClientRect(),n=(t.width>t.height?new THREE.Vector2(((e.canvasX+.5)/t.width*2-1)*t.width/t.height,-(e.canvasY+.5)/t.height*2+1):new THREE.Vector2((e.canvasX+.5)/t.width*2-1,(-(e.canvasY+.5)/t.height*2+1)*t.height/t.width)).length()>1.2;return p!==n&&(i.style.cursor=n?"":"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAt1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAzMzP6+vri4uISEhKKioqtra2dnZ2EhIR9fX10dHRkZGQdHR3t7e3Hx8e5ubm1tbWoqKhWVlZKSko4ODgICAjv7+/o6OjMzMyxsbFOTk4pKSkXFxcEBAT29vbW1tZ6enpISEgLCwvhzeX+AAAAGXRSTlMANRO0nHRJHfnskIxQRKh89syDVwTWZjEJxPFEswAAAOFJREFUKM+1j+lygkAQhIflEAJe0Rw9u4CCeKKoSTTX+z9XoMJWWeX+ssrvZ3f19DQ5zOw/0DUMQPlmQ72bE2adBp8/Rp3CQUi3ILx+bxj4fjDs9T1Bmo6bbPPN8aDU4bjJt4nb+de789kSFyxn826jW3ICLNZZKU8nWWbrBTCRVm04U8TpjquRFf1Go0d7l8aYOrUR7FGEFr1S9LGymwthgX2gE/Kl0cHPOtF2xOWZ5QpIC93RflW4InkDoPRXesd5LJIMQPzV7tCMa7f6BvhJL79AVDmYTNQ1NhnxbI/uwB8H5Bjd4zQPBAAAAABJRU5ErkJggg==), auto",p=n),!1},this.handleGesture=function(){return A(),!1},this.handleBlur=function(){return!1},this.handleResize=function(){var i=e.getBoundingClientRect();const n=this.getWindow();d.left=i.left+n.pageXOffset,d.top=i.top+n.pageYOffset,d.width=i.width,d.height=i.height,d.center={},d.center.x=d.left+d.width/2,d.center.y=d.top+d.height/2;var r=.8*(n.innerWidth>n.innerHeight?n.innerHeight:n.innerWidth);e.style.width=e.style.height=r+"px",e.style.top=e.style.left="calc(50% - "+r/2+"px)",t.style.borderWidth=.1*r+"px"}}K.GlobalManagerMixin.call(Z.prototype);const $="fusionfreeorbit",J="fusionorbit";function ee(e,t){r.Extension.call(this,e,t),this.name=J,this.modes=[J,$]}ee.prototype=Object.create(r.Extension.prototype),ee.prototype.constructor=ee;var te=ee.prototype;te.load=function(){var e=this.viewer;return this.tool=new Z,this.tool.setViewer(e),e.toolController.registerTool(this.tool),this._onToolChanged=this._onToolChanged.bind(this),!0},te._updateActiveState=function(e,t){this.activeStatus=e,this.mode=t},te._onToolChanged=function(e){if("fusion orbit constrained"===e.toolName||"fusion orbit"===e.toolName){const t=this._toolbar.getControl(_.TOOLBAR.NAVTOOLSID),i="fusion orbit"===e.toolName?t.freeorbitbutton:t.orbitbutton,n=e.active?a.Button.State.ACTIVE:a.Button.State.INACTIVE;i.setState(n),this._updateActiveState(!n)}},te.onToolbarCreated=async function(e){var t=this,i=this.viewer,n=e.getControl(_.TOOLBAR.NAVTOOLSID);n&&n.orbitbutton||await i.loadExtension("Autodesk.DefaultTools.NavTools",i.config),this._toolbar=e,this.viewer.addEventListener(Autodesk.Viewing.TOOL_CHANGE_EVENT,this._onToolChanged),this.classicBehavior={},this.classicBehavior.orbitOnClick=n.orbitbutton.onClick,this.classicBehavior.freeorbitOnClick=n.freeorbitbutton.onClick,this.classicBehavior.returnToDefault=n.returnToDefault,n.freeorbitbutton.onClick=function(){var e=n.freeorbitbutton.getState();e===a.Button.State.INACTIVE?t.activate($):e===a.Button.State.ACTIVE&&t.deactivate()},n.orbitbutton.onClick=function(){var e=n.orbitbutton.getState();e===a.Button.State.INACTIVE?t.activate(J):e===a.Button.State.ACTIVE&&t.deactivate()},n.returnToDefault=function(){n.orbittoolsbutton&&n.orbittoolsbutton.setState(a.Button.State.ACTIVE)},n.orbittoolsbutton.setState(a.Button.State.INACTIVE),i.prefs.get("fusionOrbitConstrained")?(n.orbittoolsbutton.onClick=n.orbitbutton.onClick,n.orbittoolsbutton.setIcon(n.orbitbutton.iconClass),i.setDefaultNavigationTool("orbit")):(n.orbittoolsbutton.onClick=n.freeorbitbutton.onClick,n.orbittoolsbutton.setIcon(n.freeorbitbutton.iconClass),i.setDefaultNavigationTool("freeorbit")),i.setActiveNavigationTool(),n.returnToDefault&&n.returnToDefault()},te.unload=function(){var e=this.viewer;if(e.removeEventListener(Autodesk.Viewing.TOOL_CHANGE_EVENT,this._onToolChanged),this.classicBehavior){var t=e.getToolbar().getControl(_.TOOLBAR.NAVTOOLSID);t&&(t.orbitbutton&&(t.orbitbutton.onClick=this.classicBehavior.orbitOnClick),t.freeorbitbutton&&(t.freeorbitbutton.onClick=this.classicBehavior.freeorbitOnClick),t.returnToDefault=this.classicBehavior.returnToDefault,t.orbittoolsbutton&&(t.orbitbutton?t.orbittoolsbutton.onClick=t.orbitbutton.onClick:t.orbittoolsbutton.onClick=null,t.orbittoolsbutton.setIcon("adsk-icon-orbit-constrained"),t.orbittoolsbutton.setState(a.Button.State.ACTIVE))),this.classicBehavior=null}return e.setActiveNavigationTool("orbit"),e.setDefaultNavigationTool("orbit"),e.toolController.deregisterTool(this.tool),this.tool.setViewer(null),this.tool=null,this._toolbar=null,!0},te.activate=function(e){if(!this.isActive(e)){switch(e){default:case J:this.viewer.setActiveNavigationTool("fusion orbit constrained"),this.mode=J;break;case $:this.viewer.setActiveNavigationTool("fusion orbit"),this.mode=$}return this.activeStatus=!0,!0}},te.deactivate=function(){return this.activeStatus&&(this.viewer.setActiveNavigationTool(),this.activeStatus=!1),!0},n.theExtensionManager.registerExtension("Autodesk.PropertiesManager",h),n.theExtensionManager.registerExtension("Autodesk.ViewerSettings",p),n.theExtensionManager.registerExtension("Autodesk.ModelStructure",b),n.theExtensionManager.registerExtension("Autodesk.DefaultTools.NavTools",R),n.theExtensionManager.registerExtension("Autodesk.Explode",H),n.theExtensionManager.registerExtension("Autodesk.FullScreen",W),n.theExtensionManager.registerExtension("Autodesk.GoHome",q),n.theExtensionManager.registerExtension("Autodesk.Viewing.FusionOrbit",ee)},15227:e=>{e.exports={externalExtensions:[{src:"./extensions/DeveloperTools/index.js",ids:["Autodesk.DeveloperTools.AABBoxAccuracyLogger","Autodesk.DeveloperTools.Benchmark","Autodesk.DeveloperTools.BoundingVolumeDebugger","Autodesk.DeveloperTools.CameraPathCapture","Autodesk.DeveloperTools.CameraPathRecorder","Autodesk.DeveloperTools.LocalStorageCamera","Autodesk.DeveloperTools.PixelDeviationTest","Autodesk.DeveloperTools.Shortcuts","Autodesk.DeveloperTools.StatisticsOverlay","Autodesk.DeveloperTools.TrackRenderTimings","Autodesk.DeveloperTools.WebGLDrawStatistics","Autodesk.DeveloperTools.WebGLFunctionIntrusion","Autodesk.DeveloperTools.WebGLObjectCounters","Autodesk.DeveloperTools.WebGLResourceSnapshot"]},{src:"./extensions/Wireframes/Wireframes.js",ids:["Autodesk.Viewing.Wireframes"]},{src:"./extensions/ZoomWindow/ZoomWindow.js",ids:["Autodesk.Viewing.ZoomWindow"]},{src:"./extensions/AEC/LibraryExports.js",ids:["Autodesk.AEC.LevelsExtension","Autodesk.AEC.HyperlinkExtension","Autodesk.AEC.DropMeExtension","Autodesk.AEC.CanvasBookmarkExtension","Autodesk.AEC.Minimap3DExtension","Autodesk.AEC.LocationsExtension","Autodesk.AEC.Hypermodeling","Autodesk.AEC.ViewportsExtension","Autodesk.AEC.DisciplinesExtension"]},{src:"./extensions/Pushpins/PushPinExtension.js",ids:["Autodesk.BIM360.Extension.PushPin"]},{src:"./extensions/Hyperlink/Hyperlink.js",ids:["Autodesk.Hyperlink"]},{src:"./extensions/Debug/Debug.js",ids:["Autodesk.Debug"]},{src:"./extensions/BimWalk/BimWalk.js",ids:["Autodesk.BimWalk"]},{src:"./extensions/Section/Section.js",ids:["Autodesk.Section"]},{src:"./extensions/SmartSection/index.js",ids:["Autodesk.SmartSection"]},{src:"./extensions/CompGeom/index.js",ids:["Autodesk.CompGeom"]},{src:"./extensions/Snapping/index.js",ids:["Autodesk.Snapping"]},{src:"./extensions/Beeline/Beeline.js",ids:["Autodesk.Beeline"]},{src:"./extensions/FirstPerson/FirstPerson.js",ids:["Autodesk.FirstPerson"]},{src:"./extensions/webVR/webVR.js",ids:["Autodesk.Viewing.WebVR"]},{src:"./extensions/CAM360/CAM360.js",ids:["Autodesk.CAM360"]},{src:"./extensions/FusionSim/FusionSim.js",ids:["Autodesk.Fusion360.Simulation"]},{src:"./extensions/OMV/OMV.js",ids:["Autodesk.OMV"]},{src:"./extensions/SplitScreen/SplitScreen.js",ids:["Autodesk.SplitScreen"]},{src:"./extensions/CrossFadeEffects/CrossFadeEffects.js",ids:["Autodesk.CrossFadeEffects"]},{src:"./extensions/Edit2D/Edit2D.js",ids:["Autodesk.Edit2D"]},{src:"./extensions/Edit3D/Edit3D.js",ids:["Autodesk.Edit3D"]},{src:"./extensions/VisualClusters/VisualClusters.js",ids:["Autodesk.VisualClusters"]},{src:"./extensions/Moldflow/Moldflow.js",ids:["Autodesk.Moldflow"]},{src:"./extensions/PixelCompare/PixelCompare.js",ids:["Autodesk.Viewing.PixelCompare"]},{src:"./extensions/ScalarisSimulation/ScalarisSimulation.js",ids:["Autodesk.Viewing.ScalarisSimulation"]},{src:"./extensions/Measure/Measure.js",ids:["Autodesk.Measure"]},{src:"./extensions/Markup/Markup.js",ids:["Autodesk.Viewing.MarkupsCore","Autodesk.Viewing.MarkupsGui"]},{src:"./extensions/PDF/index.js",ids:["Autodesk.PDF"]},{src:"./extensions/ReCap/index.js",ids:["Autodesk.ReCap"]},{src:"./extensions/Scalaris/index.js",ids:["Autodesk.Scalaris"]},{src:"./extensions/DocumentBrowser/index.js",ids:["Autodesk.DocumentBrowser"]},{src:"./extensions/Geolocation/index.js",ids:["Autodesk.Geolocation"]},{src:"./extensions/Fusion360/AnimationExtension.js",ids:["Autodesk.Fusion360.Animation"]},{src:"./extensions/NPR/index.js",ids:["Autodesk.NPR"]},{src:"./extensions/DOF/DOFExtension.js",ids:["Autodesk.DOF"]},{src:"./extensions/MSDF/index.js",ids:["Autodesk.MSDF"]},{src:"./extensions/MemoryLimited/MemoryLimited.js",ids:["Autodesk.MemoryLimited"]},{src:"./extensions/ViewCubeUi/ViewCubeUi.js",ids:["Autodesk.ViewCubeUi"]},{src:"./extensions/MemoryLimitedDebug/MemoryManager.js",ids:["Autodesk.Viewing.MemoryLimitedDebug"]},{src:"./extensions/BimMarkups/BimMarkups.js",ids:["Autodesk.BIM360.Markups"]},{src:"./extensions/Minimap2D/Minimap2D.js",ids:["Autodesk.BIM360.Minimap"]},{src:"./extensions/GestureDocumentNavigation/GestureDocumentNavigation.js",ids:["Autodesk.BIM360.GestureDocumentNavigation"]},{src:"./extensions/RollCamera/RollCamera.js",ids:["Autodesk.BIM360.RollCamera"]},{src:"./extensions/LayerManager/LayerManager.js",ids:["Autodesk.LayerManager"]},{src:"./extensions/SceneBuilder/sceneBuilder.js",ids:["Autodesk.Viewing.SceneBuilder"]},{src:"./extensions/Popout/index.js",ids:["Autodesk.Viewing.Popout"]},{src:"./extensions/ProfileUi/index.js",ids:["Autodesk.ProfileUi"]},{src:"./extensions/PropertySearch/PropertySearch.js",ids:["Autodesk.PropertySearch"]},{src:"./extensions/StandardSurface/index.js",ids:["Autodesk.StandardSurface"]},{src:"./extensions/MaterialConverterPrism/index.js",ids:["Autodesk.Viewing.MaterialConverterPrism"]},{src:"./extensions/DWF/index.js",ids:["Autodesk.DWF"]},{src:"./extensions/ModelsPanel/index.js",ids:["Autodesk.ModelsPanel"]},{src:"./extensions/ModelAlignment/index.js",ids:["Autodesk.ModelAlignment","Autodesk.SheetAlignment"],dependencies:["Autodesk.Edit3D"]},{src:"./extensions/ModelAlignmentService/ModelAlignmentService.js",ids:["Autodesk.ModelAlignmentService"]},{src:"./extensions/MixpanelProvider/index.js",ids:["Autodesk.Viewing.MixpanelExtension"]},{src:"./extensions/Crop/Crop.js",ids:["Autodesk.Crop"]},{src:"./extensions/DataVisualization/index.js",ids:["Autodesk.DataVisualization"]},{src:"./extensions/ExtensionsPanel/index.js",ids:["Autodesk.ExtensionsPanel"]},{src:"./extensions/StringExtractor/StringExtractor.js",ids:["Autodesk.StringExtractor"]},{src:"./extensions/ModelSheetTransition/ModelSheetTransition.js",ids:["Autodesk.ModelSheetTransition"]},{src:"./extensions/BoxSelection/BoxSelectionExtension.js",ids:["Autodesk.BoxSelection"]},{src:"./extensions/glTF/index.js",ids:["Autodesk.glTF"]},{src:"./extensions/PropertyQuery/index.js",ids:["Autodesk.PropertyQuery"]},{src:"./extensions/VaultPrintUI/index.js",ids:["Autodesk.Vault.Print"]},{src:"./extensions/VaultMarkupsUI/index.js",ids:["Autodesk.Vault.Markups"],dependencies:["Autodesk.BIM360.Markups"]},{src:"./extensions/DataExchange/DataExchange.js",ids:["Autodesk.DataExchange"]},{src:"./extensions/Multipage/Multipage.js",ids:["Autodesk.Multipage"]},{src:"./extensions/DynamicDimensions/DynamicDimensions.js",ids:["Autodesk.DynamicDimensions"]},{src:"./extensions/Filter/index.js",ids:["Autodesk.Filter"],buildConfig:"./extensions/Filter/webpack.config.js"},{src:"./extensions/CustomProperties/index.js",ids:["Autodesk.CustomProperties"]},{src:"./extensions/Grid/Grid.js",ids:["Autodesk.Grid"]},{src:"./extensions/DataPersistence/persistence.js",ids:["Autodesk.DataPersistence"]},{src:"./extensions/CADLabeling/index.js",ids:["Autodesk.CADLabeling"]}],getExtensionEntryKey:function(e){return e.src.split("/")[2]}}},95062:(e,t,i)=>{"use strict";i.r(t);var n=i(55270),r=i(15227);const o="min.js";r.externalExtensions.forEach((e=>{let t=(0,r.getExtensionEntryKey)(e),i=`extensions/${t}/${t}.${o}`,s=e.dependencies;e.ids.forEach((e=>{n.theExtensionManager.registerExternalExtension(e,i,s)}))})),n.theExtensionManager.registerExternalExtension("Autodesk.DiffTool",`extensions/DiffTool/DiffTool.${o}`)},85403:(e,t,i)=>{"use strict";i.r(t),i.d(t,{analytics:()=>o});var n=i(83081),r=i(75840);const o=new class{constructor(){this.providerMap={},this.instances=[],this.superProps={},this.shouldTrack=!0,this.trackCache=[],this.oneTimers={}}registerProvider(e){if(!e)return void n.logger.error("Undefined provider");if(!e.name)return void n.logger.error("missing provider name");const t=e.name.toLowerCase();this.isProviderRegistered(t)?n.logger.warn(`Provider with name ${e.name} already registered`):this.providerMap[t]=e;const i=this.createInstance(e.name,e.defaultOptions);this.instances.push(i),this.shouldTrack&&this.init(i),this.trackCache.length>0&&(this.trackCache.forEach((e=>{let{event:t,properties:i}=e;this.track(t,i)})),this.trackCache=[])}isProviderRegistered(e){var t;return("string"==typeof e?e:null===(t=e.name)||void 0===t?void 0:t.toLowerCase())in this.providerMap}init(e){e.initialized||(e.init(),e.register(this.superProps))}createInstance(e,t){const i=e&&e.toLowerCase();if(!(i in this.providerMap))return void n.logger.error(`Unknown ${e}`);const o=this.providerMap[i],s=new o(t);if(!(s instanceof r.AnalyticsProviderInterface))throw new Error("not an analytics provider");return o.instanceCount=o.instanceCount||0,s.name=`${i}-${o.instanceCount}`,o.instanceCount++,s}optIn(e){this.instances.forEach((e=>this.init(e))),this._callMethod("optIn",e),this.shouldTrack=!0}optOut(e){this._callMethod("optOut",e),this.shouldTrack=!1}hasOptedOut(){return this._callMethod("hasOptedOut")}getDistinctId(){return this._callMethod("getDistinctId")}track(e,t,i){if(this.shouldTrack){if(i){const i={event:e,properties:t};try{const e=JSON.stringify(i);if(this.oneTimers[e])return;this.oneTimers[e]=!0}catch(e){}}0===this.instances.length?this.trackCache.push({event:e,properties:t}):this._callMethod("track",e,t)}}identify(e){this._callMethod("identify",e)}_callMethod(){for(var e=arguments.length,t=new Array(e),i=0;i({name:e.name,value:e[n](...r)})))}}},75840:(e,t,i)=>{"use strict";i.r(t),i.d(t,{AnalyticsProviderInterface:()=>n});class n{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.options=e}init(){}register(){}static get name(){return null}static get defaultOptions(){return{}}optIn(e){}optOut(e){}hasOptedOut(){}getDistinctId(){}track(e,t){}identify(e){}}},45775:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Animation:()=>r,interpolateCatmullRom:()=>o});var n=i(93263);function r(e,t,i){this.root=e,this.handler=i.animationHandler,this.data=this.handler.init(t),this.hierarchy=this.handler.parse(e),this.viewer=i.viewer,this.animator=i,this.currentTime=0,this.timeScale=1,this.isPlaying=!1,this.isPaused=!0,this.loop=!1,this.delta=.5,this.interpolationType=n.Y.LINEAR,this.setStartAndEndKeyTime()}function o(e,t){function i(e,t,i,n,r,o,s){var a=.5*(i-e),l=.5*(n-t);return(2*(t-i)+a+l)*s+(-3*(t-i)-2*a-l)*o+a*r+t}var n,r,o,s,a,l,c,h,u,d=[],f=[];return o=(n=(e.length-1)*t)-(r=Math.floor(n)),d[0]=0===r?r:r-1,d[1]=r,d[2]=r>e.length-2?r:r+1,d[3]=r>e.length-3?r:r+2,l=e[d[0]],c=e[d[1]],h=e[d[2]],u=e[d[3]],a=o*(s=o*o),f[0]=i(l[0],c[0],h[0],u[0],o,s,a),f[1]=i(l[1],c[1],h[1],u[1],o,s,a),f[2]=i(l[2],c[2],h[2],u[2],o,s,a),f}i(26206).GlobalManagerMixin.call(r.prototype),r.prototype.setStartAndEndKeyTime=function(){if(this.data.hierarchy.length>0){var e=this.data.hierarchy[0].keys;this.startKeyTime=e[0].time,this.endKeyTime=e[e.length-1].time}else this.startKeyTime=this.endKeyTime=0},r.prototype.keyTypes=[],r.prototype.defaultKey={},r.prototype.play=function(e){this.currentTime=void 0!==e?e:0,this.isPlaying=!0,this.isPaused=!1,this.reset(),this.handler.play(this)},r.prototype.pause=function(){!0===this.isPaused?this.handler.play(this):this.handler.stop(this),this.isPaused=!this.isPaused},r.prototype.stop=function(){this.isPlaying=!1,this.isPaused=!1,this.handler.stop(this)},r.prototype.goto=function(e){this.isPlaying||this.play(),this.isPaused||this.pause();var t=e-this.currentTime;this.update(t)},r.prototype.reset=function(){for(var e=0,t=this.hierarchy.length;es.index;)s=a,a=this.getNextKeyWith(o,e,a.index+1);n.prevKey[o]=s,n.nextKey[o]=a}}this.setStartAndEndKeyTime()},r.prototype.getNextKeyWith=function(e,t,i){var r=this.data.hierarchy[t].keys;for(this.interpolationType===n.Y.CATMULLROM||this.interpolationType===n.Y.CATMULLROM_FORWARD?i=i0?i:0:i>=0?i:i+r.length;i>=0;i--)if(void 0!==r[i][e])return r[i];return this.data.hierarchy[t].keys[r.length-1]},r.prototype.isPlayingOutOfRange=function(){return!1===this.isPaused&&(this.currentTimethis.endKeyTime+this.delta)},r.prototype.resetIfLooped=function(){!0===this.loop&&this.currentTime>this.endKeyTime&&(this.currentTime%=this.endKeyTime,this.reset())}},93263:(e,t,i)=>{"use strict";i.d(t,{Y:()=>n});const n={LINEAR:0,CATMULLROM:1,CATMULLROM_FORWARD:2}},4369:(e,t,i)=>{"use strict";function n(){this.animations=[]}i.r(t),i.d(t,{KeyFrameAnimator:()=>m}),n.prototype.init=function(e){if(!0===e.initialized)return e;for(var t=0;t{this.nodeChildren.push(e)}),!0),r.enumNodeFragments(e.id,(e=>{this.nodeFragments.push(e),n=this.viewer.getFragmentProxy(this.viewer.model,e),n&&(this.fragPointers.push(n),n.setMaterial(this.viewer.matman().cloneMaterial(n.getMaterial(),this.viewer.model)))}),!0),this.nodeId=t,this.epsilon=.1}function f(e,t,i){var n=this;null===e&&(e=function(e,t,i){var r=this.getDocument(),o=n.container=r.createElement("div"),s=e.name;o.id=s,o.style.cursor="pointer",o.style.visibility=i;var a=r.createElement("div");a.id=s+"-txt",a.style.cssText="display: none;position: absolute;z-index: 1;",o.appendChild(a);var c=r.createElement("img"),h=e.custom&&e.custom.att&&1===e.custom.att;c.src=h?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABv1BMVEUAAAAAAAAAAAAAAAABAwEAAAAAAAAjSRkAAAAFDASJqnZhg1IqTyAjSRkpTx8hRxggRRcAAAAhRRcKFwgAAACau4R9mnFmiFUhSBgbOhMZNhIAAAAECQMgQxcAAAAAAAAAAAAHDwXB2q2jw4yfvoivyJ6fuI6mv5eSr4KAoWu2trZpiV3Nzc0wVSUhRxhNT01vb28AAAAgRBcAAAAAAAAAAAAhRxgeQBYAAAAAAAAAAAAfQRbP5MC0zqCqyJKpyJJBYje3z6WxyKOFpXF9nmkrTiG+wb5xkGVcf0xYfEg1WSpNTU0hRhgfQhYfQhZVVVVAQEAXMREcOhQcHBwSJw0AAAAAAAAWLxAVLQ8AAAAAAAAfQhYIEgYAAACbvn+DsGCGsmSUunaItGXc6dStypelxY2ZvX2Ntm2JtGnS48fB17G40aWNuWucxH6ny4mUvnPF27aPuHCEsGHV5czI3Lq52KGvzJqz1JmqyJOqzY6ew4OYwHiGs2OEsWHb29vL4LvM5bnD3q2+3KWkyoaLtWuKtmfOzs7IyMi21pyawXqPuG/g4ODX68fI4rTG4LCu0ZKszJKlx4qZwHuBnXR2iXENcZskAAAAXnRSTlMAEAIBCAsF6BUn+vPu7erjsZyBEwP99/TRk3JgRUQ1IxwO/v79/Pv6+fn09PPq08q7sqWDe2xrY01AMBj+/v7+/v37+fn59fXz8u/c1cbFxLWonZiIcm1lYVdSQT8de/EoFwAAAgVJREFUOMutklVz21AQRiNFlswYs+M6DTdN0kCDZWZmuAKDZFtgiO2YYm6TlOEHV53ptGs5j93Xc+a7e3d36P/W9prdZ/PZ17aPxphz3mR0x91G07wTG8TDo5R3HLGH3S6fGPdSo8Na/to6W2HZBEqwPCNULlu1BkFdQSyKx4qxOMoyDDJSRB/HnTcqWbSbTmVS6V3E57hvXicOBZd1gmfj6Z1kPrmTjrMMfRizumDA+k3UTcRSyWg0mkzFEgLNlU3rIIJcns0KqJjJq0I+U0SqUJlZJv8JugU3J/QnHEwu6MCMqPN1pq+H3sFxCgOC7RyT48Ev6qLUL/gmeJrJ/p0DzSnyxTtAGLMbv9dohv8zSbomSqUpOxB0AdNXsUbnGEEQmJzKq3JrLgCaJAzms5LI1enfVefEamc/YzYQYFB6/1xBUsQex3E9UZHkUvO6X48PwQjLTKEjVRVFqUqd8v6naQsMUCNcL8xTrVJZluXyl1K7OW1+7sL71x15cvVH43O7UGi3mmc8lkCE0ByMbvXazwueycbHxiXPrUdv3hLDGiF8au/d4sO7Novtnj9k0BO45uRGTp98f2JlK/RqYzN8TK8bGTjZLTXgfvDp6rMNA0ZADAOWHI6VTYwE4WAZjz/s3V5yvIxADosIPlh0BNXHSdA8LFIfDgE8WDg5hmmx9h/40fgXth2SDk3yjP4AAAAASUVORK5CYII=":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABvFBMVEUAAAAAAAADAAAAAAAAAAACAAAAAAAAAAC5PznHVE8BAAAAAADbc27NXVeUDQaZDQaRBwAAAAAAAACHBgDuhoHVa2W9RD2QCAKYCAGPBgB0BQAAAAAAAACMBgAAAAADAAD2jonWb2n2jYjYbWfmeXPNzc3RYFqzODKfFA1RUVGKBgCVBwBvb2+WBwCBBgCFBgCWBwCLBgAAAAAAAACMBgCTBwByBQCTBwBbBACEBgAAAAAAAAAoAgBSBADgeHOoOzXmfnnofnjieHPGvr63t7e0tLTidW/ebmnba2XWZWDAT0qRHBfBSkRNTU2aFxGOBgBYTEsAAACNBgBAQEAAAABbBQAcHBxyBQBKBAAAAABfBAAAAAAAAAAsAgAkAgCJBgDZRT3MOTHQPDTVQjrlUkrjUEjRPjbOOjP/bGTvXFTqV0/fTETNOjL5Zl7eS0PzYFjxXlbiT0fUQTn0e3T7aGDWXFXbSEDTRj/PQTrOPjbb29vgamTxY1zoVE3STETTQjvSPzfOzs7IyMj5g3zzaWLXY13XYVrsXlbbU0zg4OD8lZD4gXq0eHXqd3HscWv2b2jrZmDQZWDdWVLkV1C5y9+5AAAAYHRSTlMAAgUBDggMEeDsIBj+8NHJxpxAEP754tDDtIFsYDkvI/78+/j08/DfycfHxbuvr5mTjYN0bWxkWVZTTDUjEfz8+/n59fT08vHw8PDw5NzV0Mq5uLWrm5iLfX1hV0g/ODZEwKduAAACAklEQVQ4y62SVXPbQBzEa1mWZYaY49ihBhtmKjMzw92JLLBsyxxT2mCZvnCVmU59VpO37Ms97G929nb+p05WXUvTE5GJ6aWuY+yFEdoVdAZd9MjCEYi5J0L3FZutSqVZdIYiPWaj/85j2yszAACGVyq7Lo+RIMZtxRaQOZaTwZZSLbrGLR2+aX54twVykpgVpRzgYbVGz5twYMPTV2ZkKZMupDOSzAiwfNazgQesDO9VASemU6lUWuQAgnyNXsEiiBlbEwE2W9CBQpbVAfRraIZoA5ZosII6EpB6MYrVpLxOQejowKsBL9UGSK+zCnnsF4omB7wkBkQHylDZ+rcDROD3hYcYQE0NHQhQ4f8uCQVG/XF9isJKLtI1TYBQQAgdPlqJzYcWMYBYd58/YJACD6UgpsTVA+51AhvKGgt9zQGN1xN4Dajs/vbtmBXf2mIP3/jGqiW9Q0nlGtn8tXBSnwGPWHYP5PcbLMs2JHFn+6p7WQ/ARTie3/rZm9+pZ+rfP/fawi8dhOFgqLlLX87dHOz/1D9ou/vsrcNiNgBrZzbf338yOXZvbDL2xm4ljCdn6j794cpswr/62p+wWy2m/042oQeMxudedK8mSdzGAy4/9vlm/STRtjGRTz9u3nnge2U3+O2h4o9GfXG7lcLKGWZY8ycduG3sQJCk0Tb+w3S0/Qemc4+eJchuZgAAAABJRU5ErkJggg==",c.id=s+"-img",c.style.cssText="display: block;position: absolute;z-index: 1;",o.appendChild(c),t.api.container.appendChild(o),o.addEventListener("click",(function(){a.style.display="none"===a.style.display?"block":"none"}));var u=new l.SphereGeometry(.01),d=new l.MeshPhongMaterial({color:32512,opacity:.6,transparent:!0}),f=new l.Mesh(u,d);return f.visible=!1,void 0===t.overlayScenes.annotation&&t.createOverlayScene("annotation"),t.addOverlay("annotation",f),f}.call(this,t,i.viewer,"hidden")),h.Animation.call(this,e,t,i),this.id=t.name,this.text="",this.state="hidden",this.epsilon=.1,this.viewer.api.addEventListener(Autodesk.Viewing.CAMERA_CHANGE_EVENT,(function(t){n.updateText(e.position,n.text)}))}function p(e,t,i){this.viewer=i.viewer,null===e&&(e=this.createPolyline([])),h.Animation.call(this,e,t,i),this.epsilon=.1}function m(e,t){this.animations=[],this.viewer=e,this.setGlobalManager(e.globalManager),this.keys=[],this.isPlaying=!1,this.isPaused=!0,this.updateFlag=0,this.duration=t,this.currentTime=0,this.onPlayCallback=null,this.animationHandler=new n,this.areCameraAnimationsPaused=!1,this.UPDATE_SCENE=1,this.UPDATE_CAMERA=2,this.followCam=!0,this._speedMod=1,this._loops=!1}u.prototype=Object.create(h.Animation.prototype),u.prototype.constructor=u,u.prototype.keyTypes=["pos","up","target","fov","perspective"],u.prototype.defaultKey={pos:0,up:0,target:0,fov:0,perspective:0},u.prototype.setFollowCamera=function(e){this.followCam=e},u.prototype.update=(r=[],o=new l.Vector3,s=new l.Vector3,function(e){if(!1!==this.isPlaying&&(this.currentTime+=e*this.timeScale,this.resetIfLooped(),this.followCam&&!this.isPlayingOutOfRange())){for(var t=0,i=this.hierarchy.length;t=this.currentTime){for(d=this.data.hierarchy[t].keys[0],f=this.getNextKeyWith(u,t,1);f.timed.index;)d=f,f=this.getNextKeyWith(u,t,f.index+1);a.prevKey[u]=d,a.nextKey[u]=f}var p=d[u],m=f[u];if(f.time!==d.time&&void 0!==p&&void 0!==m){var g,v=(this.currentTime-d.time)/(f.time-d.time);if(v<0&&(v=0),v>1&&(v=1),"pos"===u)g=n.position;else if("up"===u)g=n.up;else if("target"===u)g=n.target;else{if("fov"===u){n.setFov(p+(m-p)*v);continue}if("perspective"===u){(v>.5?m:p)?n.toPerspective():n.toOrthographic();continue}}if(this.interpolationType===c.Y.LINEAR)s.x=p[0]+(m[0]-p[0])*v,s.y=p[1]+(m[1]-p[1])*v,s.z=p[2]+(m[2]-p[2])*v,g.copy(s);else{r[0]=this.getPrevKeyWith(u,t,d.index-1)[u],r[1]=p,r[2]=m,r[3]=this.getNextKeyWith(u,t,f.index+1)[u],v=.33*v+.33;var y=(0,h.interpolateCatmullRom)(r,v);if(s.x=y[0],s.y=y[1],s.z=y[2],g.copy(s),this.interpolationType===c.Y.CATMULLROM_FORWARD){var b=(0,h.interpolateCatmullRom)(r,1.01*v);o.set(b[0],b[1],b[2]),o.sub(g),o.y=0,o.normalize();var x=Math.atan2(o.x,o.z);n.rotation.set(0,x,0)}}}}n.matrixAutoUpdate=!0,n.matrixWorldNeedsUpdate=!0}n.lookAt(n.target),this.animator.updateFlag|=this.animator.UPDATE_CAMERA}}),d.prototype=Object.create(h.Animation.prototype),d.prototype.constructor=d,d.prototype.keyTypes=["vis","opa"],d.prototype.defaultKey={viz:1,opa:1},d.prototype.getPrevAndNextKeys=function(e,t){let i=this.data.hierarchy[e].keys[0],n=this.getNextKeyWith(t,e,1);for(;n.timei.index;)i=n,n=this.getNextKeyWith(t,e,n.index+1);return{prevKey:i,nextKey:n}},d.prototype.update=function(e){if(!1!==this.isPlaying&&(this.currentTime+=e*this.timeScale,this.resetIfLooped(),!this.isPlayingOutOfRange()))for(var t=0,i=this.hierarchy.length;t=this.currentTime){const{prevKey:e,nextKey:i}=this.getPrevAndNextKeys(t,"vis");r=e,o=i,n.prevKey.vis=r,n.nextKey.vis=o}if(a.time<=this.currentTime||s.time>=this.currentTime){const{prevKey:e,nextKey:i}=this.getPrevAndNextKeys(t,"opa");s=e,a=i,n.prevKey.opa=s,n.nextKey.opa=a}let e=r.vis,i=o.vis;if(void 0!==e&&void 0!==i&&r.time!==o.time){const t=Math.abs(this.currentTime-o.time)1&&(t=1);const n=e+(i-e)*t;for(let e=0;e0&&this.viewer.visibilityManager.setNodeOff(this.nodeId,!1,this.viewer.model,this.nodeChildren,this.nodeFragments)}}},f.prototype=Object.create(h.Animation.prototype),f.prototype.constructor=f,f.prototype.keyTypes=["pos","text","vis"],f.prototype.defaultKey={pos:0,text:"",vis:1},f.prototype.stop=function(){h.Animation.prototype.stop.call(this),this.container.parentNode.removeChild(this.container),this.viewer.removeOverlay("annotation",this.root),this.root=null},f.prototype.updateText=function(e,t){var i=function(e,t,i){var n=e.clone(),r=new l.Matrix4;return t.updateMatrixWorld(),r.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),n.applyProjection(r),{x:(n.x+1)*i.width/2+i.offsetLeft-12,y:(1-n.y)*i.height/2+i.offsetTop+12}}(e,this.viewer.camera,this.viewer.canvas),n=this.getDocument(),r=n.getElementById(this.id+"-txt");r&&(r.innerHTML=t,r.style.left=i.x+"px",r.style.top=i.y+"px",this.text=t),(r=n.getElementById(this.id+"-img"))&&(r.style.left=i.x+"px",r.style.top=i.y-24+"px")},f.prototype.update=function(){var e=[],t=new l.Vector3,i=new l.Vector3;return function(n){if(!1!==this.isPlaying&&(this.currentTime+=n*this.timeScale,this.resetIfLooped(),!this.isPlayingOutOfRange())){var r=this.getDocument();if(this.isPaused&&this.currentTime=this.currentTime){for(f=this.data.hierarchy[o].keys[0],p=this.getNextKeyWith(d,o,1);p.timef.index;)f=p,p=this.getNextKeyWith(d,o,p.index+1);l.prevKey[d]=f,l.nextKey[d]=p}var m=f[d],g=p[d];if(p.time!==f.time&&void 0!==m&&void 0!==g){var v=(this.currentTime-f.time)/(p.time-f.time);if(v<0&&(v=0),v>1&&(v=1),"pos"===d){if(this.interpolationType===c.Y.LINEAR)i.x=m[0]+(g[0]-m[0])*v,i.y=m[1]+(g[1]-m[1])*v,i.z=m[2]+(g[2]-m[2])*v,a.position.copy(i);else if(this.interpolationType===c.Y.CATMULLROM||this.interpolationType===c.Y.CATMULLROM_FORWARD){e[0]=this.getPrevKeyWith("pos",o,f.index-1).pos,e[1]=m,e[2]=g,e[3]=this.getNextKeyWith("pos",o,p.index+1).pos,v=.33*v+.33;var y=(0,h.interpolateCatmullRom)(e,v);if(i.x=y[0],i.y=y[1],i.z=y[2],a.position.copy(i),this.interpolationType===c.Y.CATMULLROM_FORWARD){var b=(0,h.interpolateCatmullRom)(e,1.01*v);t.set(b[0],b[1],b[2]),t.sub(vector),t.y=0,t.normalize();var x=Math.atan2(t.x,t.z);a.rotation.set(0,x,0)}}}else if("text"===d){var _=Math.abs(this.currentTime-p.time)=this.currentTime){for(a=this.data.hierarchy[i].keys[0],c=this.getNextKeyWith(s,i,1);c.timea.index;)a=c,c=this.getNextKeyWith(s,i,c.index+1);r.prevKey[s]=a,r.nextKey[s]=c}var h=a[s],u=c[s];if(c.time!==a.time&&void 0!==h&&void 0!==u){var d=(this.currentTime-a.time)/(c.time-a.time);if(d<0&&(d=0),d>1&&(d=1),"points"===s){var f=d<.5?h:u;this.viewer.removeOverlay("polyline",this.root),this.root=null;for(var p=[],m=0;me.setGlobalManager(this.globalManager))),t){for(var n=0,r=e.hierarchy.length;n0?this.currentTime/this.duration*100:0),this.currentTime>=this.duration&&(this._loops?this.play(0,this.onPlayCallback):this.pause()),t|=this.UPDATE_SCENE),this.updateFlag=0,t},m.prototype.play=function(e,t){if(this.onPlayCallback=t,this.currentTime>=this.duration&&this.goto(0),this.isPlaying)this.pause();else{for(var i=0;ie){i=t[n];break}return i<0?t[t.length-1]:i}(this.currentTime,this.keys);this.goto(e)},m.prototype.prev=function(){var e=function(e,t){for(var i=-1,n=t.length-1;n>-1;n--)if(t[n]{"use strict";i.r(t),i.d(t,{MeshAnimation:()=>d});var n,r,o,s,a,l,c=i(72091),h=i(93263),u=i(45775);function d(e,t,i){u.Animation.call(this,e,t,i),this.localMatrix=new c.Matrix4,this.root.getAnimTransform(),this.relativeTransform=!t.custom||!t.custom.transform||"abs"!==t.custom.transform}d.prototype=Object.create(u.Animation.prototype),d.prototype.constructor=d,d.prototype.keyTypes=["pos","rot","scl"],d.prototype.defaultKey={pos:0,rot:0,scl:0},d.prototype.update=(n=[],r=new c.Vector3,o=new c.Vector3,s=new c.Quaternion,a=new c.Matrix4,l=new c.Matrix4,function(e){if(!1!==this.isPlaying&&(this.currentTime+=e*this.timeScale,this.resetIfLooped(),!this.isPlayingOutOfRange()))for(var t=0,i=this.hierarchy.length;t=this.currentTime){for(m=this.data.hierarchy[t].keys[0],g=this.getNextKeyWith(p,t,1);g.timem.index;)m=g,g=this.getNextKeyWith(p,t,g.index+1);d.prevKey[p]=m,d.nextKey[p]=g}var v=m[p],y=g[p];if(g.time!==m.time&&void 0!==v&&void 0!==y){var b=(this.currentTime-m.time)/(g.time-m.time);if(b<0&&(b=0),b>1&&(b=1),"pos"===p)if(this.interpolationType===h.Y.LINEAR)o.x=v[0]+(y[0]-v[0])*b,o.y=v[1]+(y[1]-v[1])*b,o.z=v[2]+(y[2]-v[2])*b,c.position.copy(o);else{n[0]=this.getPrevKeyWith("pos",t,m.index-1).pos,n[1]=v,n[2]=y,n[3]=this.getNextKeyWith("pos",t,g.index+1).pos,b=.33*b+.33;var x=(0,u.interpolateCatmullRom)(n,b);if(o.x=x[0],o.y=x[1],o.z=x[2],c.position.copy(o),this.interpolationType===h.Y.CATMULLROM_FORWARD){var _=(0,u.interpolateCatmullRom)(n,1.01*b);r.set(_[0],_[1],_[2]),r.sub(vector),r.y=0,r.normalize();var E=Math.atan2(r.x,r.z);c.rotation.set(0,E,0)}}else"rot"===p?(s.slerpQuaternions(v,y,b),c.quaternion.copy(s)):"scl"===p&&(o.x=v[0]+(y[0]-v[0])*b,o.y=v[1]+(y[1]-v[1])*b,o.z=v[2]+(y[2]-v[2])*b,c.scale.copy(o))}}if(!this.relativeTransform){var S=a.compose(c.position,c.quaternion,c.scale),A=l;c.getOriginalWorldMatrix(A),A.invert(),a.multiplyMatrices(S,A).decompose(c.position,c.quaternion,c.scale)}c.updateAnimTransform()}})},56197:(e,t,i)=>{"use strict";i.r(t),i.d(t,{AggregatedView:()=>E});var n=i(8600),r=i(55280),o=i(6684),s=i(38842);const a=Autodesk.Viewing,l=a.Private,c={BimWalk:"Autodesk.BimWalk",Bookmarks:"Autodesk.AEC.CanvasBookmarkExtension",Levels:"Autodesk.AEC.LevelsExtension",CrossFade:"Autodesk.CrossFadeEffects",Hyperlinks:"Autodesk.AEC.HyperlinkExtension",Minimap:"Autodesk.AEC.Minimap3DExtension",DropMe:"Autodesk.AEC.DropMeExtension",ZoomWindow:"Autodesk.Viewing.ZoomWindow",FusionOrbit:"Autodesk.Viewing.FusionOrbit",Disciplines:"Autodesk.AEC.DisciplinesExtension",DiffTool:"Autodesk.DiffTool",ModelStructure:"Autodesk.ModelStructure",ModelAlignment:"Autodesk.ModelAlignment",SheetAlignment:"Autodesk.SheetAlignment",ModelSheetTransition:"Autodesk.ModelSheetTransition"},h={ALIGNMENT_SERVICE_FAILED:"alignmentServiceFailure",ENVIRONMENT_CHANGED:"environmentChanged"},u={LocalStorage:()=>new Autodesk.ModelAlignmentService.AlignmentServiceLS},d=[c.ModelAlignment,c.SheetAlignment],f=e=>{return e instanceof a.BubbleNode?e.getModelKey():e instanceof a.Model?null===(t=e.getDocumentNode())||void 0===t?void 0:t.getModelKey():"string"==typeof e?e:void console.error("makeKey: Input must be key, model, or BubbleNode");var t},p=e=>isFinite(e.x)&&isFinite(e.y)&&isFinite(e.z),m=e=>{let t=e.getUpVector();return t&&(new THREE.Vector3).fromArray(t)},g=e=>p(e.position)&&p(e.target)&&p(e.up)&&isFinite(e.orthoScale),v=(e,t,i)=>{let n=0;const r=new THREE.Vector3;for(let o=0;o50*a||n++}return n},y={enabled:!1,diffBubbles:void 0,primaryBubbles:void 0,diffBubbleLabel:void 0,primaryBubbleLabel:void 0,progressCallback:void 0,supportBubbles:void 0,refNames:void 0,customCompute:void 0},b=(e,t)=>{let i=e.getVisibleModels();i=i.filter((e=>{return t=e.getBoundingBox(),p(t.min)&&p(t.max);var t}));let n,r,o,s,a=e.impl.camera.clone(),l=new Autodesk.Viewing.Private.FrustumIntersector;const c=new THREE.Vector3;for(let e=0;e=o)&&(r=h,o=d,s=t)}r&&(r.pivot=r.target,r.worldup=n,r.fov=45,t&&t(r,s),e.autocam.sync(r),e.autocam.setHomeViewFrom(r))};class x{constructor(e){this.color=e,this.enabled=!0,this.active=!1}setEnabled(e,t){t!==this.enabled&&(this.enabled=t,this.active&&!t?(e.clearThemingColors(),this.active=!1):this.update(e))}update(e){if(this.active||!this.enabled)return;const t=e.myData.fragments.fragId2dbId;for(let i=0;i1&&void 0!==arguments[1]?arguments[1]:{};return t.useConsolidation=void 0===t.useConsolidation||t.useConsolidation,this.initViewerInstance(e,t),this.memTracker=new a.ModelMemoryTracker(this.viewer,t.memoryLimit),this.viewer.impl.showTransparencyWhenMoving(),t.useDynamicGlobalOffset&&(this.dynamicGlobalOffset=new o.DynamicGlobalOffset(this.viewer)),this.options=t,this._registerLmvEventListeners(),this._loadExtensions()}initViewerInstance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=t.viewerClass||(t.headlessViewer?a.Viewer3D:a.GuiViewer3D);let n=t.viewerConfig||{};n.disabledExtensions=n.disabledExtensions||{},n.disabledExtensions.hyperlink=!0,t.multiViewerFactory?this.viewer=t.multiViewerFactory.createViewer(e,t.viewerConfig,i):this.viewer=new i(e,t.viewerConfig),this.viewer.start(void 0,void 0,void 0,void 0,t.viewerStartOptions),t.propagateInputEventTypes&&(this.viewer.toolController.propagateInputEventTypes=t.propagateInputEventTypes,this.viewer.canvas.style.outline="none")}destroy(){var e;this.dynamicGlobalOffset=null,this.memTracker=null,this.modelItems=null,null===(e=this.viewer)||void 0===e||e.finish(),this.viewer=null,a.getGlobal().LMV_MAIN_VIEW=null}_onError(){console.error(...arguments)}reset(){this.hideAll(),this.pendingCamera=null,this.cameraInitialized=!1,this.resetOnNextModelAdd=!0,this._stopActiveTools(),this._unloadDiffTool(!0),this.refPoint=void 0,this.loadersInProgress={}}getModel(e){const t=this._getItem(e);return t&&t.model}getModelAndWait(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return new Promise((i=>{const n=()=>{const t=this.getModel(e);if(t)return this.viewer.removeEventListener(Autodesk.Viewing.MODEL_ADDED_EVENT,n),this.onLoad.splice(this.onLoad.indexOf(n),1),i(t)};if(!(t&&!this.isVisible(e))){const t=this.getModel(e);if(t)return i(t)}this.viewer.addEventListener(Autodesk.Viewing.MODEL_ADDED_EVENT,n),this.onLoad.push(n)}))}isEmpty(){return!this.getVisibleNodes().length}_initForEnvironmentChange(e,t){if(this.areAllNodes2D()&&e.is3D()){let i;if(this.is3D=t,!t){const t=e=>e.visible&&e.node&&e.node.is2D();i=Object.values(this.modelItems).filter(t)[0],e=i.node}this._updateExtensions(e),this._updateRefPoint(e),t?(this.resetOnNextModelAdd=!0,this.resetTriggeringBubble=e):i.model&&(this._resetOnModeSwitch(i.model),this.viewer.impl.setUp2DMode(i.model,!1),this.viewer.getExtension("Autodesk.ViewCubeUi",(e=>e.displayViewCube(!1,!1)))),this.fireEvent({type:h.ENVIRONMENT_CHANGED,is3D:this.is3D})}}_needsReset(e){return!!this.resetOnNextModelAdd&&(!this.resetTriggeringBubble||this.resetTriggeringBubble===e)}async show(e,t){this.isEmpty()?this._initForFirstViewable(e):this._initForEnvironmentChange(e,!0);const i=e.getModelKey();let n,r=this.getModel(i);var o;r?(this.viewer.updateViewerStateForPdfReload(e),this.modelItems[i].visible=!0,this._showModel(r),n=Promise.resolve(r)):(n=null===(o=this.modelItems[i])||void 0===o?void 0:o.loadingPromise,n||(n=this.load(e,t)),this.modelItems[i].visible=!0);return this._updateModelTimestamps(),await this._consolidateVisibleModels(),n}hide(e){let t=this._getItem(e);t&&(!this.options.unloadUnfinishedModels||t.model&&t.model.isLoadDone()?t.model&&this.viewer.hideModel(t.model.id):this.unload(t.node),t.visible=!1,b(this.viewer,this.options.cameraValidator),this._updateUpVector(),this._cleanupModels(),this._initForEnvironmentChange(t.node,!1))}isVisible(e){const t=this._getItem(e);return t&&t.visible}hideAll(){for(let e in this.modelItems)this.hide(e)}getVisibleNodes(){let e=[];for(let t in this.modelItems){let i=this.modelItems[t];i.visible&&e.push(i.node)}return e}areAllNodes2D(){const e=this.getVisibleNodes();return!!e.length&&e.every((e=>!(e instanceof Autodesk.Viewing.BubbleNode)||e.is2D()))}isOtgManifestMissing(e){if(e.is2D())return!1;let t=e.getOtgGraphicsNode();if(t&&!t.error)return!1;if(t?this._onError(`Otg translation failed for viewable '${e.name()}'. Error:`,t.error):this._onError(`Otg node missing for viewable '${e.name()}'.`),this.onViewerNotification){const t=a.i18n.t("Model translation failed for view '%(viewableName)'",{viewableName:e.name()});this.onViewerNotification("error",t)}return!0}load(e){var t,i;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const r=f(e);let o=this.modelItems[r];if(o||(o={model:null,node:e,visible:!1,url:null,loadingPromise:null,error:!1},this.modelItems[r]=o),o.loadingPromise)return o.loadingPromise;if(o.model)return Promise.resolve(o.model);if(this.options.disableSvf&&this.isOtgManifestMissing(e))return o.error=!0,Promise.reject("OTG manifest missing");if(o.error)return Promise.reject("Model load failed already");if(e.is3D()){if(this.waitForFirstModel)return new Promise(((e,t)=>{this.loadPendingPromises[r]={resolve:e,reject:t}}));this.options.ignoreGlobalOffset||this.globalOffset||(this.waitForFirstModel=!0)}let s=e.getRootNode().getDocument();const l={globalOffset:this.globalOffset,applyRefPoint:!0,applyScaling:this.options.viewerUnits,isAEC:!0,loadAsHidden:!0,bubbleNode:e,disablePrecomputedNodeBoxes:!0,preserveView:!0,onFragmentListLoadProgress:()=>this._updateDiffLoadProgress(),disable3DModelLayers:!0,keepCurrentModels:!0,headlessViewer:this.options.headlessViewer,leafletOptions:{fitPaperSize:!0}},c=this._onModelLoaded.bind(this),h=t=>this._onModelLoadFailed(e,t),u=null===(t=(i=this.options).getCustomLoadOptions)||void 0===t?void 0:t.call(i,e);return u&&Object.assign(l,u),n&&Object.assign(l,n),l.bvhOptions=a.Viewer3D._getDefaultBVHOptions(Object.assign({useConsolidation:!0},l)),l.useConsolidation=!1,o.loadingPromise=new Promise(((t,i)=>{this._applyAlignmentService(e,l).then((()=>(this.viewer||i(),this.viewer.loadDocumentNode(s,e,l)))).then((e=>{this.viewer||i(),c(e),t(e)})).catch((e=>{h(e),i(e)}))})),o.loadingPromise}unloadUnderlayRaster(e){const t=this.viewer.getUnderlayRaster(e);t&&this.viewer.unloadModel(t)}unload(e){this.unloadUnderlayRaster(e),this.viewer.unloadDocumentNode(e);const t=this._getItem(e);t&&(t.loadingPromise&&this._onModelLoadEnded(t),t.model&&delete this.loadersInProgress[t.model.id]);let i=f(e);delete this.modelItems[i];const n=this.modelThemingStates[i];n&&(n.active=!1),this.onUnload.forEach((t=>t(e)))}unloadAll(e){let t=Object.keys(this.modelItems).slice();for(var i=0;i!this.isVisible(e)));let n={};e.forEach((e=>{n[e.getModelKey()]=!0}));this.getVisibleNodes().filter((e=>void 0===n[e.getModelKey()])).forEach((e=>{this.hide(e)}));const r=i.map((e=>this.show(e)));return this._setDiff(t),Promise.all(r)}getFloorSelector(){return this.levelsExtension&&this.levelsExtension.floorSelector}setBookmarks(e){this.bookmarks=e,this._updateBookmarks()}isLoadDone(){for(let e in this.modelItems){const t=this.modelItems[e],i=t&&t.model,n=!i&&!t.error,r=i&&!i.isLoadDone(),o=i&&i.getPropertyDb()&&!i.getPropertyDb().isLoadDone(),s=l.TextureLoader.requestsInProgress()>0;if(n||r||o||s)return!1}return!0}waitForLoadDone(){return new Promise((e=>{this.isLoadDone()&&e();const t=()=>{this.isLoadDone()&&(this.viewer.removeEventListener(a.GEOMETRY_LOADED_EVENT,t),this.viewer.removeEventListener(a.OBJECT_TREE_CREATED_EVENT,t),this.viewer.removeEventListener(a.TEXTURES_LOADED_EVENT,t),this.onUnload.splice(this.onUnload.indexOf(t),1),e())};this.viewer.addEventListener(a.GEOMETRY_LOADED_EVENT,t),this.viewer.addEventListener(a.OBJECT_TREE_CREATED_EVENT,t),this.viewer.addEventListener(a.TEXTURES_LOADED_EVENT,t),this.onUnload.push(t)}))}setAlignmentService(e){this.alignmentService=e,d.forEach((e=>this._connectModelAlignment(e)))}async fetchAlignments(e){if(!this.isUsingAlignmentService())return;const t=(async()=>{const t=await this.getAlignmentService();await t.fetchItems(e)})();return this.pendingAlignmentFetches.push(t),await t}fetchAlignmentsForNodes(e){const t=null==e?void 0:e.filter((e=>e.is3D())),i=null==t?void 0:t.map((e=>e.getRootNode().urn()));this.fetchAlignments(i)}static findDiffSupportModel(e){if(!e.is2D())return null;const t=e.data.phaseNames,i=Array.isArray(t)?t[0]:t;return i?e.getMasterView(i):(console.warn(`A sheet node must have a phase name. Missing for sheet: ${e.name}`),null)}static findDiffSupportModels(e){e.supportBubbles.diff=E.findDiffSupportModel(e.diffBubbles[0]),e.supportBubbles.primary=E.findDiffSupportModel(e.primaryBubbles[0])}updateHomeCamera(){b(this.viewer,this.options.cameraValidator)}_setDiff(e){if(e){Object.assign(this.diff,e,{enabled:!0});const t=e.supportBubbles;if(t)if(t.autoDetect&&E.findDiffSupportModels(e),t.diff&&t.primary)this.load(t.primary),this.load(t.diff);else{const t=e.diffBubbles&&e.diffBubbles[0];t&&t.is2D()&&console.warn("Could not find support models for 2D diff."),this.diff.supportBubbles=null}!e.empty&&e.progressCallback&&this._signalDiffLoadProgress(0,!0),this.diffStartTime=performance.now()}else Object.assign(this.diff,y);this.diffNeedsUpdate=!0,this._updateDiff()}_updateUpVector(){let e;if(this.areAllNodes2D())e=new THREE.Vector3(0,1,0);else{const t=e=>e.visible&&e.node&&e.node.is3D(),i=Object.values(this.modelItems).filter(t)[0];e=i&&i.model?m(i.model):new THREE.Vector3(0,0,1)}this.viewer.navigation.setWorldUpVector(e,!1,!0)}_showModel(e){if(e.is3d()&&!e.hasGeometry()){const t=e.getDocumentNode().getRootNode().children[0].name();return void console.warn("Ignored model with empty geometry: ",t)}this.viewer.showModel(e.id,!0),b(this.viewer,this.options.cameraValidator),this._updateUpVector()}_resetOnModeSwitch(e){this.viewer.getExtension(c.ZoomWindow)&&this.viewer.unloadExtension(c.ZoomWindow),this.options.headlessViewer||this.viewer.createUI(e,!0);const t=this.viewer.setNavigationLock(!1);this.viewer.activateDefaultNavigationTools(!this.is3D),this.viewer.setNavigationLock(t),this.viewer.navigation.setIs2D(!this.is3D),this._loadExtension(c.ZoomWindow).catch((e=>this._onError(e))),this._startBimWalkWhenReady()}_onModelAdded(e){const t=e.model;if(this.cameraInitialized||this._initCamera(t),t.getData().underlayRaster)return;t.is3d()&&this.options.useDynamicGlobalOffset&&(t.setGlobalOffset(this.viewer.impl.camera.globalOffset),this.viewer.impl.onModelTransformChanged(t));const i=e.model.getDocumentNode();if(this._needsReset(i)&&(this.resetTriggeringBubble=null,this.resetOnNextModelAdd=!1,this._resetOnModeSwitch(t)),(e=>{const t=e.getData(),i=t.loadOptions.bubbleNode;if(e.is3d()&&t.metadata.stats&&!t.metadata.stats.num_fragments){const e=i.name(),t=i.getRootNode().children[0].name();console.warn(`Empty View "${e}" in model "${t}".`)}})(t),i){const e=i.getModelKey();delete this.modelIsGhosted[e],this._updateGhosting()}}async _onGeometryLoaded(e){await this._consolidateVisibleModels(),this._updateDiff(),this.loadersInProgress[e.model.id]=100}_onExtensionLoaded(e){const t=e.extensionId;this._startBimWalkWhenReady(),t===c.Levels&&(this.levelsExtension=this.viewer.getExtension(c.Levels)),t===c.Bookmarks&&this._updateBookmarks(),d.includes(t)&&this.alignmentService&&this._connectModelAlignment(t)}_registerLmvEventListeners(){this.viewer.addEventListener(a.GEOMETRY_LOADED_EVENT,this._onGeometryLoaded.bind(this)),this.viewer.addEventListener(a.MODEL_ADDED_EVENT,this._onModelAdded.bind(this)),this.viewer.addEventListener(a.EXTENSION_LOADED_EVENT,this._onExtensionLoaded.bind(this)),this.viewer.addEventListener(a.PROGRESS_UPDATE_EVENT,this._onProgressUpdate.bind(this)),this.viewer.addEventListener(a.MODEL_ROOT_LOADED_EVENT,this._updateDiff.bind(this))}async _consolidateVisibleModels(){if(this._cleanupModels(),(0,r.isMobileDevice)()&&!this.viewer.impl.useDeferredConsolidation)return;let e=(0,n.getParameterByName)("useConsolidation");if("false"===e||!1===this.options.useConsolidation&&"true"!==e)return;if(this.viewer.impl.isWebGPU())return t="Consolidation is currently not supported for WebGPU",void(_.has(t)||(console.warn(t),_.add(t)));var t;const i=this.viewer.getVisibleModels();for(let e=0;e{const t=e.getDocumentNode(),i=this._getItem(t);i&&i.visible||this.unload(t)}))}_updateModelTimestamps(){let e=this.viewer.getVisibleModels().slice();const t=this._getDiffSupportModels();this.diff.enabled&&t&&(t.diff&&e.push(t.diff),t.primary&&e.push(t.primary)),this.memTracker.updateModelTimestamps(e)}_stopActiveTools(){const e=this.viewer.getExtension("Autodesk.Section");e&&e.isActive()&&e.enableSectionTool(!1),this.stopBimWalk();const t=!this.options.headlessViewer&&this.viewer.getPropertyPanel(!1);t&&t.isVisible()&&t.setVisible(!1)}_onModelLoaded(e){let t=this._getItem(e);t&&(e.is3d()&&(this.options.useDynamicGlobalOffset?e.setGlobalOffset(this.viewer.impl.camera.globalOffset):this.waitForFirstModel&&!this.options.ignoreGlobalOffset&&(this.globalOffset=(new THREE.Vector3).copy(e.myData.globalOffset),this._onGlobalOffsetChanged())),t.model=e,t.visible&&this._showModel(t.model),this._updateModelTimestamps(),this._updateDiffLoadProgress(),this._updateModelTheming(e),this._onModelLoadEnded(t))}_onModelLoadFailed(e,t){this._onError(`Failed to load model: ${e.name()}. Error code: ${t}`);const i=this._getItem(e);i&&(i.error=!0,this._onModelLoadEnded(i))}_onModelLoadEnded(e){e.loadingPromise=null;const t=e.node;t.is3D()&&this.waitForFirstModel&&(this.waitForFirstModel=!1,Object.keys(this.loadPendingPromises).forEach((e=>{var t;const i=null===(t=this.modelItems[e])||void 0===t?void 0:t.node;if(!i)return;const{resolve:n,reject:r}=this.loadPendingPromises[e];this.load(i).then((e=>{n(e)})).catch((e=>{r(e)}))})),this.loadPendingPromises={}),this.onLoad.forEach((e=>e(t)))}_initCamera(e,t){this.viewer.impl.setViewFromFile(e,!t),this.options.cameraValidator&&this.options.cameraValidator(this.viewer.impl.camera,e),this.viewer.impl.controls.recordHomeView(),this.cameraInitialized=!0,this.pendingCamera&&this._applyPendingCameraWhenReady()}_getItem(e){var t;let i=f(e);return null===(t=this.modelItems)||void 0===t?void 0:t[i]}_updateRefPoint(e){if(this.options.useDynamicGlobalOffset)return;if(!(this.isEmpty()||this.areAllNodes2D())||!e.is3D()||this.options.ignoreGlobalOffset)return;const t=e.getAecModelData();if(!t)return;let i=t.refPointTransformation;if(!i)return;const n={x:i[9],y:i[10],z:0};if(this.isUsingAlignmentService()){var r;const t=e.getRootNode().urn(),i=null===(r=this.alignmentService)||void 0===r?void 0:r.getTransform(t);if(void 0===i)return;i&&(n.x=i.elements[12],n.y=i.elements[13])}if(this.refPoint=n,this.options.viewerUnits){const e=Autodesk.Viewing.Private.convertUnits("ft",this.options.viewerUnits,1,1);this.refPoint.x*=e,this.refPoint.y*=e,this.refPoint.z*=e}const o=this.globalOffset&&THREE.Vector3.prototype.distanceToSquared.call(this.refPoint,this.globalOffset);(!this.globalOffset||o>4e6)&&(this.globalOffset=(new THREE.Vector3).copy(this.refPoint),this.unloadAll((e=>e.model&&e.model.is3d())),this._onGlobalOffsetChanged())}_onGlobalOffsetChanged(){const e=this.viewer.getExtension(c.Bookmarks);e&&e.resetGlobalOffset(this.globalOffset)}_getDefaultExtensions(){return[{name:c.CrossFade,getLoadingCondition:()=>!a.isMobileDevice()},{name:c.Levels,getOptions:()=>this.viewer.config},{name:c.ModelStructure,getOptions:()=>this.viewer.config},{name:c.Hyperlinks,getOptions:()=>({loadViewableCb:(e,t)=>{this.onHyperlink?this.onHyperlink(e,t):this.switchView([e])}})},{name:c.Minimap,getLoadingCondition:()=>!this.options.disableMinimap,getOptions:()=>({trackUsage:this._trackMinimapUsage?this._trackMinimapUsage.bind(this):void 0})},{name:c.Bookmarks,getLoadingCondition:()=>this.is3D,getOptions:()=>({globalOffset:this.globalOffset,onBookmark:(e,t)=>{this.onBookmark?this.onBookmark(e,t):this.switchView([e]),t.isPerspective&&this.startBimWalk()},clusterfck:this.options.clusterfck,clusteringThreshold:110})},{name:c.DropMe,getLoadingCondition:()=>!1===this.is3D,getOptions:()=>({enableGuidance:!0,onDrop:this._handleDropMe.bind(this),getTransformForNode:this._getTransformForNode.bind(this),getMain3DView:this._findMain3DView.bind(this),onHandleViewIn3D:this._handleViewIn3D.bind(this)})}]}async _loadExtensions(){this.extensions=this.options.extensions||this._getDefaultExtensions();const e=[];return this.extensions.forEach((t=>{t.getLoadingCondition&&!t.getLoadingCondition(this)||(e.push(this._loadExtension(t.name,t.getOptions&&t.getOptions(this),t.onLoadedCB)),this.extensionLoaded[t.name]=!0)})),Promise.all(e)}async _loadExtension(e,t,i){if(this.viewer.impl.isWebGPU()&&["Autodesk.AEC.LevelsExtension","Autodesk.CrossFadeEffects","Autodesk.AEC.Minimap3DExtension","Autodesk.SheetAlignment"].includes(e))return void console.warn("Skipped extension because it does not support WebGPU yet: ",e);const n=this.options.extensionOptions,r=n&&n[e],o=Object.assign({},t,r),s=this.viewer.loadExtension(e,o);return i&&s.then((e=>{i(this,e)})).catch((e=>{i(this,null,e)})),s}_updateExtensions(e){const t=(e,t,i,n,r)=>{const o=this.extensionLoaded[e];!o&&i?this._loadExtension(e,t,n).catch((e=>this._onError(e))):o&&!i&&(r&&r(this),this.viewer.unloadExtension(e)),this.extensionLoaded[e]=i};this.extensions.forEach((i=>{i.getLoadingCondition&&t(i.name,i.getOptions&&i.getOptions(this),i.getLoadingCondition(this,e),i.onLoadedCB,i.onBeforeUnloadCB)}))}_initForFirstViewable(e){this.is3D!==e.is3D()&&(this.resetOnNextModelAdd||(this.reset(),this.resetTriggeringBubble=e),this.is3D=e.is3D()),this._updateExtensions(e),this._updateRefPoint(e)}_updateBookmarks(){let e=this.viewer.getExtension(c.Bookmarks);e&&e.resetBookmarks(this.bookmarks)}_applyPendingCameraWhenReady(){if(!this.cameraInitialized)return;let e=this.pendingCamera;this.pendingCamera=null;let t=this.viewer.impl.camera;e.position&&t.position.copy(e.position),e.target&&t.target.copy(e.target),e.up&&t.up.copy(e.up),e.fov&&(t.fov=e.fov),void 0!==e.isPerspective&&(t.isPerspective=e.isPerspective);const i=this.globalOffset||this.viewer.model.getData().globalOffset;!this.is3D||this.options.ignoreGlobalOffset||e.ignoreGlobalOffset||(t.position.sub(i),t.target.sub(i)),this.viewer.impl.syncCamera()}_findMain3DView(e){const t=e.getMasterViews();if(t[0])return t[0];const i=null==e?void 0:e.getRootNode();if(!i)return;const n=null==i?void 0:i.search(a.BubbleNode.MODEL_NODE),r=n.filter((e=>e.name().toLowerCase().startsWith("{3d")))[0];return r||n[0]}_handleDropMe(e,t,i,n,r){if(this.onDrop)this.onDrop(e,t,i,n);else if(n){if(this.switchView(n),e&&t){let i={position:e,target:e.clone().add(t),isPerspective:!0,ignoreGlobalOffset:r};this.setCameraGlobal(i)}}else console.warn("DropMe handler: Document does not contain a 3D view to switch to")}async _handleViewIn3D(e,t,i,n){if(i&&!this.options.ignoreGlobalOffset){const i=this.globalOffset||this.viewer.model.getData().globalOffset;e=e.clone().add(i),t=t.clone().add(i)}let r={position:e,target:t,isPerspective:!0};this.setCameraGlobal(r);const o=await this.viewer.getExtensionAsync(c.BimWalk);o.activate(),o.disableGravityUntilNextMove(),n&&n()}_startBimWalkWhenReady(){if(!this.bimWalkStartPending)return;let e=!this.resetOnNextModelAdd,t=this.viewer.getExtension(c.BimWalk),i=this.viewer.getExtension(c.FusionOrbit);e&&t&&i&&(t.activate(),this.bimWalkStartPending=!1)}_unloadDiffTool(e){this.viewer.getExtension(c.DiffTool)&&(e&&(this.diffCache.length=0),this.viewer.unloadExtension(c.DiffTool))}_onProgressUpdate(e){e.model&&e.state===a.ProgressState.LOADING&&(this.loadersInProgress[e.model.id]=e.percent,this._updateDiffLoadProgress())}_getDiffSupportModels(){if(this.diff.supportBubbles)return{diff:this.getModel(this.diff.supportBubbles.diff),primary:this.getModel(this.diff.supportBubbles.primary)}}_diffSupportModelsReady(){const e=this._getDiffSupportModels(),t=e.diff&&e.diff.isLoadDone(),i=e.primary&&e.primary.isLoadDone();return t&&i}_updateGhosting(){let e={};this.diff.enabled&&this.diffBubbles&&(e=this.diffBubbles.forEach((t=>e[t.getModelKey()])));for(let t in this.modelItems){let i=this.getModel(t);if(!i)continue;let n=this.diff.enabled&&!e[t];n!=!!this.modelIsGhosted[t]&&(i.setAllVisibility(!n),n?this.modelIsGhosted[t]=!0:delete this.modelIsGhosted[t])}this.viewer.refresh(!0)}getModels(e){return e.map((e=>this.getModel(e)))}setModelTheming(e){e=e||{};const t=this.modelThemingStates;this.modelThemingStates={};for(let i in e){let n=t[i];const r=e[i],o=this.getModel(i);if(n){!n.color.equals(r)&&(n.color.copy(r),n.active=!1)}else n=new x(r);this.modelThemingStates[i]=n,o&&this._updateModelTheming(o)}for(let i in t){const n=t[i],r=!e[i],o=this.getModel(i);r&&n.active&&o&&this.viewer.clearThemingColors(o)}}_signalDiffLoadProgress(e,t){if(t||e!==this._lastDiffLoadPercent){const t=a.i18n.t("Loading Model for Change Visualization");this.diff.progressCallback(e,t),this._lastDiffLoadPercent=e}}_updateDiffLoadProgress(){if(!this.diffNeedsUpdate||!this.diff.enabled||this.diff.empty||!this.diff.progressCallback)return;const e=this.getModels(this.diff.diffBubbles),t=this.getModels(this.diff.primaryBubbles),i=e.concat(t),n=this._getDiffSupportModels();n&&i.push(n.diff,n.primary);const r=i.filter(Boolean).length;if(re+(0|this.loadersInProgress[t.id]),t=i.reduce(e,0),n=100*i.length,r=10+Math.floor(90*t/n);return void this._signalDiffLoadProgress(r)}const o=i.reduce(((e,t)=>e+t.getData().fragsLoadedNoGeom),0),s=i.reduce(((e,t)=>e+t.getData().metadata.stats.num_fragments),0),a=10+Math.floor(90*o/s);this._signalDiffLoadProgress(a)}_updateDiff(){if(!this.diffNeedsUpdate)return;if(this._updateGhosting(),this._updateDiffLoadProgress(),!this.diff.enabled)return this._unloadDiffTool(),void this._updateAllModelTheming();const e=this.getModels(this.diff.diffBubbles),t=this.getModels(this.diff.primaryBubbles);if(this.diff.customCompute){let i=t,n=e;const r=[this.diff.customCompute].flat();for(const e of r)[i,n]=e.init(i,n)}for(let i=0;i{this.diff.progressCallback&&(t!==Autodesk.DiffTool.DIFFTOOL_PROGRESS_STATES.LoadingPropDb?(100===e&&this.onDiffDone&&this.onDiffDone(),this.diff.progressCallback(e,a.i18n.t("Computing change visualization"))):this.diff.progressCallback(e,a.i18n.t("Loading element properties")))},excludeFromDiff:(e,t)=>this.levelsExtension&&!this.levelsExtension.floorSelector.isVisible(e,t),setNodesOff:e=>{const t=this.levelsExtension;t&&t.floorSelector._floorSelectorFilter.reApplyFilter(e)},hideModeSwitchButton:!0,externalUi:this.diff.externalUi,attachDetachViewerEventHandlers:this.diff.attachDetachViewerEventHandlers,onDiffModeChanged:this.diff.onDiffModeChanged,onInitialized:this.diff.onInitialized};this._loadExtension(c.DiffTool,n).catch((e=>this._onError(e)))}}_updateModelTheming(e){const t=f(e),i=this.modelThemingStates[t];if(!i)return;const n=!this.viewer.getExtension(c.DiffTool);i.setEnabled(e,n),i.update(e),this.viewer.impl.invalidate(!0)}_updateAllModelTheming(){for(let e in this.modelItems){let t=this.getModel(e);t&&this._updateModelTheming(t)}}async getAlignmentService(){return this.alignmentService||(this._alignmentServicePromise?await this._alignmentServicePromise:(this._alignmentServicePromise=this._initAlignmentService(),await this._alignmentServicePromise,this._alignmentServicePromise=null)),this.alignmentService}isUsingAlignmentService(){return this.options.createModelAlignmentService||this.alignmentService}async _initAlignmentService(){const e=this.options.createModelAlignmentService;if(!e)return;await this.viewer.loadExtension("Autodesk.ModelAlignmentService").then((async()=>{const t=await e();this.viewer&&this.setAlignmentService(t)}))}async _getTransformForNode(e){const t=await this.getAlignmentService();if(!t)return;await Promise.all(this.pendingAlignmentFetches);const i=e.getRootNode().urn(),n=e.is2D()?e.name():void 0;return await t.loadTransform(i,n)}async _applyAlignmentService(e,t){if(e.is2D())return;if(this.alignmentServiceFailed)return;const i=await this._getTransformForNode(e);this._checkAlignmentService()&&(!function(){l.analytics.track(...arguments)}("viewer.modelalignment.alignment_loaded",{hasAlignmentTransform:Boolean(i)}),i&&(t.applyRefPoint=!1,t.placementTransform=i,t.applyPlacementInModelUnits=!0))}_checkAlignmentService(){if(this.alignmentServiceFailed||!this.alignmentService)return!1;if(this.alignmentService.isWorking())return!0;const e=s.A.t("Failed to connect to alignment service: Model alignment support is temporarily unavaible. Models with alignment transforms may not appear correctly and alignment editing is disabled.");this.fireEvent({type:h.ALIGNMENT_SERVICE_FAILED,message:e}),l.logger.error("AggregatedView: Disabled alignment due to alignment service connection error."),this.alignmentServiceFailed=!0}_connectModelAlignment(e){const t=this.viewer.getExtension(e);t&&t.setAlignmentService(this.alignmentService)}}E.ExtNames=c,E.AlignmentServices=u,E.Events=h},65251:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CameraLS:()=>a});var n=i(26206);const r=e=>isFinite(e.x)&&isFinite(e.y)&&isFinite(e.z),o=e=>{const t=e.isPerspective||isFinite(e.orthoScale);return r(e.position)&&r(e.target)&&r(e.up)&&t};class s{constructor(){this.cacheObj={}}setItem(e,t){this.cacheObj[e]=t}getItem(e){return this.cacheObj[e]}}class a{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{useLocalStorage:!0};this.aggregatedView=e,this.options=t,this.key=void 0,this.options.useLocalStorage?this.cache=Autodesk.Viewing.Private.LocalStorage:this.cache=new s,this.unloadCb=this.saveCamera.bind(this),this.addWindowEventListener("beforeunload",this.unloadCb)}destroy(){this.unsetKey(),this.removeWindowEventListener("beforeunload",this.unloadCb)}setKey(e){this.key=e}unsetKey(){this.key=void 0}saveCamera(){if(!this.aggregatedView.cameraInitialized||!this.key)return;const e=this.aggregatedView.viewer.impl.camera;if(!o(e))return;const t=this.aggregatedView.isBimWalkActive(),i=this.aggregatedView.is3D?this.aggregatedView.globalOffset:void 0;this.saveStartCamera(this.key,this.aggregatedView.viewer.impl.camera,t,i)}saveStartCamera(e,t,i,n,r){const o=JSON.stringify({offset:n,position:t.position,target:t.target,up:t.up,orthoScale:t.orthoScale,isPerspective:t.isPerspective,fov:t.fov,startBimWalk:i,ignoreGlobalOffset:r});this.cache.setItem(e,o)}clearItem(e){this.cache.setItem(e)}loadCamera(){if(!this.key)return!1;let e;try{const t=this.cache.getItem(this.key);e=JSON.parse(t)}catch(e){}if(!(e&&e.position&&e.target&&e.up))return!1;const t=e=>new THREE.Vector3(parseFloat(e.x),parseFloat(e.y),parseFloat(e.z)),i={position:t(e.position),target:t(e.target),up:t(e.up),isPerspective:Boolean(e.isPerspective),fov:parseFloat(e.fov),ignoreGlobalOffset:Boolean(e.ignoreGlobalOffset)};if(e.orthoScale&&(i.orthoScale=parseFloat(e.orthoScale)),!o(i))return!1;const n=e.offset?t(e.offset):void 0;if(n){if(!r(n))return;i.position.add(n),i.target.add(n)}this.aggregatedView.setCameraGlobal(i),e.startBimWalk&&this.aggregatedView.startBimWalk()}}n.GlobalManagerMixin.call(a.prototype)},26940:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Document:()=>p});var n=i(99211),r=i(57480),o=i(8412),s=i(84045),a=i(55280),l=i(83081),c=i(11653),h=i(8600),u=(0,a.getGlobal)(),d=u;const f=Object.freeze({Raster:"Raster",Vector:"Vector"});function p(e,t,i){this.myPath=t,this.myData=e,e&&(this.docRoot=new n.BubbleNode(e),this.docRoot.setDocument(this)),this.myNumViews={},this.acmSessionId=i;var r=this;this.docRoot.traverse((function(e){if(e.isViewPreset()){const t=e.findParentGeom2Dor3D();if(t){let e=r.myNumViews[t.guid()]||0;r.myNumViews[t.guid()]=e+1}}}))}p.load=function(e,t,i,n){let a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};const l=p.getDocumentPath(e);let d,f;function m(t){let i=e.split(":");i=i[1];const n=(0,h.fromUrlSafeBase64)(i);for(let e=0;e-1)return!0;return!1}if(e.startsWith("urn")&&m(["urn:adsk.wipprodanz","urn:adsk.wipstganz"])||o.endpoint.getApiFlavor().match(/APAC/i)){const e=o.endpoint.getApiFlavor(),t=(0,o.getEnv)();null!==t.match(/prod/i)?o.endpoint.setEndpointAndApi("https://cdn-apac.derivative.autodesk.com",e):null!==t.match(/stag/i)&&o.endpoint.setEndpointAndApi("https://cdn-apac-stg.derivative.autodesk.com",e)}if(e.startsWith("urn")&&m(["urn:adsk.wipemea","urn:adsk.wipbimemea"])){var g=o.endpoint.getApiFlavor(),v=(0,o.getEnv)(),y=g===o.endpoint.ENDPOINT_API_DERIVATIVE_SERVICE_V2&&!v.endsWith("EU"),b=v.endsWith("US")&&g===o.endpoint.ENDPOINT_API_D3S,x=g===o.endpoint.ENDPOINT_API_DERIVATIVE_STREAMING&&!g.endsWith("_EU");if(g+="_EU",y)o.endpoint.setEndpointAndApi(null,g);else if(b){v=v.replace("US","EU"),(0,o.setEnv)(v);var _=c.EnvironmentConfigurations[v];o.endpoint.setEndpointAndApi(_.ROOT,g)}else x&&o.endpoint.setEndpointAndApi(null,g)}function E(e){(o.endpoint.isSVF2Backend()||o.endpoint.isOtgBackend())&&(d=d?e.urn+","+d:e.urn);const n=new p(e,l,d);f=n.getGlobalMessages();if(n.docRoot.findAllViewables().length>0)t&&t(n,f);else{const e=r.ErrorCodes.BAD_DATA_NO_VIEWABLE_CONTENT;i&&i(e,"No viewable content",f)}}function S(e,t,n){if(401===e&&void 0===u.LMV_THIRD_PARTY_COOKIE)u.LMV_THIRD_PARTY_COOKIE=!1,(0,c.refreshRequestHeader)(c.token.accessToken),A();else if(i){var o="Error: "+e+" ("+t+")",s=(0,r.getErrorCode)(e);i(s,o,e,t,n)}}function A(){const e=!n||(o.endpoint.isSVF2Backend()||o.endpoint.isOtgBackend())&&!n["x-ads-acm-scopes"];if(!d&&!e)return n.oauth2AccessToken||(n.oauth2AccessToken=c.token.accessToken),void s.ViewingService.getACMSession(o.endpoint.getApiEndpoint(),n,(function(e){d=e,a.queryParams=d?"acmsession="+d:"",o.endpoint.setAcmSession(d),s.ViewingService.getManifest(o.endpoint.initLoadContext(a),l,E,S)}),i);const t=o.endpoint.initLoadContext(a);s.ViewingService.getManifest(t,l,E,S)}A()},p.getDocumentPath=function(e){if(-1===e.indexOf("urn:")){if(-1!==e.indexOf("://"))return e;var t=e;return"undefined"!=typeof window?(0!==t.indexOf("/")&&(t="/"+t),d.location.protocol+"//"+d.location.host+t):t}return e},p.requestThumbnailWithSecurity=function(e,t){var i={responseType:"blob",skipAssetCallback:!0,size:e.width,guid:e.guid,acmsession:e.acmsession},n="urn:"+e.urn,r=void 0;if(!(0,a.getGlobal)().USE_OTG_DS_PROXY){var l=(0,o.getEnv)();r=c.EnvironmentConfigurations[l].UPSTREAM;const e=(0,c.getUpstreamApiData)(l,o.endpoint.getApiFlavor());i.apiData=e}s.ViewingService.getThumbnail(o.endpoint.initLoadContext({endpoint:r}),n,(function(e){t(null,e)}),(function(){t("error",null)}),i)},p.prototype.getAcmSessionId=function(e){return this.acmSessionId?p.getAcmSessionId(e,this.acmSessionId):""},p.getAcmSessionId=function(e,t){if(!e)return"";let i=e.indexOf("urn:adsk.fluent")>=0;return(0,a.getGlobal)().USE_OTG_DS_PROXY||i||!o.endpoint.isSVF2Backend()&&!o.endpoint.isOtgBackend()?t:t.split(",")[1]||""},p.prototype.getPdfRenderingMode=function(){return this._pdfRenderingMode||f.Vector},p.prototype.setPdfRenderingMode=function(e){this._pdfRenderingMode=e},p.prototype.getFullPath=function(e){if(!e)return e;var t=e;if((0,o.isOffline)())-1==t.indexOf((0,o.getOfflineResourcePrefix)())&&(t=decodeURIComponent((0,o.getOfflineResourcePrefix)())+t.substr(t.indexOf("/")));else if(0===e.indexOf("urn")){if(0===e.indexOf("urn:adsk.fluent")||!o.endpoint.isSVF2Backend()&&!o.endpoint.isOtgBackend())t=o.endpoint.getItemApi(null,e),o.endpoint.ENDPOINT_API_MODEL_DERIVATIVE_V2===o.endpoint.getApiFlavor()&&(t=decodeURIComponent(t));else{const i=(0,o.getEnv)(),n=c.EnvironmentConfigurations[i],r=(0,a.getGlobal)().USE_OTG_DS_PROXY?null:n.UPSTREAM,s=(0,c.getUpstreamApiData)(i,o.endpoint.getApiFlavor());t=o.endpoint.getItemApi(r,e,s)}}else 0===e.indexOf("$file$")&&(t=this.myPath.replace("/bubble.json",e.replace("$file$","")));return t},p.prototype.getThumbnailOptions=function(e,t,i){var n=t||200,r=i||200,o=e.urn||this.myData.urn;return{urn:o,width:n,height:r,guid:e.guid,acmsession:this.getAcmSessionId(o)}},p.prototype.getThumbnailPath=function(e,t,i){var n=this.getThumbnailOptions(e,t,i),r=o.endpoint.getThumbnailApi(null,n.urn)+"?width="+n.width+"&height="+n.height;n.guid&&(r+="&guid="+n.guid),n.acmsession&&(r+="&acmsession="+n.acmsession);var s=o.endpoint.getQueryParams();return s&&(r+="&"+s),r},p.prototype.getLeafletZipParams=function(e,t){for(var i,n,r=t.search({role:"leaflet-zip"},!1),o=0;oe)return i;i++}return l.logger.log("unexpected leaflet tileSize"),0}(e.tileSize),this.getLeafletZipParams(e,t),e.loadFromZip=e.zips&&e.zips[0].loadFromZip,e.zips&&(0,o.isOffline)()&&(0,a.isMobileDevice)()&&(e.zips=e.zips.slice(0,1),e.maxLevel=e.zips[0].zipMaxLevel)},p.prototype.derivePdfUrnHack=function(e,t){var i=e.parent.children.slice();i.sort(((e,t)=>e._raw().order-t._raw().order));let r;r=i.length<=75?i[i.length-1]:i[74];let o=r.search(n.BubbleNode.GEOMETRY_F2D_NODE)[0];if(o){var s=o.urn().indexOf("/"),a=o.urn().slice(0,s),l=e._raw().order,c=0|l%75,h=1+(0|l/75),u=a+`/output/${c}/${c}.pdf`;return t.page=h,t.isPdf=!0,console.log("pdf path",u),u}return null},p.prototype.getViewableUrn=function(e,t){let i;if(e instanceof n.BubbleNode)i=e;else{let t=this.docRoot.search(e);i=t.length>0?t[0]:new n.BubbleNode(e)}const r=()=>{const e=i.search(n.BubbleNode.GEOMETRY_F2D_NODE);if(e.length)return e[0].urn()},o=()=>{if(i.isRevitPdf()){const e=r();if(e)return e}var e=!0;const o=JSON.parse(localStorage.getItem("Autodesk.Viewing.Private.GuiViewer3D.SavedSettings.AEC"));o&&(e=o[Autodesk.Viewing.Private.Prefs2D.VECTOR_VIEWING]??!0);var s="true"===(0,h.getParameterByName)("vectorPdf")||(0,a.getGlobal)().LMV_VECTOR_PDF||this.myData&&this.myData.isVectorPDF||!!i.data.isVectorPDF,l="false"===(0,h.getParameterByName)("vectorPdf")||(0,a.getGlobal)().LMV_RASTER_PDF;s?e=!0:l&&(e=!1);var c=i.search(n.BubbleNode.PDF_PAGE_NODE),u=i.search(n.BubbleNode.LEAFLET_NODE);if(e&&u.length>0&&t&&(this.getLeafletParams(t,i,u[0]._raw()),t.tempRasterPath=u[0].urn()),e&&c.length)return t&&(t.isPdf=!0,t.page=c[0].data.page||1),this.setPdfRenderingMode(f.Vector),c[0].urn();if(u.length>0&&t){if(s){var d=this.derivePdfUrnHack(i,t);if(d)return this.setPdfRenderingMode(f.Vector),d}return this.getLeafletParams(t,i,u[0]._raw()),this.setPdfRenderingMode(f.Raster),u[0].urn()}};if(i.isGeometry()){if(i.is3D())return i.getViewableRootPath();if(i.is2D()){const e=o()||(()=>{const e=i.search(n.BubbleNode.IMAGE_NODE);if(e.length)return e[0].urn()})()||r();if(e)return e}}else if(i.isViewPreset()){var s=this.getViewGeometry(i,!0);if(s)return this.getViewableUrn(s,t)}return i.is3DTilesFormat()?this.myPath:""},p.prototype.getViewablePath=function(e,t){var i=this.getViewableUrn(e,t);return i?this.getFullPath(i):""},p.prototype.downloadAecModelData=function(e){const t=e?t=>{try{e(t)}catch(e){console.error("Document.downloadAecModelData() onFinished handler crashed",e)}return t}:e=>e;if(this.downloadAecModelDataPromise)return this.downloadAecModelDataPromise.then(t),this.downloadAecModelDataPromise;var i=this.docRoot.findViewableParent(),n=i&&i.data.aec_model_data;if(n)return t(n),Promise.resolve(n);var r=this.docRoot.search({role:"Autodesk.AEC.ModelData"})[0];if(!r)return t(),Promise.resolve(null);let a=r.getViewableRootPath();const l=this.getFullPath(a),h={headers:{}},u=this.getAcmSessionId(l);return-1!==l.indexOf(".api.autodesk.com")&&c.token.accessToken&&(h.headers.Authorization="Bearer "+c.token.accessToken),u&&(h.queryParams="acmsession="+u),this.downloadAecModelDataPromise=new Promise((e=>{var t=t=>{r.findViewableParent().data.aec_model_data=t,e(t)};s.ViewingService.getItem(o.endpoint.initLoadContext(h),l,(e=>t(e)),(()=>t()),{responseType:"json"})})).then((e=>(delete this.downloadAecModelDataPromise,e))).then(t),this.downloadAecModelDataPromise},p.getAecModelData=function(e){if(Array.isArray(e)){let t=new Map,i=e.map((e=>{let i=e.getDocument(),n=t.get(i);if(n)return n;{let e=i.downloadAecModelData();return t[i]=e,e}}));return Promise.all(i)}return e.getDocument().downloadAecModelData()},p.prototype.getRoot=function(){return this.docRoot},p.prototype.getPath=function(){return this.myPath},p.prototype.getViewGeometry=function(e){return e.findParentGeom2Dor3D()},p.prototype.getNumViews=function(e){var t=e.guid;return e instanceof n.BubbleNode&&(t=e.guid()),this.myNumViews[t]||0},p.prototype.getMessages=function(e,t){var i=[];if(!e)return i;for(var n=e;n&&(!t||n.parent);)n._raw().messages&&(i=i.concat(n._raw().messages)),n=n.parent;return i},p.prototype.getGlobalMessages=function(){var e=[],t=0,i=0;this.getRoot().traverse((function(n){var r=n._raw().messages||[];r.filter((function(e){return"error"===e.type})).length>0&&(t+=1),"inprogress"===n._raw().status&&(i+=1),e=e.concat(r)}));var n="translated";n=t>0?"failed":n,n=i>0?"processing":n;for(var r=e.length;r--;e[r].$translation=n);return e}},6684:(e,t,i)=>{"use strict";i.r(t),i.d(t,{DynamicGlobalOffset:()=>a});const n=Autodesk.Viewing.Private;let r=null,o=null,s=null;class a{constructor(e){this.viewer=e,this.enabled=!1,this.onCameraChanged=this.onCameraChanged.bind(this);this.maxDistSq=1e8,this.setActive(!0)}setActive(e){e!=this.enabled&&(this.enabled=e,e?this.viewer.addEventListener(Autodesk.Viewing.CAMERA_CHANGE_EVENT,this.onCameraChanged):this.viewer.removeEventListener(Autodesk.Viewing.CAMERA_CHANGE_EVENT,this.onCameraChanged))}static updateModelMatrix(e,t,i){r=r||new n.LmvMatrix4(!0),o=o||new n.LmvMatrix4(!0),s=s||new n.LmvMatrix4(!0);const a=e.myData.placementWithOffset?r.copy(e.myData.placementWithOffset).invert():r.identity(),l=t?o.copy(t):o.identity();i&&(l.elements[12]-=i.x,l.elements[13]-=i.y,l.elements[14]-=i.z);const c=s.multiplyMatrices(l,a);e.setModelTransform(c)}onCameraChanged(){if(this.viewer.impl.is2d)return;if(this.blockEvents)return;const e=this.viewer.toolController.getTool("orbit");if(null!=e&&e.isDragging)return;if(this.viewer.impl.camera.position.lengthSq(){t.setGlobalOffset(e),this.viewer.impl.onModelTransformChanged(t)})),this.viewer.impl.camera.setGlobalOffset(e),this.viewer.impl.syncCamera(),this.viewer.autocam&&this.viewer.autocam.onGlobalOffsetChanged(e),this.viewer.autocam.sync(this.viewer.impl.camera)}}},25004:(e,t,i)=>{"use strict";i.r(t),i.d(t,{EventDispatcher:()=>n});let n=function(){};n.prototype={constructor:n,apply:function(e){e.addEventListener=n.prototype.addEventListener,e.hasEventListener=n.prototype.hasEventListener,e.removeEventListener=n.prototype.removeEventListener,e.clearListeners=n.prototype.clearListeners,e.fireEvent=n.prototype.fireEvent,e.dispatchEvent=n.prototype.fireEvent,e.debugEvents=n.prototype.debugEvents},addEventListener:function(e,t,i){if(e){void 0===this.listeners&&(this.listeners={}),void 0===this.listeners[e]&&(this.listeners[e]=[]);for(var n=i&&i.priority||0,r=this.listeners[e].length,o=this.listeners[e].length-1;o>=0&&n>this.listeners[e][o].priority;o--)r--;this.listeners[e].splice(r,0,{callbackFn:t,once:!!i&&!!i.once,priority:n})}},hasEventListener:function(e,t){if(!e)return!1;if(void 0===this.listeners)return!1;var i=this.listeners[e];if(!i||0===i.length)return!1;for(var n=0,r=i.length;n{"use strict";var t=e.exports;t.ESCAPE_EVENT="escape",t.PROGRESS_UPDATE_EVENT="progress",t.FULLSCREEN_MODE_EVENT="fullScreenMode",t.NAVIGATION_MODE_CHANGED_EVENT="navmode",t.VIEWER_STATE_RESTORED_EVENT="viewerStateRestored",t.VIEWER_RESIZE_EVENT="viewerResize",t.VIEWER_INITIALIZED="viewerInitialized",t.VIEWER_UNINITIALIZED="viewerUninitialized",t.LOADER_LOAD_FILE_EVENT="loaderLoadFile",t.LOADER_LOAD_ERROR_EVENT="loaderLoadError",t.LOADER_REPAINT_REQUEST_EVENT="loaderRepaint",t.MODEL_ROOT_LOADED_EVENT="svfLoaded",t.GEOMETRY_LOADED_EVENT="geometryLoaded",t.TEXTURES_LOADED_EVENT="texturesLoaded",t.OBJECT_TREE_CREATED_EVENT="propertyDbLoaded",t.OBJECT_TREE_UNAVAILABLE_EVENT="propertyDbUnavailable",t.OBJECT_TREE_LOAD_PROGRESS_EVENT="propertyDbLoadProgress",t.MODEL_UNLOADED_EVENT="modelUnloaded",t.BEFORE_MODEL_UNLOAD_EVENT="beforeModelUnload",t.MODEL_ADDED_EVENT="modelAdded",t.MODEL_REMOVED_EVENT="modelRemoved",t.MODEL_LAYERS_LOADED_EVENT="modelLayersLoaded",t.MODEL_TRANSFORM_CHANGED_EVENT="modelTransformChanged",t.MODEL_PLACEMENT_CHANGED_EVENT="placementTransformChanged",t.MODEL_VIEWPORT_BOUNDS_CHANGED_EVENT="viewportBoundsChanged",t.MODEL_FRAGMENT_BOUNDING_BOXES_SET_EVENT="fragmentBoundingBoxesSet",t.EXTENSION_PRE_LOADED_EVENT="extensionPreLoaded",t.EXTENSION_LOADED_EVENT="extensionLoaded",t.EXTENSION_PRE_UNLOADED_EVENT="extensionPreUnloaded",t.EXTENSION_UNLOADED_EVENT="extensionUnloaded",t.EXTENSION_PRE_ACTIVATED_EVENT="extensionPreActivated",t.EXTENSION_ACTIVATED_EVENT="extensionActivated",t.EXTENSION_PRE_DEACTIVATED_EVENT="extensionPreDeactivated",t.EXTENSION_DEACTIVATED_EVENT="extensionDeactivated",t.SELECTION_CHANGED_EVENT="selection",t.AGGREGATE_SELECTION_CHANGED_EVENT="aggregateSelection",t.ISOLATE_EVENT="isolate",t.AGGREGATE_ISOLATION_CHANGED_EVENT="aggregateIsolation",t.HIDE_EVENT="hide",t.AGGREGATE_HIDDEN_CHANGED_EVENT="aggregateHidden",t.SHOW_EVENT="show",t.SHOW_PROPERTIES_EVENT="showProperties",t.SHOW_ALL_EVENT="showAll",t.HIDE_ALL_EVENT="hideAll",t.CAMERA_CHANGE_EVENT="cameraChanged",t.EXPLODE_CHANGE_EVENT="explodeChanged",t.FIT_TO_VIEW_EVENT="fitToView",t.AGGREGATE_FIT_TO_VIEW_EVENT="aggregateFitToView",t.CUTPLANES_CHANGE_EVENT="cutplanesChanged",t.TOOL_CHANGE_EVENT="toolChanged",t.RENDER_OPTION_CHANGED_EVENT="renderOptionChanged",t.FINAL_FRAME_RENDERED_CHANGED_EVENT="finalFrameRenderedChanged",t.RENDER_PRESENTED_EVENT="renderPresented",t.LAYER_VISIBILITY_CHANGED_EVENT="layerVisibility",t.PREF_CHANGED_EVENT="PrefChanged",t.PREF_RESET_EVENT="PrefReset",t.RESTORE_DEFAULT_SETTINGS_EVENT="restoreDefaultSettings",t.ANIMATION_READY_EVENT="animationReady",t.CAMERA_TRANSITION_COMPLETED="cameraTransitionCompleted",t.HYPERLINK_EVENT="hyperlink",t.HYPERLINK_NAVIGATE="hyperlink_navigate",t.LOAD_GEOMETRY_EVENT="load_geometry",t.LOAD_MISSING_GEOMETRY="loadMissingGeometry",t.WEBGL_CONTEXT_LOST_EVENT="webglcontextlost",t.WEBGL_CONTEXT_RESTORED_EVENT="webglcontextrestored",t.CANCEL_LEAFLET_SCREENSHOT="cancelLeafletScreenshot",t.SET_VIEW_EVENT="setView",t.RENDER_FIRST_PIXEL="renderFirstPixel",t.PROFILE_CHANGE_EVENT="profileChanged",t.RENDER_SCENE_PART="renderScenePart",t.OBJECT_UNDER_MOUSE_CHANGED="hoverObjectChanged",t.ANIM_ENDED="animEnded",t.TRANSITION_STARTED="transitionStarted",t.TRANSITION_ENDED="transitionEnded",t.FRAGMENTS_LOADED_EVENT="fragmentsLoaded",t.FRAGMENTS_UNLOADED_EVENT="fragmentsUnloaded",t.SCENE_UPDATED_EVENT="sceneUpdated",t.REFRESH_CUSTOM_PROPERTIES="refreshCustomProperties",t.REFRESH_CUSTOM_PROPERTIES_VALUES="refreshCustomPropertiesValues"},24840:(e,t,i)=>{"use strict";i.r(t),i.d(t,{EventUtils:()=>s});var n=i(55280);let r=!1,o=!1;class s{static isRightClick(e){if(!(e instanceof a(e).MouseEvent))return!1;let t=e.button;"buttons"in e&&(!o||1&e.buttons?2===t&&1&e.buttons&&(t=0,o=!0):(o=!1,t=0));return t===(r?0:2)}static isMiddleClick(e){return e instanceof a(e).MouseEvent&&1===e.button}static setUseLeftHandedInput(e){r=e}static async waitUntilTransitionEnded(e){if(e.navigation.getRequestTransition()||e.navigation.getTransitionActive())return new Promise((t=>{setTimeout((()=>{e.navigation.getRequestTransition()||e.navigation.getTransitionActive()?e.addEventListener(Autodesk.Viewing.CAMERA_TRANSITION_COMPLETED,t,{once:!0}):t()}))}))}static async waitUntilGeometryLoaded(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.model;if(!t||!t.isLoadDone())return new Promise((i=>{const n=r=>{t&&t!==r.model||(i(),e.removeEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT,n))};e.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT,n)}))}static async waitUntilModelAdded(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.model;if(!t)return new Promise((i=>{const n=r=>{t&&t!==r.model||(i(),e.removeEventListener(Autodesk.Viewing.MODEL_ADDED_EVENT,n))};e.addEventListener(Autodesk.Viewing.MODEL_ADDED_EVENT,n)}))}}function a(e){const t=e.target&&e.target.ownerDocument;return t?t.defaultView||t.parentWindow:(0,n.getGlobal)()}Autodesk.Viewing.isRightClick=s.isRightClick,Autodesk.Viewing.isMiddleClick=s.isMiddleClick},82712:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Extension:()=>o});var n=i(16271),r=i(26206),o=function(e,t){this.viewer=e,r.GlobalManagerMixin.call(this),this.setGlobalManager(e.globalManager),this.options=t||{},this.id="",this.modes=[],this.mode="",this.name="",this.activeStatus=!1};o.prototype.load=function(){return!0},o.prototype.unload=function(){return!0},o.prototype.activate=function(e){return!0},o.prototype.deactivate=function(){return!0},o.prototype.setActive=function(e,t){e?this.activate(t):this.deactivate()},o.prototype.getName=function(){return this.name},o.prototype.getModes=function(){return this.modes},o.prototype.isActive=function(e){return e?this.activeStatus&&this.mode===e:this.activeStatus},o.prototype.getState=function(e){},o.prototype.restoreState=function(e,t){return!0},o.prototype.extendLocalization=function(e){return(0,n.extendLocalization)(e)},o.prototype.getCache=function(){this.viewer.extensionCache||(this.viewer.extensionCache={});var e=this.viewer.extensionCache[this.id];return e||(e=this.viewer.extensionCache[this.id]={}),e},o.prototype.onToolbarCreated=function(e){},"undefined"!=typeof Autodesk&&(Autodesk.Viewing.Extension=o)},55270:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ExtensionMixin:()=>c,theExtensionManager:()=>l});var n=i(83081),r=i(20268),o=i(19556),s=i(85403);const a=Autodesk.Viewing;const l=new class{constructor(){this.registeredExtensions=new Map}registerExtension(e,t){if(this.registeredExtensions.has(e)){const i=this.registeredExtensions.get(e);if(i.EXTENSION_CLASS)return!1;i.EXTENSION_CLASS=t}else this.registeredExtensions.set(e,{EXTENSION_CLASS:t});return!0}getExtensionClass(e){return this.registeredExtensions.has(e)?this.registeredExtensions.get(e).EXTENSION_CLASS:null}unregisterExtension(e){return!!this.registeredExtensions.has(e)&&(this.registeredExtensions.delete(e),!0)}registerExternalExtension(e,t,i){return!this.registeredExtensions.has(e)&&(this.registeredExtensions.set(e,{EXTENSION_CLASS:null,externalPathOrCallback:t,dependencies:i}),!0)}getExternalPath(e){return this.registeredExtensions.has(e)?this.registeredExtensions.get(e).externalPathOrCallback:null}getRegisteredExtensions(){return Array.from(this.registeredExtensions).map((e=>{let[t,i]=e;return{id:t,inMemory:!!i.EXTENSION_CLASS,isAsync:!!i.externalPathOrCallback}}))}downloadExtension(e){if(!this.registeredExtensions.has(e))return Promise.reject("Extension not found: "+e+". Has it been registered(1)?");const t=this.registeredExtensions.get(e);if(!t.externalPathOrCallback)return Promise.reject("Extension not found: "+e+". Has it been registered(2)?");if(t.downloadPromise)return t.downloadPromise;const i=(t.dependencies||[]).map((e=>this.downloadExtension(e))),n=Promise.all(i);return t.downloadPromise=n.then((()=>"string"==typeof t.externalPathOrCallback?r.theResourceLoader.loadScript(t.externalPathOrCallback,e):t.externalPathOrCallback())).then((()=>{if(delete t.downloadPromise,!t.EXTENSION_CLASS)throw new Error("Extension not found: "+e+". Has it been registered(3)?");return t.EXTENSION_CLASS})),t.downloadPromise}popuplateOptions(e){this.registeredExtensions.forEach((t=>{t.EXTENSION_CLASS.populateDefaultOptions(e)}))}isDownloading(e){return!!this.registeredExtensions.has(e)&&!!this.registeredExtensions.get(e).downloadPromise}isAvailable(e){return!!this.getExtensionClass(e)}},c=function(){};c.prototype={loadExtension:function(e,t){return this.loadedExtensions=this.loadedExtensions||{},l.isAvailable(e)?this.loadExtensionLocal(e,t):(this.loadExtensionPromises=this.loadExtensionPromises||{},e in this.loadExtensionPromises||(this.loadExtensionPromises[e]=l.downloadExtension(e).then((()=>{if(delete this.loadExtensionPromises[e],this.loadedExtensions){if(this.cancelledExtensions&&e in this.cancelledExtensions)throw delete this.cancelledExtensions[e],new Error(`Abort loadExtension('${e}') - extension has been unloaded`);return this.loadExtensionLocal(e,t)}n.logger.info(`Abort loadExtension('${e}') - teardown in progress`)}))),this.loadExtensionPromises[e])},getExtension:function(e,t){var i=this.loadedExtensions&&e in this.loadedExtensions?this.loadedExtensions[e]:null;return i&&t&&t(i),i},getExtensionAsync:function(e){let t=this.getExtension(e);return t?Promise.resolve(t):new Promise((i=>{this.addEventListener(o.EXTENSION_LOADED_EVENT,(function n(r){r.extensionId===e&&(this.removeEventListener(o.EXTENSION_LOADED_EVENT,n),t=this.getExtension(e),i(t))}))}))},unloadExtension:function(e){if(this.cancelledExtensions=this.cancelledExtensions||{},l.isDownloading(e))return this.cancelledExtensions[e]=!0,!1;let t=!1;const i=this.getExtension(e);return i?(t=i.unload(),n.logger.info("Extension unloaded: "+e),delete this.loadedExtensions[e],s.analytics.track("viewer.extensionManager.extensionUnloaded",{extensionId:e}),this.dispatchEvent({type:o.EXTENSION_UNLOADED_EVENT,extensionId:e})):n.logger.warn("Extension not found: "+e),t},loadExtensionLocal:function(e,t){const i=l.getExtensionClass(e);if(!i)return Promise.reject("Extension not found : "+e);let r=this.getExtension(e);if(r)return Promise.resolve(r);if(this.loadingExtensions&&e in this.loadingExtensions)return this.loadingExtensions[e];r=function(e){function t(t,i,n){const r=e[t];r?e[t]=function(){i&&i.call(e,...arguments);const t=r.call(e,...arguments);return n&&n.call(e,...arguments),t}:console.warn(t," not implemented in ",e)}return t("load",(function(){this.viewer.dispatchEvent({type:a.EXTENSION_PRE_LOADED_EVENT,extensionId:this.id})})),t("unload",(function(){this.viewer.dispatchEvent({type:a.EXTENSION_PRE_UNLOADED_EVENT,extensionId:this.id})})),t("activate",(function(e){this.viewer.dispatchEvent({type:a.EXTENSION_PRE_ACTIVATED_EVENT,extensionId:this.id,mode:e})}),(function(e){this.viewer.dispatchEvent({type:a.EXTENSION_ACTIVATED_EVENT,extensionId:this.id,mode:e}),s.analytics.track("viewer.extension.activate",{extensionId:this.id,mode:e})})),t("deactivate",(function(){this.viewer.dispatchEvent({type:a.EXTENSION_PRE_DEACTIVATED_EVENT,extensionId:this.id})}),(function(){this.viewer.dispatchEvent({type:a.EXTENSION_DEACTIVATED_EVENT,extensionId:this.id}),s.analytics.track("viewer.extension.deactivate",{extensionId:this.id})})),e}(new i(this,t)),r.id=e;const c=()=>Promise.reject("Extension failed to .load() : "+e),h=r.load();if(!h)return c();const u=()=>(this.loadedExtensions[e]=r,this.onPostExtensionLoad(r),n.logger.info("Extension loaded: "+e),s.analytics.track("viewer.extensionManager.extensionLoaded",{extensionId:e}),setImmediate((()=>{this.getExtension(e)&&this.dispatchEvent({type:o.EXTENSION_LOADED_EVENT,extensionId:e})})),Promise.resolve(r));return"function"==typeof h.then?(this.loadingExtensions=this.loadingExtensions||{},this.loadingExtensions[e]=h.then((e=>e?u():c())).finally((()=>{delete this.loadingExtensions[e]})),this.loadingExtensions[e]):u()},onPostExtensionLoad:function(e){},forEachExtension:function(e){const t=this.loadedExtensions||{};for(let i in t)Object.prototype.hasOwnProperty.call(t,i)&&e(t[i])},apply:function(e){var t=c.prototype;e.loadExtension=t.loadExtension,e.getExtension=t.getExtension,e.getExtensionAsync=t.getExtensionAsync,e.unloadExtension=t.unloadExtension,e.loadExtensionLocal=t.loadExtensionLocal,e.forEachExtension=t.forEachExtension,e.onPostExtensionLoad=t.onPostExtensionLoad}}},19948:(e,t,i)=>{"use strict";i.r(t),i.d(t,{FeatureFlags:()=>s,InternalFeatureFlags:()=>l,PublicFeatureFlags:()=>a});var n=i(35922),r=i(61183),o=i(11743);class s{static#e=new Map;static#t=!1;static _add(e,t){this.#t?console.warn("Feature flags cannot be added after initialization."):this.#e.has(e)?console.warn(`Feature flag '${e}' already exists.`):this.#e.set(e,{value:t,initializationCB:void 0,changeListener:void 0})}static _registerInitializationCallback(e,t){const i=this.#e.get(e);void 0!==i?i.initializationCB=t:console.warn(`Feature flag '${e}' not found; callback registration is skipped.`)}static _registerChangeListener(e,t){const i=this.#e.get(e);void 0!==i?i.changeListener=t:console.warn(`Feature flag '${e}' not found; callback registration is skipped.`)}static set(e,t){const i=this.#e.get(e);if(this.#t)console.warn(`Feature flag '${e}' is immutable and cannot be modified after initialization.`);else if(void 0===i)console.warn(`Feature flag '${e}' not found; modification is skipped.`);else{const e=i.value!==t;i.value!==t&&(i.value=t),void 0!==i.changeListener&&e&&i.changeListener(i.value)}}static isEnabled(e){const t=this.#e.get(e);return null==t?void 0:t.value}static _setInitializationData(e,t){const i=this.#e.get(e);void 0!==i?this.#t?console.warn(`Feature flag '${e}' has already been initialized. Ignoring initialization data.`):i.initializationData=t:console.warn(`Feature flag '${e}' not found; modification is skipped.`)}static async _initialize(){if(this.#t)return;this.#t=!0;const e=new o.Profile(Autodesk.Viewing.ProfileSettings.Default),t=new r.Preferences;e.apply(t);const i=new Array;for(const[,e]of this.#e){Object.freeze(e);const n=e.initializationCB;n&&i.push(n(e.value,{preferences:t,customInitializationData:e.initializationData}))}return Promise.all(i)}static print(){console.log("Feature Flags:"+(0===this.#e.size?" none":""));for(const[e,{value:t}]of this.#e)Object.values(l).includes(e)||console.log(` - ${e}: ${t}`)}}const a=Object.freeze({LargeModelExperienceOptOut:"HIDE_LARGE_MODEL_EXPERIENCE"});s._add(a.LargeModelExperienceOptOut,!1),s._registerInitializationCallback(a.LargeModelExperienceOptOut,((e,t)=>{var i;if(!e&&((null===(i=t.customInitializationData)||void 0===i?void 0:i.overridePreferenceValue)??t.preferences.get(n.Prefs3D.LARGE_MODEL_EXPERIENCE)))return Autodesk.Viewing.Private.useHLOD()}));const l=Object.freeze({OutOfCoreGpuMemoryManagement:"OUT_OF_CORE_GPU_MEMORY_MANAGEMENT",WebGPUBackend:"ENABLE_WEBGPU"});s._add(l.WebGPUBackend,!1),s._registerInitializationCallback(l.WebGPUBackend,(async(e,t)=>{var i;if(e&&((null===(i=t.customInitializationData)||void 0===i?void 0:i.overridePreferenceValue)??t.preferences.get(n.Prefs.WEBGPU)))return await Autodesk.Viewing.Private.useWebGPU()})),s._add(l.OutOfCoreGpuMemoryManagement,!1),s._registerInitializationCallback(l.OutOfCoreGpuMemoryManagement,((e,t)=>{var i;e&&((null===(i=t.customInitializationData)||void 0===i?void 0:i.overridePreferenceValue)??t.preferences.get(n.Prefs3D.OUT_OF_CORE_GPU_MEMORY_MANAGEMENT))&&Autodesk.Viewing.Private.enableOutOfCoreTileManager()}))},93228:(e,t,i)=>{"use strict";function n(e){this.viewer=e}i.r(t),i.d(t,{FileLoader:()=>n}),n.prototype.constructor=n,n.prototype.loadFile=function(e,t,i,n){return!1},n.prototype.is3d=function(){return!1}},54393:(e,t,i)=>{"use strict";i.r(t),i.d(t,{FileLoaderManager:()=>r});const n={};let r={registerFileLoader:function(e,t,i,r){return n[e]?n[e].loader===i&&(n[e].count++,!0):(n[e]={loader:i,extensions:t,mimeType:r,count:1},!0)},getFileLoader:function(e){return n[e]?n[e].loader:null},getFileLoaderForExtension:function(e,t){e=e?e.toLowerCase():"";const i=new Array;for(const t in n){const r=n[t];if(r)for(let t=0;t1)for(let e of i)if(e.acceptsMimeType&&e.acceptsMimeType(t))return e;return i[0]},unregisterFileLoader:function(e){return!!n[e]&&(n[e].count--,0===n[e].count&&delete n[e],!0)}}},8811:(e,t,i)=>{"use strict";i.r(t),i.d(t,{GlobalManager:()=>r});const n=Autodesk.Viewing;class r{constructor(){this._window={inner:null,registeredEventListeners:new Map},this._document={inner:null,registeredEventListeners:new Map},this._window.inner=n.getGlobal(),this._document.inner=this._window.inner.document,this.addWindowEventListener=s.bind(this._window),this.removeWindowEventListener=a.bind(this._window),this.addDocumentEventListener=s.bind(this._document),this.removeDocumentEventListener=a.bind(this._document)}getWindow(){return this._window.inner}getDocument(){return this._document.inner}setWindow(e){if(e&&e!==this._window.inner){for(let[t,i]of this._window.registeredEventListeners.entries())for(let[n,r]of i.entries())e.addEventListener(t,n,...r),this._window.inner.removeEventListener(t,n,...r);for(let[t,i]of this._document.registeredEventListeners.entries())for(let[n,r]of i.entries())e.document.addEventListener(t,n,...r),this._document.inner.removeEventListener(t,n,...r);this._window.inner=e,this._document.inner=e.document}}}function o(e){return!!e.opener}function s(e,t){for(var i=arguments.length,n=new Array(i>2?i-2:0),r=2;r2?i-2:0),r=2;r{"use strict";i.r(t),i.d(t,{GlobalManagerMixin:()=>o});var n=i(8811);const r=new n.GlobalManager;function o(){this.globalManager=r,this.setGlobalManager=function(e){this.globalManager=e,this.onSetGlobalManager(this.globalManager)},this.onSetGlobalManager=function(e){},this.getWindow=function(){return this.globalManager.getWindow()},this.getDocument=function(){return this.globalManager.getDocument()},this.setWindow=function(e){return this.globalManager.setWindow(e)},this.addWindowEventListener=function(e,t){for(var i=arguments.length,n=new Array(i>2?i-2:0),r=2;r2?i-2:0),r=2;r2?i-2:0),r=2;r2?i-2:0),r=2;r{"use strict";i.r(t),i.d(t,{BackgroundPresets:()=>a,DefaultLightPreset:()=>r,DefaultLightPreset2d:()=>o,DefaultToneMapMethod:()=>s,LightPresets:()=>c,copyLightPreset:()=>u});var n=i(55280);let r=1,o=0,s=1,a={"Fusion Grey":[230,230,230,150,150,150],"Sky Blue":[226,244,255,156,172,180],Snow:[181,186,199,181,186,199],Midnight:[41,76,120,1,2,3],White:[255,255,255,255,255,255],AutoCADModel:[30,40,48,30,40,48],"Dark Grey":[51,51,51,51,51,51],"Dark Sky":[51,51,51,51,51,51],"Infinity Pool":[255,255,255,255,255,255],Tranquility:[0,84,166,0,84,166],"Grey Room":[129,129,129,129,129,129],"Photo Booth":[237,237,237,237,237,237],"RaaS SBS":[1,1,1,90,90,90],Plaza:[79,102,130,79,102,130],Field:[202,226,252,202,201,190],Boardwalk:[216,230,248,230,228,220],Custom:[230,230,230,150,150,150]};var l=a;let c=[{name:"Simple Grey",path:null,tonemap:0,E_bias:0,directLightColor:[1,.84,.67],ambientColor:[.2,.225,.25],lightMultiplier:1,bgColorGradient:l["Fusion Grey"],darkerFade:!1,rotation:0},{name:"Sharp Highlights",path:"SharpHighlights",type:"logluv",tonemap:s,E_bias:-9,directLightColor:[.5,.5,.5],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:0,lightDirection:[.5,-.2,-.06],bgColorGradient:l["Photo Booth"],darkerFade:!0,rotation:0},{name:"Dark Sky",path:"DarkSky",type:"logluv",tonemap:s,E_bias:-1,directLightColor:[1,1,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:1,lightDirection:[.1,-.55,-1],bgColorGradient:l["Dark Sky"],darkerFade:!1,rotation:0},{name:"Grey Room",path:"GreyRoom",type:"logluv",tonemap:s,E_bias:-1,directLightColor:[1,1,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:.5,lightDirection:[.1,-.55,-1],bgColorGradient:l["Grey Room"],darkerFade:!0,rotation:0},{name:"Photo Booth",path:"PhotoBooth",type:"logluv",tonemap:s,E_bias:0,directLightColor:[1,1,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:.5,lightDirection:[.1,-.55,-1],bgColorGradient:l["Photo Booth"],darkerFade:!0,rotation:0},{name:"Tranquility",path:"TranquilityBlue",type:"logluv",tonemap:s,E_bias:-1,directLightColor:[1,1,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:.5,lightDirection:[.1,-.55,-1],bgColorGradient:l.Tranquility,darkerFade:!1,rotation:0},{name:"Infinity Pool",path:"InfinityPool",type:"logluv",tonemap:s,E_bias:-1,directLightColor:[1,.84,.67],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:.5,lightDirection:[.1,-.55,-1],bgColorGradient:l["Infinity Pool"],darkerFade:!1,rotation:0},{name:"Simple White",path:null,tonemap:0,E_bias:0,directLightColor:[1,1,1],ambientColor:[.25,.25,.25],lightMultiplier:1,bgColorGradient:l.White,saoRadius:.06,saoIntensity:.15,darkerFade:!0,rotation:0},{name:"Riverbank",path:"riverbank",type:"logluv",tonemap:s,E_bias:-5.7,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l["Sky Blue"],darkerFade:!1,rotation:0},{name:"Contrast",path:"IDViz",type:"logluv",tonemap:s,E_bias:0,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l.Midnight,darkerFade:!1,rotation:0},{name:"Rim Highlights",path:"RimHighlights",type:"logluv",tonemap:s,E_bias:-9,directLightColor:[.5,.5,.5],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:0,lightDirection:[.35,-.35,-.5],bgColorGradient:l["Photo Booth"],darkerFade:!0,rotation:0},{name:"Cool Light",path:"CoolLight",type:"logluv",tonemap:s,E_bias:-9,directLightColor:[1,1,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:0,lightDirection:[-0,-.15,-.5],bgColorGradient:l["Fusion Grey"],darkerFade:!0,rotation:0},{name:"Warm Light",path:"WarmLight",type:"logluv",tonemap:s,E_bias:-9,directLightColor:[1,1,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:0,lightDirection:[-0,-.15,-.5],bgColorGradient:l["Fusion Grey"],darkerFade:!0,rotation:0},{name:"Soft Light",path:"SoftLight",type:"logluv",tonemap:s,E_bias:-9,directLightColor:[1,1,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:0,lightDirection:[-.5,-.5,0],bgColorGradient:l["Fusion Grey"],darkerFade:!0,rotation:0},{name:"Grid Light",path:"GridLight",type:"logluv",tonemap:s,E_bias:-9,directLightColor:[1,1,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:0,lightDirection:[-.5,-.6,0],bgColorGradient:l["Fusion Grey"],darkerFade:!0,rotation:0},{name:"Plaza",path:"Plaza",type:"logluv",tonemap:s,E_bias:-14,directLightColor:[.9,.9,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:0,lightDirection:[-.2,-.18,.72],bgColorGradient:l.Plaza,darkerFade:!1,rotation:0},{name:"Snow Field",path:"SnowField",type:"logluv",tonemap:s,E_bias:-10.461343,directLightColor:[1,1,1],ambientColor:[.25/8,.25/8,.25/8],lightMultiplier:0,lightDirection:[0,-1,0],bgColorGradient:l.Snow,darkerFade:!1,rotation:0},{name:"Field",path:"field",type:"logluv",tonemap:s,E_bias:-2.9,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l.Field,useIrradianceAsBackground:!0,darkerFade:!0,rotation:0},{name:"Boardwalk",path:"boardwalk",type:"logluv",tonemap:s,E_bias:-7,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l.Boardwalk,useIrradianceAsBackground:!0,darkerFade:!1,rotation:0},{name:"Flat Shading",path:null,tonemap:0,E_bias:0,directLightColor:[0,0,0],ambientColor:[0,0,0],lightMultiplier:0,bgColorGradient:l["Fusion Grey"],darkerFade:!1,rotation:0}],h=[{name:"Harbor",path:"Harbor",type:"logluv",tonemap:s,E_bias:1.9,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l["Sky Blue"],useIrradianceAsBackground:!0,saoIntensity:.5,darkerFade:!1,rotation:0},{name:"Night",path:"Night",type:"logluv",tonemap:1,E_bias:4,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l.Midnight,useIrradianceAsBackground:!1,darkerFade:!1,rotation:0},{name:"Parking",path:"Parking",type:"logluv",tonemap:s,E_bias:2.8,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l["Sky Blue"],useIrradianceAsBackground:!1,saoIntensity:.5,darkerFade:!1,rotation:0},{name:"River Road",path:"RiverRoad",type:"logluv",tonemap:s,E_bias:0,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l["Fusion Grey"],useIrradianceAsBackground:!1,saoIntensity:.7,darkerFade:!1,rotation:0},{name:"Crossroads",path:"crossroads",type:"logluv",tonemap:s,E_bias:-5.5,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l["Sky Blue"],useIrradianceAsBackground:!0,darkerFade:!0,rotation:0},{name:"Seaport",path:"seaport",type:"logluv",tonemap:s,E_bias:-6.5,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l["Sky Blue"],useIrradianceAsBackground:!0,darkerFade:!1,rotation:0},{name:"Glacier",path:"glacier",type:"logluv",tonemap:s,E_bias:0,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l.Midnight,darkerFade:!1,rotation:0},{name:"RaaS Test Env",path:"Reflection",type:"logluv",tonemap:2,E_bias:-1.5,directLightColor:[1,1,1],lightMultiplier:0,bgColorGradient:l["RaaS SBS"],darkerFade:!1,rotation:0},{name:"City Night",path:"CityNight",type:"logluv",tonemap:s,E_bias:1.6,directLightColor:[1,1,1],lightMultiplier:.2,bgColorGradient:l.Midnight,useIrradianceAsBackground:!1,darkerFade:!1,rotation:0}];function u(e,t){Object.assign(t,e),t.name=e.name+" (copy)"}(0,n.getGlobal)().ENABLE_DEBUG&&Array.prototype.push.apply(c,h)},94661:(e,t,i)=>{"use strict";i.r(t),i.d(t,{LocalStorage:()=>a});var n,r=i(83081),o=(0,i(55280).getGlobal)();function s(){this.isSupported()||(this._data={})}s.prototype.getItem=function(e){return this.isSupported()?o.localStorage.getItem(e):Object.prototype.hasOwnProperty.call(this._data,e)?this._data[e]:null},s.prototype.setItem=function(e,t){if(this.isSupported())try{o.localStorage.setItem(e,t)}catch(e){r.logger.debug("avp.LocalStorage: Failed to setItem()")}else this._data[e]=String(t)},s.prototype.removeItem=function(e){this.isSupported()?o.localStorage.removeItem(e):delete this._data[e]},s.prototype.clear=function(){this.isSupported()?o.localStorage.clear():this._data={}},s.prototype.isSupported=function(){return void 0===n&&(n=(()=>{if("undefined"==typeof window)return!1;try{const e="lmv_viewer_test_localStorage",t=o.localStorage;return!!t&&(t.setItem(e,"1"),t.removeItem(e),!0)}catch(e){return!1}})()),n},s.prototype.getAllKeys=function(){return n?Object.keys(o.localStorage):Object.keys(this._data)};const a=new s},63764:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Model:()=>v});var n=i(25004),r=i(84045),o=i(55280),s=i(37365),a=i(54561),l=i(9478),c=i(42525),h=i(63841),u=i(27623),d=i(33398),f=i(18211);const p=f.hp.from&&f.hp.alloc&&f.hp.allocUnsafe&&f.hp.allocUnsafeSlow?f.hp.from:e=>new f.hp(e);let m=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];"undefined"!=typeof Int32Array&&(m=new Int32Array(m));const g=function(e,t){const i=(e,i)=>t(e,i)>>>0;return i.signed=t,i.unsigned=i,i.model=e,i}("crc-32",(function(e,t){f.hp.isBuffer(e)||(e=p(e));let i=0===t?0:~t;for(let t=0;t>>8}return~i}));class v extends l.RenderModel{myData;topology=null;topologyPromise=null;svfUUID=null;defaultCameraHash=null;loader=void 0;constructor(e){super(e),this.myData=e,n.EventDispatcher.prototype.apply(this);const t={};t.isSVF2=this.isSVF2(),t.isOTG=this.isOTG(),t.is2d=this.is2d(),super.setModelFormat(t)}initialize(){super.initialize();const e=new c.ModelIteratorLinear(this);this.addTraversalController("Linear",e)}getInstanceTree(){return this.myData?this.myData.instanceTree:null}getFuzzyBox(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t=Boolean(e.ignoreTransforms),i=this.getFragmentList();if(!i||this.is2d())return this.getBoundingBox(t);var n=null;if(t){var r=new Array(6);const e=this.getData().placementWithOffset,t=e?e.clone().invert():void 0;n=function(e,n){i.getOriginalWorldBounds(e,r),n.min.fromArray(r),n.max.fromArray(r,3),t&&n.applyMatrix4(t)}}else n=function(e,t){i.getWorldBounds(e,t)};var o=e.center||function(){var t=new THREE.Box3,r=new THREE.Vector3,o=new THREE.Vector3,s=new THREE.Vector3,a=0;function l(i){if(!e.allowlist||e.allowlist.includes(i)){n(i,t),t.getCenter(r);var l=t.getSize(o).length();s.add(r.multiplyScalar(l)),a+=l}}for(var c=0;c0&&void 0!==arguments[0]?arguments[0]:void 0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;function i(e,t,i,n){const r=(e+t+i+(n??"")).toUpperCase();return`p${g(r).toString(16).padStart(8,"0")}`}const n=this.getPropertyDb();if(void 0===n||!0!==n.isLoadDone())return;let r=await n.executeUserFunction("function userFunction(pdb) {\n const properties = new Set();\n pdb.enumAttributes((i, attribute, raw) => {\n properties.add([ attribute.name, attribute.category, attribute.dataType, attribute.dataTypeContext ]);\n });\n return Array.from(properties); }");void 0!==e&&e instanceof RegExp&&(r=r.filter((t=>e.test(t[0])))),void 0!==t&&t instanceof RegExp&&(r=r.filter((e=>t.test(e[1]))));for(const e of r){const t=i(e[0],e[1],e[2],e[3]);e.unshift(t),e.pop(),e.pop()}return r}getProperties(e,t,i){var n=this.getPropertyDb();!n||e<=0?i&&i():n.getProperties(e,t,i)}getProperties2(e,t,i,n){var r=this.getPropertyDb();!r||e<=0?i&&i():r.getProperties2(e,t,i,n)}getBulkProperties(e,t,i,n){Array.isArray(t)&&(t={propFilter:t});var r=(t=t||{}).propFilter||null,o=t.ignoreHidden||!1,s=this.getPropertyDb();s?s.getBulkProperties(e,r,i,n,o):n&&n()}getBulkProperties2(e,t,i,n){var r=this.getPropertyDb();r?r.getBulkProperties2(e,t,i,n):n&&n()}getPropertySetAsync(e,t){return new Promise(((i,n)=>{this.getPropertySet(e,i,n,t)}))}getPropertySet(e,t,i,n){var r=this.getPropertyDb();r||i&&i("Properties failed to load."),r.getPropertySet(e,n,(e=>{t(new d.PropertySet(e))}),i)}getExternalIdMapping(e,t){var i=this.getPropertyDb();i?i.getExternalIdMapping(e,t):t&&t()}getLayerToNodeIdMapping(e,t){var i=this.getPropertyDb();i?i.getLayerToNodeIdMapping(e,t):t&&t()}getObjectTree(e,t){const i=this.getData().instanceTree;if(i)e(i);else{var n=this.getPropertyDb();n?n.getObjectTree(e,t):t&&t()}}isObjectTreeLoaded(){var e=this.getPropertyDb();return!!e&&e.isObjectTreeLoaded()}search(e,t,i,n){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{searchHidden:!1};var o=this.getPropertyDb();o?o.searchProperties(e,n,t,i,r):i&&i()}findProperty(e){var t=this.getPropertyDb();return t?t.findProperty(e):Promise.reject("Model doesn't have any properties.")}static#i(e){var t=.001,i=e;if(Math.abs(i[0])t)for(var n=0;n<4;n++){var r=i[n];i[n]=i[n+4],i[n+4]=r}else for(let e=0;e<4;e++){const t=i[e];i[e]=i[e+8],i[e+8]=t}if(Math.abs(i[5])=t;for(var u=0,d=i.length;u=t)&&(c-t)*(s-l)>=(l-e)*(a-c)==o&&(h=!h),r=o,s=l,a=c;return h}static#r(e,t,i,n){for(var r=!1,o=0;oi)return Promise.reject({error:"topology-too-big",limitMB:i,topologyMB:t.topologySizeMB});if(!this.topologyPromise){var n=this;this.topologyPromise=new Promise((function(e,t){n.loader.fetchTopologyFile(n.getData().topologyPath,(function(i){i&&i.topology?(n.topology=i.topology,e(i.topology)):t(i)}))}))}return this.topologyPromise}hasGeometry(){var e=this.getData();return!!e&&(!!e.isLeaflet||(!!e.isSceneBuilder||e.fragments.length>0))}getFragmentPointer(e){return e?new a.FragmentPointer(this.getFragmentList(),e):null}clone(){const e=new v(this.myData);return e.topology=this.topology,e.topologyPromise=this.topologyPromise,e.svfUUID=this.svfUUID,e.defaultCameraHash=this.defaultCameraHash,e.loader=this.loader,e.setInnerAttributes(this.getInnerAttributes()),e}getSeedUrn(){var e;return(null===(e=this.loader)||void 0===e?void 0:e.svfUrn)||""}isNodeExists(e){let t;const i=this.getInstanceTree();if(i)i.enumNodeChildren(e,(function(e){i.enumNodeFragments(e,(function(){t=!0}))}),!0);else{var n;null!==(n=this.getFragmentList().fragments.dbId2fragId)&&void 0!==n&&n[e]&&(t=!0)}return!!t}getModelKey(){const e=this.getDocumentNode();return e?e.getModelKey():this.getData().urn}dtor(){super.dtor(),this.#o()}#o(){const e=this.getInstanceTree();null==e||e.dtor(),this.myData=null,this.topology=null,this.topologyPromise=null}setFragmentBoundingBoxes(e,t){const i=this.getFragmentList().fragments,n=i.boxes,r=e.length/t;for(let i=0,o=0,s=0;i{"use strict";i.r(t),i.d(t,{ModelLayers:()=>s});var n=i(83081),r=i(19556),o={name:"root",id:"root",isLayer:!1,children:[],childCount:0};function s(e){this.viewer=e,this.matman=e.matman(),this.model=null,this.root=null,this.initialized=!1,this.layerToIndex={},this.indexToLayer=[null],this.nodeToLayer=[]}var a=s.prototype;function l(e,t){var i=e.model,n=e.indexToLayer;if(i.is2d()){if(!i.getData().layerCount)return;var r=[];for(var o in e.layerToIndex)r.push(e.layerToIndex[o]);e.matman.setLayerVisible(r,t,i.id),e.viewer.invalidate(!0)}else{var s=[],a=t?e.viewer.visibilityManager.show:e.viewer.visibilityManager.hide;c(e,(function(e,r){n[r].visible!==t&&(s.push(e),1024===s.length&&(a(s,i),s.length=0))})),s.length>0&&a(s,i)}for(var l=n.length,h=1;h1&&void 0!==arguments[1]&&arguments[1];if(!this.initialized&&(e.is2d()||!t)){var i=function(t){if(t){var i=this.model.getData().instanceTree;t.children=t.children||[];var r=function(e){if(!e)return[];var t=[],i=0;d(e,(e=>{t.push(e),e.isLayer&&(i=Math.max(i,0|e.index))}));for(var n=0;n{e&&!e.visible&&this.setLayerVisible(e.layer,!1)})),this.viewer.api.dispatchEvent({type:r.MODEL_LAYERS_LOADED_EVENT,model:e,root:t})}.bind(this);this.model=e,(e.is2d()?function(e){var t=e.getData(),i=o;t&&t.layersRoot&&(i=t.layersRoot);return Promise.resolve(i)}(e):function(e){if(e.getData().loadOptions.skipPropertyDb)return Promise.resolve(null);var t=e.getPropertyDb();if(!t||e.getData().loadOptions.disable3DModelLayers)return Promise.resolve(o);return t.findLayers()}(e)).then((function(e){i(e),s(e)})).catch((function(e){n.logger.warn(e),s(o)}))}},a.removeModel=function(e){this.model===e&&(this.model=null,this.root=null,this.initialized=!1,this.layerToIndex={},this.indexToLayer=[null],this.nodeToLayer=[])},a.getRoot=function(){return this.initialized||n.logger.warn("Autodesk.Viewing.ModelLayers.getRoot couldn't peform action, layers are still being loaded"),this.root},a.showAllLayers=function(){this.initialized?l(this,!0):n.logger.warn("Autodesk.Viewing.ModelLayers.showAllLayers couldn't peform action, layers are still being loaded")},a.hideAllLayers=function(){this.initialized?l(this,!1):n.logger.warn("Autodesk.Viewing.ModelLayers.hideAllLayers couldn't peform action, layers are still being loaded")},a.isLayerVisible=function(e){if(!this.initialized)return n.logger.warn("Autodesk.Viewing.ModelLayers.isLayerVisible couldn't peform action, layers are still being loaded"),!1;let t=h(this,e);const i=this.indexToLayer[t];if(u(i)){const e=i.layer.children;for(var r=0;r{i.push(e.index)}))}}var s=this.model,a=this.indexToLayer;if(s.is2d())this.matman.setLayerVisible(i,t,s.id),this.viewer.invalidate(!0);else{var l=a.map((function(e){return!(null!==e&&-1!==i.indexOf(e.layer.index)&&e.visible!==t)})),d=[],f=t?this.viewer.visibilityManager.show:this.viewer.visibilityManager.hide;c(this,(function(e,t){l[t]||(d.push(e),1024===d.length&&(f(d,s),d.length=0))})),d.length>0&&f(d,s)}var p=i.length;for(let e=0;e=i.length)return!1;var o=i[r].visible_layers,s={};if(o&&0{"use strict";i.r(t),i.d(t,{ModelMemoryTracker:()=>u,estimateMemUsage:()=>h});var n=i(57872);function r(e){return e&&e.byteLength||0}function o(e){return r(e.boxes)+r(e.transforms)+r(e.fragId2dbId)+r(e.geomDataIndexes)+r(e.materials)}function s(e){return r(e.geomids)+r(e.materialids)+r(e.vizflags)+(e.boxes!==e.fragments.boxes?r(e.boxes):0)+(e.transforms!==e.fragments.transforms?r(e.transforms):0)}function a(e){return r(e.nodes.nodesRaw?e.nodes.nodesRaw:e.nodes)+r(e.primitives)}var l=!1;function c(e){for(var t,i=Autodesk.Viewing.Private,n=0,c=0;c=this.getMemLimit()},this.getMemLimit=function(){return void 0!==o?o:n.MODEL_MEMORY_LIMIT},this.setMemLimit=function(e){o=e},this.cleanup=function(e){var t=e||i.impl.unloadModel.bind(i.impl);if(this.memoryExceeded()){for(var n=function(){for(var e=i.impl.modelQueue().getHiddenModels(),t=[],n=0;n{"use strict";i.r(t),i.d(t,{OverlayManager:()=>n});class n{constructor(e){this.impl=e}dtor(){this.impl=null}addScene(e){return!!e&&(Object.prototype.hasOwnProperty.call(this.impl.overlayScenes,e)||this.impl.createOverlayScene(e),!0)}removeScene(e){return!!e&&(this.impl.removeOverlayScene(e),!0)}clearScene(e){this.impl.clearOverlay(e)}hasScene(e){return!!e&&Object.prototype.hasOwnProperty.call(this.impl.overlayScenes,e)}setSceneHiddenFromMainRender(e,t){this.impl.overlayScenes[e].hiddenFromMainRender=t}addMesh(e,t){return!!(e&&t&&Object.prototype.hasOwnProperty.call(this.impl.overlayScenes,t))&&(e=Array.isArray(e)?e:[e],this.impl.addMultipleOverlays(t,e),!0)}removeMesh(e,t){return!!(e&&t&&Object.prototype.hasOwnProperty.call(this.impl.overlayScenes,t))&&(e=Array.isArray(e)?e:[e],this.impl.removeMultipleOverlays(t,e),!0)}hasMesh(e,t){var i=this.impl.overlayScenes[t];if(!i)return!1;var n=i.scene.children;for(let t=0,i=n.length;t{"use strict";i.r(t),i.d(t,{Prefs:()=>o,Prefs2D:()=>r,Prefs3D:()=>n,VIEW_TYPES:()=>s});const n={VIEW_CUBE:"viewCube",VIEW_CUBE_COMPASS:"viewCubeCompass",VIEW_TYPE:"viewType",ALWAYS_USE_PIVOT:"alwaysUsePivot",ZOOM_TOWARDS_PIVOT:"zoomTowardsPivot",SELECTION_SETS_PIVOT:"selectionSetsPivot",REVERSE_HORIZONTAL_LOOK_DIRECTION:"reverseHorizontalLookDirection",REVERSE_VERTICAL_LOOK_DIRECTION:"reverseVerticalLookDirection",ORBIT_PAST_WORLD_POLES:"orbitPastWorldPoles",CLICK_TO_SET_COI:"clickToSetCOI",GHOSTING:"ghosting",OPTIMIZE_NAVIGATION:"optimizeNavigation",AMBIENT_SHADOWS:"ambientShadows",ANTIALIASING:"antialiasing",GROUND_SHADOW:"groundShadow",GROUND_REFLECTION:"groundReflection",LINE_RENDERING:"lineRendering",EDGE_RENDERING:"edgeRendering",LIGHT_PRESET:"lightPreset",ENV_MAP_BACKGROUND:"envMapBackground",FIRST_PERSON_TOOL_POPUP:"firstPersonToolPopup",BIM_WALK_TOOL_POPUP:"bimWalkToolPopup",BIM_WALK_NAVIGATOR_TYPE:"bimWalkNavigatorType",BIM_WALK_GRAVITY:"bimWalkGravity",DEFAULT_NAVIGATION_TOOL_3D:"defaultNavigationTool3D",SELECTION_MODE:"selectionMode",ENABLE_CUSTOM_ORBIT_TOOL_CURSOR:"enableCustomOrbitToolCursor",EXPLODE_STRATEGY:"explodeStrategy",FORCE_DOUBLE_SIDED:"forceDoubleSided",DISPLAY_SECTION_HATCHES:"displaySectionHatches",LARGE_MODEL_EXPERIENCE:"largeModelExperienceBeta",OUT_OF_CORE_GPU_MEMORY_MANAGEMENT:"outOfCoreGpuMemoryManagementBeta"},r={GRAYSCALE:"grayscale",SWAP_BLACK_AND_WHITE:"swapBlackAndWhite",LOADING_ANIMATION:"loadingAnimation",FORCE_PDF_CALIBRATION:"forcePDFCalibration",FORCE_LEAFLET_CALIBRATION:"forceLeafletCalibration",DISABLE_PDF_HIGHLIGHT:"disablePdfHighlight",USE_PDF_VIEWPORT_INFO:"usePdfViewportInfo",VECTOR_VIEWING:"vectorViewing"},o={WEBGPU:"webgpu",PROGRESSIVE_RENDERING:"progressiveRendering",OPEN_PROPERTIES_ON_SELECT:"openPropertiesOnSelect",POINT_RENDERING:"pointRendering",BACKGROUND_COLOR_PRESET:"backgroundColorPreset",REVERSE_MOUSE_ZOOM_DIR:"reverseMouseZoomDir",LEFT_HANDED_MOUSE_SETUP:"leftHandedMouseSetup",FUSION_ORBIT:"fusionOrbit",FUSION_ORBIT_CONSTRAINED:"fusionOrbitConstrained",WHEEL_SETS_PIVOT:"wheelSetsPivot",RESTORE_SESSION_MEASUREMENTS:"restoreMeasurements",DISPLAY_UNITS:"displayUnits",DISPLAY_UNITS_PRECISION:"displayUnitsPrecision",KEY_MAP_CMD:"keyMapCmd",ZOOM_DRAG_SPEED:"zoomDragSpeed",ZOOM_SCROLL_SPEED:"zoomScrollSpeed"},s={DEFAULT:0,ORTHOGRAPHIC:1,PERSPECTIVE:2,PERSPECTIVE_ORTHO_FACES:3}},61183:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Preferences:()=>l});var n=i(19556),r=i(83081),o=i(26206),s=i(26477),a=i(94661);class l{constructor(e){this.options={},this.storageCache={},"string"==typeof e&&(this.options={prefix:e}),this.options={...e},this.options.prefix||(this.options.prefix="Autodesk.Viewing.Preferences."),Object.prototype.hasOwnProperty.call(this.options,"localStorage")||(this.options.localStorage=!0),this.defaults={},this.callbacks={},this.tags={},this.useLocalStorage=this.options.localStorage&&a.LocalStorage.isSupported();return new Proxy(this,{get:function(e,t){return t in e?e[t]:e.storageCache[t]}})}setWebStorageKey(e){this.storageKey=e}_getPrefixedStorageKey(e,t){return t??this.hasTag(e,"shared-storage")?"___Shared":this.getLocalStoragePrefix()+this.storageKey}webStorage(e,t,i){if(this.useLocalStorage){if(this.hasTag(e,"no-storage"))return;const n=this._getPrefixedStorageKey(e,i);let o=a.LocalStorage.getItem(n);if(o=JSON.parse(o||"{}"),void 0!==t)t instanceof s.EnumType&&(t=t.toString()),o[e]=t,a.LocalStorage.setItem(n,JSON.stringify(o));else if(void 0!==(t=o[e]))try{"__enum"===(t=JSON.parse(t)).type&&(t=s.EnumType.deSerialize(t))}catch(e){r.logger.log("Preferences: Cannot deserialize value ="+t),t=void 0}return t}}getPrefFromLocalStorage(e){return this.webStorage(e)}setPrefInLocalStorage(e,t){return this.webStorage(e,t)}addPref(e,t,i){if("string"!=typeof e||"function"==typeof this.storageCache[e])return void r.logger.log("Preferences: invalid name="+e);t instanceof s.EnumType&&(t=t.clone()),this.tags[e]={},i&&(this.tags[e]["shared-storage"]=!0);const n=this.webStorage(e);this.storageCache[e]=void 0!==n?n:t}load(e){for(var t in this.defaults=e,this.defaults)Object.prototype.hasOwnProperty.call(this.defaults,t)&&this.addPref(t,this.defaults[t])}addTags(e,t){if(!t||!e)return!1;t=Array.isArray(t)?t:[t];for(var i=0;i"object"==typeof e?JSON.stringify(e):e;return i(e)===i(t)}if(!o(this.get(e),r)){this.storageCache[e]instanceof s.EnumType?this.storageCache[e].value=r:t instanceof s.EnumType?this.storageCache[e]=t.clone():this.storageCache[e]=r;const a=this.defaults[e]instanceof s.EnumType?this.defaults[e].value:this.defaults[e];return o(this.get(e),a)?this.deleteFromWebStorage(e):this.webStorage(e,this.storageCache[e]),(void 0===i||i)&&this.dispatchEvent(e,n.PREF_CHANGED_EVENT),!0}return!1}dispatchEvent(e,t){}addListeners(e,t,i){this.callbacks[e]||(this.callbacks[e]=[]),i||(i=t),this.callbacks[e].push({changed:t,reset:i})}removeListeners(e,t,i){if(void 0!==this.callbacks[e])if(t||i){i||(i=t);for(let n=0;n{"use strict";i.r(t),i.d(t,{Profile:()=>o});var n=i(35922),r=i(94661);function o(e){if(!e)return;const t=Autodesk.Viewing,i=t.ProfileSettings.Default;let o=[];if(this.name=Object.prototype.hasOwnProperty.call(e,"name")?e.name:"Custom",this.label=e.label,this.description=e.description,this.storageVersion="2.0",this.persistent=Array.isArray(e.persistent)?e.persistent:i.persistent,this.sharedStorage=Array.isArray(e.sharedStorage)?e.sharedStorage:i.sharedStorage,this.settings=Object.assign({},i.settings),Object.prototype.hasOwnProperty.call(e,"settings")){const t=e.settings;o=Object.keys(t),this.settings=Object.assign(this.settings,t)}let s=[],a=[];if(Object.prototype.hasOwnProperty.call(e,"extensions")){const t=e.extensions.load,i=e.extensions.unload;s=t?t.slice():s,a=i?i.slice():a}this.extensions={load:s,unload:a},this.apply=function(e){let i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!e)return!1;const s=e.getLocalStoragePrefix()+"StorageVersion",a="Autodesk.Viewing.ProfileName";!e.useLocalStorage||r.LocalStorage.getItem(s)||!r.LocalStorage.getItem(a)||(()=>{const t={},i=r.LocalStorage.getItem(a),n=e.getLocalStoragePrefix();for(let e of r.LocalStorage.getAllKeys())if(-1!==e.indexOf(n))try{t[e.split(".").pop()]=JSON.parse(r.LocalStorage.getItem(e)),r.LocalStorage.removeItem(e)}catch{console.log(`Cound't convert preference to new format: ${e}`)}r.LocalStorage.setItem(n+i,JSON.stringify(t)),r.LocalStorage.removeItem(a)})();const l=e.getLocalStoragePrefix()+"StorageVersion";r.LocalStorage.setItem(l,this.storageVersion);const c=e.getLocalStoragePrefix()+"CurrentProfile";r.LocalStorage.setItem(c,this.name),e.setWebStorageKey(this.name);const h=this.settings,u=[t.ProfileSettings.Default.name,t.ProfileSettings.AEC.name],d=Object.values(n.Prefs3D),f=Object.values(n.Prefs2D);for(let t in h)if(Object.prototype.hasOwnProperty.call(h,t)){var p,m,g;const n=h[t],r=-1!==o.indexOf(t)&&-1===u.indexOf(this.name)?["ignore-producer"]:[];-1!==d.indexOf(t)?r.push("3d"):-1!==f.indexOf(t)?r.push("2d"):(r.push("2d"),r.push("3d"));let s=(null===(p=this.sharedStorage)||void 0===p||null===(m=(g=p).indexOf)||void 0===m?void 0:m.call(g,t))>=0;s&&r.push("shared-storage"),-1!==this.persistent.indexOf(t)||s||r.push("no-storage");const a=e.webStorage(t,void 0,s),l=e.get(t);if(void 0!==a){a!=l&&(e.add(t,a,r,!0),e.setDefault(t,n));continue}if(void 0!==l){e.addTags(t,r),l!==n&&i&&e.set(t,n);continue}e.add(t,n,r,!0)}return!0}}},53625:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ProfileManager:()=>o});var n=i(83081),r=i(11743);class o{constructor(){this.registered={};const e=Autodesk.Viewing.ProfileSettings;this.PROFILE_DEFAULT=new r.Profile(e.Default),this.registerProfile("default",this.PROFILE_DEFAULT),this.PROFILE_AEC=new r.Profile(e.AEC),this.registerProfile("rvt",this.PROFILE_AEC),this.registerProfile("ifc",this.PROFILE_AEC),this.PROFILE_NAVIS=new r.Profile(e.Navis),this.registerProfile("nwc",this.PROFILE_NAVIS),this.registerProfile("nwd",this.PROFILE_NAVIS),this.PROFILE_FLUENT=new r.Profile(e.Fluent),this.registerProfile("fluent",this.PROFILE_FLUENT)}registerProfile(e,t){t?(e=e||"default",this.registered[e]=t instanceof r.Profile?t:new r.Profile(t)):n.logger.log("ProfileManager: missing profileSettings when registering a profile.")}unregisterProfile(e){e?delete this.registered[e]:n.logger.log("ProfileManager: missing fileExt when unregistering a profile.")}getProfiles(){return Object.assign({},this.registered)}getProfileOrDefault(e){if(!e)return n.logger.log("ProfileManager: missing fileExt for getProfile. Returning the default Profile."),this.registered.default;const t=this.registered[e];return t||(n.logger.log(`ProfileManager: No profile registered for ${e}. Returning the default Profile.`),this.registered.default)}}},26477:(e,t,i)=>{"use strict";i.r(t),i.d(t,{DefaultSettings:()=>u,EnumType:()=>c,ProfileSettings:()=>v});var n=i(35922),r=i(83081),o=i(63430),s=i(55280),a=i(97005),l=i(13202);class c{constructor(e,t){if(!Array.isArray(e)||0===e.length)throw new Error(`Invalid ${e}`);this.values=new Set(e),this.current=e.includes(t)?t:e[0]}get value(){return this.current}set value(e){this.values.has(e)&&(this.current=e)}clone(){return c.deSerialize(JSON.parse(this.toString()))}toString(){return JSON.stringify({type:"__enum",values:Array.from(this.values),current:this.current})}static deSerialize(e){if("__enum"===e.type)return new c(e.values,e.current)}}const h={};h[n.Prefs3D.AMBIENT_SHADOWS]=!0,h[n.Prefs3D.ANTIALIASING]=!(0,s.isMobileDevice)(),h[n.Prefs3D.GROUND_SHADOW]=!0,h[n.Prefs3D.GROUND_REFLECTION]=!1,h[n.Prefs3D.GHOSTING]=!0,h[n.Prefs3D.VIEW_CUBE]=!(0,s.isMobileDevice)(),h[n.Prefs3D.VIEW_CUBE_COMPASS]=!1,h[n.Prefs3D.VIEW_TYPE]=n.VIEW_TYPES.DEFAULT,h[n.Prefs3D.LINE_RENDERING]=!0,h[n.Prefs3D.LIGHT_PRESET]=a.DefaultLightPreset,h[n.Prefs3D.EDGE_RENDERING]=!1,h[n.Prefs3D.REVERSE_HORIZONTAL_LOOK_DIRECTION]=!1,h[n.Prefs3D.REVERSE_VERTICAL_LOOK_DIRECTION]=!1,h[n.Prefs3D.ALWAYS_USE_PIVOT]=!1,h[n.Prefs3D.ZOOM_TOWARDS_PIVOT]=!1,h[n.Prefs3D.ORBIT_PAST_WORLD_POLES]=!0,h[n.Prefs3D.CLICK_TO_SET_COI]=!1,h[n.Prefs3D.OPTIMIZE_NAVIGATION]=(0,s.isMobileDevice)(),h[n.Prefs3D.ENV_MAP_BACKGROUND]=!1,h[n.Prefs3D.FIRST_PERSON_TOOL_POPUP]=!0,h[n.Prefs3D.BIM_WALK_TOOL_POPUP]=!0,h[n.Prefs3D.BIM_WALK_NAVIGATOR_TYPE]="default",h[n.Prefs3D.BIM_WALK_GRAVITY]=!0,h[n.Prefs3D.DEFAULT_NAVIGATION_TOOL_3D]="default",h[n.Prefs3D.SELECTION_MODE]=o.SelectionMode.LEAF_OBJECT,h[n.Prefs3D.ENABLE_CUSTOM_ORBIT_TOOL_CURSOR]=!0,h[n.Prefs3D.EXPLODE_STRATEGY]="hierarchy",h[n.Prefs3D.SELECTION_SETS_PIVOT]=!1,h[n.Prefs3D.FORCE_DOUBLE_SIDED]=!1,h[n.Prefs3D.DISPLAY_SECTION_HATCHES]=!0,h[n.Prefs3D.LARGE_MODEL_EXPERIENCE]=!1,h[n.Prefs3D.OUT_OF_CORE_GPU_MEMORY_MANAGEMENT]=!1,h[n.Prefs2D.GRAYSCALE]=!1,h[n.Prefs2D.SWAP_BLACK_AND_WHITE]=!1,h[n.Prefs2D.LOADING_ANIMATION]=!1,h[n.Prefs2D.FORCE_PDF_CALIBRATION]=!1,h[n.Prefs2D.FORCE_LEAFLET_CALIBRATION]=!0,h[n.Prefs2D.DISABLE_PDF_HIGHLIGHT]=!1,h[n.Prefs2D.USE_PDF_VIEWPORT_INFO]=!1,h[n.Prefs2D.VECTOR_VIEWING]=!0,h[n.Prefs.WEBGPU]=!1,h[n.Prefs.PROGRESSIVE_RENDERING]=!0,h[n.Prefs.OPEN_PROPERTIES_ON_SELECT]=!1,h[n.Prefs.POINT_RENDERING]=!0,h[n.Prefs.BACKGROUND_COLOR_PRESET]=null,h[n.Prefs.REVERSE_MOUSE_ZOOM_DIR]=!1,h[n.Prefs.LEFT_HANDED_MOUSE_SETUP]=!1,h[n.Prefs.FUSION_ORBIT]=!0,h[n.Prefs.FUSION_ORBIT_CONSTRAINED]=!0,h[n.Prefs.WHEEL_SETS_PIVOT]=!1,h[n.Prefs.RESTORE_SESSION_MEASUREMENTS]=!0,h[n.Prefs.DISPLAY_UNITS]=new c(l.displayUnitsEnum),h[n.Prefs.DISPLAY_UNITS_PRECISION]=new c(l.displayUnitsPrecisionEnum),h[n.Prefs.KEY_MAP_CMD]=!0;const u=h,d={name:"Default",label:"Manufacturing (Default)",description:"Default Viewer settings"};d.settings=h,d.persistent=[n.Prefs3D.ALWAYS_USE_PIVOT,n.Prefs3D.ZOOM_TOWARDS_PIVOT,n.Prefs3D.REVERSE_HORIZONTAL_LOOK_DIRECTION,n.Prefs3D.REVERSE_VERTICAL_LOOK_DIRECTION,n.Prefs3D.ORBIT_PAST_WORLD_POLES,n.Prefs3D.CLICK_TO_SET_COI,n.Prefs3D.GHOSTING,n.Prefs3D.OPTIMIZE_NAVIGATION,n.Prefs3D.AMBIENT_SHADOWS,n.Prefs3D.ANTIALIASING,n.Prefs3D.GROUND_SHADOW,n.Prefs3D.GROUND_REFLECTION,n.Prefs3D.FIRST_PERSON_TOOL_POPUP,n.Prefs3D.BIM_WALK_TOOL_POPUP,n.Prefs3D.BIM_WALK_GRAVITY,n.Prefs3D.VIEW_TYPE,n.Prefs3D.SELECTION_MODE,n.Prefs2D.SWAP_BLACK_AND_WHITE,n.Prefs2D.VECTOR_VIEWING,n.Prefs2D.LOADING_ANIMATION,n.Prefs.OPEN_PROPERTIES_ON_SELECT,n.Prefs.REVERSE_MOUSE_ZOOM_DIR,n.Prefs.LEFT_HANDED_MOUSE_SETUP,n.Prefs.WHEEL_SETS_PIVOT,n.Prefs.KEY_MAP_CMD,n.Prefs.DISPLAY_UNITS,n.Prefs.DISPLAY_UNITS_PRECISION],d.sharedStorage=[n.Prefs3D.LARGE_MODEL_EXPERIENCE,n.Prefs3D.OUT_OF_CORE_GPU_MEMORY_MANAGEMENT,n.Prefs.WEBGPU],d.extensions={load:[],unload:[]};const f=g(d);f.name="AEC",f.label="Construction (AEC)",f.description="A common set of preferences designed for the Construction industry",f.settings[n.Prefs.REVERSE_MOUSE_ZOOM_DIR]=!0,f.settings[n.Prefs2D.VECTOR_VIEWING]=!0,f.settings[n.Prefs3D.EDGE_RENDERING]=!(0,s.isMobileDevice)(),f.settings[n.Prefs3D.LIGHT_PRESET]=(0,s.getGlobal)().DefaultLightPresetAec||"Boardwalk",f.settings[n.Prefs3D.ENV_MAP_BACKGROUND]=!0,f.settings[n.Prefs3D.VIEW_CUBE_COMPASS]=!0,f.settings[n.Prefs3D.SELECTION_SETS_PIVOT]=!0,f.extensions={load:[],unload:[]};const p=g(f);p.name="Fluent",p.label="Design Collaboration",p.description="User experience that matches Design Collaboration",p.settings[n.Prefs.WHEEL_SETS_PIVOT]=!0,p.settings[n.Prefs.RESTORE_SESSION_MEASUREMENTS]=!1,p.settings[n.Prefs2D.FORCE_PDF_CALIBRATION]=!0,p.settings[n.Prefs3D.ALWAYS_USE_PIVOT]=!0,p.settings[n.Prefs3D.ENABLE_CUSTOM_ORBIT_TOOL_CURSOR]=!1,p.extensions={load:[],unload:[]},p.persistent.splice(p.persistent.indexOf(n.Prefs3D.VIEW_TYPE),1);const m=g(f);function g(e){var t;e||(r.logger.log("ProfileSettings.clone: missing profileSettings, using DefaultProfileSettings..."),e=d);const i={};return i.settings=Object.assign({},e.settings),i.extensions={},Object.prototype.hasOwnProperty.call(e,"extensions")?(i.extensions.load=Object.prototype.hasOwnProperty.call(e.extensions,"load")?e.extensions.load.slice():[],i.extensions.unload=Object.prototype.hasOwnProperty.call(e.extensions,"unload")?e.extensions.unload.slice():[]):i.extensions={load:[],unload:[]},i.persistent=e.persistent.slice(),i.sharedStorage=null===(t=e.sharedStorage)||void 0===t?void 0:t.slice(),i}m.name="Navis",m.label="Navisworks",m.description="Provides a user experience similar to Autodesk Navisworks desktop application",m.settings[n.Prefs3D.BIM_WALK_TOOL_POPUP]=!1,m.settings[n.Prefs3D.BIM_WALK_NAVIGATOR_TYPE]="aec",m.settings[n.Prefs3D.DEFAULT_NAVIGATION_TOOL_3D]="extractor_defined";const v={Default:d,AEC:f,Fluent:p,Navis:m,clone:g}},28441:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ProgressState:()=>n});let n={ROOT_LOADED:0,LOADING:1,RENDERING:2,OPTIMIZING:3}},33398:(e,t,i)=>{"use strict";i.r(t),i.d(t,{PropertySet:()=>r});var n=i(8022);class r{constructor(e){this.map=e}forEach(e){if(e)for(let t in this.map){if("__selected_dbIds__"===t)continue;e(t,this.map[t])}}getAggregation(e){if(!e)return null;if("string"==typeof e&&(e=this.map[e]),0===e.length)return null;const t=e[0].type;if(!(0,n.hA)(t))return null;const i={average:0,count:0,max:0,median:0,min:0,mode:[],range:0,sum:0},r=e.map((e=>Number(e.displayValue)));r.sort(((e,t)=>e-t));const o={};let s=0,a=0;r.forEach((e=>{a+=e,Object.prototype.hasOwnProperty.call(o,e)?o[e]++:o[e]=1,s=Math.max(s,o[e]),i.sum+=e})),i.count=r.length,i.average=a/i.count,i.max=r[i.count-1],i.min=r[0];const l=Math.ceil(i.count/2);i.median=i.count%2&&i.count>1?(r[l]+r[l-1])/2:r[l-1];for(let e in o)o[e]===s&&i.mode.push(Number(e));return i.range=i.max-i.min,i.sum=function(e,t){var i=t.displayValue.toString().split(".");if(1===i.length)return e;const n=e.toString().split(".");if(1===n.length)return e;const r=n[1];let o=i[1];if(r===o)return e;o=o.match(/\d+/);const s=o&&o[0]&&o[0].length||t.precision||0;return Number(e.toFixed(s))}(i.sum,e[0]),i}getValue2PropertiesMap(e){if(!e)return null;if("string"==typeof e&&(e=this.map[e]),!e||0===e.length)return null;const t={};return e.forEach((e=>{Object.prototype.hasOwnProperty.call(t,e.displayValue)||(t[e.displayValue]=[]),t[e.displayValue].push(e.parentName)})),t}getValidIds(e,t){const i=Object.keys(this.map),n=[];for(let r=0;r=2&&e[0]===t){n.push(o);continue}}}return n}getDbIds(){return this.map.__selected_dbIds__}getVisibleKeys(){const e=[];return this.forEach(((t,i)=>{i[0].hidden||e.push(t)})),e}getKeysWithCategories(){const e=[];return this.forEach(((t,i)=>{const n=!!i[0].hidden;i[0].displayCategory&&!n&&e.push(t)})),e}merge(e){if(!(e instanceof r))return this;const t=e.map;for(let e in t){const i=t[e];if(!Object.prototype.hasOwnProperty.call(this.map,e)){this.map[e]=i;continue}const n=this.map[e];if("__selected_dbIds__"!==e)for(let e=0;e{"use strict";i.r(t),i.d(t,{AppScreenModeDelegate:()=>u,ApplicationScreenModeDelegate:()=>d,NullScreenModeDelegate:()=>f,ScreenMode:()=>c,ScreenModeDelegate:()=>h,ScreenModeMixin:()=>p});var n=i(55280),r=i(19556),o=i(83081),s=["fullscreenchange","mozfullscreenchange","webkitfullscreenchange","MSFullscreenChange"];function a(e,t){for(var i=0;i{"use strict";i.r(t),i.d(t,{ScreenShot:()=>x});var n=i(57872),r=i(4897),o=i(88190),s=i(55280),a=i(8879),l=i(68747),c=i(12153),h=i(24528),u=i(72091),d=i(19556),f=i(71211);const p=(e,t,i,d,p)=>{let m=p.getMaterials(),g=p.glrenderer(),v=p.renderer(),y=p.modelQueue(),b=[],x=(d=d||{}).models||y.getModels();for(let e=0;e0;let w,T;E.reset(_,S,A),E.areaCullThreshold=n.PIXEL_CULLING_THRESHOLD,g.pushViewport(),g.setPixelRatio(1),d.renderContext?w=d.renderContext:(w=new o.RenderContext,w.init(g,e,t,{offscreen:!0})),p.isSheetRendererNeeded()&&(T=d.sheetRenderer?d.sheetRenderer:new f.A(p,w,g,m)),m.addOverrideMaterial("normalsMaterial_screenshot",w.getDepthMaterial()),m.addOverrideMaterial("edgeMaterial_screenshot",w.getEdgeMaterial());let M=d.renderConfig||v.getConfig();w.applyConfig(M),w.beginScene(p.scene,_,p.noLights,!0),g.popViewport(),g.setPixelRatio();let C,P=0,D={stop:()=>{C&&((0,s.getGlobal)().clearTimeout(C),R())},finished:()=>!!C},L=-1,I=[];for(let e=0;e{I.forEach((e=>e.iter.unregisterView(e.viewId))),I.length=0};let O=d.fragOptions,N=O?[]:void 0;const F=e=>{if(!(!!O&&e instanceof a.RenderBatch))return;let t=e.frags;e.forEachNoMesh((function(e,i){N[i]=t.vizflags[e];let n=O.isFragOff&&O.isFragOff(e);void 0!==n&&t.setFlagFragment(e,l.MeshFlags.MESH_HIDE,n);let r=O.isFragVisible&&O.isFragVisible(e);void 0!==r&&t.setFlagFragment(e,l.MeshFlags.MESH_VISIBLE,r)}))},U=e=>{if(!(!!O&&e instanceof a.RenderBatch))return;let t=e.frags;e.forEachNoMesh((function(e,i){let n=N[i],r=!!(n&l.MeshFlags.MESH_HIDE),o=!!(n&l.MeshFlags.MESH_VISIBLE);t.setFlagFragment(e,l.MeshFlags.MESH_HIDE,r),t.setFlagFragment(e,l.MeshFlags.MESH_VISIBLE,o)}))},B=(()=>{let e;if(d.models){e=new u.Box3;for(let t=0;t{d.excludeThemingColors&&e instanceof a.RenderBatch&&(e.frags.is2d||(V=e.frags.db2ThemingColor,e.frags.db2ThemingColor=k))},z=e=>{V&&(e.frags.db2ThemingColor=V,V=null)};let H=new u.Vector4(0,0,-1,-1e20),W=[],j=null;const q=()=>{if(!(()=>{let e=!0;for(let t=0;t{j=m.getCutPlanes();let e=j.length;if(W.length!==e){W.length=e;for(let t=0;t{var i;return t.id===(null===(i=e.frags)||void 0===i?void 0:i.modelId)}));if(null!=t&&t.is2d()){const e=t.getModelToViewerTransform(),i=e?e.getMaxScaleOnAxis():1;if(!p.is2d||1!==i){const e=t.getVisibleBounds(),n=w.settings.deviceWidth,r=w.settings.deviceHeight,o=c.SceneMath.getPixelsPerUnit(_,!0,e,r,null,e);m.updatePixelScaleForModel(t,o,n,r,i,_)}}if(F(e),G(e),e instanceof a.RenderBatch&&e.applyVisibility(h.RenderFlags.RENDER_NORMAL,E),T&&e.frags.is2d?T.renderScenePart(e,!0,!0,!1,w):(w.renderScenePart(e,!0,!0,!1,!1),(e.frags&&!e.frags.areAllVisible()&&p.showGhosting||O)&&(e instanceof a.RenderBatch&&e.applyVisibility(h.RenderFlags.RENDER_HIDDEN,E),v.setEdgeColor(p.edgeColorGhosted),e.overrideMaterial=p.fadeMaterial,w.renderScenePart(e,!0,!0,!1,!1),v.setEdgeColor(p.edgeColorMain),e.overrideMaterial=null)),z(e),U(e),P++,performance.now()-n>20)break}if(g.popViewport(),g.setPixelRatio(),m.updatePixelScale(r,v.settings.deviceWidth,v.settings.deviceHeight,_),d.excludeCutPlanes&&v.toggleTwoSided(m.setCutPlanes(j)),d.afterRender&&d.afterRender(),P===b.length?(()=>{R();let e=w.getColorTarget();if(M.aoEnabled||M.antialias)M.aoEnabled&&w.computeSSAO(),e=w.getNamedTarget("overlay"),w.getBlendPass().uniforms.tOverlay.value=null,w.setOffscreenTarget(e),w.presentBuffer();else{let e=p.lightsOn?p.lights:p.no_lights;if(d.overlayScenes){const t=d.overlayScenes??p.overlayScenes;w.renderOverlays(t,e)}}if(d.returnAsTarget){const t=d.extraTargets?d.extraTargets.map((e=>w.getNamedTarget(e))):void 0;return void i(w,e,_,T,t)}var t;d.sheetRenderer||(null===(t=T)||void 0===t||t.destroy(),T=null),w.targetToCanvas(e).canvas.toBlob((function(e){let t=(0,s.getGlobal)().URL.createObjectURL(e);i&&(i(t),d.renderContext||w.cleanup())}))})():C=(0,s.getGlobal)().setTimeout(q,0),d.onProgress){let e=Math.floor(100*P/b.length);e!==L&&(L=e,d.onProgress(e))}};return q(),D},m=(e,t,i,n,r)=>{var{fullPage:o,bounds:a,getCropBounds:l,margin:c,overlayRenderer:h,overlayRendererExtraOptions:d}=r;o&&(a=e.impl.getVisibleBounds());const f=e.impl.getCanvasBoundingClientRect().width;let m=e.navigation.getCamera();a&&(m=b(e,a,c));const y=g(e,m);try{if(o){const e=y.getSize(new u.Vector3),n=f/Math.max(e.x,e.y);t=Math.floor(t*n),i=Math.floor(i*n)}const r=r=>{if(o){const e=t/f;y.min.x*=e,y.min.y*=e,y.max.x*=e,y.max.y*=e,v(r,y,n)}else if(l){const t=l(e,m,a);v(r,t,n)}else r.toBlob((e=>{const r=(0,s.getGlobal)().URL.createObjectURL(e);n(r,t,i)}))},c=e.impl.selector.getSelection();return e.clearSelection(),p(t,i,((n,o,s)=>{if(e.impl.selector.setSelection(c),h){h(e,{width:t,height:i,ctx:n,target:o,screenshotCamera:s,onRenderDone:r},d)}else{const{canvas:e}=n.targetToCanvas(o);r(e)}}),{returnAsTarget:!0,camera:m},e.impl)}catch(e){console.error("getScreenShot error: "+e),n(null)}},g=(e,t)=>{const i=e.impl.getVisibleBounds(void 0,void 0,void 0,!0),n=e.worldToClient(i.min,t),r=e.worldToClient(i.max,t);return(new u.Box3).setFromPoints([n,r])},v=(e,t,i)=>{const n=(0,s.getGlobal)().document.createElement("canvas"),r=n.getContext("2d"),o=t.getSize(new u.Vector3),a=Math.min(Math.floor(o.x),e.width),l=Math.min(Math.floor(o.y),e.height);n.width=a,n.height=l;const c=Math.max(Math.floor(t.min.x),0),h=Math.max(Math.floor(t.min.y),0),d=a,f=l;r.drawImage(e,c,h,d,f,0,0,a,l),n.toBlob((e=>{var t=(0,s.getGlobal)().URL.createObjectURL(e);i(t,a,l)}),"image/png")},y=(e,t,i,n)=>{const r=(0,s.getGlobal)().document.createElement("canvas"),o=r.getContext("2d"),a=new Image;r.width=t,r.height=i,a.src=e,a.onload=function(){o.drawImage(a,0,0,t,i);const e=r.toDataURL("image/png");n(e)}},b=(e,t,i)=>{i=i||e.navigation.FIT_TO_VIEW_HORIZONTAL_MARGIN;const n={horizontal:e.navigation.FIT_TO_VIEW_HORIZONTAL_MARGIN,vertical:e.navigation.FIT_TO_VIEW_VERTICAL_MARGIN};e.navigation.FIT_TO_VIEW_HORIZONTAL_MARGIN=i,e.navigation.FIT_TO_VIEW_VERTICAL_MARGIN=i;const r=e.getState({viewport:!0});e.navigation.fitBounds(!0,t,!1,!0);const o=e.navigation.getCamera().clone();return e.restoreState(r,void 0,!0),e.navigation.FIT_TO_VIEW_HORIZONTAL_MARGIN=n.horizontal,e.navigation.FIT_TO_VIEW_VERTICAL_MARGIN=n.vertical,e.impl.updateNearFarValues(o,t),o};let x={getScreenShotLegacy:function(e,t,i,n,r){var o=e.impl,a=o.renderer(),l=a.settings.logicalWidth,c=a.settings.logicalHeight,h=o.progressiveRender,f=o.glrenderer().getPixelRatio();t&&i||(t=l,i=c),o.progressiveRender=!1,o.resize(t/f,i/f,!0),o.tick(performance.now());var p=new u.WebGLRenderTarget(t,i,{minFilter:u.LinearFilter,magFilter:u.LinearFilter,format:u.RGBFormat,type:u.UnsignedByteType});const m=a.getOffscreenTarget();function g(){var e=a.targetToCanvas(p||a.getColorTarget());function t(){o.progressiveRender=h,o.resize(l,c,!0),e.canvas.toBlob((function(e){var t=(0,s.getGlobal)().URL.createObjectURL(e);n?n(t):(0,s.getGlobal)().open(t)}),"image/png")}p&&(p.dispose(),p=void 0,o.glrenderer().setRenderTarget(null)),r?r(e.ctx,t):t()}if(a.setOffscreenTarget(p),a.presentBuffer(),a.setOffscreenTarget(m),e.model.isLeaflet()){var v=!1;const t=function(){v=!0,o.progressiveRender=h,o.resize(l,c,!0),p&&p.dispose()};e.addEventListener(d.CANCEL_LEAFLET_SCREENSHOT,t,{once:!0}),o.invalidate(!0),e.model.getIterator().callWhenRefined((function(){v||(e.removeEventListener(d.CANCEL_LEAFLET_SCREENSHOT,t),g())}))}else g()},getScreenShot:p,getScreenShotWithBounds:m,getScreenShotAtScreenSize:(e,t,i)=>{const n=e.impl.getCanvasBoundingClientRect(),r=Math.floor(n.width),o=Math.floor(n.height);m(e,r,o,((e,i,n)=>{e?y(e,i,n,(e=>{t(e,i,n)})):t(null)}),i)},getSceneClientBounds:g,cropImage:v,blobToImage:y,makeBoundsSquare:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=e.getSize(new u.Vector3),n=Math.max(i.x,i.y,t);e.expandByVector(new u.Vector3((n-i.x)/2,(n-i.y)/2,0))},getCameraWithFitBounds:b}},82976:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Thumbnails:()=>l});var n=i(94661),r=i(8412),o=i(84045),s=i(55280),a=i(11653);let l={getUrlForBubbleNode:function(e,t){if(!e)return Promise.reject(new Error("Missing instance of BubbleNode"));var i=e.findParentGeom2Dor3D();if(!i)return Promise.reject(new Error("No thumbnail available."));const l=(t=t||{}).size||200,c=e.getRootNode();return(c.data.isVectorPDF||i.data.isVectorPDF)&&c.data.getPDF?new Promise((t=>{let i=e.data,r=c.data.getPDF(),o=l,a=l,h=`${i.guid}/thumbnail/${o}x${a}`;!function(e,t,i,r,o,a){var l=n.LocalStorage.getItem(o);l?a(l):e.getPage(t).then((e=>{var t=(0,s.getGlobal)().document.createElement("canvas");t.width=i,t.height=r;var l=t.getContext("2d"),c={scale:1},h=e.getViewport(c),u=Math.min(t.width/h.width,t.height/h.height);e.render({canvasContext:l,viewport:e.getViewport({scale:u})}).promise.then((()=>{e.cleanup(),t.toBlob((e=>{var t=new FileReader;t.readAsDataURL(e),t.onloadend=function(){n.LocalStorage.setItem(o,t.result),a(t.result)}}),"image/png")}))}))}(r,i.page,o,a,h,t)})):new Promise(((t,i)=>{var n={urn:c.urn(),width:l,height:l,guid:encodeURIComponent(e.guid()),acmsession:r.endpoint.getAcmSession()},h={responseType:"blob",skipAssetCallback:!0,size:l,guid:n.guid,acmsession:n.acmSession};let u="urn:"+n.urn;e.data.thumbnailUrn&&(u=c.getDocument().getFullPath(e.data.thumbnailUrn));var d=void 0;if(!(0,s.getGlobal)().USE_OTG_DS_PROXY){var f=(0,r.getEnv)();d=a.EnvironmentConfigurations[f].UPSTREAM;const e=(0,a.getUpstreamApiData)(f,r.endpoint.getApiFlavor());h.apiData=e}o.ViewingService.getThumbnail((0,r.initLoadContext)({endpoint:d}),u,(e=>{var i=new FileReader;i.onload=e=>{var i=e.target.result;t(i)},i.readAsDataURL(e)}),(()=>{i(new Error("Thumbnail is unavailable."))}),h)}))}}},91735:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Viewer3D:()=>ee,waitForCompleteLoad:()=>te});var n=i(72091),r=i(55280),o=i(83081),s=i(11743),a=i(35922),l=i(26477),c=i(13202),h=i(53625),u=i(8600),d=i(57872),f=i(57480),p=i(25004),m=i(24840),g=i(92037),v=i(55270),y=i(75109),b=i(17016),x=i(83464),_=i(40723),E=i(68793),S=i(55855),A=i(38842),w=i(19556),T=i(54393),M=i(13e3),C=i(21174),P=i(23261),D=i(43719),L=i(55066),I=i(99211),R=i(32431),O=i(49930),N=i(26206);const F=416,U=1e3;class B{constructor(e){this.viewer=e,this.setGlobalManager(this.viewer.globalManager),this.domElement=null,this._step=this._step.bind(this),this._maskId="mask"+Date.now()}createDom(e){const t=this.getDocument();this.domElement=t.createElement("div"),this.domElement.className="forge-spinner",this._initTransform="translate(-50%, -50%) scale(0.5)",this.domElement.style.transform=this._initTransform.slice();var i=this._createSvgElement("svg");i.setAttribute("width","242"),i.setAttribute("height","242"),i.setAttribute("viewBox","0 0 72 72"),i.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink","http://www.w3.org/1999/xlink"),this.domElement.appendChild(i);var n=this._createWheelPointData(10,72,6.75);this._createMask(n);var r=this._createSvgElement("polygon");r.setAttribute("mask",`url(#${this._maskId})`),i.appendChild(r),this._addPoints(n.outerPoints,r),this._createSegments(n);var o=t.createElement("img");return o.src=Autodesk.Viewing.Private.getResourceUrl("res/ui/powered-by-autodesk-blk-rgb.png"),this._onResize=this._onResize.bind(this),o.onload=()=>{this._onResize(),this._initResize=!0,this.viewer.addEventListener(Autodesk.Viewing.VIEWER_RESIZE_EVENT,this._onResize)},this.domElement.appendChild(o),e&&e.appendChild(this.domElement),this.domElement.style.display="none",this.domElement}_createSvgElement(e){return this.getDocument().createElementNS("http://www.w3.org/2000/svg",e)}_getSvg(){return null==this?void 0:this.domElement.getElementsByTagNameNS("http://www.w3.org/2000/svg","svg")[0]}_createMask(e){const t=this._getSvg(),i=this._createSvgElement("defs"),n=this._createSvgElement("mask");n.id=this._maskId,i.appendChild(n),t.appendChild(i);const r=this._createSvgElement("polygon");r.style.opacity=.15,r.style.fill="#FFF",n.appendChild(r),this._addPoints(e.outerPoints,r);const o=this._createSvgElement("polygon");n.appendChild(o),this._addPoints(e.innerPoints,o)}_step(e){this.startTime||(this.startTime=e);const t=(e-this.startTime)%U;this._setSegmentOpacities(t);const i=this.getWindow();this._animId=i.requestAnimationFrame(this._step)}_stop(){if(this._animId){this.getWindow().cancelAnimationFrame(this._animId),this._animId=null}}_setSegmentOpacities(e){this.segments.forEach(((t,i)=>{const n=Math.abs(i-this.segments.length)-1;t.style.opacity=this._getSegmentOpacity(n,e)}))}_getSegmentOpacity(e,t){const i=e*(U/this.segments.length);return i+F>U&&ti+F?0:Math.abs((t-i)/F-1)}_getSegments(){return Array.from(this.domElement.querySelectorAll(".segment"))}_addPoints(e,t){for(let i of e){const e=this._getSvg().createSVGPoint();e.x=i[0],e.y=i[1],t.points.appendItem(e)}}_createWheelPointData(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5;const n=t/2,r=t/2,o=t/2,s={outerPoints:[],innerPoints:[]};for(let t=1;t<=e;t++)s.outerPoints.push([r+n*Math.cos(2*t*Math.PI/e),o+n*Math.sin(2*t*Math.PI/e)]),s.innerPoints.push([r+(n-i)*Math.cos(2*t*Math.PI/e),o+(n-i)*Math.sin(2*t*Math.PI/e)]);return s}_createSegments(e){const{outerPoints:t,innerPoints:i}=e,n=this._getSvg(),r=(e,t)=>{var i=this._createSvgElement("polygon");i.classList.add("segment"),i.classList.add(t),this._addPoints(e,i),n.appendChild(i)};for(let e=t.length-1;e>=0;--e){let n=t[e],o=t[e-1],s=i[e],a=i[e-1];0===e&&(o=t[t.length-1],a=i[t.length-1]),r([n,o,s],"light-blue"),r([s,a,o],"dark-blue")}}_fadeOut(){let e=1;const t=setInterval((()=>{var i;null!==(i=this.domElement)&&void 0!==i&&i.style?(e<=.1&&(clearInterval(t),this.domElement.style.display="none"),this.domElement.style.opacity=e,e-=.1*e):clearInterval(t)}),1)}show(){this.domElement&&(this.domElement.style.display="block",this.domElement.style.opacity=1,this.segments=this._getSegments(),this._step(1))}hide(){if(this.domElement){this._hide=e=>{this._stop(),e.model.is3d()?this._fadeOut():(this.domElement.style.opacity=0,this.domElement.style.display="none")};var e=this.viewer.impl.modelQueue().getModels();0===e.length?this.viewer.addEventListener(Autodesk.Viewing.MODEL_ADDED_EVENT,this._hide,{once:!0}):this._hide({model:e[0]})}}destroy(){var e;this._stop(),null!==(e=this.domElement)&&void 0!==e&&e.parentElement&&this.domElement.parentElement.removeChild(this.domElement),this.domElement=null,this.viewer.removeEventListener(Autodesk.Viewing.VIEWER_RESIZE_EVENT,this._onResize)}_onResize(){var e;if(this._initResize)return void(this._initResize=!1);const t=this.domElement;if(!t)return;if("none"==t.style.display)return;const i=t.parentElement;if(!i)return;const n=i.getBoundingClientRect(),r=t.getBoundingClientRect(),o=Math.max(r.width/n.width,(r.height+350)/n.height),s=null===(e=this.domElement)||void 0===e||null===(e=e.style)||void 0===e?void 0:e.transform;if(s)if(o>.8){const e=/[-+]?scale\(\d*\.\d+|\d+\)/,t=e.exec(s);if(t.length>0){const i=t[0].split("scale(")[1],n=Number((i/o).toFixed(4)),r=s.replace(e,`scale(${n}`);r!=this.domElement.style.transform&&n<=.5&&n>.2&&(this.domElement.style.transform=r)}}else this.domElement.style.transform!=this._initTransform&&(this.domElement.style.transform=this._initTransform)}}N.GlobalManagerMixin.call(B.prototype);class k{constructor(){this.domElement=null}createDom(e){var t=this.getDocument(),i=t.createElement("div");i.className="spinner",e&&e.appendChild(i);for(var n=1;n<=3;n++){var r=t.createElement("div");r.className="bounce"+n,i.appendChild(r)}return this.domElement=i,this.hide(),i}show(){this.domElement&&(this.domElement.style.display="block")}hide(){this.domElement&&(this.domElement.style.display="None")}destroy(){this.domElement=null}}N.GlobalManagerMixin.call(k.prototype);var V=i(12153),G=i(18817);const z=Object.freeze({pdf:"Autodesk.PDF",scalaris:"Autodesk.Scalaris",dwf:"Autodesk.DWF",dwfx:"Autodesk.DWF",rcp:"Autodesk.ReCap",gltf:"Autodesk.glTF",glb:"Autodesk.glTF"});var H=i(13002),W=i(8811),j=i(97005),q=i(1979),X=i(85403),Y=i(8412);var K=i(61183);class Q extends K.Preferences{constructor(e,t){super(t),this.viewer=e,this.setGlobalManager(e.globalManager),e.addEventListener(w.PREF_CHANGED_EVENT,(e=>{var t=this.callbacks[e.name];t&&t.forEach((t=>{var i=t.changed;i&&"function"==typeof i&&i(e.value)}))})),e.addEventListener(w.PREF_RESET_EVENT,(e=>{var t=this.callbacks[e.name];t&&t.forEach((t=>{var i=t.reset;i&&"function"==typeof i&&i(e.value)}))}));const i={[a.Prefs3D.VIEW_CUBE]:function(t){e.getExtension("Autodesk.ViewCubeUi",(function(e){e.displayViewCube(t)}))},[a.Prefs3D.ALWAYS_USE_PIVOT]:e.setUsePivotAlways.bind(e),[a.Prefs3D.ORBIT_PAST_WORLD_POLES]:e.setOrbitPastWorldPoles.bind(e),[a.Prefs3D.ZOOM_TOWARDS_PIVOT]:e.setZoomTowardsPivot.bind(e),[a.Prefs.REVERSE_MOUSE_ZOOM_DIR]:e.setReverseZoomDirection.bind(e),[a.Prefs.LEFT_HANDED_MOUSE_SETUP]:e.setUseLeftHandedInput.bind(e),[a.Prefs3D.CLICK_TO_SET_COI]:e.setClickToSetCOI.bind(e),[a.Prefs.ZOOM_DRAG_SPEED]:function(t){var i;const n=e.toolController.getTool("dolly");null==n||null===(i=n.setDollyDragScale)||void 0===i||i.call(n,t)},[a.Prefs.ZOOM_SCROLL_SPEED]:t=>{var i;const n=e.toolController.getTool("dolly");null==n||null===(i=n.setDollyScrollScale)||void 0===i||i.call(n,t)},[a.Prefs3D.ANTIALIASING]:t=>e.setQualityLevel(this.get("ambientShadows"),t),[a.Prefs3D.AMBIENT_SHADOWS]:t=>e.setQualityLevel(t,e.prefs.get("antialiasing")),[a.Prefs3D.GROUND_SHADOW]:e.setGroundShadow.bind(e),[a.Prefs3D.GROUND_REFLECTION]:e.setGroundReflection.bind(e),[a.Prefs2D.SWAP_BLACK_AND_WHITE]:e.setSwapBlackAndWhite.bind(e),[a.Prefs3D.OPTIMIZE_NAVIGATION]:e.setOptimizeNavigation.bind(e),[a.Prefs.PROGRESSIVE_RENDERING]:e.setProgressiveRendering.bind(e),[a.Prefs.GHOSTING]:e.setGhosting.bind(e),[a.Prefs3D.LINE_RENDERING]:t=>e.hideLines(!t),[a.Prefs.POINT_RENDERING]:t=>e.hidePoints(!t),[a.Prefs3D.EDGE_RENDERING]:e.setDisplayEdges.bind(e),[a.Prefs3D.ENV_MAP_BACKGROUND]:e.setEnvMapBackground.bind(e),[a.Prefs3D.LIGHT_PRESET]:e.setLightPreset.bind(e)};Object.keys(i).forEach((e=>{this.addListeners(e,i[e])}))}dispatchEvent(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:w.PREF_CHANGED_EVENT;const i=this.get(e);this.viewer.dispatchEvent({type:t,name:e,value:i})}}const Z=Autodesk.Viewing;var $=0;const J=["markups-svg","pushpin-container"];function ee(e,t){if(this.setGlobalManager(new W.GlobalManager),e){if(this.clientContainer=e,this.container=this.getDocument().createElement("div"),this.container.classList.add("adsk-viewing-viewer"),this.container.style.height="100%",this.container.style.width="100%",this.container.style.overflow="hidden",this.container.classList.add((0,r.isTouchDevice)()?"touch":"notouch"),this.clientContainer.appendChild(this.container),this.config=t||{},this.contextMenu=null,this.contextMenuCallbacks={},this.started=!1,this.theme=this.config.theme||"dark-theme",this.container.classList.add(this.theme),this.containerLayerOrder=this.config.containerLayerOrder||J,(0,r.isChrome)()&&this.container.classList.add("quality-text"),"CANVAS"===this.container.nodeName)throw"Viewer must be initialized on a div [temporary]";if(this.canvasWrap=this.getDocument().createElement("div"),this.canvasWrap.classList.add("canvas-wrap"),this.canvas=this.getDocument().createElement("canvas"),this.canvas.tabIndex=0,this.canvas.setAttribute("data-viewer-canvas","true"),this.canvasWrap.appendChild(this.canvas),this.container.appendChild(this.canvasWrap),!(0,r.isPhoneFormFactor)()&&!Z.Private.DISABLE_FORGE_LOGO&&!Z.Private.DISABLE_FORGE_CANVAS_LOGO){const e=this.getDocument();this._forgeLogo=e.createElement("div"),this._forgeLogo.classList.add("forge-logo-canvas");const t=e.createElement("img");t.src=Autodesk.Viewing.Private.getResourceUrl("res/ui/powered-by-autodesk-oneline-blk-rgb.png"),this._forgeLogo.appendChild(t),this._forgeLogo.style.display="none",this.container.appendChild(this._forgeLogo)}this.canvas.viewer=this}var i=t&&t.localStoragePrefix||"Autodesk.Viewing.Private.GuiViewer3D.SavedSettings.";i.endsWith(".")||(i+=".");var n={prefix:i,localStorage:!(0,r.isNodeJS)()};this._displayEdges=null,this._setDoubleSided=null,this.prefs=new Q(this,n),this.profile=null,this.profileManager=new h.ProfileManager,this._hotkeyManager=new y.HotkeyManager,this.extensionCache=null,this.running=!1,this._pushedTool="",this._defaultNavigationTool="",this.id=$++,this.impl=new L.Viewer3DImpl(this.canvas,this),this.overlays=new H.OverlayManager(this.impl),this._loadingSpinner=Z.Private.DISABLE_FORGE_LOGO?new k:new B(this),this._loadingSpinner.setGlobalManager(this.globalManager),this.trackADPTimer=[],this._curAvDocument=null,this._curManifest=null,this._curOptions=null,this._isPdfModelWithVectorAndRasterRepr=!1}function te(e,t){return new Promise(((i,n)=>{var r=0;function o(t){2===r&&i({viewer:e,model:t})}e.addEventListener(w.GEOMETRY_LOADED_EVENT,(function i(s){s.model.getData().loadOptions.bubbleNode===e._curOptions.bubbleNode&&(e.removeEventListener(w.GEOMETRY_LOADED_EVENT,i),r++,t.skipPropertyDb?o(s.model):s.model.getProperties(1,(()=>o(s.model)),(e=>n(e))))})),e.addEventListener(w.TEXTURES_LOADED_EVENT,(function t(i){i.model.getData().loadOptions.bubbleNode===e._curOptions.bubbleNode&&(e.removeEventListener(w.TEXTURES_LOADED_EVENT,t),r++,o(i.model))}))}))}p.EventDispatcher.prototype.apply(ee.prototype),g.ScreenModeMixin.prototype.apply(ee.prototype),v.ExtensionMixin.prototype.apply(ee.prototype),N.GlobalManagerMixin.call(ee.prototype),ee.prototype.constructor=ee,Object.defineProperty(ee.prototype,"model",{get:function(){var e;return null===(e=this.impl)||void 0===e?void 0:e.model},set:function(){throw"Do not set viewer.model"}}),ee.ViewerCount=0,ee.kDefaultCanvasConfig={click:{onObject:["selectOnly"],offObject:["deselectAll"]},clickAlt:{onObject:["setCOI"],offObject:["setCOI"]},clickCtrl:{onObject:["selectToggle"]},clickShift:{onObject:["selectToggle"]},disableSpinner:!1,disableMouseWheel:!1,disableTwoFingerSwipe:!1},Object.defineProperty(ee.prototype,"scene",{get:function(){return this.impl.scene},set:function(){throw"Do not set viewer.scene"}}),Object.defineProperty(ee.prototype,"sceneAfter",{get:function(){return this.impl.sceneAfter},set:function(){throw"Do not set viewer.sceneAfter"}}),ee.createHeadlessViewer=function(){var e=new ee;return e.impl.initialize(),e.impl.setLightPreset(0),e},ee._getDefaultBVHOptions=function(e){let t;return d.USE_HLOD?t={consolidation:{frags_per_leaf_node:65535,frags_per_inner_node:65535,frags_per_leaf_node_transparent:512,frags_per_inner_node_transparent:0,max_polys_per_node:3e6,max_size_ratio:6,sortFuncType:Z.Private.BVHSortFuncType.DIAMETER,per_tile_consolidation:!0,max_drawcalls_per_node:30,want_sort:!0},isWeakDevice:(0,r.isMobileDevice)()}:e.useConsolidation&&(t={},R.Consolidation.applyBVHDefaults(t)),t},ee.prototype.start=function(e,t,i,n,r){if(this.started)return 0;this.started=!0;var o=this,s=o.initialize(r);return 0!==s?(n&&setTimeout((function(){n(s)}),0),s):(setTimeout((function(){o.setUp(o.config)}),0),e&&this.loadModel(e,t,i,n),0)},ee.prototype.startWithDocumentNode=function(e,t,i){var n=this;return new Promise((function(r,o){if(n.started)return 0;n.started=!0;var s=n.initialize();0===s?(setTimeout((function(){n.setUp(n.config)}),0),n.loadDocumentNode(e,t,i).then(r).catch(o)):setTimeout((function(){o(s)}),0)}))},ee.prototype.registerUniversalHotkeys=function(){var e,t,i,n=this;e=function(){return n.navigation.setRequestFitToView(!0),X.analytics.track("viewer.fit_to_view",{from:"Keyboard"}),!0},n._hotkeyManager.pushHotkeys("Autodesk.FitToView",[{keycodes:[O.KeyCode.f],onPress:e}]),e=function(){return n.navigation.setRequestHomeView(!0),!0},n._hotkeyManager.pushHotkeys("Autodesk.Home",[{keycodes:[O.KeyCode.h],onPress:e},{keycodes:[O.KeyCode.HOME],onPress:e}]),t=function(){return n.objectContextMenu&&n.objectContextMenu.hide()||n.dispatchEvent({type:w.ESCAPE_EVENT}),!0},n._hotkeyManager.pushHotkeys("Autodesk.Escape",[{keycodes:[O.KeyCode.ESCAPE],onRelease:t}]),e=function(){return i=n.getActiveNavigationTool(),n.setActiveNavigationTool("pan")},t=function(){return n.setActiveNavigationTool(i)};var r=[{keycodes:[O.KeyCode.SHIFT],onPress:e,onRelease:t},{keycodes:[O.KeyCode.SPACE],onPress:e,onRelease:t}];n._hotkeyManager.pushHotkeys("Autodesk.Pan",r,{tryUntilSuccess:!0})},ee.prototype.createControls=function(){var e=this,t=e.impl;return e.navigation=new b.Navigation(t.camera),e.__initAutoCam(t),e.utilities=new _.ViewingUtilities(t,e.autocam,e.navigation),e.clickHandler=new E.DefaultHandler(t,e.navigation,e.utilities),e.toolController=new x.ToolController(t,e,e.autocam,e.utilities,e.clickHandler),e.toolController.registerTool(new S.GestureHandler(e)),e.toolController.registerTool(e._hotkeyManager),e.toolController.activateTool(e._hotkeyManager.getName()),e.registerUniversalHotkeys(),e.toolController.registerTool(new P.OrbitDollyPanTool(t,e,this.config.navToolsConfig),(e=>{e||this.setActiveNavigationTool()})),e.toolController.setModalityMap({section:{explode:!1,pan:!1,dolly:!1},explode:{section:!1,pan:!1,dolly:!1},measure:{"box-selection":!1},calibration:{"box-selection":!1},orbit:{},dolly:{},pan:{},fov:{},bimwalk:{},"box-selection":{measure:!1,calibration:!1}}),e.toolController},ee.prototype.initialize=function(e){this.setScreenModeDelegate(this.config?this.config.screenModeDelegate:void 0);var t=this.getDimensions();if(this.canvas.width=t.width,this.canvas.height=t.height,(0,r.isIOSDevice)()&&this.getWindow().devicePixelRatio&&(this.canvas.width/=this.getWindow().devicePixelRatio,this.canvas.height/=this.getWindow().devicePixelRatio),this.impl.initialize(e),!this.impl.glrenderer()){var i=function(){if(Z.getGlobal().WebGLRenderingContext){for(var e=Z.getGlobal().document.createElement("canvas"),t=["webgl","experimental-webgl","moz-webgl","webkit-3d"],i=!1,n=0;n<4;n++)try{if((i=e.getContext(t[n]))&&"function"==typeof i.getParameter)return 1}catch(e){}return 0}return-1}();if(i<=0)return-1===i?f.ErrorCodes.BROWSER_WEBGL_NOT_SUPPORTED:f.ErrorCodes.BROWSER_WEBGL_DISABLED}var n,o=this;(0,r.isIOSDevice)()?this.onResizeCallback=function(){clearTimeout(n),n=setTimeout(o.resize.bind(o),500)}:this.onResizeCallback=function(){var e=o.impl.camera.clientWidth,t=o.impl.camera.clientHeight,i=o.container.clientWidth,n=o.container.clientHeight;e===i&&t===n||o.resize()};this.addWindowEventListener("resize",this.onResizeCallback),this.onPixelRatioChanged=()=>{var e;if(null===(e=o.impl)||void 0===e||!e.glrenderer())return;const t=o.getWindow().devicePixelRatio;matchMedia(`(resolution: ${t}dppx)`).addEventListener("change",o.onPixelRatioChanged,{once:!0}),o.impl.glrenderer().setPixelRatio(t),o.resize()},this.onPixelRatioChanged(),this.onScrollCallback=function(){o.impl.canvasBoundingclientRectDirty=!0},this.addWindowEventListener("scroll",this.onScrollCallback),this.initContextMenu(),this.localize(),this.impl.controls=this.createControls(),this.initializePrefListeners(),this.setDefaultNavigationTool("orbit"),this.impl.controls&&this.impl.controls.setAutocam(this.autocam);var s=this.config&&this.config.canvasConfig?this.config.canvasConfig:ee.kDefaultCanvasConfig;this.setCanvasClickBehavior(s),s.disableSpinner||(this.loadSpinner=this._loadingSpinner.createDom(this.container)),this.viewerState=new C.ViewerState(this),this.config&&Object.prototype.hasOwnProperty.call(this.config,"startOnInitialize")&&!this.config.startOnInitialize||this.run();const a=Z.getGlobal();return a.NOP_VIEWER||(a.NOP_VIEWER=this),a.NOP_VIEWERS=a.NOP_VIEWERS||[],a.NOP_VIEWERS.push(this),this.addEventListener(w.MODEL_ADDED_EVENT,(function(e){o.onModelAdded(e.model,e.preserveTools)})),this.addEventListener(w.GEOMETRY_LOADED_EVENT,(function(e){var t;e.model.is2d()&&!e.model.isLeaflet()&&o.navigation.setMinimumLineWidth(null===(t=e.model.loader)||void 0===t||null===(t=t.svf)||void 0===t?void 0:t.minLineWidth);const i=e.model.getGeometryList();e.model.hasEdges=!1;for(let t=0;t<(null==i?void 0:i.getCount());t++){const n=i.getGeometry(t);if(n&&(n.isLine||n.iblines)){e.model.hasEdges=!0;break}}})),this.addEventListener(w.FRAGMENTS_LOADED_EVENT,(async function(e){(e.model.isConsolidated()||e.model.isConsolidating())&&(e.model.unconsolidate(!0,!0),await this.impl.consolidateModel(e.model)),this.impl.invalidate(!0,!0)})),this.addEventListener(w.FRAGMENTS_UNLOADED_EVENT,(async function(e){e.model.isConsolidated()||e.model.isConsolidating()?(e.model.unconsolidate(!0,!0),await this.impl.consolidateModel(e.model)):e.model.chooseMemoryTypes(),this.impl.invalidate(!0,!0)})),this.dispatchEvent(w.VIEWER_INITIALIZED),this.trackADPSettingsOptions(),this.trackADPExtensionsLoaded(),ee.ViewerCount++,0},ee.prototype.setUp=function(e){var t;if(this.config=e||{},this.config.extensions=this.config.extensions||[],Array.isArray(this.config.extensions))for(var i=this.config.extensions,n=0;n0&&void 0!==arguments[0])||arguments[0];if(this.clearSelection(),this.removeEventListener(w.AGGREGATE_SELECTION_CHANGED_EVENT,this._onAggregatedSelectionChanged),this.loadedExtensions){for(var t in this.loadedExtensions)try{this.unloadExtension(t)}catch(e){o.logger.error("Failed to unload extension: "+t,e,(0,f.errorCodeString)(f.ErrorCodes.VIEWER_INTERNAL_ERROR)),o.logger.track({category:"error_unload_extension",extensionId:t,error_message:e.message,call_stack:e.stack})}this.loadedExtensions=null}for(this.toolController&&(this.toolController.enableMouseButtons(!1),this.toolController.deactivateTool("gestures")),o.logger.reportRuntimeStats(!0),this._loadingSpinner.show(),this.liveReviewClient&&(this.liveReviewClient.destroy(),this.liveReviewClient=null);this.trackADPTimer.length>0;)clearTimeout(this.trackADPTimer.pop());e&&this.impl.unloadCurrentModel(),this.impl.setCutPlaneSet("__set_view",void 0)},ee.prototype._onAggregatedSelectionChanged=function(){if(this.navigation.getSelectionSetsPivot()){const e=this.impl.selector.getAggregateSelection();if(e.length){const t=this.impl.get3DBounds(e);this.utilities.setPivotPoint(t.getCenter(new n.Vector3),!0,!0),this.utilities.pivotActive(this.navigation.getPivotSetFlag(),!0)}}},ee.prototype.run=function(){this.running||(this.resize(),this.running=!0,this.impl.run())},ee.prototype.localize=function(){A.A.localize()},ee.prototype.__initAutoCam=function(e){var t=this,i=e.camera;i.pivot||(i.pivot=new n.Vector3(0,0,0)),i.target||(i.target=new n.Vector3(0,0,0)),i.worldup||(i.worldup=i.up.clone()),t.autocamCamera=i.clone(),t.autocamCamera.target=i.target.clone(),t.autocamCamera.pivot=i.pivot.clone(),t.autocamCamera.worldup=i.worldup.clone(),t.autocam=new D.Autocam(t.autocamCamera,t.navigation,t.canvas),t.autocam.setGlobalManager(this.globalManager),t.autocam.registerCallbackCameraChanged((function(e){t.autocamCamera.isPerspective!==i.isPerspective&&(t.autocamCamera.isPerspective?t.navigation.toPerspective():t.navigation.toOrthographic()),t.navigation.setVerticalFov(t.autocamCamera.fov,!1),t.navigation.setView(t.autocamCamera.position,t.autocamCamera.target),t.navigation.setPivotPoint(t.autocamCamera.pivot),t.navigation.setCameraUpVector(t.autocamCamera.up),e&&t.navigation.setWorldUpVector(t.autocamCamera.worldup),t.impl.syncCamera(e)})),t.autocam.registerCallbackPivotDisplay((function(e){t.utilities?t.utilities.pivotActive(e,!1):t.impl.controls.pivotActive(e,!1)})),t.autocam.registerCallbackTransitionCompleted((function(){t.fireEvent({type:w.CAMERA_TRANSITION_COMPLETED})})),t.addEventListener("cameraChanged",(function(e){var i=e.camera;t.autocam.sync(i)})),t.autocam.sync(i)},ee.prototype.uninitialize=function(){var e;this.removeWindowEventListener("resize",this.onResizeCallback,!1),this.onResizeCallback=null,this.removeWindowEventListener("scroll",this.onScrollCallback),this.onScrollCallback=null,this.canvas?this.canvas.removeEventListener("mousedown",this.onMouseDown):this.container&&this.container.removeEventListener("mousedown",this.onMouseDown),this.onMouseDown=null,this.canvas?this.canvas.removeEventListener("mouseup",this.onMouseUp):this.container&&this.container.removeEventListener("mouseup",this.onMouseUp),this.onMouseUp=null,this.canvas.parentNode.removeChild(this.canvas),this.canvas.viewer=null,L.InitParametersSetting.canvas===this.canvas&&(L.InitParametersSetting.canvas=null),this.canvas=null,this.canvasWrap=null,this.viewerState=null,o.logger.reportRuntimeStats(),o.logger.track({category:"viewer_destroy"},!0),this.toolController&&(this.toolController.uninitialize(),this.toolController=null,this.clickHandler=null,this.utilities=null),this.navigation&&(this.navigation.uninitialize(),this.navigation=null),this.impl&&(this.impl.dtor(),this.impl=null),this.overlays&&(this.overlays.dtor(),this.overlays=null),this.loadSpinner=null,this._loadingSpinner.destroy(),this._loadingSpinner=null,this.prefs&&this.prefs.clearListeners(),this.prefs=null,this.profile=null,this.profileManager=null,this.autocam.dtor(),this.autocam=null,this.autocamCamera=null,this._hotkeyManager.popHotkeys("Autodesk.FitToView"),this._hotkeyManager.popHotkeys("Autodesk.Home"),this._hotkeyManager.popHotkeys("Autodesk.Escape"),this._hotkeyManager.popHotkeys("Autodesk.Pan"),this._hotkeyManager.popHotkeys("Autodesk.Orbit"),this._hotkeyManager=null,ee.ViewerCount--,0===ee.ViewerCount&&(0,M.clearPropertyWorkerCache)(),this.onDefaultContextMenu&&(this.container.removeEventListener("contextmenu",this.onDefaultContextMenu,!1),this.onDefaultContextMenu=null),this.screenModeDelegate&&(this.screenModeDelegate.uninitialize(),this.screenModeDelegate=null),this._displayEdges&&(this.removeEventListener(w.GEOMETRY_LOADED_EVENT,this._displayEdges),this._displayEdges=null),this._setDoubleSided&&(this.removeEventListener(w.MODEL_ADDED_EVENT,this._setDoubleSided),this._setDoubleSided=null),this.extensionCache=null,this.clientContainer=null,this.config=null,this.contextMenu=null,this.contextMenuCallbacks=null,this.container&&this.container.parentNode&&this.container.parentNode.removeChild(this.container),this.container=null,this._forgeLogo=null,this.dispatchEvent(w.VIEWER_UNINITIALIZED),this.listeners={};const t=Z.getGlobal();t.NOP_VIEWER===this&&(t.NOP_VIEWER=null);const i=null===(e=t.NOP_VIEWERS)||void 0===e?void 0:e.indexOf(this);-1!==i&&(t.NOP_VIEWERS.splice(i,1),0===t.NOP_VIEWERS.length&&(t.NOP_VIEWERS=null)),o.logger.log("viewer destroy")},ee.prototype.finish=function(){this.tearDown(),this.uninitialize()},ee.prototype.setLoadHeuristics=function(e){var t=e.bubbleNode;if(t){var i=t.findViewableParent();if(i){var n=i.name();e.fileExt=n.slice(n.length-3).toLowerCase();void 0===e.isAEC&&-1!==["rvt","nwd","nwc","ifc"].indexOf(e.fileExt)&&(e.isAEC=!0)}}if(e.isAEC){if(void 0===e.useConsolidation){let t=(0,u.getParameterByName)("useConsolidation")||"";e.useConsolidation="true"===t||"false"!==t&&void 0}void 0===e.useConsolidation&&(e.useConsolidation=!(0,r.isMobileDevice)()&&!(0,r.isNodeJS)()),void 0===e.createWireframe&&(e.createWireframe=!(0,r.isMobileDevice)()),void 0===e.disablePrecomputedNodeBoxes&&(e.disablePrecomputedNodeBoxes=!0)}else void 0===e.createWireframe&&(e.createWireframe=!(0,r.isMobileDevice)()&&this.prefs.get("edgeRendering"));e.bvhOptions||(e.bvhOptions=ee._getDefaultBVHOptions(e))},ee.prototype.trackADPSettingsOptions=function(){var e=this;this.trackADPTimer.push(setTimeout((function(){if(e.prefs){var t={category:"settingOptionsStatus",switchSheetColorWhiteToBlack:e.prefs.get("swapBlackAndWhite"),leftHandedMouseSetup:e.prefs.get("leftHandedMouseSetup"),openPropertiesOnSelect:e.prefs.get("openPropertiesOnSelect"),orbitPastWorldPoles:e.prefs.get("orbitPastWorldPoles"),reverseMouseZoomDirection:e.prefs.get("reverseMouseZoomDir"),fusionStyleOrbit:e.prefs.get("fusionOrbit"),setPivotWithLeftMouseButton:e.prefs.get("clickToSetCOI"),zoomTowardPivot:e.prefs.get("zoomTowardsPivot"),viewCubeActsOnPivot:e.prefs.get("alwaysUsePivot"),showViewCube:e.prefs.get("viewCube"),environmentImageVisible:e.prefs.get("envMapBackground"),displayEdges:e.prefs.get("edgeRendering"),displayPoints:e.prefs.get("pointRendering"),displayLines:e.prefs.get("lineRendering"),ghostHiddenObjects:e.prefs.get("ghosting"),groundReflection:e.prefs.get("groundReflection"),groundShadow:e.prefs.get("groundShadow"),ambientShadows:e.prefs.get("ambientShadows"),antiAliasing:e.prefs.get("antialiasing"),progressiveModelDisplay:e.prefs.get("progressiveRendering"),smoothNavigation:e.prefs.get("optimizeNavigation")};o.logger.track(t)}}),3e4))},ee.prototype.trackADPExtensionsLoaded=function(){var e=this,t={category:"loaded_extensions"};this.trackADPTimer.push(setTimeout((function(){if(e.loadedExtensions)for(var i in e.loadedExtensions)t[i]=i;o.logger.track(t)}),3e4))},ee.prototype.activateDefaultNavigationTools=function(e){if(!(0,r.isNodeJS)()){var t=e?"pan":"orbit";this.setDefaultNavigationTool(t),this.setActiveNavigationTool(t),this.toolController&&(this.toolController.enableMouseButtons(!0),this.toolController.activateTool("gestures"))}},ee.prototype.registerDimensionSpecificHotkeys=function(e){if(this._hotkeyManager)if(e)this._hotkeyManager.popHotkeys("Autodesk.Orbit");else{var t,i=this,n=[{keycodes:[O.KeyCode.ALT],onPress:function(){return t=i.getActiveNavigationTool(),i.setActiveNavigationTool("orbit")},onRelease:function(){return i.setActiveNavigationTool(t)}}];this._hotkeyManager.pushHotkeys("Autodesk.Orbit",n,{tryUntilSuccess:!0})}},ee.prototype.onModelAdded=function(e,t){var i;e.is2d()&&!e.isLeaflet()&&this.navigation.setMinimumLineWidth(null===(i=e.loader)||void 0===i||null===(i=i.svf)||void 0===i?void 0:i.minLineWidth);1===this.impl.modelQueue().getModels().length&&this.initializeFirstModelPresets(e,t)},ee.prototype.initializeFirstModelPresets=function(e,t,i){if(e.is2d()&&this.activateLayerState("Initial"),i||e.getData().loadOptions.preserveView||(this.setActiveNavigationTool(),this.impl.setViewFromFile(e,!0),this.toolController.recordHomeView()),this.registerDimensionSpecificHotkeys(e.is2d()),t||this.activateDefaultNavigationTools(e.is2d()),this.navigation.setIs2D(this.impl.modelQueue().areAll2D()),e.isLeaflet()){var n=e.getData();this.navigation.setConstraints2D(n.bbox,n.maxPixelPerUnit)}else this.navigation.setConstraints2D()},ee.prototype.loadModel=async function(e,t,i,n,s){var h,d,p=this,m=p.impl._reserveLoadingFile();if(void 0===(t=t||{}).skipPropertyDb){var g=(0,u.getParameterByName)("skipPropertyDb")||"";t.skipPropertyDb="true"===g||"false"!==g&&void 0}function v(e,t,i){p._loadingSpinner.hide(),n&&n(e,t,i)}var y=e.toLowerCase().match(/\.([a-z0-9]+)(\?|$)/),b=y?y[1]:null,x=this.config&&this.config.loaderExtensions&&this.config.loaderExtensions[b]||b in z&&z[b];if(x&&!this.isExtensionLoaded(x))try{await this.loadExtension(x,this.config)}catch(e){return p.impl._removeLoadingFile(m),n&&n(f.ErrorCodes.VIEWER_INTERNAL_ERROR,e.toString()),!1}let _;if(_=t&&t.fileLoader?t.fileLoader:T.FileLoaderManager.getFileLoaderForExtension(b,t.mimeType),!_)return p.impl._removeLoadingFile(m),o.logger.error("File extension not supported:"+b,(0,f.errorCodeString)(f.ErrorCodes.UNSUPORTED_FILE_EXTENSION)),v(f.ErrorCodes.UNSUPORTED_FILE_EXTENSION,"File extension not supported",0),!1;this.setLoadHeuristics(t),this.impl.hasModels()||this._loadingSpinner.show(),"function"==typeof _.getExistingInstance&&(d=_.getExistingInstance(e,t,this.config)),d||(d=new _(this.impl,this.config)),p.impl._addLoadingFile(m,d);var E=d.loadFile(e,t,(function(e,n){if(p.impl){if(p.impl._removeLoadingFile(d),e)return p.dispatchEvent({type:w.LOADER_LOAD_ERROR_EVENT,error:e,loader:d}),void v(e.code,e.msg,e.args);n.getData().underlayRaster=t.underlayRaster&&n.getLeaflet(),t.loadAsHidden?p.impl.modelQueue().addHiddenModel(n):p.impl.addModel(n),n.loader&&n.loader.notifiesFirstPixel&&p._loadingSpinner instanceof k?p.addEventListener(w.RENDER_FIRST_PIXEL,(function(){p._loadingSpinner.hide()}),{once:!0}):p._loadingSpinner.hide(),!(0,r.isNodeJS)()&&p._forgeLogo&&(p._forgeLogo.style.display="block"),i&&i(n)}}),s);if(E||p.impl._removeLoadingFile(d),this.fireEvent({type:w.LOADER_LOAD_FILE_EVENT,loader:d}),t.skipPrefs)void 0===this.prefs.get(a.Prefs.DISPLAY_UNITS)&&this.prefs.set(a.Prefs.DISPLAY_UNITS,new l.EnumType(c.displayUnitsEnum)),void 0===this.prefs.get(a.Prefs.DISPLAY_UNITS_PRECISION)&&this.prefs.set(a.Prefs.DISPLAY_UNITS_PRECISION,new l.EnumType(c.displayUnitsPrecisionEnum));else if(!(0,r.isNodeJS)()&&!this.profile){let e=this.chooseProfile(t);this.setProfile(e,!1)}t.pdfRenderingMode=this._curOptions&&this._curOptions.enableVectorRasterSwitch&&(null===(h=this._curAvDocument)||void 0===h?void 0:h.getPdfRenderingMode());const S=function(e,t,i,n){const{bubbleNode:r,pdfRenderingMode:o}=n,s={url:e,lmvFileExtension:t,returnValue:i};if(r){s.isOtg=r.isOtg()&&Y.endpoint.isOtgBackend(),s.isSVF2=r.isSVF2()&&Y.endpoint.isSVF2Backend(),s.geometrySize=r.data.size||0,s.viewable_type=r.is2D()?"2d":"3d";const e=r.findViewableParent();try{var a;const t=e&&e.name(),i=t&&t.lastIndexOf("."),n=i>=0&&t.substring(i+1),l=null===(a=r.data)||void 0===a||null===(a=a.extractor)||void 0===a?void 0:a.includes("pdf");n?(s.seedFileExt=n.toLowerCase(),"pdf"===n.toLowerCase()&&o&&(s.pdf_rendering_mode=o)):l&&o&&(s.pdf_rendering_mode=o)}catch(e){}}return s}(e,b,E,t);return X.analytics.track("viewer.model.load",S),E},ee.prototype.isLoadDone=function(){let{geometry:e=!0,propDb:t=!0,textures:i=!0,hidden:n=!1,onlyModels:r}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!r){if(!this.started)return!0;if(this.impl._hasLoadingFile())return!1}if(i&&Autodesk.Viewing.Private.TextureLoader.requestsInProgress()>0)return!1;const o=n=>{if(!n)return!1;const r=!t||!n.getPropertyDb()||n.getPropertyDb().isLoadDone();return(e||i?n.isLoadDone():n.modelRootLoaded)&&r};return r?Array.isArray(r)?r.every(o):o(r):this.getVisibleModels().every(o)&&(!n||this.getHiddenModels().every(o))},ee.prototype.waitForLoadDone=function(e){return new Promise(((t,i)=>{var{geometry:n=!0,propDb:r=!0,textures:o=!0,hidden:s=!1,onlyModels:a}=e||{};const l={geometry:n=n||o,propDb:r,textures:o,hidden:s,onlyModels:a},c=()=>this.started&&(this.impl._hasLoadingFile()||this.impl.modelQueue().getModels().length>0||this.impl.modelQueue().getHiddenModels().length>0);var h,u=!a&&c();if(u&&this.isLoadDone(l))return void t();const d=()=>{(u=u||c())&&this.isLoadDone(l)&&(h(),t())},f=e=>{h();const t=new Error("Error loading model");t.loader=e.loader,t.error=e.error,i(t)};h=()=>{n&&this.removeEventListener(w.GEOMETRY_LOADED_EVENT,d),r&&(this.removeEventListener(w.OBJECT_TREE_CREATED_EVENT,d),this.removeEventListener(w.OBJECT_TREE_UNAVAILABLE_EVENT,d)),o&&this.removeEventListener(w.TEXTURES_LOADED_EVENT,d),this.removeEventListener(w.LOADER_LOAD_FILE_EVENT,d),this.removeEventListener(w.MODEL_ADDED_EVENT,d),this.removeEventListener(w.MODEL_REMOVED_EVENT,d),this.removeEventListener(w.LOADER_LOAD_ERROR_EVENT,f),this.removeEventListener(w.MODEL_ROOT_LOADED_EVENT,d),this.removeEventListener(w.VIEWER_UNINITIALIZED,t)},n&&this.addEventListener(w.GEOMETRY_LOADED_EVENT,d),r&&(this.addEventListener(w.OBJECT_TREE_CREATED_EVENT,d),this.addEventListener(w.OBJECT_TREE_UNAVAILABLE_EVENT,d)),o&&this.addEventListener(w.TEXTURES_LOADED_EVENT,d),this.addEventListener(w.LOADER_LOAD_FILE_EVENT,d),this.addEventListener(w.MODEL_ADDED_EVENT,d),this.addEventListener(w.MODEL_REMOVED_EVENT,d),this.addEventListener(w.LOADER_LOAD_ERROR_EVENT,f),this.addEventListener(w.MODEL_ROOT_LOADED_EVENT,d,{priority:-1e6}),this.addEventListener(w.VIEWER_UNINITIALIZED,(()=>i(new Error("Promise reject because viewer finished"))))}))},ee.prototype.unloadModel=function(e){e||(e=this.model),this.impl.unloadModel(e)},ee.prototype.updateViewerStateForPdfReload=function(e){this._curAvDocument=e.getDocument(),this._curManifest=e},ee.prototype.loadDocumentNode=function(e,t){var i;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this._curAvDocument=e,this._curManifest=t;const r=n.leafletOptions||{};let o=e.getViewableUrn(t,r),s=t.findPropertyDbPath();o=e.getFullPath(o),s=e.getFullPath(s);const a=e.getAcmSessionId(o),l=Object.assign({sharedPropertyDbPath:s,acmSessionId:a,bubbleNode:t,applyRefPoint:!1,loadOptions:r,page:r.page||1},n);this._curOptions=l;var c=t.search(I.BubbleNode.PDF_PAGE_NODE),h=t.search(I.BubbleNode.LEAFLET_NODE);this._curOptions.enableVectorRasterSwitch=n.enableVectorRasterSwitch&&c.length>0&&h.length>0;const u="pdf"===t.getInputFileType(),d=null===(i=t.data)||void 0===i||null===(i=i.extractor)||void 0===i?void 0:i.includes("pdf");if(this._isPdfModelWithVectorAndRasterRepr=(u||d)&&c.length>0&&h.length>0,r.tempRasterPath&&(l.loadOptions.tempRasterPath=r.tempRasterPath),!l.keepCurrentModels&&this.impl.hasModels()){let e=this.config;this.tearDown(),this.setUp(e)}const f=t.findParentGeom2Dor3D(),p=null==f?void 0:f.extensions();Array.isArray(p)&&p.forEach((e=>{this.loadExtension(e,this.config)}));const m=r.isPdf?this.loadExtension("Autodesk.PDF",this.config):Promise.resolve(),g=!l.disableUnderlayRaster&&r.tempRasterPath,v=g?this._loadTempRasterModel(e,l,t):Promise.resolve();return m.then((()=>v)).then((e=>new Promise(((i,n)=>{g&&e&&e!==this.getUnderlayRaster(t)?n("load canceled"):this.loadModel(o,l,(e=>{l.loadAsHidden||l.preserveView||"view"!==t.type()||this.setView(t,{skipTransition:!0}),i(e)}),n)}))))},ee.prototype.unloadDocumentNode=function(e){let t=this.impl.findModel(e,!0);if(t)return this.impl.unloadModel(t),!0;if(!this.impl.loaders)return!1;for(let t=0;t{if(t.loadAsHidden)return n();t.underlayRaster=!0,t.loadOptions.fitPaperSize=!0;const o=e=>{var t,n;const r=e.getDocumentNode();return r&&(null===(t=r.getDocument())||void 0===t?void 0:t.getPath())===(null===(n=i.getDocument())||void 0===n?void 0:n.getPath())&&r.guid()===i.guid()&&!e.isLeaflet()},s=e=>{let{model:t}=e;o(t)&&(2===this.getVisibleModels().length&&this.initializeFirstModelPresets(t,!1,!0),this.removeEventListener(w.MODEL_ADDED_EVENT,s))};this.addEventListener(w.MODEL_ADDED_EVENT,s);const a=e=>{let{model:t}=e;o(t)&&(t.changePaperVisibility(!0),this.removeEventListener(w.MODEL_REMOVED_EVENT,a),this.removeEventListener(w.MODEL_ADDED_EVENT,s),this.removeEventListener(w.GEOMETRY_LOADED_EVENT,c))};let l;this.addEventListener(w.MODEL_REMOVED_EVENT,a);const c=e=>{let{model:t}=e;o(t)&&(t.changePaperVisibility(!0),this.removeEventListener(w.MODEL_REMOVED_EVENT,a),l&&(this.unloadModel(l),l=null),this.removeEventListener(w.GEOMETRY_LOADED_EVENT,c))};this.addEventListener(w.GEOMETRY_LOADED_EVENT,c);const h=e.getFullPath(t.loadOptions.tempRasterPath);this.loadModel(h,t,(e=>{t.loadOptions.fitPaperSize=void 0,t.underlayRaster=void 0,t.hideBackground=!0,l=e,n(e)}),(e=>{if(t.loadOptions.fitPaperSize=void 0,t.underlayRaster=void 0,e===f.ErrorCodes.LOAD_CANCELED)return r("load canceled");n()}))}))},ee.prototype.getDimensions=function(){if(this.container){var e={};return this.getScreenMode()===g.ScreenMode.kFullScreen?(e.width=screen.width,e.height=screen.height):e=this.container.getBoundingClientRect(),{width:e.width,height:e.height}}return null},ee.prototype.resize=function(){this.container.clientWidth>0&&this.container.clientHeight>0&&this.impl.resize(this.container.clientWidth,this.container.clientHeight)},ee.prototype.getHotkeyManager=function(){return this._hotkeyManager},ee.prototype.getCamera=function(){return this.impl.camera},ee.prototype.getState=function(e){return this.viewerState.getState(e)},ee.prototype.restoreState=function(e,t,i){var n=this.viewerState.restoreState(e,t,i);return n&&this.dispatchEvent({type:w.VIEWER_STATE_RESTORED_EVENT,value:n}),n},ee.prototype.getViewpointCamData=function(e){const t=e.position,i=e.target,n=e.up,r=e.isPerspective?0:1;return[t.x,t.y,t.z,i.x,i.y,i.z,n.x,n.y,n.z,e.aspect,e.fov*(Math.PI/180),e.orthoScale,r]},ee.prototype.setView=function(e,t){var i,r;if(!(e&&e instanceof I.BubbleNode))return!1;const o=e.findParentGeom2Dor3D();let s=o&&this.impl.findModel(o,!0)||this.model;if(!s)return!1;let a,l=!!t&&t.skipTransition,c=!t||t.useExactCamera,h=!!t&&t.skipViewpointExtra;if(e.getViewBox())return this.setViewFromViewBox(e.getViewBox(),e.name(),l),this.dispatchEvent({type:w.SET_VIEW_EVENT,view:e}),!0;let u,d,f,p=null===(i=s.loader)||void 0===i?void 0:i.svf,m=e.data.isViewpoint&&p?null===(r=p.viewpoints)||void 0===r?void 0:r[e.data.entry]:null,g=e.data.camera,v=s.isOTG(),y=!1;if(this.showAll(),!h&&m){const e=m.camera;g=this.getViewpointCamData(e);const t=p.overrideSets[m.overrideSet];if(t){const{defaultMaterialIndex:e,materialOverrides:i,flagOverrides:n,defaultFlags:r}=t,o=s.getFragmentList(),a=o.fragments.length;if(o.materialIdMapOriginal||o.storeOriginalMaterials(),(e||i)&&(y=s.isConsolidated()||s.isConsolidating(),y&&s.unconsolidate(!1,!0)),e){const t=v?p.getMaterialHash(e):this.impl.matman()._getMaterialHash(s,e),i=this.impl.matman()._materials[t];if(i)for(let e=0;e{s.getFragmentList().setMaterial(e,o)}),!0)}}if(r&&(1===r?this.hideAll():2===r&&this.showAll()),n)if(0===n.length)this.showAll();else for(let e=0;e{this.impl.invalidate(!0,!0)}))}}if(a=this.getCameraFromViewArray(g,s),!a)return!1;this.impl.setViewFromCamera(a,l,c);const b=m??e.data;u=b.sectionPlane,d=b.sectionBox,f=b.sectionBoxTransform;const x=s.getModelToViewerTransform();if(u){let e=[];for(let t=0;t1&&void 0!==arguments[1]?arguments[1]:this.model;const i=null==t?void 0:t.getModelToViewerTransform();return I.BubbleNode.readCameraFromArray(e,i)},ee.prototype.getViewArrayFromCamera=function(){var e=this.model?this.model.getData().globalOffset:{x:0,y:0,z:0};return this.impl.getViewArrayFromCamera(e)},ee.prototype.setViewFromViewBox=function(e,t,i){var n=this.model;if(!n||n.is2d()){if(t&&t.length){var r,s=n.getData().metadata.views||[];for(r=0;r4&&void 0!==arguments[4]?arguments[4]:{searchHidden:!1};this.searchText=e,this.model?this.model.search(e,t,i,n,r):i&&i(f.ErrorCodes.BAD_DATA,"Search failed since model does not exist")},ee.prototype.getHiddenNodes=function(e){return e=e||this.model,this.impl.visibilityManager.getHiddenNodes(e)},ee.prototype.getIsolatedNodes=function(e){return(e=e||this.model)&&e.is2d()?(o.logger.warn("Viewer3D.getIsolatedNodes is not yet implemented for 2D"),[]):this.impl.visibilityManager.getIsolatedNodes(e)},ee.prototype.isolate=function(e,t){(t=t||this.model)&&this.impl.visibilityManager.isolate(e,t)},ee.prototype.setBackgroundColor=function(e,t,i,n,r,o){this.impl.setClearColors(e,t,i,n,r,o)},ee.prototype.setBackgroundOpacity=function(e){this.impl.setClearAlpha(e)},ee.prototype.toggleSelect=function(e,t,i){(t=t||this.model)&&t.is2d()?o.logger.warn("Viewer3D.toggleSelect is not yet implemented for 2D"):this.impl.selector.toggleSelection(e,t,i)},ee.prototype.select=function(e,t,i){"number"==typeof e&&(e=[e]),t=t||this.model,this.impl.selector.setSelection(e,t,i)},ee.prototype.clearSelection=function(){this.impl.selector.clearSelection()},ee.prototype.getSelectionVisibility=function(){return this.impl.selector.getSelectionVisibility()},ee.prototype.getSelectionCount=function(){return this.impl.selector.getSelectionLength()},ee.prototype.setSelectionMode=function(e){this.prefs.set(a.Prefs3D.SELECTION_MODE,e)},ee.prototype.getSelection=function(){return this.impl.selector.getSelection()},ee.prototype.lockSelection=function(e,t,i){i=i||this.model,this.impl.selector.lockSelection(e,t,i)},ee.prototype.unlockSelection=function(e,t){this.impl.selector.unlockSelection(e,t)},ee.prototype.isSelectionLocked=function(e,t){return this.impl.selector.isNodeSelectionLocked(e,t)},ee.prototype.getAggregateSelection=function(e){var t=this.impl.selector.getAggregateSelection();if(e)for(var i=0;i1&&void 0!==arguments[1])||arguments[1];this.impl.selector.setAggregateSelection(e,t)},ee.prototype.getAggregateIsolation=function(){return this.impl.visibilityManager.getAggregateIsolatedNodes()},ee.prototype.setAggregateIsolation=function(e){this.impl.visibilityManager.aggregateIsolate(e)},ee.prototype.getAggregateHiddenNodes=function(){return this.impl.visibilityManager.getAggregateHiddenNodes()},ee.prototype.hide=function(e,t){t=t||this.model,this.impl.visibilityManager.hide(e,t)},ee.prototype.show=function(e,t){t=t||this.model,this.impl.visibilityManager.show(e,t)},ee.prototype.showAll=function(){this.impl.visibilityManager.aggregateIsolate([]),this.impl.layers.showAllLayers(),this.fireEvent({type:w.SHOW_ALL_EVENT})},ee.prototype.hideAll=function(){this.getVisibleModels().forEach((e=>{this.hide(e.getRootId(),e)})),this.fireEvent({type:w.HIDE_ALL_EVENT})},ee.prototype.toggleVisibility=function(e,t){this.impl.visibilityManager.toggleVisibility(e,t)},ee.prototype.areAllVisible=function(){return this.impl.isWholeModelVisible(this.model)},ee.prototype.isNodeVisible=function(e,t){return t=t||this.model,this.impl.isNodeVisible(e,t)},ee.prototype.lockVisible=function(e,t,i){i=i||this.model,this.impl.visibilityManager.lockNodeVisible(e,t,i)},ee.prototype.toggleLockVisible=function(e,t){this.impl.visibilityManager.toggleVisibleLocked(e,t)},ee.prototype.isVisibleLocked=function(e,t){return this.impl.visibilityManager.isNodeVisibleLocked(e,t)},ee.prototype.explode=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.model&&(this.model.is2d()?o.logger.warn("Viewer3D.explode is not applicable to 2D"):this.impl.explode(e,t)&&o.logger.track({name:"explode_count",aggregate:"count"}))},ee.prototype.getExplodeScale=function(){return this.model&&this.model.is2d()?(o.logger.warn("Viewer3D.getExplodeScale is not applicable to 2D"),0):this.impl.getExplodeScale()},ee.prototype.getExplodeOptions=function(){return this.model&&this.model.is2d()?(o.logger.warn("Viewer3D.getExplodeOptions is not applicable to 2D"),0):this.impl.getExplodeOptions()},ee.prototype.lockExplode=function(e,t,i){return(i=i||this.model)&&i.is2d()?(o.logger.warn("Viewer3D.lockExplode is not applicable to 2D"),0):this.impl.lockExplode(e,t,i)},ee.prototype.isExplodeLocked=function(e,t){return(t=t||this.model)&&t.is2d()?(o.logger.warn("Viewer3D.isExplodeLocked is not applicable to 2D"),0):this.impl.isExplodeLocked(e,t)},ee.prototype.toggleLockExplode=function(e,t){return(t=t||this.model)&&t.is2d()?(o.logger.warn("Viewer3D.toggleLockExplode is not applicable to 2D"),0):this.impl.lockExplode(e,!this.isExplodeLocked(e,t),t)},ee.prototype.setQualityLevel=function(e,t){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setQualityLevel is not applicable to 2D"):(this.prefs.set(a.Prefs3D.AMBIENT_SHADOWS,e),this.prefs.set(a.Prefs3D.ANTIALIASING,t))},ee.prototype.setGhosting=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setGhosting is not applicable to 2D"):this.prefs.set(a.Prefs3D.GHOSTING,e)},ee.prototype.setGroundShadow=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setGroundShadow is not applicable to 2D"):this.prefs.set(a.Prefs3D.GROUND_SHADOW,e)},ee.prototype.setGroundReflection=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setGroundReflection is not applicable to 2D"):this.prefs.set(a.Prefs3D.GROUND_REFLECTION,e)},ee.prototype.setEnvMapBackground=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setEnvMapBackground is not applicable to 2D"):this.prefs.set(a.Prefs3D.ENV_MAP_BACKGROUND,e)},ee.prototype.setFirstPersonToolPopup=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setFirstPersonToolPopup is not applicable to 2D"):this.prefs.set(a.Prefs3D.FIRST_PERSON_TOOL_POPUP,e)},ee.prototype.getFirstPersonToolPopup=function(){if(!this.model||!this.model.is2d())return this.prefs.get("firstPersonToolPopup");o.logger.warn("Viewer3D.getFirstPersonToolPopup is not applicable to 2D")},ee.prototype.setBimWalkToolPopup=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setBimWalkToolPopup is not applicable to 2D"):this.prefs.set(a.Prefs3D.BIM_WALK_TOOL_POPUP,e)},ee.prototype.getBimWalkToolPopup=function(){if(!this.model||!this.model.is2d())return this.prefs.get("bimWalkToolPopup");o.logger.warn("Viewer3D.getBimWalkToolPopup is not applicable to 2D")},ee.prototype.setProgressiveRendering=function(e){this.prefs.set(a.Prefs.PROGRESSIVE_RENDERING,e)},ee.prototype.setGrayscale=function(e){this.model&&this.model.is3d()?o.logger.warn("Viewer3D.setGrayscale is not applicable to 3D"):this.prefs.set(a.Prefs2D.GRAYSCALE,e)},ee.prototype.setSwapBlackAndWhite=function(e){this.model&&this.model.is3d()?o.logger.warn("Viewer3D.setSwapBlackAndWhite is not applicable to 3D"):this.prefs.set(a.Prefs2D.SWAP_BLACK_AND_WHITE,e)},ee.prototype.setOptimizeNavigation=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setOptimizeNaviation is not applicable to 2D"):this.prefs.set(a.Prefs3D.OPTIMIZE_NAVIGATION,e)},ee.prototype.initializePrefListeners=function(){var e=this;this.prefs.addListeners(a.Prefs.KEY_MAP_CMD,(e=>{this.impl.toggleCmdMapping(e,this.toolController)})),this.prefs.addListeners(a.Prefs3D.ANTIALIASING,(e=>{const t=this.prefs.get(a.Prefs3D.AMBIENT_SHADOWS);this.impl.togglePostProcess(t,e)})),this.prefs.addListeners(a.Prefs3D.AMBIENT_SHADOWS,(e=>{const t=this.prefs.get(a.Prefs3D.ANTIALIASING);this.impl.togglePostProcess(e,t)})),this.prefs.addListeners(a.Prefs3D.GROUND_SHADOW,(e=>{this.impl.toggleGroundShadow(e)})),this.prefs.addListeners(a.Prefs3D.GROUND_REFLECTION,(e=>{this.impl.toggleGroundReflection(e)})),this.prefs.addListeners(a.Prefs3D.ENV_MAP_BACKGROUND,(e=>{this.impl.toggleEnvMapBackground(e)})),this.prefs.addListeners(a.Prefs.PROGRESSIVE_RENDERING,(e=>{this.impl.toggleProgressive(e)})),this.prefs.addListeners(a.Prefs3D.VIEW_TYPE,(e=>{const t=this.prefs.get(a.Prefs3D.VIEW_TYPE),i=this.impl.getModelCamera(this.model);if(i){const e=i.isPerspective;if(!isNaN(e)){const i=e?a.VIEW_TYPES.PERSPECTIVE:a.VIEW_TYPES.ORTHOGRAPHIC;this.prefs.setDefault(a.Prefs3D.VIEW_TYPE,i),t===a.VIEW_TYPES.DEFAULT&&(this.prefs[a.Prefs3D.VIEW_TYPE]=i)}}this.autocam.setViewType(e)})),this.prefs.addListeners(a.Prefs2D.GRAYSCALE,(e=>{this.impl.toggleGrayscale(e)})),this.prefs.addListeners(a.Prefs2D.SWAP_BLACK_AND_WHITE,(e=>{this.impl.toggleSwapBlackAndWhite(e)})),this.isFirstLoad=!0,this.prefs.addListeners(a.Prefs2D.VECTOR_VIEWING,(e=>{!this.isFirstLoad&&this._curAvDocument&&this._curManifest&&this._curOptions&&this._isPdfModelWithVectorAndRasterRepr&&new Promise((e=>setTimeout(e,200))).then((()=>{this.unloadDocumentNode(this._curManifest);const e={};e.enableVectorRasterSwitch=this._curOptions.enableVectorRasterSwitch,this.loadDocumentNode(this._curAvDocument,this._curManifest,e)})),this.isFirstLoad=!1})),this.prefs.addListeners(a.Prefs3D.OPTIMIZE_NAVIGATION,(e=>{this.impl.setOptimizeNavigation(e)})),this.prefs.addListeners(a.Prefs3D.GHOSTING,(e=>{this.impl.toggleGhosting(e)})),this.prefs.addListeners(a.Prefs3D.LINE_RENDERING,(e=>{this.impl.hideLines(!e)})),this.prefs.addListeners(a.Prefs.POINT_RENDERING,(e=>{this.impl.hidePoints(!e)})),this.prefs.addListeners(a.Prefs3D.EDGE_RENDERING,(e=>{this._displayEdges=()=>{this.impl.setDisplayEdges(e)},e||this.model&&this.model.isLoadDone()?this._displayEdges():this.addEventListener(w.GEOMETRY_LOADED_EVENT,this._displayEdges)})),this.prefs.addListeners(a.Prefs3D.LIGHT_PRESET,(e=>{let t=!1;if("string"==typeof e){for(var i=e,n=-1,r=0;r{this.navigation.setUsePivotAlways(e)})),this.prefs.addListeners(a.Prefs.REVERSE_MOUSE_ZOOM_DIR,(e=>{this.navigation.setReverseZoomDirection(e)})),this.prefs.addListeners(a.Prefs3D.REVERSE_HORIZONTAL_LOOK_DIRECTION,(e=>{this.navigation.setReverseHorizontalLookDirection(e)})),this.prefs.addListeners(a.Prefs3D.REVERSE_VERTICAL_LOOK_DIRECTION,(e=>{this.navigation.setReverseVerticalLookDirection(e)})),this.prefs.addListeners(a.Prefs3D.ZOOM_TOWARDS_PIVOT,(e=>{this.navigation.setZoomTowardsPivot(e)})),this.prefs.addListeners(a.Prefs3D.SELECTION_SETS_PIVOT,(e=>{this.navigation.setSelectionSetsPivot(e)})),this.prefs.addListeners(a.Prefs3D.ORBIT_PAST_WORLD_POLES,(e=>{this.navigation.setOrbitPastWorldPoles(e)})),this.prefs.addListeners(a.Prefs.LEFT_HANDED_MOUSE_SETUP,(e=>{this.navigation.setUseLeftHandedInput(e),m.EventUtils.setUseLeftHandedInput(e)})),this.prefs.addListeners(a.Prefs.WHEEL_SETS_PIVOT,(e=>{this.navigation.setWheelSetsPivot(e)})),this.prefs.addListeners(a.Prefs3D.SELECTION_MODE,(e=>{this.impl.selector.setSelectionMode(e)})),this.prefs.addListeners(a.Prefs.BACKGROUND_COLOR_PRESET,(e=>{if(e)try{var t=JSON.parse(e);this.impl.setClearColors(t[0],t[1],t[2],t[3],t[4],t[5])}catch(e){o.logger.warn("Invalid Prefs.BACKGROUND_COLOR_PRESET: "+t)}})),this.prefs.addListeners(a.Prefs3D.EXPLODE_STRATEGY,(e=>{q.L.setStrategy(e)&&this.impl.refreshExplode()})),this.prefs.addListeners(a.Prefs2D.LOADING_ANIMATION,(e=>{this.impl.onLoadingAnimationChanged(e)}));const t={};this.prefs.addListeners(a.Prefs3D.FORCE_DOUBLE_SIDED,(i=>{this._setDoubleSided=function(n){let r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],o=n.model,s=function(e){return"boolean"==typeof i?i:!!i[e.id]}(o);const a=o.getData();Object.prototype.hasOwnProperty.call(t,o.id)||(t[o.id]=!!a.doubleSided);const l=s||!!a.doubleSided;l!==t[o.id]&&(e.impl.setDoubleSided(l,o,r),t[o.id]=l)};var n=this.impl.modelQueue().getModels();0===n.length?this.addEventListener(w.MODEL_ADDED_EVENT,this._setDoubleSided):(n.forEach((e=>{this._setDoubleSided({model:e},!1)})),this.impl.sceneUpdated())}))},ee.prototype.setNavigationLock=function(e){const t=this.navigation.getIsLocked();return t!==e&&(this.navigation.setIsLocked(e),this.dispatchEvent({type:w.NAVIGATION_MODE_CHANGED_EVENT,id:this.getActiveNavigationTool()})),t},ee.prototype.getNavigationLock=function(){return this.navigation.getIsLocked()},ee.prototype.setNavigationLockSettings=function(e){this.navigation.setLockSettings(e),this.dispatchEvent({type:w.NAVIGATION_MODE_CHANGED_EVENT,id:this.getActiveNavigationTool()})},ee.prototype.getNavigationLockSettings=function(){return this.navigation.getLockSettings()},ee.prototype.setActiveNavigationTool=function(e){if(e===this._pushedTool||!e&&!this._pushedTool)return!0;if(this._pushedTool){if(!this.impl.controls.deactivateTool(this._pushedTool))return!1;this.impl.controls.setToolActiveName(this.getDefaultNavigationToolName()),this._pushedTool=null}return(!e||e===this.getDefaultNavigationToolName())&&null===this._pushedTool?(this.dispatchEvent({type:w.NAVIGATION_MODE_CHANGED_EVENT,id:this.getDefaultNavigationToolName()}),!0):!!this.impl.controls.activateTool(e)&&(this._pushedTool=e,this.dispatchEvent({type:w.NAVIGATION_MODE_CHANGED_EVENT,id:this._pushedTool}),!0)},ee.prototype.getActiveNavigationTool=function(){return this._pushedTool?this._pushedTool:this._defaultNavigationTool},ee.prototype.setDefaultNavigationTool=function(e){this._defaultNavigationTool&&this.impl.controls.deactivateTool(this._defaultNavigationTool);var t=this._pushedTool;this._pushedTool=null,t&&this.impl.controls.deactivateTool(t),this.impl.controls.activateTool(e),this._defaultNavigationTool=e,t&&(this.impl.controls.activateTool(t),this._pushedTool=t)},ee.prototype.getDefaultNavigationToolName=function(){return this._defaultNavigationTool},ee.prototype.getFOV=function(){return this.navigation.getVerticalFov()},ee.prototype.setFOV=function(e){this.navigation.setVerticalFov(e,!0)},ee.prototype.getFocalLength=function(){return this.navigation.getFocalLength()},ee.prototype.setFocalLength=function(e){this.navigation.setFocalLength(e,!0)},ee.prototype.hideLines=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.hideLines is not applicable to 2D"):this.prefs.set(a.Prefs3D.LINE_RENDERING,!e)},ee.prototype.hidePoints=function(e){this.prefs.set(a.Prefs.POINT_RENDERING,!e)},ee.prototype.setDisplayEdges=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setDisplayEdges is not applicable to 2D"):this.prefs.set(a.Prefs3D.EDGE_RENDERING,e)},ee.prototype.applyCamera=function(e,t){this.impl.setViewFromCamera(e,!0),t&&this.fitToView()},ee.prototype.fitToView=function(e,t,i){var n=[];e&&(e.length>0&&e[0].model?n=e:e.length>0&&n.push({model:t||this.model,selection:e})),this.impl.fitToView(n,i)},ee.prototype.setClickConfig=function(e,t,i){var n=this.clickHandler?this.clickHandler.getClickBehavior():this.impl.controls.getClickBehavior();if(e in n){var r=n[e];if(t in r)return r[t]=i,!0}return!1},ee.prototype.getClickConfig=function(e,t){var i=this.clickHandler?this.clickHandler.getClickBehavior():this.impl.controls.getClickBehavior();if(e in i){var n=i[e];if(t in n)return n[t]}return null},ee.prototype.setClickToSetCOI=function(e,t){!1!==t&&this.prefs.set(a.Prefs3D.CLICK_TO_SET_COI,e);var i=this.getClickConfig("click","onObject");e?-1===i.indexOf("setCOI")&&this.setClickConfig("click","onObject",["setCOI"]):i.indexOf("setCOI")>=0&&this.setClickConfig("click","onObject",["selectOnly"])},ee.prototype.setProfile=function(e,t){if(!e)return!1;this.profile=e,this.profile.apply(this.prefs,t);const i=this.profile.extensions&&this.profile.extensions.unload||[],n=this.profile.extensions&&this.profile.extensions.load||[];i.forEach((e=>{this.isExtensionLoaded(e)&&this.unloadExtension(e)})),n.forEach((e=>{this.isExtensionLoaded(e)||this.loadExtension(e,this.config)})),this.dispatchEvent({type:Autodesk.Viewing.PROFILE_CHANGE_EVENT,profile:e})},ee.prototype.initSettings=function(e){if(!this.profile){const t=new s.Profile(e);this.setProfile(t)}},ee.prototype.setLightPreset=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setLightPreset is not applicable to 2D"):this.prefs.set(a.Prefs3D.LIGHT_PRESET,e)},ee.prototype.setUsePivotAlways=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setUsePivotAlways is not applicable to 2D"):this.prefs.set(a.Prefs3D.ALWAYS_USE_PIVOT,e)},ee.prototype.setReverseZoomDirection=function(e){this.prefs.set(a.Prefs.REVERSE_MOUSE_ZOOM_DIR,e)},ee.prototype.setReverseHorizontalLookDirection=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setReverseHorizontalLookDirection is not applicable to 2D"):this.prefs.set(a.Prefs3D.REVERSE_HORIZONTAL_LOOK_DIRECTION,e)},ee.prototype.setReverseVerticalLookDirection=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setReverseVerticalLookDirection is not applicable to 2D"):this.prefs.set(a.Prefs3D.REVERSE_VERTICAL_LOOK_DIRECTION,e)},ee.prototype.setZoomTowardsPivot=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setZoomTowardsPivot is not applicable to 2D"):this.prefs.set(a.Prefs3D.ZOOM_TOWARDS_PIVOT,e)},ee.prototype.setOrbitPastWorldPoles=function(e){this.model&&this.model.is2d()?o.logger.warn("Viewer3D.setOrbitPastWorldPoles is not applicable to 2D"):this.prefs.set(a.Prefs3D.ORBIT_PAST_WORLD_POLES,e)},ee.prototype.setUseLeftHandedInput=function(e){this.prefs.set(a.Prefs.LEFT_HANDED_MOUSE_SETUP,e)},ee.prototype.setDisplayUnits=function(e){this.prefs.set(a.Prefs.DISPLAY_UNITS,e)},ee.prototype.setDisplayUnitsPrecision=function(e){null==e&&(e=""),this.prefs.set(a.Prefs.DISPLAY_UNITS_PRECISION,e)},ee.prototype.setLayerVisible=function(e,t,i){var n=this.impl.layers;null===e?t?n.showAllLayers():n.hideAllLayers():(Array.isArray(e)||(e=[e]),i&&n.hideAllLayers(),this.impl.setLayerVisible(e,t)),this.dispatchEvent({type:w.LAYER_VISIBILITY_CHANGED_EVENT})},ee.prototype.isLayerVisible=function(e){return!!(e&&e.isLayer&&this.impl.isLayerVisible(e))},ee.prototype.anyLayerHidden=function(){for(var e=this.impl.getLayersRoot(),t=e&&e.children,i=t?t.length:0,n=0;n1&&void 0!==arguments[1]?arguments[1]:this.impl.camera;return this.impl.worldToClient(e,t)},ee.prototype.clientToWorld=function(e,t,i,n,r){return this.impl.clientToWorld(e,t,i,n,r)},ee.prototype.modelHasTopology=function(){return!(!this.model||!this.model.hasTopology())},ee.prototype.setSelectionColor=function(e,t){this.impl.setSelectionColor(e,t)},ee.prototype.set2dSelectionColor=function(e,t){this.impl.set2dSelectionColor(e,t)},ee.prototype.setTheme=function(e){for(var t=this.container.classList,i=0;i{this.impl.invalidate(!0,!0)}))},ee.prototype.transferModel=function(e,t){var i,n=this.impl.findModel(e);if(n){var r=[];this.getAggregateSelection((function(t,i){t.id==e&&r.push(i)}));var o=this.impl.visibilityManager.getIsolatedNodes(n),s=this.impl.visibilityManager.getHiddenNodes(n),a=this.impl.matman().exportModelMaterials(n);this.impl.unloadModel(n,!0),null===(i=n.getFragmentList())||void 0===i||i.dispose(this.impl.glrenderer()),n.isAEC()&&n.is3d()&&t.impl.setLightPresetForAec(),t.impl.setRenderingPrefsFor2D(n.is2d()),t.impl.addModel(n),t.impl.matman().importModelMaterials(a,e),t._loadingSpinner.hide(),n.loader&&n.loader.viewer3DImpl===this.impl&&(n.loader.viewer3DImpl=t.impl),n.getData().loadDone&&t.impl.onLoadComplete(n),t.impl.selector.setSelection(r,n),0!=o.length?t.impl.visibilityManager.isolate(o,n):0!=s.length&&t.impl.visibilityManager.hide(s,n)}},ee.prototype.hideModel=function(e){var t=this.impl.modelQueue();return!!(e="number"==typeof e?t.findModel(e):e)&&(this.impl.removeModel(e),t.addHiddenModel(e),!0)},ee.prototype.showModel=function(e,t){var i=this.impl.modelQueue();return!!(e="number"==typeof e?i.findHiddenModel(e):e)&&(i.removeHiddenModel(e),this.impl.addModel(e,t),!0)},ee.prototype.getVisibleModels=function(){return this.impl.modelQueue().getModels().slice()},ee.prototype.getHiddenModels=function(){return this.impl.modelQueue().getHiddenModels().slice()},ee.prototype.getAllModels=function(){return this.impl.modelQueue().getAllModels().slice()},ee.prototype.getFirstModel=function(){return this.impl.is2d?this.impl.get2DModels()[0]:this.impl.get3DModels()[0]},ee.prototype.getUnderlayRaster=function(e){return this.getAllModels().find((t=>{var i,n;const r=t.getDocumentNode();return r&&(null===(i=r.getDocument())||void 0===i?void 0:i.getPath())===(null===(n=e.getDocument())||void 0===n?void 0:n.getPath())&&r.guid()===e.guid()&&t.getData().underlayRaster}))},ee.prototype.restoreDefaultSettings=function(){var e=this.model,t=e.is2d()?"2d":"3d";this.prefs.reset(t),this.impl.setupLighting(e),e.isAEC()&&e.is3d()&&this.impl.setLightPresetForAec(),this.impl.setRenderingPrefsFor2D(!e.is3d()),this.fireEvent({type:w.RESTORE_DEFAULT_SETTINGS_EVENT})},ee.prototype.disableHighlight=function(e){this.impl.disableHighlight(e)},ee.prototype.disableSelection=function(e){e&&this.clearSelection(),this.impl.disableSelection(e)},ee.prototype.isHighlightDisabled=function(){return this.impl.selector.highlightDisabled},ee.prototype.isHighlightPaused=function(){return this.impl.selector.highlightPaused},ee.prototype.isHighlightActive=function(){return!(this.impl.selector.highlightDisabled||this.impl.selector.highlightPaused)},ee.prototype.isSelectionDisabled=function(){return this.impl.selector.selectionDisabled},ee.prototype.activateExtension=function(e,t){return this.loadedExtensions&&e in this.loadedExtensions?this.loadedExtensions[e].activate(t):(o.logger.warn("Extension is not loaded or doesn't exist"),!1)},ee.prototype.deactivateExtension=function(e){return this.loadedExtensions&&e in this.loadedExtensions?this.loadedExtensions[e].deactivate():(o.logger.warn("Extension is not loaded or doesn't exist"),!1)},ee.prototype.isExtensionActive=function(e,t){return this.loadedExtensions&&e in this.loadedExtensions?this.loadedExtensions[e].isActive(t):(o.logger.warn("Extension is not loaded or doesn't exist"),!1)},ee.prototype.isExtensionLoaded=function(e){return this.loadedExtensions&&e in this.loadedExtensions},ee.prototype.getLoadedExtensions=function(){return this.loadedExtensions||[]},ee.prototype.getExtensionModes=function(e){return this.loadedExtensions&&e in this.loadedExtensions?this.loadedExtensions[e].getModes():(console.warn("Extension is not loaded or doesn't exist"),[])},ee.prototype.reorderElements=function(e){var t=e.getAttribute("layer-order-id"),i=this.containerLayerOrder.indexOf(t),n=null;if(-1!==i)for(var r=i+1;r{"use strict";i.r(t),i.d(t,{InitParametersSetting:()=>J,Viewer3DImpl:()=>te,createRenderer:()=>ee});var n=i(55280),r=i(18817),o=i(28441),s=i(47263),a=i(88190),l=i(62612),c=i(27579),h=i(13843),u=i(97005),d=i(65802),f=i(19356),p=i(83081),m=i(90255),g=i(45383),v=i(24528),y=i(22267),b=i(15371),x=i(19129),_=i(14859),E=i(73674),S=i(54561),A=i(12360),w=i(8600),T=i(26217),M=i(36411),C=i(81760),P=i(38749),D=i(72091),L=i(63841),I=i(19556),R=i(17016),O=i(18310),N=i(99211),F=i(12153),U=i(26206),B=i(35922),k=i(71211),V=i(25004),G=i(53870);class z{_callbacks;_numberOfTotalDrawCalls;_numberOfInjections;constructor(){this._callbacks=new Array,this._numberOfTotalDrawCalls=0,this._numberOfInjections=0,this.counters={drawArrays:0,drawArraysInstanced:0,drawElements:0,drawElementsInstanced:0,total:0}}initialize(e){e instanceof WebGL2RenderingContext?(this.#s(e),this.#a(e)):console.debug("Draw calls cannot be intruded and counted: Valid context object expected, given",e)}uninitialize(){}resetCounters(){for(const e of this._callbacks)e.continuous?e.callCountOnLastInvocation-=this.counters.total:e.callCountOnLastInvocation=0;this.counters.drawArrays=0,this.counters.drawArraysInstanced=0,this.counters.drawElements=0,this.counters.drawElementsInstanced=0,this.counters.total=0}inject(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];Number.isInteger(t)&&t<0?console.warn("After-draw-call callback injection ignored. Number of calls ignored before invocation must be a positive number, given",t):this._callbacks.push({callback:e,numberOfCallsIgnoreBeforeInvocation:t,callCountOnLastInvocation:0,continuous:i})}#l(e,t){if(void 0!==e)return function(){e.apply(this,arguments),t.apply(this)}}#c(){if(++this.counters.total,++this._numberOfTotalDrawCalls,0!==this._callbacks.length)for(const e of this._callbacks)this.counters.total-e.callCountOnLastInvocation<=e.numberOfCallsIgnoreBeforeInvocation||(e.callback(),e.callCountOnLastInvocation=this.counters.total,++this._numberOfInjections)}#s(e){e.drawArrays=this.#l(e.drawArrays,(()=>{++this.counters.drawArrays,this.#c()})),e.drawArraysInstanced=this.#l(e.drawArraysInstanced,(()=>{++this.counters.drawArraysInstanced,this.#c()})),e.drawElements=this.#l(e.drawElements,(()=>{++this.counters.drawElements,this.#c()})),e.drawElementsInstanced=this.#l(e.drawElementsInstanced,(()=>{++this.counters.drawElementsInstanced,this.#c()})),e.drawRangeElements=this.#l(e.drawRangeElements,(()=>{++this.counters.drawElements,this.#c()}))}#a(e){}}const H={WEBGL_CONTEXT_LOST:"webglcontextlost",WEBGL_CONTEXT_RESTORED:"webglcontextrestored"};class W extends G.WebGLRenderer{static DEFAULT_NUM_DRAW_CALLS_TO_INJECT_FLUSH_AFTER_IOS=1e3;_drawCallIntrusion;#h;#u;#d;constructor(){var e,t;let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(i),null===(e=i.canvas)||void 0===e||e.addEventListener("webglcontextlost",(()=>{this.fireEvent({type:H.WEBGL_CONTEXT_LOST})})),null===(t=i.canvas)||void 0===t||t.addEventListener("webglcontextrestored",(()=>{this.fireEvent({type:H.WEBGL_CONTEXT_RESTORED})})),this.refCount=0;const r=parseInt((0,n.getIOSVersion)(),10);if((0,n.isIOSDevice)()&&r>=15){this._drawCallIntrusion=new z,this._drawCallIntrusion.initialize(this.getContext());const e=W.DEFAULT_NUM_DRAW_CALLS_TO_INJECT_FLUSH_AFTER_IOS-1;this._drawCallIntrusion.inject((()=>{this.getContext().flush()}),e,!0),console.debug(e<1?"LMVRenderer: Additional context flushes will be invoked after every draw call.":`LMVRenderer: Additional context flushes will be invoked after ${e+1} subsequent draw calls.`)}else this._drawCallIntrusion=void 0;this.#h=[],this.loadingAnimationDuration=-1,this.highResTimeStamp=-1,this.#u=this.render,this.#d=this.setRenderTarget,this.render=W.prototype.render.bind(this),this.setRenderTarget=W.prototype.setRenderTarget.bind(this)}supportsMRT(){return console.warn("LMVRenderer: .supportsMRT() has been deprecated. It always returns true."),!0}updateTimestamp(e){return this.highResTimeStamp=e}getLoadingAnimationDuration(){return this.loadingAnimationDuration}setLoadingAnimationDuration(e){return this.loadingAnimationDuration=e}clearBlend(){this.state.setBlending(D.NoBlending)}isWebGL2(){return console.warn("LMVRenderer: .isWebGL2() has been deprecated. It always returns true."),!0}render(e,t,i){this.#u(e,t,!1,i)}notifyFinalFrameRendered(e){void 0!==this._drawCallIntrusion&&this._drawCallIntrusion.resetCounters()}setRenderTarget(e){this.#d(e)}}V.EventDispatcher.prototype.apply(W.prototype),W.Events=H;var j=i(44745),q=i(57480);function X(){var e,t,i,r,o,s={},a=0,l=0,c=0,h=0,u=1,d=!1,f=!1,m={},g={},v=[0,0],y=1,b=1,x=!1,_=0,E=0,S=0,A=!1,w=0,T=[.42,0,1,1],M=!0,C={antialias:!0,sao:!1,useHdrTarget:!1,haveTwoSided:!1,customPresentPass:!1,envMapBg:!1,numIdTargets:3,renderEdges:!1,copyDepth:!1},P={},L=!1,I=null;function R(e,t){if(e&&t){t.length=0;for(let i=0;i3&&void 0!==arguments[3]?arguments[3]:{};t.initSync(i,s),x=(0,n.isMobileDevice)(),r=i,o=s,e=t,f=!!a.offscreen},this.setDepthMaterialOffset=function(e,t,i){},this.setUserFinalPass=function(e){I=e},this.overlayUpdate=function(){if(A)return A=!1,!0;if(0===w&&(0===E||-1===E))return!1;var t=e.getBlendSettings().getHighlightIntensity(),i=1;if(M){var n=.004*(performance.now()-_);n=Math.min(n,1),i=function(e,t){var i=3*e[1],n=3*(e[3]-e[1])-i;return(((1-i-n)*t+n)*t+i)*t}(T,n)}return t!==i&&(e.getBlendSettings().setHighlightIntensity(i),!0)},this.setRollOverFadeEnabled=function(e){M=e},this.beginScene=function(o,a,l,c){if(t=a,i=l,s={},!L&&r)this.initPostPipeline(C.sao,C.antialias),L=!0;else if(!r)return void(d||(0,n.isNodeJS)()||(p.logger.error("Rendering to a canvas that was resized to zero. If you see this message you may be accidentally leaking a viewer instance.",(0,q.errorCodeString)(q.ErrorCodes.VIEWER_INTERNAL_ERROR)),d=!0));c&&(e.getEnvMapPass().setCamera(t,y),e.renderBackground(C.envMapBg),e.clearMainTargets()),C.sao||e.getBlendSettings().setAOEnabled(!1),e.beginScene(t,i),e.renderScenePart(o,C.renderEdges)},this.renderScenePart=function(t,i,n,r){s={},e.renderScenePart(t,C.renderEdges)},this.clearAllOverlays=function(){e.clearOverlayTargets()},this.renderOverlays=function(i,n){let r=!1;e.clearOverlayTargets();for(let o in i){let s=i[o],a=s.scene,l=s.camera?s.camera:t;a.children.length&&(r||(r=!0),e.renderOverlay(a,l,s.materialPre,s.materialPost,C.renderEdges,s.edgeColor,n))}e.getBlendSettings().setUseOverlay(r)},this.computeSSAO=function(i){!i&&C.sao?(e.getSAO().run(t),e.getBlendSettings().setAOEnabled(!0)):e.getBlendSettings().setAOEnabled(!1)},this.getFinalTarget=function(){return null},this.presentBuffer=function(t,i){e.present(C.antialias,i,t||I)},this.composeFinalFrame=function(t,i,n){e&&(this.computeSSAO(t),i||this.presentBuffer(void 0,n))},this.cleanup=function(){e&&e.cleanup(),s={},m={},g={}},this.setSize=function(t,i,n,s){if(r=t,o=i,C.logicalWidth=t,C.logicalHeight=i,0===t&&0===i||!e)this.cleanup();else{var a=0|t*e.getPixelRatio(),l=0|i*e.getPixelRatio();C.deviceWidth=a,C.deviceHeight=l,s||(f?e.setViewport(0,0,t,i):e.setSize(t,i))}},this.getMaxAnisotropy=function(){return e?e.getMaxAnisotropy():0},this.mrtFlags=function(){return{mrtNormals:!0,mrtIdBuffer:!0}},this.getAntialiasing=function(){return C.antialias},this.initPostPipeline=function(e,t){C.sao=e,C.antialias=t,this.setSize(r,o)},this.setClearColors=function(t,i){i||(i=t),e.getGradientPass().setClearColors(t.x,t.y,t.z,i.x,i.y,i.z)},this.useOverlayAlpha=function(e){b=e},this.setClearAlpha=function(e){y=e},this.setAOEnabled=function(t){C.sao=t,P.sao=C.sao,e.getBlendSettings().setAOEnabled(t),this.setSize(r,o,!1,!0)},this.setAOOptions=function(t,i,n){let r;if(void 0!==t){let e=this.getUnitScale();t/=e,r=.01/e}e.getSAO().setAOOptions(t,r,i),void 0!==n&&e.getBlendSettings().setAOBias(n)},this.getAOEnabled=function(){return C.sao},this.getAORadius=function(){return console.log("getAORadius TODO"),0},this.getAOIntensity=function(){return console.log("getAOIntensity TODO"),0},this.getAOBias=function(){return console.log("getAOBias TODO"),0},this.setCubeMap=function(t){e.getEnvMapPass().setCubeMap(t),t||this.toggleEnvMapBackground(!1)},this.setEnvRotation=function(t){c=t,e.getEnvMapPass().setEnvRotation(t)},this.getEnvRotation=function(){return c},this.setEnvExposure=function(t){e.getEnvMapPass().setEnvExposure(t),a=t},this.setTonemapExposureBias=function(t){l=t,e.getEnvMapPass().setExposureBias(t)},this.getExposureBias=function(){return l},this.setCamera=function(e){t=e},this.setTonemapMethod=function(t){h=t,e.gammaInput=0!==t,e.getEnvMapPass().setTonemapMethod(t)},this.getToneMapMethod=function(){return h},this.toggleTwoSided=function(e){C.haveTwoSided=e},this.toggleEdges=function(e){C.renderEdges=e,P.renderEdges=e},this.toggleEnvMapBackground=function(e){C.envMapBg=e},this.idAtPixel=function(e,t,i){return this.idAtPixels(e,t,1,i)},this.idAtPixels=function(t,i,n,r){n%2==0&&(n+=1);let o=e.getRenderTargets(),a=o.getTargetSize();const l=.5*(t+1)*a[0]-.5*(n-1)|0,c=.5*(1-i)*a[1]-.5*(n-1)|0;if(s[n]&&l===s[n][4]&&c===s[n][5])return R(s[n],r),s[n][0];const h=4*n*n;m[h]||(m[h]=new Uint8Array(h));const u=m[h];let d;return g[h]||(g[h]=new Uint8Array(h)),d=g[h],o.readIdTargetPixelsSyncOrFail(l,c,n,n,[u,d]),function(t,i,n,r,o,a){let l,c=0,h=0,u=0,d=-1,f=e.getRenderTargets().getTargetSize();s[n]=[-1,-1,null,null,t,i];for(let e=0;e=0&&e<=n&&a>=0&&a<=n){const c=4*(e+a*n);if(l=r[c+3]<<24|r[c+2]<<16|r[c+1]<<8|r[c],s[n][0]=l,o){let e=o[c+1]<<8|o[c];s[n][1]=e<<16>>16}if(s[n][2]=2*(t+e)/f[0]-1,s[n][3]=-(2*(i+a)/f[1]-1),-1!==l)break}if(c==h||c<0&&c==-h||c>0&&c==1-h){const e=u;u=-d,d=e}c+=u,h+=d}return R(s[n],a),l}(l,c,n,u,d,r)},this.rolloverObjectViewport=function(e,t){this.idAtPixel(e,t,v),this.rolloverObjectId(v[0],null,v[1])},this.rolloverObjectId=function(e,t,i){return N(0),O(e,i)},this.rollOverModelId=function(e){return N(0),O(1,e)},this.setRollOverHighlightColor=function(t){e.getBlendSettings().setRolloverHighlightColor(t)},this.setDbIdForEdgeDetection=function(t,i){e.getBlendSettings().setEdgeHighlightObjectId(t,i)},this.setGlowFlagAndColor=function(t,i,n){t?(O(0,0),t!==w&&(N(t),_=performance.now())):N(0),e.getBlendSettings().setGlowOptions(i,n||0)},this.setEdgeColor=function(e){},this.setSelectionColor=function(t){var i=new D.Color(t);i.r=Math.pow(i.r,2),i.g=Math.pow(i.g,2),i.b=Math.pow(i.b,2),e.getBlendSettings().setSelectionColor(i),C.selectionColor=t},this.setUnitScale=function(t){let i=u/t;u=t,e.getSAO().setUnitScale(i)},this.getUnitScale=function(){return u},this.getColorTarget=function(){},this.getCurrentFramebuffer=function(){return e.getCurrentFramebuffer()},this.setCutPlanes=function(t){e.getIBL().setCutPlanes(t)},this.getConfig=function(){let t=e.getGradientPass().getClearColors();return{renderEdges:C.renderEdges,envMapBackground:C.envMapBg,envMap:e.getEnvMapPass().getCubeMap(),envExposure:a,toneMapExposureBias:l,envRotation:this.getEnvRotation(),tonemapMethod:h,clearColorTop:new D.Vector3(t[0],t[1],t[2]),clearColorBottom:new D.Vector3(t[3],t[4],t[5]),clearAlpha:y,useOverlayAlpha:b,aoEnabled:this.getAOEnabled(),aoRadius:this.getAORadius(),aoIntensity:this.getAOIntensity(),twoSided:C.haveTwoSided,unitScale:this.getUnitScale(),antialias:this.getAntialiasing(),selectionColor:C.selectionColor}},this.applyConfig=function(e){this.toggleEdges(e.renderEdges),this.toggleEnvMapBackground(e.envMapBackground),this.setCubeMap(e.envMap),this.setEnvExposure(e.envExposure),this.setTonemapExposureBias(e.toneMapExposureBias),this.setEnvRotation(e.envRotation),this.setTonemapMethod(e.tonemapMethod),this.toggleTwoSided(e.twoSided),this.setEdgeColor(e.edgeColor),this.setUnitScale(e.unitScale),e.clearColor?this.setClearColors(e.clearColor):this.setClearColors(e.clearColorTop,e.clearColorBottom),this.setClearAlpha(e.clearAlpha),this.useOverlayAlpha(e.useOverlayAlpha);var t=e.aoEnabled!=this.getAOEnabled(),i=e.antialias!=this.getAntialiasing();(t||i)&&this.initPostPipeline(e.aoEnabled,e.antialias)},this.enter2DMode=function(e,t){P.sao=C.sao,P.antialias=C.antialias,P.renderEdges=C.renderEdges,P.selectionColor=C.selectionColor,this.setSelectionColor(t),C.renderEdges=!1,this.initPostPipeline(!1,!1)},this.exit2DMode=function(){C.renderEdges=P.renderEdges,P.selectionColor&&this.setSelectionColor(P.selectionColor),this.initPostPipeline(P.sao,P.antialias)}}var Y=i(57872),K=i(40508),Q=null,Z=(0,n.getGlobal)().ENABLE_DEBUG,$=(0,n.getGlobal)().ENABLE_DEBUG_RCS;let J={canvas:null,antialias:!1,alpha:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!0,stencil:!1,depth:!1,logarithmicDepthBuffer:!1};function ee(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if((0,n.isNodeJS)())return;var i=Object.assign({},J,t);let r;i.canvas=e;try{if((0,Y.IsUsingWebGPU)()){const e=(0,K.cS)();r=new j.Renderer(e,i)}else r=new W(i)}catch(e){return null}return r.name="MainRenderer",!r.getContext||r.getContext&&!r.getContext()?null:(r.autoClear=!1,r.sortObjects=!1,r)}function te(e,t){var i=this;this.setGlobalManager(t.globalManager);var U,V,G,z,H,j,q=1e3/15,K=1e3/30,J=1,te=-1,ie=-1,ne=-1,re=null,oe="y";let se;var ae,le,ce,he,ue,de,fe,pe,me=null,ge=null,ve=null,ye=!1,be=!1,xe=!1,_e={type:I.PROGRESS_UPDATE_EVENT,state:o.ProgressState.LOADING,percent:0},Ee=!1,Se=!1,Ae=!1,we=0,Te={magnitude:4,depthDampening:0},Me=0,Ce=1e3/60,Pe=0,De=!0,Le=!1,Ie=!1,Re=null,Oe=null;this.edgeColorMain=new D.Vector4(0,0,0,.3),this.edgeColorGhosted=new D.Vector4(0,0,0,.1);var Ne,Fe,Ue,Be=(0,n.getGlobal)(),ke=!1,Ve=e=>{var t=e.model;this.canvas&&t&&t.getData()&&t.getData().stdSurfMats&&t.getData().stdSurfMats.materials&&this.api.loadExtension("Autodesk.StandardSurface").then((e=>{e&&e.processModel(t)}))},Ge=e=>e.model.modelRootLoaded=!0,ze=e=>{null!=e&&e.model&&!pe.findModel(e.model.id)||this.invalidate(!1,!0)},He={},We=!1,je="",qe=!0,Xe=!1;function Ye(e){var t;const n=null===(t=e.frags)||void 0===t?void 0:t.is2d;var r=Ne.phase,o=!0,s=r==v.RenderFlags.RENDER_NORMAL,a=le.settings.idbuffer&&r!=v.RenderFlags.RENDER_HIDDEN,l=r==v.RenderFlags.RENDER_HIDDEN?i.edgeColorGhosted:i.edgeColorMain;le.setEdgeColor(l),r!=v.RenderFlags.RENDER_HIDDEN||e.ignoreFadeMaterial?r==v.RenderFlags.RENDER_HIGHLIGHTED&&(e.overrideMaterial=i.highlightMaterial):e.overrideMaterial=i.fadeMaterial;const c={type:I.RENDER_SCENE_PART,scene:e,wantColor:o,wantSAO:s,wantID:a,context:le};if(i.api.dispatchEvent(c),!i.is2d&&n)i.getSheetRenderer().renderScenePart(e,o,s,a);else{const t=Xe&&!i.is2d&&r==v.RenderFlags.RENDER_HIDDEN;t&&(e.edgesOnly=!0),le.renderScenePart(e,o,s,a),t&&(e.edgesOnly=void 0)}e.overrideMaterial=null}function Ke(e){if(!G)return;i.canvasBoundingclientRectDirty=!0,i.camera.aspect=z/H,i.camera.clientWidth=z,i.camera.clientHeight=H;const t=i.getWindow().devicePixelRatio;i.glrenderer().getPixelRatio()!==t&&i.glrenderer().setPixelRatio(t),le.setSize(z,H),i.controls.handleResize(),fe&&fe.setSize(z,H),ce&&ce.setSize(),i.invalidate(!0,!0,!0),G=!1,e||i.api.dispatchEvent({type:I.VIEWER_RESIZE_EVENT,width:z,height:H})}function Qe(){var e;if((de.enabled||fe)&&!i.is2d&&(e=i.model&&!i.model.isLoadDone()?i.model.getData().bbox:i.getVisibleBounds(!0,!1,void 0,void 0))){var t=i.camera,n=e.clone(),r=new D.Vector3(1,0,0),o=ge.clone();t.worldUpTransform&&(n.applyMatrix4(t.worldUpTransform),r.applyMatrix4(t.worldUpTransform),o.applyMatrix4(t.worldUpTransform)),n.min.y-=.005*(n.max.y-n.min.y),he&&he.expandByGroundShadow(n,o);var s=n.getSize(new D.Vector3),a=n.getCenter(new D.Vector3);if(he||(s.x*=1.25,s.z*=1.25,s.x=s.z=Math.max(s.x,s.z)),t.worldUpTransform){var l=t.worldUpTransform.clone().invert();a.applyMatrix4(l)}if(de.setTransform(a,s,t.worldup,r),fe){var c=(new D.Vector3).subVectors(a,t.worldup.clone().multiplyScalar(s.y/2));fe.setTransform(c,t.worldup,s)}he&&he.setGroundShadowTransform(a,s,t.worldup,r)}}function Ze(){he&&(he.state=y.SHADOWMAP_NEEDS_UPDATE)}this.useDeferredConsolidation=!1,e&&(this.interval=setInterval((function(){De||Pe<60||i.track({name:"fps",value:Number(i.fps().toFixed(2)),aggregate:"last"})}),3e4)),this.api=t,this.canvas=e,this.loader=null,this.canvasBoundingclientRectDirty=!0,this.nearRadius=0,this.defaultLoadingAnimationDuration=300,this.lastTime2dGeometryCreated=0,this.maxModelDistance=0,this.initialize=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(U=new D.Vector3(0,1,0),pe=new s.RenderScene,(Xe=(0,Y.IsUsingWebGPU)())&&console.warn("Using WebGPU renderer. Note that this option is experimental and still under development."),(ae=t.glrenderer||ee(e,t.webglInitParams))||(0,n.isNodeJS)()){ae&&(this.onWebGLcontextLost=this.onWebGLcontextLost.bind(this),this.onWebGLcontextRestored=this.onWebGLcontextRestored.bind(this),ae.addEventListener(W.Events.WEBGL_CONTEXT_LOST,this.onWebGLcontextLost),ae.refCount++,t.enableContextRestore&&(ae.enableContextRestore=!0,ae.addEventListener(W.Events.WEBGL_CONTEXT_RESTORED,this.onWebGLcontextRestored))),(le=t.renderer||(Xe?new X:new a.RenderContext)).init(ae,e?e.clientWidth:0,e?e.clientHeight:0,t),se=t.materialManager||new l.MaterialManager(ae),se.refCount++,this.useDeferredConsolidation=t&&void 0!==t.useDeferredConsolidation?!!t.useDeferredConsolidation:Y.USE_DEFERRED_CONSOLIDATION,this.camera=new L.UnifiedCamera(e?e.clientWidth:512,e?e.clientHeight:512),this.lightsOn=!1,this.lights=[],this.no_lights=[],Re=(new D.Color).setRGB(1,1,1),Oe=(new D.Color).setRGB(1,1,1),this.cameraChangedEvent={type:I.CAMERA_CHANGE_EVENT,camera:this.camera},me=new D.Vector3(1,1,1),ge=(new D.Vector3).copy(me),ve=new D.Vector3(-1,0,1),this.scene=new D.Scene,this.sceneAfter=new D.Scene,this.sceneAfter.sortObjects=!1,this.overlayScenes={},Et(),this.createOverlayScene("selection_points",null,null),this.selectionMeshes={},this.fadeMaterial=new D.MeshPhongMaterial({color:16777215,opacity:.1,reflectivity:0,transparent:!0,depthWrite:!1}),this.fadeMaterial.packedNormals=!0,se.addInstancingSupport(this.fadeMaterial),se.addMaterial("__fadeMaterial__",this.fadeMaterial,!0),this.setSelectionColor(6724095),se.togglePolygonOffset(!0),le.setDepthMaterialOffset(se.getPolygonOffsetOn(),se.getPolygonOffsetFactor(),se.getPolygonOffsetUnits()),this.progressiveRender=!0,this.swapBlackAndWhite=!1,this.targetFrameBudget=K,this.frameDisplayRate=5,(0,n.isMobileDevice)()&&(q*=2,K*=2,this.targetFrameBudget/=2,this.frameDisplayRate/=2),this.interruptBudget=1e10,this.controls={update:function(){this.camera.lookAt(this.camera.target),this.camera.updateProjectionMatrix(),this.camera.dirty=!1},handleResize:function(){},recordHomeView:function(){},uninitialize:function(){},isToolActivated:function(){return!1}},this.selector=new c.MultiModelSelector(this),this.visibilityManager=new h.MultiModelVisibilityManager(this),this.showGhosting=!0,this.showOverlaysWhileMoving=!0,this.skipAOWhenMoving=!1,this.keyFrameAnimator=null,this.zoomBoundsChanged=!0;var i=u.LightPresets[u.DefaultLightPreset].bgColorGradient;this.setClearColors(i[0],i[1],i[2],i[3],i[4],i[5]),(de=Xe?ae.getGroundShadowPass():new d.GroundShadow(ae)).enabled=!0,Ne=new it,Xe||(se.addMaterialNonHDR("groundShadowDepthMaterial",de.getDepthMaterial()),se.addOverrideMaterial("normalsMaterial",le.getDepthMaterial()),se.addOverrideMaterial("edgeMaterial",le.getEdgeMaterial())),le.beginScene(this.scene,this.camera,this.noLights,!0),le.composeFinalFrame(!0),this.api.addEventListener(I.MODEL_ROOT_LOADED_EVENT,Ve),this.api.addEventListener(I.MODEL_ROOT_LOADED_EVENT,Ge),this.api.addEventListener(I.LOADER_REPAINT_REQUEST_EVENT,ze)}},this.getSheetRenderer=function(){return ce||(ce=new k.A(i,le,ae,se)),ce},this.isSheetRendererNeeded=function(){return!i.is2d&&this.get2DModels().length>0},this.get2DModels=function(){return pe.getModels().filter((e=>e.is2d()))},this.get3DModels=function(){return pe.getModels().filter((e=>e.is3d()))},this.renderGroundShadow=function(e){he?he.state==y.SHADOWMAP_VALID&&he.renderGroundShadow(i.camera,e||le.getColorTarget()):(de.renderShadow(i.camera,e||le.getColorTarget()),de.rendered=!0)};var $e,Je,et,tt={NOTHING_DRAWN:0,MODEL_DRAWN:1,BACKGROUND_DRAWN:2,OVERLAY_DRAWN:4,REFLECTION_DRAWN:8,ALL_DRAWN:15};function it(){this.highResTimeStamp=-1,this.screenDrawn=tt.NOTHING_DRAWN,this.screenHasChanged=!1,this.frameBudget=0,this._usedFrameTime=0,this.frameTimeScalingFactorAvg=1,this.frameRemaining=0,this.phase=v.RenderFlags.RENDER_NORMAL,this.signalProgressByRendering=!1,this.tickCount=0,this.beginFrameAvg=0,this.lastBeginFrameTimeStamp=0,this.RENDERMODE_FULL=0,this.RENDERMODE_PROGRESSIVE=1,this.RENDERMODE_SILENT=2,this.renderType=this.RENDERMODE_FULL,this.INITIAL_GROUND_SHADOW=.2,this.cmdListActive=!1,this.cmdIndex=0,this.continueExecution=!0,this.encounteredAlwaysDo=!1,this.finishedFullRender=!0,this.groundShadowInPost=!1,this.drawOverlay=!1,this.cmdIsOpen=!1,this.allocArraySize=0,this.cmdListLength=0,this.cmdList=[],this.paramList=[],this.CMD_NORMAL_SEQUENCE=0,this.CMD_DO_AFTER=1,this.CMD_ALWAYS_DO=2,this.isActive=function(){return this.cmdListActive},this.setFrame=function(e){this.frameBudget=e},this.beginCommandSet=function(){this.cmdListActive=!0,this.cmdIndex=0,this.cmdListLength=0,this.encounteredAlwaysDo=!1,this.tickCount=0,this.screenDrawn=tt.NOTHING_DRAWN,this.screenHasChanged=!1},this.endCommandSet=function(){this.cmdIsOpen&&(this.cmdIsOpen=!1,this.cmdListLength++)},this._internalSetParam=function(e,t){this.paramList[this.cmdIndex][e]=t},this.addCommand=function(e,t){for(this.cmdIsOpen&&this.cmdListLength++,this.cmdIsOpen=!0;this.allocArraySize<=this.cmdListLength;)this.cmdList[this.cmdListLength]={},this.paramList[this.cmdListLength]={},this.allocArraySize++;return this.cmdList[this.cmdListLength]=e,this.paramList[this.cmdListLength].executionLevel=t||this.CMD_NORMAL_SEQUENCE,this.encounteredAlwaysDo=this.encounteredAlwaysDo||t===this.CMD_ALWAYS_DO,this.cmdListLength},this.setParam=function(e,t){this.cmdIsOpen?this.paramList[this.cmdListLength][e]=t:Z&&p.logger.error("ERROR: cannot set param when no command is open!")},this.getParam=function(e){return Z&&void 0===this.paramList[this.cmdIndex][e]&&p.logger.error("ERROR: parameter "+e+" was never set for this command! Go fix it."),this.paramList[this.cmdIndex][e]},this.executeCommandList=function(){if(!Ne.cmdListActive)return Ne.lastBeginFrameTimeStamp=0,!0;var e;if(this.tickCount>0&&(Ne.lastBeginFrameTimeStamp=0),this.frameRemaining=this.frameBudget,Z&&this.cmdIsOpen&&p.logger.error("ERROR: should call endCommandSet before executing"),this.continueExecution=!0,$&&(0===this.tickCount&&console.log("==================="),console.log("Running commands for "+(Ne.renderType===Ne.RENDERMODE_PROGRESSIVE?"progressive":Ne.renderType===Ne.RENDERMODE_FULL?"full":"silent")+" render, for tick count "+this.tickCount)),this.encounteredAlwaysDo)for(var t=0;t=Ne.CMD_ALWAYS_DO&&($&&console.log(" ALWAYS DO command "+t+": "+this.cmdList[t].name),this.cmdList[t]()),t++;for(;this.cmdIndex=Ne.CMD_DO_AFTER)&&($&&console.log(" command "+this.cmdIndex+": "+this.cmdList[this.cmdIndex].name+" and "+Ne.frameRemaining+" frame budget remaining"),this.cmdList[this.cmdIndex]()&&($&&console.log(" >>> out of tick time with "+Ne.frameRemaining),e=this.cmdIndex,this.continueExecution=!1)),this.cmdIndex++;return Ne._usedFrameTime=Ne.frameBudget-Ne.frameRemaining,this.continueExecution?this.cmdListActive=!1:this.cmdIndex=e,this.tickCount++,!this.continueExecution}}function nt(){if(Ne.renderType===Ne.RENDERMODE_PROGRESSIVE)if(Ne.getParam("GenerateGroundShadow.afterBeauty")){if(Ne.frameRemaining=de.prepareGroundShadow(i.modelQueue(),0,Ne.frameRemaining),de.getStatus()==b.GroundFlags.GROUND_RENDERED){if(Ne.getParam("GenerateGroundShadow.signalRedraw"))return i.requestSilentRender(),$&&console.log(" $$$$ SIGNAL FULL GROUND SHADOW REDRAW"),!0;Ne.groundShadowInPost=!0}}else 0===Ne.tickCount&&de.prepareGroundShadow(i.modelQueue(),10,Y.USE_HLOD?3:void 0);else Ne.frameRemaining=de.prepareGroundShadow(i.modelQueue(),0,Ne.frameRemaining);return Ne.frameRemaining<0&&de.getStatus()===b.GroundFlags.GROUND_UNFINISHED}function rt(){return de.getStatus()!==b.GroundFlags.GROUND_UNFINISHED&&i.renderGroundShadow(),!1}function ot(){return Ne.renderType===Ne.RENDERMODE_PROGRESSIVE?Ne.getParam("GenerateGroundReflection.afterBeauty")?(Ne.frameRemaining=fe.prepareGroundReflection(de,i,!1,0,Ne.frameRemaining),fe.getStatus()==b.GroundFlags.GROUND_RENDERED&&(Ne.screenDrawn|=tt.REFLECTION_DRAWN,Ne.groundShadowInPost&&se.hasTransparentMaterial()&&i.requestDeferredSilentRender())):0===Ne.tickCount&&fe.prepareGroundReflection(de,i,!0,10,Y.USE_HLOD?5:void 0):Ne.frameRemaining=fe.prepareGroundReflection(de,i,!1,0,Ne.frameRemaining),Ne.frameRemaining<0&&fe.getStatus()===b.GroundFlags.GROUND_UNFINISHED}function st(){if(he.state===y.SHADOWMAP_NEEDS_UPDATE)Ne.frameRemaining=he.startUpdate(pe,Ne.frameRemaining,i.camera,ge,se);else if(he.state==y.SHADOWMAP_INCOMPLETE&&(Ne.frameRemaining=he.continueUpdate(pe,Ne.frameRemaining,se),he.state==y.SHADOWMAP_VALID))return i.requestSilentRender(),$&&console.log(" $$$$ SIGNAL FULL SHADOW MAP REDRAW"),!0;return Ne.frameRemaining<0&&he.state!==y.SHADOWMAP_VALID}function at(){he.state=y.SHADOWMAP_NEEDS_UPDATE}function lt(){if(Ne.signalProgressByRendering&&i.signalProgress(0,o.ProgressState.RENDERING),Ne.renderType===Ne.RENDERMODE_PROGRESSIVE){if(Ne.lastBeginFrameTimeStamp>0){var e=Ne.highResTimeStamp-Ne.lastBeginFrameTimeStamp;if(Y.USE_HLOD){const t=Ne._usedFrameTime&&!pe.isDone()?Ne._usedFrameTime/e:1;Ne.frameTimeScalingFactorAvg=.9*Ne.frameTimeScalingFactorAvg+.1*t}else Ne.beginFrameAvg=.75*Ne.beginFrameAvg+.25*e}Ne.lastBeginFrameTimeStamp=Ne.highResTimeStamp,i._updateTargetFrameBudget()}var t=Ne.getParam("BeginScene.clear");return le.beginScene(i.scene,i.camera,i.lightsOn?i.lights:i.no_lights,t),t&&(Ne.screenDrawn|=tt.BACKGROUND_DRAWN),Ne.getParam("BeginScene.signalCameraChanged")&&i.api.dispatchEvent(i.cameraChangedEvent),!1}function ct(){return Ne.phase=Ne.getParam("BeginPhase.phase"),$&&console.log(" render phase is now "+Ne.phase),pe.reset(i.camera,Ne.phase,Ne.getParam("BeginPhase.moved"),se.getCutPlanes(),We),!1}function ht(){return pe.isEmpty()||pe.isDone()||(Ne.screenDrawn|=tt.MODEL_DRAWN,Ne.frameRemaining=pe.renderSome(Ye,Ne.frameRemaining,Ne.frameTimeScalingFactorAvg),Xe&&ae.flushCommandQueue(),Ne.signalProgressByRendering&&(i.signalProgress(100*pe.getRenderProgress(),o.ProgressState.RENDERING),$&&console.log(" %%% percent done "+100*pe.getRenderProgress()))),!pe.isDone()}function ut(){return Ne.phase=v.RenderFlags.RENDER_FINISHED,le.renderScenePart(i.sceneAfter,!0,!0,!0),!1}function dt(){return Ne.phase=v.RenderFlags.RENDER_FINISHED,!1}function ft(){i.signalProgress(100,o.ProgressState.RENDERING)}function pt(){return i.isOverlayDirty()&&(i.clearOverlayDirtyFlag(),Ne.drawOverlay=!0),Ne.drawOverlay&&(!pe.isEmpty()&&pe.isDone()||i.showOverlaysWhileMoving?(i.renderOverlays(),Ne.screenDrawn|=tt.OVERLAY_DRAWN):(le.clearAllOverlays(),Ne.drawOverlay=!1)),!1}function mt(){Ne.screenDrawn|=tt.ALL_DRAWN}function gt(){if(Ne.screenDrawn&&(Ne.phase===v.RenderFlags.RENDER_FINISHED||Ne.tickCount%i.frameDisplayRate==0)){var e=!Ne.getParam("PostAndPresent.performAO")||(Ne.screenDrawn&(tt.BACKGROUND_DRAWN|tt.MODEL_DRAWN))==tt.BACKGROUND_DRAWN;le.composeFinalFrame(e),Ne.screenHasChanged=!0,Ne.screenDrawn=tt.NOTHING_DRAWN,t=Ne.highResTimeStamp,Pe++,Me<=t&&Me>0&&(Ce=.8*Ce+.2*(t-Me)),i.fpsCallback&&i.fpsCallback(i.fps()),i.api.dispatchEvent({type:I.RENDER_PRESENTED_EVENT})}var t;return!1}function vt(){return Z&&!1===le.getAOEnabled()&&p.logger.error("AO should be on at this point!"),le.setAOEnabled(!1),!1}function yt(){return Z&&!0===le.getAOEnabled()&&p.logger.error("AO should be off at this point!"),le.setAOEnabled(!0),!1}function bt(){return i.requestSilentRender(),!1}function xt(){return Ne.finishedFullRender=!0,!1}this.tick=function(e){e||(e=0),Ne.highResTimeStamp=e,ae.updateTimestamp(e);var t=se.updateMaterials();i.invalidate(t.needsClear,t.needsRender,t.overlayDirty);const n=function(e){if(i.keyFrameAnimator){var t=Me>0?(e-Me)/1e3:0,n=i.keyFrameAnimator.update(t);if(n&&(i.sceneUpdated(!0),n&i.keyFrameAnimator.UPDATE_CAMERA))return!0}return!1}(e),r=i.controls.update(e),o=pe&&pe.update(e),s=r||n||ue||o;ue=!1;var a=G;Ke(),ye||(ye=s),xe||(xe=s);var l=!1,c=le.overlayUpdate();xe?function(){for(var e in i.selectionMeshes){var t=i.selectionMeshes[e];if(t.model){var n,r=t.model.getFragmentList();t.geometry===(null===(n=r)||void 0===n?void 0:n.getGeometry(t.fragId))&&r.getWorldMatrix(t.fragId,t.matrix)}}}():c&&!xe&&(xe=l=!0),this.isLoadingAnimationEnabled()&&Me-i.lastTime2dGeometryCreated<=ae.getLoadingAnimationDuration()&&(be=!0);var h=i.model&&i.model.loader&&i.model.loader.pagingProxy&&i.model.loader.pagingProxy.getMemoryInfo();Ne.signalProgressByRendering=i.model&&i.model.isLoadDone()&&!i.model.isLeaflet()&&!h,Ee&&(Qe(),de.setDirty(),Ee=!1,1)&&(ye=!0);var u=ye,d=pe.frameResumePossible();if(ye=ye||!d,Ae=Ae||Se&&!Ne.cmdListActive,ye||be||xe||Ae)if(Ne.drawOverlay=xe||ye||be,ye||be||Ae){var f,p=u?x.ResetFlags.RESET_RELOAD:x.ResetFlags.RESET_NORMAL;ye||be?(i.progressiveRender?(Ne.renderType=Ne.RENDERMODE_PROGRESSIVE,f=i.targetFrameBudget):(Ne.renderType=Ne.RENDERMODE_FULL,f=i.interruptBudget),ye&&(Se=Ae=!1)):(Ne.renderType=Ne.RENDERMODE_SILENT,f=i.targetFrameBudget,ye=!0,p=x.ResetFlags.RESET_REDRAW,Se=Ae=!1),i.skipCameraUpdate||i.updateCameraMatrices(),Ne.setFrame(f),Ne.finishedFullRender=!1,Ne.beginCommandSet();var m=de.enabled&&!i.is2d&&!De,g=!!fe&&!i.is2d&&!De,b=s||a,_=s&&i.skipAOWhenMoving&&le.getAOEnabled();Ne.addCommand(lt),Ne.setParam("BeginScene.signalCameraChanged",b),Ne.setParam("BeginScene.clear",ye),_&&Ne.addCommand(vt,Ne.CMD_ALWAYS_DO),pe&&(he&&he.state!==y.SHADOWMAP_VALID&&Ne.addCommand(st),m&&(Ne.addCommand(nt),Ne.setParam("GenerateGroundShadow.afterBeauty",!1),Ne.setParam("GenerateGroundShadow.signalRedraw",!1)),g?(fe.setDirty(),Ne.addCommand(ot),Ne.setParam("GenerateGroundReflection.afterBeauty",!1)):m&&ye&&Ne.addCommand(rt),pe.hasHighlighted()&&(Ne.addCommand(ct),Ne.setParam("BeginPhase.phase",v.RenderFlags.RENDER_HIGHLIGHTED),Ne.setParam("BeginPhase.moved",p),p=!1,Ne.addCommand(ht)),Ne.addCommand(ct),Ne.setParam("BeginPhase.phase",v.RenderFlags.RENDER_NORMAL),Ne.setParam("BeginPhase.moved",p),p=!1,Ne.addCommand(ht),!pe.areAllVisible()&&i.showGhosting&&(g&&Ne.renderType===Ne.RENDERMODE_PROGRESSIVE||(Ne.addCommand(ct),Ne.setParam("BeginPhase.phase",v.RenderFlags.RENDER_HIDDEN),Ne.setParam("BeginPhase.moved",p),Ne.addCommand(ht))),Ne.addCommand(ut),Ne.signalProgressByRendering&&Ne.addCommand(ft)),Ne.addCommand(pt,Ne.renderType===Ne.RENDERMODE_PROGRESSIVE?Ne.CMD_DO_AFTER:Ne.CMD_NORMAL_SEQUENCE),Ne.addCommand(gt,Ne.renderType===Ne.RENDERMODE_PROGRESSIVE?Ne.CMD_DO_AFTER:Ne.CMD_NORMAL_SEQUENCE),Ne.setParam("PostAndPresent.performAO",le.getAOEnabled()&&!_),Ne.renderType===Ne.RENDERMODE_PROGRESSIVE&&pe&&(he&&he.state!==y.SHADOWMAP_VALID&&(Ne.addCommand(at),Ne.addCommand(st)),m&&(Ne.addCommand(nt),Ne.setParam("GenerateGroundShadow.afterBeauty",!0),Ne.setParam("GenerateGroundShadow.signalRedraw",!g),Ne.signalProgressByRendering&&Ne.addCommand(ft)),g&&(Ne.groundShadowInPost=!1,Ne.addCommand(ot),Ne.setParam("GenerateGroundReflection.afterBeauty",!0),!pe.areAllVisible()&&i.showGhosting&&(Ne.addCommand(ct),Ne.setParam("BeginPhase.phase",v.RenderFlags.RENDER_HIDDEN),Ne.setParam("BeginPhase.moved",p),Ne.addCommand(ht)),Ne.addCommand(dt),Ne.addCommand(gt),Ne.setParam("PostAndPresent.performAO",le.getAOEnabled()&&!_),Ne.signalProgressByRendering&&Ne.addCommand(ft))),_&&(Ne.addCommand(yt,Ne.CMD_ALWAYS_DO),Ne.addCommand(bt)),Ne.addCommand(xt),Ne.endCommandSet(),ye=!1,be=!1,this.clearOverlayDirtyFlag()}else Ne.finishedFullRender&&(Ne.beginCommandSet(),$&&console.log("=====\nOVERLAY DIRTY"),l?Ne.addCommand(mt):Ne.addCommand(pt,!0),Ne.addCommand(gt,!0),Ne.setParam("PostAndPresent.performAO",le.getAOEnabled()),Ne.signalProgressByRendering&&Ne.addCommand(ft),Ne.endCommandSet(),this.clearOverlayDirtyFlag());Ue=Ne.cmdListActive,i.onBeforeRender&&i.onBeforeRender(Ue),Ne.executeCommandList(),Ue!==qe&&(Ue||Xe||i.glrenderer().notifyFinalFrameRendered(),i.api.dispatchEvent({type:I.FINAL_FRAME_RENDERED_CHANGED_EVENT,value:{finalFrame:!Ue}}),qe=Ue),Me=Ne.highResTimeStamp},this.setLmvDisplay=function(e){Be=e},this.run=function(){j=!0,V=0,setTimeout((function(){j&&function e(t){V=Be.requestAnimationFrame(e),i.tick(t)}()}),1)},this.stop=function(){i.getWindow().cancelAnimationFrame(V),j=!1},this.toggleProgressive=function(e){this.progressiveRender=e,ye=!0},this.updateClearColors=function(){let e=this.clearColorTop,t=this.clearColorBottom;if(this.is2d&&this.swapBlackAndWhite){const i=e=>1===e.x&&1===e.y&&1===e.z,n=e=>0===e.x&&0===e.y&&0===e.z,r=e=>i(e)?new D.Vector3(0,0,0):n(e)?new D.Vector3(1,1,1):e;e=r(e),t=t&&r(t)}le.setClearColors(e,t)},this.toggleSwapBlackAndWhite=function(e){this.swapBlackAndWhite=e,this.updateClearColors(),ye=!0},this.toggleGrayscale=function(e){se.setGrayscale(e),ye=!0},this.toggleGhosting=function(e){this.showGhosting=e,ye=!0},this.toggleOverlaysWhileMoving=function(e){this.showOverlaysWhileMoving=e},this.togglePostProcess=function(e,t){le.initPostPipeline(e,t),this.fireRenderOptionChanged(),ye=!0},this.toggleCmdMapping=function(e,t){t.keyMapCmd=e},this.toggleGroundShadow=function(e){de.enabled!==e&&(de.enabled=e,de.clear(),e&&de.setDirty(),Qe(),this.fireRenderOptionChanged(),this.invalidate(!0,!1,!1))},this.isGroundShadowEnabled=function(){return de&&de.enabled},this.setGroundShadowColor=function(e){de.enabled&&(de.setColor(e),this.invalidate(!0,!1,!1))},this.setGroundShadowAlpha=function(e){de.enabled&&(de.setAlpha(e),this.invalidate(!0,!1,!1))},this.setRightBtnSelection=function(e){ke=e},this.isRightBtnSelectionEnabled=function(){return ke},this.toggleGroundReflection=function(e){e&&fe||!e&&!fe||(e?((fe=new _.GroundReflection(ae,this.canvas.clientWidth,this.canvas.clientHeight,{clearPass:le.getClearPass()})).setClearColors(this.clearColorTop,this.clearColorBottom,(0,n.isMobileDevice)()),fe.toggleEnvMapBackground(Le),fe.setEnvRotation(le.getEnvRotation()),Qe()):(fe.cleanup(),fe=void 0),this.fireRenderOptionChanged(),this.invalidate(!0,!1,!1))},this.setGroundReflectionColor=function(e){fe&&(fe.setColor(e),this.invalidate(!0,!1,!1))},this.setGroundReflectionAlpha=function(e){fe&&(fe.setAlpha(e),this.invalidate(!0,!1,!1))},this.toggleEnvMapBackground=function(e){Le=e,le.toggleEnvMapBackground(e),fe&&fe.toggleEnvMapBackground(e),this.invalidate(!0,!0,!1)},this.isEnvMapBackground=function(){return Le},this.setOptimizeNavigation=function(e){this.skipAOWhenMoving=e},this.getOverlayScenesToRender=function(){const e={};for(const[t,i]of Object.entries(this.overlayScenes))i.hiddenFromMainRender||(e[t]=i);return e},this.renderOverlays=function(){!function(){for(var e in i.selectionMeshes){var t=i.selectionMeshes[e];t.model&&t.model.isConsolidated()&&(t.model.updateRenderProxy(t,t.fragId),t.geometry||i.highlightFragment(t.model,t.fragId,!1))}}();var e,t=this.lightsOn;t||this.toggleLights(!0,!0),this.dir_light1&&(e=this.dir_light1.intensity,this.dir_light1.intensity=1);const n=this.getOverlayScenesToRender();le.renderOverlays(n,this.lightsOn?this.lights:this.no_lights),t||this.toggleLights(!1,!0),this.dir_light1&&(this.dir_light1.intensity=e)},this.setLayerVisible=function(e,t){this.layers.setLayerVisible(e,t)},this.isLayerVisible=function(e){return this.layers.isLayerVisible(e)},this.getVisibleLayerIndices=function(){return this.layers.getVisibleLayerIndices()},this.setNearRadius=function(e,t){this.nearRadius!==e&&(this.nearRadius=e,t&&this.invalidate(!0))},this.getNearRadius=function(){return this.nearRadius},this.updateNearFarValues=function(e,t){if(t.isEmpty())p.logger.warn("Calculating near-far values based on empty worldBox (infinity) will result in incorrect values - Better to keep previous values instead.");else{if(et||($e=new D.Matrix4,Je=new D.Matrix4,et=new D.Box3),$e.compose(e.position,e.quaternion,e.scale),Je.copy($e).invert(),et.copy(t),fe){var i=new D.Vector3;i.multiplyVectors(et.max,e.worldup);var n=new D.Vector3;n.multiplyVectors(et.min,e.worldup),i.sub(n),i.x>=0?et.min.x-=i.x:et.max.x-=i.x,i.y>=0?et.min.y-=i.y:et.max.y-=i.y,i.z>=0?et.min.z-=i.z:et.max.z-=i.z}he&&he.groundShapeBox&&et.union(he.groundShapeBox),et.applyMatrix4(Je);var r=1e-5*(et.max.z-et.min.z),o=.5*(et.max.y-et.min.y),s=-(et.max.z+r)-o,a=-(et.min.z-r)+o;if(e.isPerspective){this.nearRadius>0?(s=Math.max(s,Math.min(this.nearRadius,1e-4*Math.abs(a-s))),a=Math.min(a,1e4*s)):(s=Math.max(s,Math.min(1,1e-4*Math.abs(a-s))),a<0&&(a=1e-4),s=Math.max(s,1e-5*a));const i=Math.sqrt(F.SceneMath.pointToBoxDistance2(e.position,t)),n=Math.max(1,i);s=Math.min(s,n)}a=Math.max(a,s),e.near=s,e.far=a,e.updateCameraMatrices()}},this.getPixelsPerUnit=function(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.model;var n=le.settings.deviceHeight,r=se.getCutPlanesRaw()[0],o=i?i.getBoundingBox():t;return F.SceneMath.getPixelsPerUnit(e,this.is2d,t,n,r,o)},this.updateCameraMatrices=function(){const e=this.camera;e.worldup&&this.setWorldUp(e.worldup);const t=this.getVisibleBounds(!0,xe);this.updateNearFarValues(e,t),this.maxModelDistance&&this._applyMaxModelDistanceToNearFar();const i=this.getPixelsPerUnit(e,t),n=le.settings.deviceWidth,r=le.settings.deviceHeight;this.is2d?(se.updatePixelScale(i,n,r,e),se.updateSwapBlackAndWhite(this.swapBlackAndWhite)):se.updatePixelScale(i,n,r,e),Xe&&ae.getMainPass().updatePixelScale(i,e);this.get2DModels().forEach((t=>{const i=t.getModelToViewerTransform(),o=i?i.getMaxScaleOnAxis():1;if(!this.is2d||1!==o){const i=t.getVisibleBounds(),s=F.SceneMath.getPixelsPerUnit(e,!0,i,r,null,i);se.updatePixelScaleForModel(t,s,n,r,o,e)}}))},this.initLights=function(){Ie||(this.dir_light1=new D.DirectionalLight(Re,1),this.dir_light1.position.copy(ve),this.amb_light=new D.AmbientLight(Oe),this.lights=[this.dir_light1,this.amb_light],this.camera.add(this.dir_light1),this.camera.add(this.dir_light1.target),Ie=!0)};function _t(){if((0,n.isMobileDevice)())return;var e=pe.getModels().length;let t=le.mrtFlags();e>1&&t.mrtIdBuffer<2&&(le.setIdTargetCount(2)&&se.toggleMRTSetting(le.mrtFlags()))}this.toggleLights=function(e,t){this.amb_light&&(this.lightsOn=e,function(e,t,i,n){var r,o,s=u.LightPresets[te],a=s&&s.ambientColor,l=s&&s.directLightColor;a=(null===(r=a)||void 0===r?void 0:r.slice(0))??Oe.toArray(),l=(null===(o=l)||void 0===o?void 0:o.slice(0))??Re.toArray(),i?(n&&e?e.color.setRGB(.5*l[0],.5*l[1],.5*l[2]):e&&e.color.setRGB(a[0],a[1],a[2]),t&&t.color.setRGB(l[0],l[1],l[2])):e&&n&&e.color.setRGB(a[0],a[1],a[2])}(this.amb_light,this.dir_light1,e,t))},this.syncCamera=function(e){this.camera.updateCameraMatrices(),e&&this.setWorldUp(this.api.navigation.getWorldUpVector()),ue=!0},this.getModelCamera=function(e){if(!e)return;let t;const i=e.getDefaultCamera();return t=i||L.UnifiedCamera.getViewParamsFromBox(e.getBoundingBox(),e.is2d(),this.camera.aspect,this.camera.up,this.camera.fov),t},this.setViewFromFile=function(e,t){if(e){var i=this.getModelCamera(e),n=e.getMetadata("navigation hint","value",null),r=this.controls.isToolActivated("freeorbit")||t&&"Freeorbit"===n;this.setViewFromCamera(i,t,r)}},this.adjustOrthoCamera=function(e){var t=this.getVisibleBounds();L.UnifiedCamera.adjustOrthoCamera(e,t)},this.setViewFromCamera=function(e,t,i){this.adjustOrthoCamera(e);var n,r=this.model?this.model.getUpVector():null;n=r?(new D.Vector3).fromArray(r):i?e.up.clone():R.Navigation.snapToAxis(e.up.clone());const o=e.target.clone().sub(e.position).normalize().distanceTo(n.clone().negate())<1e-6;i?this.api.prefs&&this.api.prefs.set("fusionOrbitConstrained",n.equals(e.up)):o||(e.up=n);var s=this.api.navigation;if(s){var a=this.camera;if(t)a.up.copy(e.up),a.position.copy(e.position),a.target.copy(e.target),e.isPerspective?a.fov=e.fov:(a.saveFov=e.fov,a.fov=L.UnifiedCamera.ORTHO_FOV),a.isPerspective=e.isPerspective,a.orthoScale=e.orthoScale,a.dirty=!0,s.setWorldUpVector(i||o?n:a.up),s.setView(a.position,a.target),s.setPivotPoint(a.target),this.syncCamera(!0);else if(a.isPerspective=e.isPerspective,e.isPerspective||(a.saveFov=e.fov,e.fov=L.UnifiedCamera.ORTHO_FOV),i)s.setRequestTransitionWithUp(!0,e.position,e.target,e.fov,e.up,n);else{var l=this.getVisibleBounds();if(!l.containsPoint(e.target)){var c=l.getCenter(new D.Vector3).distanceTo(e.position),h=e.target.clone().sub(e.position).normalize().multiplyScalar(c);e.target.copy(e.position.clone().add(h))}var u=s.computeOrthogonalUp(e.position,e.target);s.setRequestTransitionWithUp(!0,e.position,e.target,e.fov,u,n)}}ue=!0},this.getViewArrayFromCamera=function(e){var t,i=e||{x:0,y:0,z:0},n=this.camera,r=this.model.getUpVector();t=r?(new D.Vector3).fromArray(r):R.Navigation.snapToAxis(n.up.clone());var o=this.api.navigation.getPivotPoint();return[n.position.x+i.x,n.position.y+i.y,n.position.z+i.z,o.x+i.x,o.y+i.y,o.z+i.z,t.x,t.y,t.z,n.aspect,D.Math.degToRad(n.fov),n.orthoScale,n.isPerspective?0:1]},this.setViewFromViewBox=function(e,t,i,n){if(!e.is2d())return;var r={},o=e.getBoundingBox(),s={width:t[2]-t[0],height:t[3]-t[1]};s.aspect=s.width/s.height,s.centerX=t[0]+s.width/2,s.centerY=t[1]+s.height/2;var a=this.camera.aspect;a>s.aspect?r.orthoScale=s.height:r.orthoScale=s.width/a;const l=o.getCenter(new D.Vector3);r.isPerspective=!1,r.position=new D.Vector3(s.centerX,s.centerY,l.z+r.orthoScale),r.target=new D.Vector3(s.centerX,s.centerY,l.z),r.target.y+=1e-6*s.height,r.up=new D.Vector3(0,0,1),this.setViewFromCamera(r,n,!1)},this.setWorldUp=function(e){if(!U.equals(e)){U.copy(e);var t=Math.abs(e.x);oe="x",Math.abs(e.y)>t&&(oe="y",t=Math.abs(e.y)),Math.abs(e.z)>t&&(oe="z");var n,r,o,s,a=new D.Vector3(0,1,0);i.camera.worldUpTransform=(n=a,r=e,o=(new D.Vector3).crossVectors(r,n).normalize(),s=Math.acos(n.dot(r)),(new D.Matrix4).makeRotationAxis(o,s)),this.sceneUpdated(!1)}},this.setUp2DMode=function(e,t){const n=e.getData();null!=n&&n.layerCount&&se.initLayersTexture(n.layerCount,n.layersMap,e.id);const r=se.create2DMaterial(null,{},!0,!1,(function(){i.invalidate(!1,!0,!1)})),o=se.findMaterial(null,r);if(!t){this.is2d&&le.exit2DMode(),le.enter2DMode(o,se.get2dSelectionColor()),this.is2d||this.saveLightPreset(),this.is2d=!0,this.setLightPreset(u.DefaultLightPreset2d),this.setRenderingPrefsFor2D(!0);const t=e.getData();if(null!=t&&t.hidePaper){var s=t.bgColor,a=s>>16&255,l=s>>8&255,c=255&s;this.setClearColors(a,l,c,a,l,c)}}},this.addModel=function(e,t){if(e){var i=!!this.model,n=e.is2d();this.model||e.getData().underlayRaster||(this.model=e,le.setUnitScale(e.getUnitScale())),this.layers||(this.layers=new E.ModelLayers(this)),e.getData().underlayRaster||this.layers.addModel(e,!0),pe.addModel(e),this.selector.addModel(e),this.visibilityManager.addModel(e),Xe&&ae.addModel(e),this._setModelPreferences(e),n?this.setUp2DMode(e,i):this.is2d?(this.is2d=void 0,le.exit2DMode()):ne>=0&&(ie=ne),this.updateClearColors(),this.setupLighting(e),_t(),this.fireRenderOptionChanged(),this.invalidate(!0),this.api.fireEvent({type:I.MODEL_ADDED_EVENT,model:e,preserveTools:t,isOverlay:i})}},this._setModelPreferences=function(e){e.hideLines(!this.api.prefs.get("lineRendering")),e.hidePoints(!this.api.prefs.get("pointRendering")),e.selector.setSelectionMode(this.api.prefs.get(B.Prefs3D.SELECTION_MODE))},this.setupLighting=function(e){e=e||this.model,(0,n.isNodeJS)()||!e||e.is2d()||(this.setLightPresetFromFile(e)||(ie>=0?(this.setLightPreset(ie,!0,re),ie=-1,re=null):this.setLightPreset(te,!1)),Xe||this.setAOHeuristics(e))},this.getSvfMaterialId=function(e){return this.model.getFragmentList().getSvfMaterialId(e)},this.getMaterials=function(){return se},this.setupMesh=function(e,t,i,n){const r={geometry:t,matrix:n};return i&&(r.material=this.matman().setupMaterial(e,t,i)),r.isLine=t.isLines,r.isWideLine=t.isWideLines,r.isPoint=t.isPoints,r.is2d=t.is2d,e.is2d()&&(r.geometry.creationTime=Me,this.lastTime2dGeometryCreated=Me),r},this.selection2dOverlayName=function(e){return se._getMaterialHash(e,"selection2d")},this.init2dSelection=function(e){var t=this.selection2dOverlayName(e);if(this.overlayScenes[t])return;var n=se.initSelectionTexture(e.getData().maxObjectNumber,e.id);const r=e.getFragmentList(),o=e.getDoNotCut();let s;if(null!=r&&r.viewBounds){const e=r.viewBounds;s=new D.Vector4(e.min.x,e.min.y,e.max.x,e.max.y)}var a=se.create2DMaterial(e,{doNotCut:o,viewportBounds:s},!1,n,(function(){i.invalidate(!1,!0,!1)})),l=se.findMaterial(e,a);this.createOverlayScene(t,l)},this.onLoadComplete=function(e){De=!1,this.signalProgress(100,o.ProgressState.LOADING,e),this.modelVisible(e.id)&&((de&&de.enabled||fe)&&this.sceneUpdated(!1,!0),this.invalidate(!!fe,!0,!1)),e.is2d()&&this.init2dSelection(e);var t=e.getGeometryList();t&&t.printStats(),e.hasGeometry()?se.hasTransparentMaterial()&&this.requestSilentRender():p.logger.warn("Loaded model has no geometry."),this.api.dispatchEvent({type:I.GEOMETRY_LOADED_EVENT,model:e})},this.onTextureLoadComplete=function(e){this.api.dispatchEvent({type:I.TEXTURES_LOADED_EVENT,model:e}),this.requestSilentRender()},this.signalProgress=function(e,t,i){_e.percent===e&&_e.state===t&&i&&_e.model&&_e.model.id===i.id||(_e.percent=e,_e.state=t,i&&(_e.model=i),this.api.dispatchEvent(_e))},this.resize=function(e,t,i){G=!0,z=e,H=t,i&&Ke(!0)},this.unloadModel=function(e,t){if(this.api.dispatchEvent({type:I.BEFORE_MODEL_UNLOAD_EVENT,model:e}),this.removeModel(e)||pe.removeHiddenModel(e)){var i,n;if(!t)if(e.dtor(),se.cleanup(e),e.loader)null===(i=(n=e.loader).dtor)||void 0===i||i.call(n),e.loader=null;e.is2d()&&this.overlayScenes[e.id]&&this.removeOverlayScene(this.selection2dOverlayName(e)),_e.model===e&&(_e.model=null),this.api.dispatchEvent({type:I.MODEL_UNLOADED_EVENT,model:e})}},this._reserveLoadingFile=function(){this.loaders||(this.loaders=[]);var e={dtor:function(){}};return this.loaders.push(e),e},this._hasLoadingFile=function(){return this.loaders&&this.loaders.length>0},this._addLoadingFile=function(e,t){if(this.loaders){var i=this.loaders.indexOf(e);i>=0&&(this.loaders[i]=t)}},this._removeLoadingFile=function(e){if(this.loaders){var t=this.loaders.indexOf(e);t>=0&&this.loaders.splice(t,1)}},this.removeModel=function(e){return!!pe.removeModel(e)&&(this.keyFrameAnimator&&(this.keyFrameAnimator.destroy(),this.keyFrameAnimator=null),this.selector.removeModel(e),this.visibilityManager.removeModel(e),this.layers.removeModel(e),Xe&&ae.removeModel(e),e===this.model&&(this.model=null,pe.isEmpty()||(this.model=pe.getModels()[0])),_t(),this.invalidate(!0,!0,!0),this.api.fireEvent({type:I.MODEL_REMOVED_EVENT,model:e}),!0)},this.cancelLoad=function(e){if(this.loaders)for(var t=0;t=0;t--)this.unloadModel(e[t]);this.model=null};var Et=function(){var e,t,n;i.selectionMaterialBase=new D.MeshPhongMaterial({specular:526344,opacity:1,transparent:!1}),i.selectionMaterialTop=new D.MeshPhongMaterial({specular:526344,opacity:.15,transparent:!0}),i.selectionMaterialTop.packedNormals=!0,i.selectionMaterialBase.packedNormals=!0,e="selection",t=i.selectionMaterialBase,n=i.selectionMaterialTop,t.depthWrite=!1,t.depthTest=!0,t.side=D.DoubleSide,n.depthWrite=!1,n.depthTest=!0,n.side=D.DoubleSide,se.addInstancingSupport(t),se.addInstancingSupport(n),i.createOverlayScene(e,t,n),i.highlightMaterial=new D.MeshPhongMaterial({specular:526344,opacity:1,transparent:!1}),i.highlightMaterial.packedNormals=!0,i.highlightMaterial.disableTheming=!0,se.addInstancingSupport(i.highlightMaterial),se.addMaterial("__highlightMaterial__",i.highlightMaterial,!0)};this.createOverlayScene=function(e,t,i,n){let r=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=arguments.length>5&&void 0!==arguments[5]&&arguments[5],s=arguments.length>6&&void 0!==arguments[6]&&arguments[6];t&&se.addOverrideMaterial(e+"_pre",t),i&&se.addOverrideMaterial(e+"_post",i);var a=new D.Scene;return a.__lights=this.scene.__lights,this.overlayScenes[e]={scene:a,camera:n,materialName:e,materialPre:t,materialPost:i,needIdTarget:r,needSeparateDepth:o,hiddenFromMainRender:s}},this.removeOverlayScene=function(e){if(this.overlayScenes[e]){var t=this.overlayScenes[e];t.materialPre&&se.removeMaterial(t.materialName+"_pre"),t.materialPost&&se.removeMaterial(t.materialName+"_post"),delete this.overlayScenes[e],this.invalidate(!1,!1,!0)}},this.addOverlay=function(e,t){this.overlayScenes[e]&&t&&(this.overlayScenes[e].scene.add(t),this.invalidate(!1,!1,!0))},this.addMultipleOverlays=function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&this.addOverlay(e,t[i])},this.removeOverlay=function(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.overlayScenes[e]&&t&&(this.overlayScenes[e].scene.remove(t),i&&t.geometry&&t.geometry.dispose(),this.invalidate(!1,!1,!0))},this.removeMultipleOverlays=function(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&this.removeOverlay(e,t[n],i)},this.clearOverlay=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.overlayScenes[e]){var i,n,r=this.overlayScenes[e].scene;for(n=r.children.length-1;n>=0;--n)(i=r.children[n])&&(r.remove(i),t&&i.geometry&&i.geometry.dispose());this.invalidate(!1,!1,!0)}},this.setClearColors=function(e,t,i,r,o,s){this.clearColorTop=new D.Vector3(e/255,t/255,i/255),this.clearColorBottom=new D.Vector3(r/255,o/255,s/255),this.updateClearColors(),fe&&fe.setClearColors(this.clearColorTop,this.clearColorBottom,(0,n.isMobileDevice)()),ye=!0,this.fireRenderOptionChanged()},this.setClearAlpha=function(e){le.setClearAlpha(e)};var St=new D.Box3;function At(e,t,i){t.updateMatrixWorld(!0),t.traverse((function(t){var n=t.geometry;const r=t.model&&"number"==typeof t.fragId;if(!r||n.boundingBox)void 0!==n&&t.visible&&(n.boundingBox||n.computeBoundingBox(),St.copy(n.boundingBox),St.applyMatrix4(t.matrixWorld),i&&!i(St)||e.union(St));else{const n=r&&t.model.getFragmentList();n&&(n.getWorldBounds(t.fragId,St),i&&!i(St)||e.union(St))}}))}var wt,Tt=new D.Box3;this.getVisibleBounds=function(e,t,n,r){var o=new D.Box3;return pe.isEmpty()||(At(o,this.scene,n),o=pe.getVisibleBounds(e,n,r).union(o),t&&(o=function(e){Tt.makeEmpty();var t=i.overlayScenes;for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&At(Tt,t[n].scene,e);return At(Tt,i.scene,e),At(Tt,i.sceneAfter,e),Tt}(n).union(o))),o},this.getFitBounds=function(e){var t;return e||null===this.selector||(t=this.selector.getSelectionBounds()),t&&!t.isEmpty()||(t=this.getVisibleBounds()).isEmpty()&&this.model.is2d()&&(t=this.model.getBoundingBox()),t},this.getRenderProxy=function(e,t){var i;return null===(i=e.getFragmentList())||void 0===i?void 0:i.getVizmesh(t)},this.getLayersRoot=function(){return this.layers.getRoot()},this.getFragmentProxy=function(e,t){return new S.FragmentPointer(e.getFragmentList(),t)},this.getRenderProxyCount=function(e){return e.getFragmentList().getCount()},this.getRenderProxyDbIds=function(e,t){return e.getFragmentList().getDbIds(t)},this.isWholeModelVisible=function(){return!pe||pe.areAllVisible()},this.isNodeVisible=function(e,t){return this.visibilityManager.isNodeVisible(t,e)},this.highlightObjectNode=function(e,t,i,n){t=e.reverseMapDbIdFor2D(t),e.is2d()&&(se.highlightObject2D(t,i,e.id),this.invalidate(!1,!1,!0)),this.renderer().setDbIdForEdgeDetection(i&&!n?t:0,i?e.id:0);var r=this,o=e.getData().instanceTree;if(o&&!e.is2d())if(e.useIdBufferSelection){var s=e.getData().fragments.dbId2fragId[t];r.highlightFragment(e,s,i,n)}else o.enumNodeFragments(t,(function(t){r.highlightFragment(e,t,i,n)}),!1);else{let o=t;if(e.is2d()&&e.getData().fragments&&(o=e.getData().fragments.dbId2fragId[t]),Array.isArray(o))for(var a=0;a1&&void 0!==arguments[1]?arguments[1]:{};const i=Object.keys(t);for(let e of i)Object.prototype.hasOwnProperty.call(Te,e)||p.logger.warn(`Property "${e}" is not part of Explode options.`);const n=(()=>{for(let e of i)if(Object.prototype.hasOwnProperty.call(Te,e)&&t[e]!=Te[e])return!1;return!0})();return((e=Number(e))!=we||!n)&&(we=e,i.filter((e=>Object.prototype.hasOwnProperty.call(Te,e))).forEach((e=>Te[e]=t[e])),this.refreshExplode(),this.api.dispatchEvent({type:I.EXPLODE_CHANGE_EVENT,scale:e,options:t}),!0)},this.refreshExplode=function(){pe.explode(we,Te),this.sceneUpdated(!0)},this.getExplodeScale=function(){return we},this.getExplodeOptions=function(){return{...Te}},this.lockExplode=function(e,t,i){const n=(i=i||this.model).getData().instanceTree;if(!n)return!1;const r=function(e,i){return n.enumNodeChildren(i,(function(i){e=n.lockNodeExplode(i,t)||e}),!0),e};let o;return o=Array.isArray(e)?e.reduce(r,!1):r(!1,e),o&&we>0&&(pe.explode(we),this.sceneUpdated(!0)),o},this.isExplodeLocked=function(e,t){const i=(t=t||this.model).getData().instanceTree;return i&&i.isNodeExplodeLocked(e)},this.setGhostingBrightness=function(e){var t=new D.Color(e?1052688:16777215);function i(e){e.color=t}i(this.fadeMaterial),this.fadeMaterial.variants&&this.fadeMaterial.variants.forEach(i),Xe&&ae.getMainPass().setGhostingBrightness(e)},this.loadCubeMapFromColors=function(e,t){var i=(0,A.CreateCubeMapFromColors)(e,t);return i.isBgColor=!0,se.setReflectionMap(i),i},this.loadCubeMap=function(e,t){this._reflectionMapPath=e;return m.TextureLoader.loadCubeMap(e,t,(function(t){e===i._reflectionMapPath&&se&&(se.setReflectionMap(t),Xe&&ae.getIBL().setReflectionMap(t),i.invalidate(!0),t?u.LightPresets[te].useIrradianceAsBackground||le.setCubeMap(t):i.loadCubeMapFromColors(i.clearColorTop,i.clearColorBottom))}))},this.loadIrradianceMap=function(e,t){this._irradianceMapPath=e;return m.TextureLoader.loadCubeMap(e,t,(function(t){e===i._irradianceMapPath&&se&&(se.setIrradianceMap(t),Xe&&ae.getIBL().setIrradianceMap(t),i.invalidate(!0),u.LightPresets[te].useIrradianceAsBackground&&le.setCubeMap(t))}))},this.setCurrentLightPreset=function(e){te=e},this.setLightPreset=function(e,t,i){var r;if((0,n.isNodeJS)()&&(e=0),this.initLights(),te===e&&!t)return void(i&&i());if((e<0||u.LightPresets.length<=e)&&(e=u.DefaultLightPreset),te=e,pe.isEmpty())return ie=te,void(re=i);var o=u.LightPresets[e],s=o.bgColorGradient;if(s||(s=u.BackgroundPresets.Custom),this.setClearColors(s[0],s[1],s[2],s[3],s[4],s[5]),void 0!==o.useIrradianceAsBackground&&(this.api.prefs.hasTag("envMapBackground","ignore-producer")?p.logger.debug("setLightPreset(): envMapBackground is locked. No changes."):(this.api.prefs.tag("no-storage","envMapBackground"),this.api.setEnvMapBackground(o.useIrradianceAsBackground))),o.path){var a="res/environments/"+o.path,l=(0,w.getResourceUrl)(a+"_mipdrop."+(o.type||"")+".dds"),c=(0,w.getResourceUrl)(a+"_irr."+(o.type||"")+".dds");this.loadIrradianceMap(c,o.E_bias),this.loadCubeMap(l,o.E_bias),se.setEnvExposure(-o.E_bias),Xe&&ae.getIBL().setEnvExposure(-o.E_bias),le.setEnvExposure(-o.E_bias),this.setTonemapExposureBias(o.E_bias),this.setTonemapMethod(o.tonemap),this.setGhostingBrightness(o.darkerFade)}else{var h=this.loadCubeMapFromColors(this.clearColorTop,this.clearColorBottom);le.setCubeMap(h),se.setIrradianceMap(null),Xe&&ae.getIBL().setIrradianceMap(),se.setEnvExposure(-o.E_bias||0),Xe&&ae.getIBL().setEnvExposure(-o.E_bias),le.setEnvExposure(-o.E_bias||0),this.setTonemapExposureBias(o.E_bias||0),this.setTonemapMethod(o.tonemap||0),this.setGhostingBrightness(o.darkerFade),le.toggleEnvMapBackground(Le),this.invalidate(!0)}const d=null===(r=pe)||void 0===r?void 0:r.getModels().filter((e=>{var t;const i=null==e?void 0:e.getDocumentNode(),n=(null==i?void 0:i.getInputFileType())||(null==i||null===(t=i.getRootNode())||void 0===t||null===(t=t.data)||void 0===t?void 0:t.name)||"";return["dwfx","dwf"].includes(n.toLowerCase())}));d.length>0&&d.forEach((e=>{se.forEachInModel(e,!1,(e=>{e.emissiveOrig||(e.emissiveOrig=e.emissive),e.emissive=e.emissiveOrig.clone().multiplyScalar(Math.pow(2,-o.E_bias))}))}));var f=T.SAOShader.uniforms.radius.value,m=T.SAOShader.uniforms.intensity.value,g=void 0;Xe&&(f=8,m=1,g=.25),Object.prototype.hasOwnProperty.call(o,"saoRadius")&&(f=o.saoRadius),Object.prototype.hasOwnProperty.call(o,"saoIntensity")&&(m=o.saoIntensity),Xe?le.setAOOptions(f,m,g):le.setAOOptions(f,m);var v=1;null!==o.lightMultiplier&&void 0!==o.lightMultiplier&&(v=o.lightMultiplier),ge.copy(me),o.lightDirection&&ge.fromArray(o.lightDirection).negate(),he&&Ze(),this.dir_light1&&(this.dir_light1.intensity=v,o.lightDirection?this.dir_light1.position.set(-o.lightDirection[0],-o.lightDirection[1],-o.lightDirection[2]):this.dir_light1.position.copy(ve)),se.setEnvRotation(o.rotation||0),le.setEnvRotation(o.rotation||0),fe&&fe.setEnvRotation(o.rotation||0),this.toggleLights(0!==v),this.invalidate(!0,!1,!0),this.fireRenderOptionChanged(),i&&i()},this.setLightPresetFromFile=function(e){if(!e||e.is2d())return!1;let t;var i=e.getMetadata("renderEnvironmentGroundReflection","value",null);t=this.api.prefs.hasTag(B.Prefs3D.GROUND_REFLECTION,"ignore-producer"),null===i||t||(this.api.prefs.tag("no-storage",B.Prefs3D.GROUND_REFLECTION),this.api.setGroundReflection(i));var r=e.getMetadata("renderEnvironmentGroundShadow","value",null);t=this.api.prefs.hasTag(B.Prefs3D.GROUND_SHADOW,"ignore-producer"),null===r||t||(this.api.prefs.tag("no-storage",B.Prefs3D.GROUND_SHADOW),this.api.setGroundShadow(r));var o=e.getMetadata("renderEnvironmentAmbientShadows","value",null);t=this.api.prefs.hasTag(B.Prefs3D.AMBIENT_SHADOWS,"ignore-producer"),null===o||t||(this.api.prefs.tag("no-storage",B.Prefs3D.AMBIENT_SHADOWS),this.api.setQualityLevel(o,le.getAntialiasing()));var s=e.getMetadata("renderEnvironmentDisplayLines","value",null);t=this.api.prefs.hasTag(B.Prefs3D.LINE_RENDERING,"ignore-producer"),null===s||t||(this.api.prefs.tag("no-storage",B.Prefs3D.LINE_RENDERING),this.api.hideLines(!s));var a=e.getMetadata("renderEnvironmentDisplayPoints","value",null);t=this.api.prefs.hasTag(B.Prefs.POINT_RENDERING,"ignore-producer"),null===a||t||(this.api.prefs.tag("no-storage",B.Prefs.POINT_RENDERING),this.api.hidePoints(!a));var l=e.getMetadata("renderEnvironmentDisplayEdges","value",null);t=this.api.prefs.hasTag(B.Prefs3D.EDGE_RENDERING,"ignore-producer"),null===l||t||(this.api.prefs.tag("no-storage",B.Prefs3D.EDGE_RENDERING),this.api.setDisplayEdges(!(0,n.isMobileDevice)()&&!!l));var c=e.getMetadata("renderEnvironmentStyle","value",null),h=u.LightPresets.filter((function(e){return e.name===c}))[0];if(t=this.api.prefs.hasTag(B.Prefs3D.LIGHT_PRESET,"ignore-producer"),h&&!t){this.api.prefs.tag("no-storage",B.Prefs3D.LIGHT_PRESET);var d=Q;d||(d=Q={},u.LightPresets.push(d)),(0,u.copyLightPreset)(h,d),d.name="Custom Model defined";var f=e.getMetadata("renderEnvironmentExposureBias","value",null),p=e.getMetadata("renderEnvironmentExposureBase","value",null);null!==f&&null!==p&&(d.E_bias=f+p);var m=e.getMetadata("renderEnvironmentBackgroundColor","value",null);t=this.api.prefs.hasTag(B.Prefs.BACKGROUND_COLOR_PRESET,"ignore-producer"),m&&!t&&(d.bgColorGradient=[255*m[0],255*m[1],255*m[2],255*m[0],255*m[1],255*m[2]]);var g=e.getMetadata("renderEnvironmentRotation","value",null);null!==g&&(d.rotation=g);var v=u.LightPresets.indexOf(d);this.setLightPreset(v,!0)}var y=e.getMetadata("renderEnvironmentBackgroundFromEnvironment","value",null);return t=this.api.prefs.hasTag(B.Prefs3D.ENV_MAP_BACKGROUND,"ignore-producer"),null===y||t||(this.api.prefs.tag("no-storage",B.Prefs3D.ENV_MAP_BACKGROUND),this.api.setEnvMapBackground(y)),h},this.setLightPresetForAec=function(){for(var e=(0,n.getGlobal)().DefaultLightPresetAec||"Boardwalk",t=-1,i=0;i=0&&(this.api.prefs.hasTag("lightPreset","ignore-producer")?p.logger.debug("setLightPresetForAec(): lightPreset is locked. No changes."):(this.api.prefs.tag("no-storage","lightPreset"),this.setLightPreset(t,!0,function(){this.api.prefs.tag("ignore-producer","envMapBackground")}.bind(this)),this.saveLightPreset())),this.api.prefs.hasTag("edgeRendering","ignore-producer")?p.logger.debug("setLightPresetForAec(): edgeRendering is locked. No changes."):(this.api.prefs.tag("no-storage","edgeRendering"),this.api.setDisplayEdges(!(0,n.isMobileDevice)())),!0},this.setAOHeuristics=function(e){var t=e.getUnitScale(),i=e.getMetadata("renderEnvironmentAmbientShadows","radius",void 0),n=e.getMetadata("renderEnvironmentAmbientShadows","intensity",void 0),r=e.getMetadata("renderEnvironmentAmbientShadows","opacity",void 0);if(void 0!==i||void 0!==n||void 0!==r)le.setAOOptions(i/t,n,r);else if(e.isAEC()){t>.3?le.setAOOptions(4/t,1,.625):le.setAOOptions(.25/t,1,.625)}else{var o=e.getData().bbox.getSize(new D.Vector3).length();le.setAOOptions(Math.min(10,.05*o))}},this.setTonemapMethod=function(e){e!=le.getToneMapMethod()&&(le.setTonemapMethod(e),se.setTonemapMethod(e),Xe&&ae.getIBL().setTonemapMethod(e),this.fireRenderOptionChanged(),this.invalidate(!0))},this.setTonemapExposureBias=function(e){e!=le.getExposureBias()&&(le.setTonemapExposureBias(e),Xe&&ae.getIBL().setExposureBias(e),se.setTonemapExposureBias(e),this.fireRenderOptionChanged(),this.invalidate(!0))},this.setRenderingPrefsFor2D=function(e){if(!(0,n.isNodeJS)()){var t=!e&&!!this.api.prefs.get("envMapBackground");this.toggleEnvMapBackground(t)}},this.dtor=function(){var e;this.stop(),this.api.removeEventListener(I.MODEL_ROOT_LOADED_EVENT,Ve),this.api.removeEventListener(I.MODEL_ROOT_LOADED_EVENT,Ge),this.api.removeEventListener(I.LOADER_REPAINT_REQUEST_EVENT,ze),this.unloadCurrentModel(),this.controls=null,this.canvas=null,clearInterval(this.interval),this.loader=null,this.selector.dtor(),this.selector=null,this.model=null,this.layers=null,this.visibilityManager=null,Fe&&(Fe.removeViewer(this.api),Fe=null),pe=null,null===(e=le)||void 0===e||e.cleanup(),le=null,se.refCount--,0===se.refCount&&se.dtor(),se=null,ae&&(ae.refCount--,0===ae.refCount&&(ae.domElement=null,ae.context=null),ae.removeEventListener(W.Events.WEBGL_CONTEXT_LOST,this.onWebGLcontextLost),ae.removeEventListener(W.Events.WEBGL_CONTEXT_RESTORED,this.onWebGLcontextRestored),ae=null)},this.hideLines=function(e){pe&&!pe.isEmpty()&&(pe.hideLines(e),this.sceneUpdated(!0))},this.hidePoints=function(e){pe&&!pe.isEmpty()&&(pe.hidePoints(e),this.sceneUpdated(!0))},this.setDisplayEdges=function(e){le.toggleEdges(e);var t=e;e||(t=!(!this.model||!this.model.getData().hasLines)),se.togglePolygonOffset(t),le.setDepthMaterialOffset(se.getPolygonOffsetOn(),se.getPolygonOffsetFactor(),se.getPolygonOffsetUnits()),this.invalidate(!0)},this.setDoubleSided=function(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if((t=t||this.model).is2d())return;t.getData()&&(this.matman().setDoubleSided(e,t),i&&this.sceneUpdated())},this.getAllCutPlanes=function(){var e=void 0;for(var t in He){var i=He[t];i&&i.length&&(e=e?t===je?i.concat(e):e.concat(i):i)}return e},this.setCutplanesHideInterior=function(e){We=Boolean(e)},this.cutplanesHideInteriorEnabled=function(){return We},this.updateCutPlanes=function(){var e=this.getAllCutPlanes();this.setCutPlanes(e)},this.setCutPlaneSet=function(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(He[e]=t?t.slice():void 0,i)this.updateCutPlanes();else{var n=this.getAllCutPlanes();this.setCutPlanesInScene(n)}},this.setCutPlaneSetFor2DRendering=function(e){je=e,this.updateCutPlanes()},this.getCutPlaneSet=function(e){return He[e]||[]},this.getCutPlaneSets=function(){var e=[];for(var t in He){var i=He[t];i&&i.length&&e.push(t)}return e},this.getCutPlanes=function(){return se.getCutPlanes()},this.setCutPlanesInScene=function(e){le.toggleTwoSided(se.setCutPlanes(e,We?1:0)),Xe&&le.setCutPlanes(e),this.sceneUpdated()},this.setCutPlanes=function(e){this.setCutPlanesInScene(e),this.api.dispatchEvent({type:I.CUTPLANES_CHANGE_EVENT,planes:e})},this.fireRenderOptionChanged=function(){se.toggleMRTSetting(le.mrtFlags()),this.api.dispatchEvent({type:I.RENDER_OPTION_CHANGED_EVENT})},this.viewportToRay=function(e,t){return(arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.camera).viewportToRay(e,t)},this.rayIntersect=function(e,t,i,n,r){let o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(o.ignore2dModelsOn3d){const e=this.get3DModels().map((e=>e.id));n=n?n.filter((t=>e.includes(t))):e}var s=pe.rayIntersect(e.origin,e.direction,t,i,n,r,(e=>{const t=(new D.Vector3).copy(e);t.project(this.camera);const i=[];return le.idAtPixel(t.x,t.y,i),i}),o),a=[this.scene,this.sceneAfter];const l=new D.Vector3;for(let t=0;tt=>{if(!(t&&t.object&&t.object.isLine))return!0;const n=1/i.camera.pixelsPerUnitAtDistance(t.distance),r=e*n;return t.distanceToRay0?[o]:null,void 0,void 0,s)}return i},this.snappingHitTest=function(e,t,i){return this.snappingHitTestViewport(this.clientToViewport(e,t),i)},this.clearHighlight=function(){le.rolloverObjectId(-1),this.invalidate(!1,!1,!0)},this.rollOverIdChanged=function(){this.api.fireEvent({type:I.OBJECT_UNDER_MOUSE_CHANGED,dbId:le.getRollOverDbId(),modelId:le.getRollOverModelId()}),this.invalidate(!1,!1,!0)},this.rolloverObjectViewport=function(e){if(!this.model)return;if(this.is2d&&this.model&&(this.model.isLeaflet()||this.model.isPdf(!0)&&this.api.prefs.get(B.Prefs2D.DISABLE_PDF_HIGHLIGHT)))return;const t=[],i=le.idAtPixel(e.x,e.y,t);if(this.selector&&this.selector.isNodeSelectionLocked(i,this.model))return void this.clearHighlight();const n=t[1],r=this.findModel(n);null!=r&&r.isLeaflet()?le.rollOverModelId(n)&&this.rollOverIdChanged():le.rolloverObjectViewport(e.x,e.y)&&this.rollOverIdChanged()},this.rolloverObject=function(e,t){this.selector.highlightPaused||this.selector.highlightDisabled||this.rolloverObjectViewport(this.clientToViewport(e,t))},this.pauseHighlight=function(e){this.selector.highlightPaused=e,e&&this.clearHighlight()},this.disableHighlight=function(e){this.selector.highlightDisabled=e,e&&this.clearHighlight()},this.disableSelection=function(e){this.selector.selectionDisabled=e},this.cancelLeafletScreenshot=function(){i.api.dispatchEvent({type:I.CANCEL_LEAFLET_SCREENSHOT})},this.getScreenShotProgressive=function(e,t,i,n){return r.ScreenShot.getScreenShot(e,t,i,n,this)},this.modelQueue=function(){return pe},this._getRcs=function(){return Ne},this.glrenderer=function(){return ae},this.renderer=function(){return le},this.setGeomCache=function(e){(Fe=e).addViewer(i.api)},this.geomCache=function(){return!Fe&&(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&this.setGeomCache(new f.OtgResourceCache(i.api.config)),Fe},this.shadowMaps=function(){return he},this.worldUp=function(){return U},this.worldUpName=function(){return oe},this.setUserRenderContext=function(e,t){le=e||new a.RenderContext,t||(le.init(ae,this.canvas.clientWidth,this.canvas.clientHeight),le.setClearColors(this.clearColorTop,this.clearColorBottom)),this.invalidate(!0),this.sceneUpdated(!1)},this.setUserGroundShadow=function(e){var t=de;return de=e,t},this.invalidate=function(e,t,i){ye||(ye=e),be||(be=t),xe||(xe=i)},this.isOverlayDirty=function(){return xe},this.clearOverlayDirtyFlag=function(){xe=!1},this.sceneUpdated=function(e,t,i){this.invalidate(!t,!1,!t),pe&&e&&(pe.invalidateVisibleBounds(),this.zoomBoundsChanged=!0),Ee=!0,Ze(),i||this.api.fireEvent({type:I.SCENE_UPDATED_EVENT,objectsMoved:e})},this.requestSilentRender=function(){Se=Ae=!0},this.requestDeferredSilentRender=function(){Se=!0},this.currentLightPreset=function(){return te},this.saveLightPreset=function(){ie=te},this.matman=function(){return se},this.fps=function(){return 1e3/Ce},this.setFPSTargets=function(e,t,i){q=1e3/i,J=1,K=1e3/t,this._updateTargetFrameBudget()},this._updateTargetFrameBudget=function(){var e;Y.USE_HLOD?this.targetFrameBudget=((null===(e=Ne)||void 0===e?void 0:e.frameTimeScalingFactorAvg)??1)*K:Ne.beginFrameAvgK&&Ne.frameBudget>J&&(this.targetFrameBudget*=.75+.25*K/Ne.beginFrameAvg);this.targetFrameBudget=Math.min(Math.max(this.targetFrameBudget,J),q)},this.track=function(e){p.logger.track(e)},this.worldToClient=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.camera;var i=new D.Vector4(e.x,e.y,e.z,1);return i.applyMatrix4(t.matrixWorldInverse),i.applyMatrix4(t.projectionMatrix),i.w>0&&(i.x/=i.w,i.y/=i.w,i.z/=i.w),this.viewportToClient(i.x,i.y)},this.clientToWorld=function(e,t,i,n,r){var o=null;if(this.is2d){var s=this.model,a=null==s?void 0:s.getData(),l=this.intersectGround(e,t);l?(l.z=0,(n||a.hidePaper||a.bbox.containsPoint(l))&&(o={point:l,model:s})):n&&(o={point:this.camera.position.clone(),model:s})}else(o=this.hitTest(e,t,i,void 0,void 0,{ignore2dModelsOn3d:r}))&&(o.point=o.intersectPoint);return o},this.set2dSelectionColor=function(e,t){this.matman().set2dSelectionColor(e,t),this.invalidate(!1,!1,!0)},this.setSelectionColor=function(e,t){t=t||O.SelectionType.MIXED;var i=new D.Color(e);i.multiplyScalar(.5);var n=function(t){t.color.set(e),t.emissive.set(i),t.variants&&t.variants.forEach(n)};switch(t){default:case O.SelectionType.MIXED:n(this.selectionMaterialBase),n(this.selectionMaterialTop),le.setSelectionColor(e),n(this.highlightMaterial),this.invalidate(!0);break;case O.SelectionType.REGULAR:n(this.highlightMaterial),this.invalidate(!0);break;case O.SelectionType.OVERLAYED:n(this.selectionMaterialBase),n(this.selectionMaterialTop),le.setSelectionColor(e),this.invalidate(!1,!1,!0)}},this.updateViewportId=function(e){se.updateViewportId(e),this.invalidate(!0)},this.findModel=function(e,t){let i;if("number"==typeof e)i=t=>t.id==e;else if(e instanceof N.BubbleNode)i=t=>t.getDocumentNode()==e;else{if(!e)return null;i=e}let n=pe.getModels().find(i);return t&&!n&&(n=pe.getHiddenModels().find(i)),n},this.getFrameRate=function(){return this.frameDisplayRate},this.setFrameRate=function(e){this.frameDisplayRate=e<1?1:e},this.setShadowLightDirection=function(e){ge.copy(e),Ze(),this.invalidate(!0,!1,!1),Qe()},this.getShadowLightDirection=function(e){var t=e||new D.Vector3;return t.copy(ge),t},this.toggleShadows=function(e){!!he!=!!e&&(e?he=new y.ShadowMaps(ae):(he.cleanup(se),he=null),Qe(),this.invalidate(!0,!0,!1))},this.showTransparencyWhenMoving=function(e){pe.enableNonResumableFrames=e},this.fitToView=function(e,t){(t=!!t,0===e.length)&&(e=pe.getModels().map((function(e){return{model:e,selection:[]}})));if(0===e.length)return!1;for(var i=0,n=0;n1&&p.logger.warn("fitToView() doesn't support multiple 2D models. Using the first one...");var i=e[0].model,n=e[0].selection,r=new D.Box3,o=new P.BoundsCallback(r);if(n&&0!==n.length)this.computeSelectionBounds(n,i,o);else if(this.api.anyLayerHidden())for(var s=i.getData().fragments,a=this.getVisibleLayerIndices(),l=0;l0){t=!0;break}var n=new D.Box3,r=new D.Box3;if(t)for(var o=0;osetTimeout((()=>function(i){var n=e.getFragmentList();if(!n||n.areAllVisible())return;var r=[];if(!i)return;i.enumNodeChildren(e.getRootId(),(function(e){i.enumNodeFragments(e,(function(e){return n.isFragVisible(e)}),!0)||i.isNodeHidden(e)||i.isNodeOff(e)||r.push(e)}),!0),p.logger.info("Hiding "+r.length+" objects ...");let o=0;if(r.length>0){const i=r.length-1;for(let n=0;n0&&o%10==0&&p.logger.info(o+"%")}p.logger.info("Done hiding objects.")}(i)))))},this.changePaperVisibility=function(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1;if(e.is3d())return void(null==n||n());const o=e.getFragmentList();if(!o)return void(null==n||n());if(e.paperVisibilityAnim&&(e.paperVisibilityAnim.stop(),e.paperVisibilityAnim=null),!i||!r)return e.changePaperVisibility(t),this.invalidate(!0),void(null==n||n());const s=void 0!==o.dbIdOpacity[-1]?o.dbIdOpacity[-1]:t?0:1,a=t?1:0,l=r;e.paperVisibilityAnim=Autodesk.Viewing.Private.fadeValue(s,a,l,(e=>{e=Autodesk.Viewing.Private.smootherStep(e),o.setObject2DOpacity(-1,e),this.invalidate(!0)}),(()=>{e.paperVisibilityAnim=null,null==n||n()}))},this._signalNoMeshes=function(){pe.isEmpty()&&(this._geometryAvailable=0)},this._signalMeshAvailable=function(){0===this._geometryAvailable&&(this._geometryAvailable=1,this.api.fireEvent({type:I.RENDER_FIRST_PIXEL}))},this.hasModels=function(){return!pe.isEmpty()},this.onLoadingAnimationChanged=function(e){Xe||(ae.setLoadingAnimationDuration(e?this.defaultLoadingAnimationDuration:-1),this.invalidate(!1,!0,!1))},this.isLoadingAnimationEnabled=function(){return this.api.prefs.get(B.Prefs2D.LOADING_ANIMATION)&&(!this.model||this.model.is2d())},this.setMaxModelDistance=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e5;this.maxModelDistance=e},this._applyMaxModelDistanceToNearFar=function(){var e=this.camera;if(e.far<=e.near+this.maxModelDistance)return null;const t=e.near+this.maxModelDistance;const i=this.getVisibleBounds(!0,xe,(function(i){return F.SceneMath.pointToBoxDistance2(e.position,i){"use strict";i.r(t),i.d(t,{ViewerState:()=>s});var n=i(83081),r=i(97005),o=i(12153);function s(e){var t=!0;this.getVisibleModel=function(t){const i=e.getVisibleModels();for(let e=0;e1&&(i[r].seedUrn=s),o.is2d()?(i[r].isolated=this.getVisibleLayers2d(o),i[r].allLayers=this.areAllLayersVisible(o),i[r].hidden=[]):(i[r].isolated=e.getIsolatedNodes(o),i[r].hidden=e.getHiddenNodes(o),i[r].explodeScale=e.getExplodeScale(),i[r].explodeOptions=e.getExplodeOptions())}},this.getState=function(i){var n=e.navigation,r={};r.seedURN=this.getSeedUrn(),this.createObjectSets(r);var o=r.viewport;o||(o=r.viewport={});var s=n.getCamera().isPerspective;o.name="",o.eye=n.getPosition().toArray(),o.target=n.getTarget().toArray(),o.up=n.getCameraUpVector().toArray(),o.worldUpVector=n.getWorldUpVector().toArray(),o.pivotPoint=n.getPivotPoint().toArray(),o.distanceToOrbit=n.getPivotPlaneDistance(),o.aspectRatio=this.getAspectRatio(),o.projection=s?"perspective":"orthographic",o.isOrthographic=!s,r.autocam={sceneUpDirection:e.autocam.sceneUpDirection.clone(),sceneFrontDirection:e.autocam.sceneFrontDirection.clone(),cubeFront:e.autocam.cubeFront.clone()},s?o.fieldOfView=n.getVerticalFov():o.orthographicHeight=this.getOrthographicHeight();var a=r.renderOptions;if(a||(a=r.renderOptions={}),a.environment=this.getEnvironmentName(),a.ambientOcclusion={enabled:e.impl.renderer().getAOEnabled(),radius:e.impl.renderer().getAORadius(),intensity:e.impl.renderer().getAOIntensity()},a.toneMap={method:e.impl.renderer().getToneMapMethod(),exposure:e.impl.renderer().getExposureBias(),lightMultiplier:this.getToneMapIntensity()},a.appearance={ghostHidden:e.impl.showGhosting,ambientShadow:e.prefs.get("ambientShadows"),antiAliasing:e.impl.renderer().settings.antialias,progressiveDisplay:e.prefs.get("progressiveRendering"),swapBlackAndWhite:e.prefs.get("swapBlackAndWhite"),displayLines:e.prefs.get("lineRendering"),displayPoints:e.prefs.get("pointRendering")},!e.impl.is2d)for(var l=r.cutplanes=[],c=e.impl.getCutPlaneSet("__set_view"),h=0;h0){e.setLayerVisible(null,!1);for(var d=0;d0&&(p=this.toIntArray(p),r.push({model:s,ids:p}))}if("explodeScale"in l){var m=parseFloat(l.explodeScale),g=l.explodeOptions;e.explode&&e.explode(m,g)}}}}o.length>0&&e.impl.selector.setAggregateSelection(o),n.length>0&&e.impl.visibilityManager.aggregateIsolate(n,{hideLoadedModels:!1}),r.length>0&&e.impl.visibilityManager.aggregateHide(r)}},this.restoreState=function(i,r,o){if(!i)return n.logger.warn("restoreState has no viewer state to restore from."),!1;if(!e||!e.model)return n.logger.warn("restoreState has no viewer or model to restore."),!1;r&&r!==t&&(i=JSON.parse(JSON.stringify(i)),this.applyFilter(i,r));var s=e.navigation,a=!e.impl.is2d;this.restoreObjectSet(i);const l=i.autocam;if(l){const t=e.autocam;t.sceneUpDirection.copy(l.sceneUpDirection),t.sceneFrontDirection.copy(l.sceneFrontDirection),t.cubeFront.copy(l.cubeFront),t.camera.worldup.copy(l.sceneUpDirection),t.cameraChangedCallback(!0)}var c=i.viewport;if(c){var h=this.getVector3FromArray(c.eye,s.getPosition()),u=this.getVector3FromArray(c.up,s.getCameraUpVector()),d=this.getVector3FromArray(c.target,s.getTarget()),f="fieldOfView"in c?parseFloat(c.fieldOfView):s.getVerticalFov(),p=this.getVector3FromArray(c.worldUpVector,null);if(!p){const t=e.getFirstModel(),i=null==t?void 0:t.getUpVector();p=i?(new THREE.Vector3).fromArray(i):new THREE.Vector3(0,1,0)}var m=this.getVector3FromArray(c.pivotPoint,s.getPivotPoint()),g=s.getCamera().isPerspective;"isOrthographic"in c&&(g=!c.isOrthographic);var v=this.getOrthographicHeight();"orthographicHeight"in c&&(v=Number(c.orthographicHeight));var y={position:h,target:d,up:u,worldup:p,aspect:e.impl.camera.aspect,fov:f,orthoScale:v,isPerspective:g,pivot:m};this.restoreCameraState(y,o)}var b=i.renderOptions;if(b){var x=e.impl.renderer(),_=e.prefs,E=_.get("ambientShadows"),S=_.get("antialiasing"),A=b.ambientOcclusion;if(A){"enabled"in A&&(E=A.enabled);var w="radius"in A?A.radius:null,T="intensity"in A?A.intensity:null;null!==w&&null!==T&&(w===x.getAORadius()&&T===x.getAOIntensity()||(x.setAOOptions(w,T),x.composeFinalFrame()))}if("environment"in b){var M=this.getLightPresetIndex(b.environment);-1!==M&&M!==_.get("lightPreset")&&a&&e.setLightPreset(M)}var C=b.toneMap;if(C){var P=!1,D="exposure"in C?C.exposure:null,L="lightMultiplier"in C?C.lightMultiplier:null;null!==D&&D!==x.getExposureBias()&&(x.setTonemapExposureBias(D),P=!0),null!==L&&e.impl.dir_light1&&L!==this.getToneMapIntensity()&&(e.impl.dir_light1.intensity=Math.pow(2,L),P=!0),P&&e.impl.invalidate(!0)}var I=b.appearance;I&&("antiAliasing"in I&&(S=I.antiAliasing),"progressiveDisplay"in I&&I.progressiveDisplay!==_.get("progressiveRendering")&&e.setProgressiveRendering(I.progressiveDisplay),"swapBlackAndWhite"in I&&I.swapBlackAndWhite!==_.get("swapBlackAndWhite")&&e.setSwapBlackAndWhite(I.swapBlackAndWhite),"ghostHidden"in I&&I.ghostHidden!==_.get("ghosting")&&a&&e.setGhosting(I.ghostHidden),"displayLines"in I&&I.displayLines!==_.get("lineRendering")&&e.hideLines(!I.displayLines),"displayPoints"in I&&I.displayPoints!==_.get("pointRendering")&&e.hidePoints(!I.displayPoints)),a&&E!==_.get("ambientShadows")&&S!==_.get("antialiasing")&&e.setQualityLevel(E,S)}if(Array.isArray(i.cutplanes)&&a){for(var R=[],O=0;O=4&&R.push(new THREE.Vector4(N[0],N[1],N[2],N[3]))}!function(t,i){if(e.getExtension("Autodesk.AEC.LevelsExtension")&&void 0===t.floorGuid){const e=i.length;if(3===e||8===e){const t=i[e-2],n=i[e-1];0===t.x&&0===t.y&&-1===t.z&&0===n.x&&0===n.y&&1===n.z&&i.splice(-2,2)}}}(i,R),e.impl.setCutPlaneSet("__set_view",R)}for(var F in e.loadedExtensions){var U=e.loadedExtensions[F];U.restoreState&&U.restoreState(i,o)}return!0},this.getEnvironmentName=function(){var t=r.LightPresets[e.impl.currentLightPreset()];return t?t.name:"none"},this.restoreCameraState=function(t,i){e.impl.adjustOrthoCamera(t);var n=e.navigation;i?(t.isPerspective?n.toPerspective():n.toOrthographic(),n.setCameraUpVector(t.up),n.setWorldUpVector(t.worldup),n.setView(t.position,t.target),n.setPivotPoint(t.pivot),n.setVerticalFov(t.fov,!1),e.impl.syncCamera(!0)):(e.impl.camera.isPerspective=t.isPerspective,n.setRequestTransitionWithUp(!0,t.position,t.target,t.fov,t.up,t.worldup,t.pivot))},this.areEqual=function(e,t,i){var n,r,o,s;function a(e,t){if(t=t||[],(e=e||[]).length!==t.length)return!1;for(var i=0;i2?(e[0]=parseFloat(e[0]),e[1]=parseFloat(e[1]),e[2]=parseFloat(e[2]),(new THREE.Vector3).fromArray(e)):t},this.getSelectedNodes=function(t){return(t=t||e.model).selector?t.selector.getSelection():[]},this.getVisibleLayers2d=function(t){return t&&t!==e.model?(n.logger.warn("[getVisibleLayers2d] multiple models not yet supported."),[]):e.impl.getVisibleLayerIndices()},this.areAllLayersVisible=function(t){return t&&t!==e.model?(n.logger.warn("[areAllLayersVisible] multiple models not yet supported."),!0):e.impl.layers.allLayersVisible()},this.getAspectRatio=function(){var t=e.navigation.getScreenViewport();return t.width/t.height},this.getOrthographicHeight=function(){var t=e.navigation.getCamera();return t.isPerspective?0:Math.abs(2*t.orthographicCamera.top)},this.getSeedUrn=function(t){var i;return(null===(i=t=t||e.model)||void 0===i?void 0:i.getSeedUrn())||""},this.getToneMapIntensity=function(){var t=0;return e.impl.dir_light1&&(t=0!=e.impl.dir_light1.intensity?Math.log(e.impl.dir_light1.intensity)/Math.log(2):-1e-20),t},this.getLightPresetIndex=function(e){for(var t=0;t{"use strict";i.r(t),i.d(t,{BubbleNode:()=>r});let n=1;class r{static MODEL_NODE={role:"3d",type:"geometry"};static GEOMETRY_SVF_NODE={role:"graphics",mime:"application/autodesk-svf"};static SHEET_NODE={role:"2d",type:"geometry"};static LEAFLET_NODE={role:"leaflet"};static PDF_PAGE_NODE={role:"pdf-page"};static IMAGE_NODE={role:"image"};static GEOMETRY_F2D_NODE={role:"graphics",mime:"application/autodesk-f2d"};static VIEWABLE_NODE={role:"viewable"};static AEC_MODEL_DATA={role:"Autodesk.AEC.ModelData"};static MASTER_VIEW_NODE={name:"08f99ae5-b8be-4f8d-881b-128675723c10"};parent=void 0;id=void 0;data=void 0;isLeaf=!1;children=[];sharedPropertyDbPath=void 0;lodNode=void 0;lmvDocument=void 0;constructor(e,t){this.parent=t,this.id=n++,this.data=e,this.isLeaf="geometry"===e.type&&("3d"===e.role||"2d"===e.role||"lod"===e.role),this.children=new Array;this.#f().forEach((e=>{const t=new r(e,this);this.children.push(t);const i="application/autodesk-db"==(n=e).mime&&n.urn?0===n.urn.indexOf("urn:adsk.objects:os.object")?n.urn.substr(0,n.urn.lastIndexOf("%2F")+3):n.urn.substr(0,n.urn.lastIndexOf("/")+1):null;var n;i&&(this.sharedPropertyDbPath=i),"lod"===e.role&&(this.lodNode=t)})),this.children.length>1&&this.children.sort(((e,t)=>Object.prototype.hasOwnProperty.call(e.data,"order")&&Object.prototype.hasOwnProperty.call(t.data,"order")?e.data.order-t.data.order:0))}#f(){return this.is3DTilesFormat()?[]:Array.isArray(this.data.children)?this.data.children:Array.isArray(this.data.derivatives)?this.data.derivatives:new Array}setDocument(e){this.lmvDocument=e}getDocument(){let e=this;for(;e.parent;)e=e.parent;return e.lmvDocument}isOtg(){return!!this._getOtgManifest()}_getOtgManifest(){if("undefined"!=typeof DISABLE_OTG&&DISABLE_OTG)return null;const e=this.findViewableParent();if(!e)return null;return e.data.otg_manifest}isSVF2(){var e,t=this._getOtgManifest();return Boolean("cacheable"===(null==t||null===(e=t.paths)||void 0===e?void 0:e.pharos_type))}getOtgGraphicsNode(){if(this.isViewPreset())return this.findParentGeom2Dor3D().getOtgGraphicsNode();const e=this._getOtgManifest();return e&&e.views&&e.views[this.guid()]}getPropertyDbManifest(){var e,t=this._getOtgManifest();if(t&&t.pdb_manifest){var i=t.pdb_manifest;e={propertydb:{},isOtg:!0};for(var n=0;n=0;e--){var n;try{i=Autodesk.Viewing.fromUrlSafeBase64(t[e])}catch(e){}if(-1!=(null===(n=i)||void 0===n?void 0:n.indexOf("file:")))break;i=null}return r.parseLineageUrnFromDecodedUrn(i)}static parseLineageUrnFromDecodedUrn(e){if(!e)return null;const t=(e=e.replace("fs.file:vf.","dm.lineage:")).indexOf("?version");return-1===t?e:e.substring(0,t)}isGeomLeaf(){return this.isLeaf}isViewable(){if("viewable"===this.data.role)return!0;return!("svf"!==this.data.outputType)}getLodNode(){return this.lodNode}isGeometry(){return"geometry"===this.data.type}isViewPreset(){return"view"===this.data.type}is2D(){return"2d"===this.data.role}is3D(){return"3d"===this.data.role}is2DGeom(){return this.isGeometry()&&this.is2D()}is3DGeom(){return this.isGeometry()&&this.is3D()}useAsDefault(){return!0===this.data.useAsDefault}getDefaultGeometry(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.is3DTilesFormat())return this;let i=[];if(e){const e=this.search(r.MASTER_VIEW_NODE);e.length&&(i=e[0].search({type:"geometry"}))}0==i.length&&(i=this.search({type:"geometry"})),t&&i.sort((function(e,t){return t.data.size-e.data.size}));for(let e=0;e{if(e.isGeometry()&&(e.is2D()||e.is3D()))return r=e,!0})),r&&t.push(r)}return t}findAllViewables(){if(this.is3DTilesFormat())return this.data.root.children;let e=[];this.isForgeManifest()&&(e=this.search({outputType:"svf"}));const t=this.search({role:"viewable"});return e.concat(t)}getViewableRootPath(e){var t=this.getOtgGraphicsNode();if(t&&t.urn&&!t.error)return this._getOtgManifest().paths.version_root+t.urn;if(!this.isGeomLeaf())return this.urn();if(this.is2D()){if(!e){var i=this.search({role:"leaflet"});if(i&&i.length)return i[0].urn()}const t=this.search(r.PDF_PAGE_NODE);if(null!=t&&t.length)return t[0].urn()}var n=this.is2D()?"application/autodesk-f2d":"application/autodesk-svf",o=this.search({mime:n});return o&&o.length?o[0].urn():null}getNamedViews(){var e=this.search({type:"view"});return e=e.filter((function(e){return!!e.data.name&&!!Array.isArray(e.data.camera)}))}findByGuid(e){var t=null;return this.traverse((function(i){if(i.data.guid===e)return t=i,!0})),t}search(e){const t=[];return this.traverse((function(i){let n=!0;for(let t in e)if(!Object.prototype.hasOwnProperty.call(i.data,t)||i.data[t]!==e[t]){n=!1;break}n&&t.push(i)})),t}traverse(e){if(e(this))return!0;if(this.children)for(let t=0;t0&&e[0].children||[]}getMasterView(e){return this.getMasterViews().find((t=>t.data.phaseNames===e))}get3DModelNodes(){return this.search(r.MODEL_NODE)}getSheetNodes(){return this.search(r.SHEET_NODE)}}},55280:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ObjectAssign:()=>L,disableDocumentTouchSafari:()=>R,enableDocumentTouchSafari:()=>O,exitFullscreen:()=>d,fullscreenElement:()=>p,getAndroidVersion:()=>y,getGlobal:()=>r.getGlobal,getIOSVersion:()=>v,inFullscreen:()=>f,isAndroidDevice:()=>S,isBrowser:()=>a,isChrome:()=>C,isFirefox:()=>M,isFullscreenAvailable:()=>m,isFullscreenEnabled:()=>g,isIE11:()=>c,isIE11Only:()=>h,isIOSDevice:()=>_,isMac:()=>P,isMobileDevice:()=>A,isNodeJS:()=>l,isPhoneFormFactor:()=>w,isSafari:()=>T,isTouchDevice:()=>b,isWindows:()=>D,launchFullscreen:()=>u,touchStartToClick:()=>N});var n,r=i(38685);const o=(0,r.getGlobal)(),s=o&&o.document,a="undefined"!=typeof navigator,l=function(){return!a};let c=a&&!!navigator.userAgent.match(/Edge|Trident\/7\./),h=a&&!!navigator.userAgent.match(/Trident\/7\./);function u(e,t){e.requestFullscreen?e.requestFullscreen(t):e.mozRequestFullScreen?e.mozRequestFullScreen(t):e.webkitRequestFullscreen?e.webkitRequestFullscreen(t):e.msRequestFullscreen&&e.msRequestFullscreen(t)}function d(e){f(e)&&(e.exitFullscreen?e.exitFullscreen():e.mozCancelFullScreen?e.mozCancelFullScreen():e.webkitExitFullscreen?e.webkitExitFullscreen():e.msExitFullscreen&&e.msExitFullscreen())}function f(e){return"webkitIsFullScreen"in e?!!e.webkitIsFullScreen:"fullscreenElement"in e?!!e.fullscreenElement:"mozFullScreenElement"in e?!!e.mozFullScreenElement:"msFullscreenElement"in e?!!e.msFullscreenElement:!!e.querySelector(".viewer-fill-browser")}function p(e){return e.fullscreenElement||e.mozFullScreenElement||e.webkitFullscreenElement||e.msFullscreenElement}function m(e){return e.requestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen||e.msRequestFullscreen}function g(e){return e.fullscreenEnabled||e.webkitFullscreenEnabled||e.mozFullScreenEnabled||e.msFullscreenEnabled}function v(e){var t=(e=e||navigator.userAgent).match(/OS ((\d+)_(\d+)(_(\d+))?) like Mac OS X/);return!t&&_()&&(t=e.match(/\/((\d+)\.(\d+)(\.\d)?) Safari\//)),t?t[1].replace("_","."):""}function y(e){var t=(e=e||navigator.userAgent).match(/Android\s([0-9\.]*)/);return!!t&&t[1]}function b(){return"undefined"!=typeof window&&("ontouchstart"in window||navigator.maxTouchPoints>0)}const x=a&&(/ip(ad|hone|od)/.test(navigator.userAgent.toLowerCase())||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1||/^ip(ad|hone|od)$/.test(null===(n=navigator.platform)||void 0===n?void 0:n.toLowerCase()));function _(){return x}const E=a&&-1!==navigator.userAgent.toLowerCase().indexOf("android");function S(){return E}function A(){return!!a&&(_()||S())}function w(){return A()&&(o.matchMedia("(max-width: 750px)").matches||o.matchMedia("(max-height: 750px)").matches)}function T(){if(!a)return!1;var e=navigator.userAgent.toLowerCase();return-1!==e.indexOf("safari")&&-1===e.indexOf("chrome")}function M(){return!!a&&-1!==navigator.userAgent.toLowerCase().indexOf("firefox")}function C(){return!!a&&-1!==navigator.userAgent.toLowerCase().indexOf("chrome")}function P(){return!!a&&(-1!==navigator.userAgent.toLowerCase().indexOf("mac os")&&!_())}function D(){if(!a)return!1;var e=navigator.userAgent.toLowerCase();return-1!==e.indexOf("win32")||-1!==e.indexOf("windows")}function L(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i]);return e}function I(e){var t=o.hasOwnProperty("pageXOffset")?o.pageXOffset:s.documentElement.scrollLeft,i=o.hasOwnProperty("pageYOffset")?o.pageYOffset:s.documentElement.scrollTop,n=void 0===e.pageX?e.changedTouches[0].pageX:e.pageX,r=void 0===e.pageY?e.changedTouches[0].pageY:e.pageY,a=s.elementFromPoint(n-t,r-i);return!a||"CANVAS"!==a.nodeName||("true"!==a.getAttribute("data-viewer-canvas")||(e.preventDefault(),!1))}function R(){A()&&T()&&(s.documentElement.addEventListener("touchstart",I,!0),s.documentElement.addEventListener("touchmove",I,!0),s.documentElement.addEventListener("touchcanceled",I,!0),s.documentElement.addEventListener("touchend",I,!0))}function O(){A()&&T()&&(s.documentElement.removeEventListener("touchstart",I,!0),s.documentElement.removeEventListener("touchmove",I,!0),s.documentElement.removeEventListener("touchcanceled",I,!0),s.documentElement.removeEventListener("touchend",I,!0))}function N(e){e.target.className&&(e.target.className.indexOf("fullscreen")>-1||e.target.className.indexOf("webvr")>-1)||(e.preventDefault(),e.stopPropagation(),e.target.click())}},11653:(e,t,i)=>{"use strict";i.r(t),i.d(t,{EnvironmentConfigurations:()=>j,Initializer:()=>ie,getUpstreamApiData:()=>q,getWebGLHelpLink:()=>v,initializeAuth:()=>J,initializeEnvironmentVariable:()=>X,initializeLogger:()=>ee,initializeResourceRoot:()=>Y,initializeServiceEndPoints:()=>K,refreshCookie:()=>Q,refreshRequestHeader:()=>Z,refreshToken:()=>$,shutdown:()=>ne,token:()=>m});var n=i(8600),r=i(83081),o=i(8412),s=i(55280),a=i(7756),l=i(84045),c=i(16271),h=i(85403),u=i(19948),d=(0,s.getGlobal)();const f=d;var p={accessToken:null,getAccessToken:null,tokenRefreshInterval:null};let m=p,g=null;function v(){return g}var y={local:{RTC:["https://rtc-dev.api.autodesk.com:443","https://lmv.autodesk.com:443"]},dev:{RTC:["https://rtc-dev.api.autodesk.com:443","https://lmv.autodesk.com:443"]},stg:{RTC:["https://rtc-stg.api.autodesk.com:443","https://lmv.autodesk.com:443"]},prod:{RTC:["https://rtc.api.autodesk.com:443","https://lmv.autodesk.com:443"]}},b="",x="";if((0,s.getGlobal)().location){var _=(0,s.getGlobal)().location;x=_.protocol+"//"+_.hostname,b=_.protocol+"//"+_.host}var E={local:"",dev:"https://developer-dev.api.autodesk.com",stg:"https://developer-stg.api.autodesk.com",prod:"https://developer.api.autodesk.com"},S="https://us.otgs-dev.autodesk.com",A="https://us.otgs-stg.autodesk.com",w="https://us.otgs.autodesk.com",T="https://eu.otgs-stg.autodesk.com",M="https://eu.otgs.autodesk.com",C="https://cdn-dev.derivative.autodesk.com",P="https://cdn-dev.derivative.autodesk.com/regions/eu",D="https://cdn-stg.derivative.autodesk.com",L="https://cdn-stg.derivative.autodesk.com/regions/eu",I="https://cdn.derivative.autodesk.com",R="https://cdn.derivative.autodesk.com/regions/eu",O="https://cdn-dev.derivative.autodesk.com",N="https://cdn-stg.derivative.autodesk.com",F="https://cdn.derivative.autodesk.com",U="https://cdn-stg-fips.derivative.autodesk.com",B="https://cdn-fips.derivative.autodesk.com",k="https://api-stg.afg.us.autodesk.com",V="https://api.afg.us.autodesk.com",G="derivativeV2",z="derivativeV2_EU",H="derivativeV2_APAC",W="derivativeV2_Fedramp";let j=Object.freeze({Local:{ROOT:"",LMV:y.local},Development:{ROOT:O,LMV:y.dev,bubbleManifest:!0},Staging:{ROOT:N,LMV:y.stg,bubbleManifest:!0},Production:{ROOT:F,LMV:y.prod,bubbleManifest:!0},AutodeskDevelopment:{ROOT:O,LMV:y.dev},AutodeskStaging:{ROOT:N,LMV:y.stg},AutodeskProduction:{ROOT:F,LMV:y.prod},AutodeskDevelopment2:{ROOT:O,LMV:y.dev,UPSTREAM:E.dev,UPSTREAM_API_DATA:G},AutodeskStaging2:{ROOT:N,LMV:y.stg,UPSTREAM:E.stg,UPSTREAM_API_DATA:G},AutodeskProduction2:{ROOT:F,LMV:y.prod,UPSTREAM:E.prod,UPSTREAM_API_DATA:G},FluentLocal:{ROOT:b,LMV:b},FluentDev:{ROOT:S,LMV:y.dev,UPSTREAM:E.stg,UPSTREAM_API_DATA:G},FluentStaging:{ROOT:A,LMV:y.stg,UPSTREAM:E.stg,UPSTREAM_API_DATA:G},FluentProduction:{ROOT:w,LMV:y.prod,UPSTREAM:E.prod,UPSTREAM_API_DATA:G},FluentStagingEU:{ROOT:T,LMV:y.stg,UPSTREAM:E.stg,UPSTREAM_API_DATA:z},FluentProductionEU:{ROOT:M,LMV:y.prod,UPSTREAM:E.prod,UPSTREAM_API_DATA:z},MD20DevUS:{ROOT:C,LMV:y.dev,UPSTREAM:E.dev,UPSTREAM_API_DATA:G},MD20DevEU:{ROOT:P,LMV:y.dev,UPSTREAM:E.dev,UPSTREAM_API_DATA:z},MD20StgUS:{ROOT:D,LMV:y.stg,UPSTREAM:E.stg,UPSTREAM_API_DATA:G},MD20StgEU:{ROOT:L,LMV:y.stg,UPSTREAM:E.stg,UPSTREAM_API_DATA:z},MD20ProdUS:{ROOT:I,LMV:y.prod,UPSTREAM:E.prod,UPSTREAM_API_DATA:G},MD20ProdEU:{ROOT:R,LMV:y.prod,UPSTREAM:E.prod,UPSTREAM_API_DATA:z},D3SLocalUS:{ROOT:b,LMV:b,UPSTREAM:b,UPSTREAM_API_DATA:G},D3SLocalEU:{ROOT:b,LMV:b,UPSTREAM:b,UPSTREAM_API_DATA:z},D3SLocalAPAC:{ROOT:b,LMV:b,UPSTREAM:b,UPSTREAM_API_DATA:H},Test:{ROOT:`${x}:3000`,LMV:y.dev},FedrampStaging2:{ROOT:U,LMV:y.stg,UPSTREAM:k,UPSTREAM_API_DATA:W},FedrampProduction2:{ROOT:B,LMV:y.prod,UPSTREAM:V,UPSTREAM_API_DATA:W}});function q(e,t){return e.endsWith("EU")?j[e].UPSTREAM_API_DATA:t.endsWith("_EU")?j[e].UPSTREAM_API_DATA+"_EU":t.endsWith("_APAC")?j[e].UPSTREAM_API_DATA+"_APAC":j[e].UPSTREAM_API_DATA}function X(e){var t;if(e&&e.env&&(t=e.env),t||(t=(0,n.getParameterByName)("env")),(0,o.setOfflineResourcePrefix)(e&&e.offlineResourcePrefix||""),(0,o.setOffline)(e&&"true"===e.offline),!t)switch(f.location.hostname){case"developer-dev.api.autodesk.com":t="AutodeskDevelopment";break;case"developer-stg.api.autodesk.com":t="AutodeskStaging";break;case"developer.api.autodesk.com":default:t="AutodeskProduction";break;case"localhost.autodesk.com":case"":case"127.0.0.1":t="Local"}(0,o.setEnv)(t),"undefined"!=typeof window&&r.logger.info("Host name : "+window.location.hostname),r.logger.info("Environment initialized as : "+t)}function Y(e){if(e.lmvResourceRoot)d.LMV_RESOURCE_ROOT=e.lmvResourceRoot;else{var t,i,r=["viewer3D.js","viewer3D.min.js","viewerCE.js","viewerCE.min.js"];e&&Object.prototype.hasOwnProperty.call(e,"libraryName")&&r.push(e.libraryName);var o=!1;for(let e=0;e=0){t=i.substr(0,a),(i.indexOf("&v=",a)>0||i.indexOf("?v=",a)>0)&&(o=!0);break}}if(d.LMV_RESOURCE_ROOT=t||d.LMV_RESOURCE_ROOT,o){var l=!1,c=["dev","stg","prod"];for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:3599;if(i=r,p.tokenRefreshInterval?$(i):$(i,e,e),"number"!=typeof o){const e=new Date(o);o=Boolean(+e)&&e.toISOString()===o?(e-Date.now())/1e3:3599}var s=o-((null==t?void 0:t.tokenExpirationBuffer)||5);s<=0&&(s=o),p.tokenRefreshInterval=setTimeout((function(){t.getAccessToken(n)}),1e3*s)})),"string"==typeof i&&i&&$(i,e)):t&&t.accessToken?$(i=t.accessToken,e):((i=(0,n.getParameterByName)("accessToken"))||r.logger.error("No access token is provided, but authorization requested. This is a problem."),$(i,e))}function ee(e){r.logger.initialize(e);var t=(0,n.getParameterByName)("logLevel");t&&r.logger.setLevel(parseInt(t))}function te(e){e&&"Local"===e.env||o.endpoint.getCdnRedirectUrl()&&l.ViewingService.rawGet(o.endpoint.getCdnRedirectUrl(),null,null,(function(e){e&&e.length&&(o.endpoint.setCdnUrl(e),r.logger.info("CDN_ROOT is: "+e))}),(function(){}),{withCredentials:!1,responseType:"text"})}function ie(e,t){if((0,s.isNodeJS)())return X(e),K(e),ee(e),te(e),void J(t,e);e.webGLHelpLink&&(g=e.webGLHelpLink),X(e);var i=K(e);ee(e),te(e);const n=(0,c.initializeLocalization)(e);(0,s.disableDocumentTouchSafari)(),function(e){const t=!(-1!==["Production","fluent"].indexOf("Production"));(e.optOutTrackingByDefault||t)&&(h.analytics.shouldTrack=!1);const i=e.productId?e.productId:"Local"===(0,o.getEnv)()?"Local":"NOT_SET";h.analytics.superProps={productId:i,lmvBuildType:d.LMV_BUILD_TYPE,lmvViewerVersion:d.LMV_VIEWER_VERSION}}(e),(0,a.initWorkerScript)();const r=u.FeatureFlags._initialize();var l=function(e){return new Promise((t=>{J(t,e)}))}(e);return Promise.all([i,l,r,n]).then(t)}function ne(){r.logger.shutdown(),Autodesk.Viewing.Private.shutdownPropWorker()}},83293:(e,t,i)=>{"use strict";i.d(t,{z:()=>u});var n=i(42759),r=new ArrayBuffer(8),o=new Uint8Array(r),s=new Uint16Array(r),a=new Int32Array(r),l=new Uint32Array(r),c=new Float32Array(r),h=new Float64Array(r);function u(e){this.buffer=e,this.offset=0,this.byteLength=e.length}u.prototype.seek=function(e){this.offset=e},u.prototype.getBytes=function(e){var t=new Uint8Array(this.buffer.buffer,this.offset,e);return this.offset+=e,t},u.prototype.getVarints=function(){var e,t=0,i=0;do{t|=(127&(e=this.buffer[this.offset++]))<32767&&(e|=4294901760),e},u.prototype.getInt32=function(){var e=this.buffer,t=o,i=this.offset;return t[0]=e[i],t[1]=e[i+1],t[2]=e[i+2],t[3]=e[i+3],this.offset+=4,a[0]},u.prototype.getUint32=function(){var e=this.buffer,t=o,i=this.offset;return t[0]=e[i],t[1]=e[i+1],t[2]=e[i+2],t[3]=e[i+3],this.offset+=4,l[0]},u.prototype.getFloat32=function(){var e=this.buffer,t=o,i=this.offset;return t[0]=e[i],t[1]=e[i+1],t[2]=e[i+2],t[3]=e[i+3],this.offset+=4,c[0]},u.prototype.getIndicesArray=function(e,t,i){for(var n=this.buffer,r=new Uint8Array(e,t,2*i),o=this.offset,s=0,a=2*i;s{"use strict";i.r(t),i.d(t,{PropertyDatabase:()=>s});var n=i(42759);function r(e,t){let i,n=0,r=e.length-1;for(;n<=r;){if(i=(n+r)/2|0,t===e[i])return i;t-1||r.indexOf(c[5])>-1)))if(e==f){var h=_.getAttrValue(e,l);a=!0,s.name=h}else{var d=_.attributeHidden(e);if(n&&d)return;var m=_._getObjectProperty(e,l);s.properties.push(m)}}else{var g=_.getObjectProperties(_.getAttrValue(e,l),i,!0,r,o);g&&g.properties&&(u=g)}})),u){var d={},m=s.properties;for(let e=0;e0?e:t},this.nodeHasChild=function(e){let t=!1;return this.enumObjectProperties(e,(function(e){if(e===u)return t=!0,!0})),t},this.getNodeNameAndChildren=function(e,t){var i,n,r=e.dbId;if(this.enumObjectProperties(r,(function(r,o){var s;if(r===d);else if(r!=u||t)r===f?e.name=_.getAttrValue(r,o):r===v?e.flags=_.getAttrValue(r,o,!0):r===p&&(n=o);else if((s=_.getAttrValue(r,o,!0))!==e.dbId){var a={dbId:s,parent:e.dbId};i?i.push(a):i=[a]}})),(!e.name||!e.flags)&&n){const t=_.getAttrValue(p,n,!0);let i=A[t];i||(A[t]=i={dbId:t,name:null,flags:null},_.getNodeNameAndChildren(i,!0)),i.name&&!e.name&&(e.name=i.name),"number"!=typeof e.flags&&"number"==typeof i.flags&&(e.flags=i.flags)}return i},this.buildDbIdToFragMap=M;this.buildObjectTree=function(e,t,i,n){var r;t&&(r=M(t)),b={},x=0;var o=this.buildObjectTreeRec(e,0,r,0,i,n);return x>0&&console.warn("Property database integrity not guaranteed ("+x+")."),b=null,A={},o},this.buildObjectTreeRec=function(e,t,i,n,r,o){if(b[e])return x++,0;b[e]=t||e,n>r[0]&&(r[0]=n);var s,a={dbId:e},l=this.getNodeNameAndChildren(a),c=[];if(l)for(var h=0;h1&&n.push(t[i]);return n},this.bruteForceSearch=function(e,i,n){const o=this.getSearchTerms(e);if(0===o.length)return[];var s=[];const a=null==n?void 0:n.searchHidden,c=null==n?void 0:n.includeInherited,h={};for(let e=0;e{const i=new Set(e);for(let n=0;n7?i[7]:0}},this.enumAttributes=function(e){for(var i=1;i=1;for(let e=0;eg,E=void 0;void 0===g||g>y?((E=l._getObjectProperty(y,b)).displayValueB=E.displayValue,E.displayValue=void 0,i++):x?((E=a._getObjectProperty(g,v)).displayValueB=void 0,t++):((E=a._getObjectProperty(g,v)).displayValueB=_.getAttrValue(y,b),t++,i++),f||(f=[]),f.push(E)}else t++,i++}r&&(n.changedIds.push(e),o&&n.propChanges.push(f))}},p=-1,m=function(e,t){var n=Math.floor(100*e/t);n!=p&&(i&&i(n),p=n)};if(r)for(var g=0;g{"use strict";i.d(t,{hA:()=>a,jQ:()=>n,mH:()=>r,qz:()=>o,vl:()=>s});var n={Unknown:0,Boolean:1,Integer:2,Double:3,Float:4,BLOB:10,DbKey:11,String:20,LocalizableString:21,DateTime:22,GeoLocation:23,Position:24},r={afHidden:1,afDontIndex:2,afDirectStorage:4,afReadOnly:8},o={Dimensions:["Perimeter","Volume","Area","Length","Width","Height"]},s={Item:["Source File"]};const a=e=>[n.Integer,n.Double,n.Float].includes(e)},42759:(e,t,i)=>{"use strict";function n(e,t,i){var n,r,o,s,a,l;for(n="",o=i,r=0;r>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n+=String.fromCharCode(s);break;case 12:case 13:a=e[t+r++],n+=String.fromCharCode((31&s)<<6|63&a);break;case 14:a=e[t+r++],l=e[t+r++],n+=String.fromCharCode((15&s)<<12|(63&a)<<6|63&l)}return n}function r(e,t,i){var n,r,o,s=i||0;if(r=e.length,t)for(n=0;n=1&&o<=127?t[s++]=o:o>2047?(t[s++]=224|o>>12&15,t[s++]=128|o>>6&63,t[s++]=128|63&o):(t[s++]=192|o>>6&31,t[s++]=128|63&o);else for(n=0;n=1&&o<=127?s++:s+=o>2047?3:2;return s-(i||0)}i.d(t,{$d:()=>c,GB:()=>u,Pd:()=>d,TN:()=>l,WC:()=>r,_f:()=>h,jI:()=>n,xH:()=>a});var o=!0,s=1048576;function a(e,t,i){if(void 0===t&&(t=0),void 0===i&&(i=e.length),o)return i>s?function(e,t,i){var n,r,o,s,a,l,c,h;for(n="",a=[],o=i,l=0,r=0;r>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:a.push(String.fromCharCode(s));break;case 12:case 13:c=e[t+r++],a.push(String.fromCharCode((31&s)<<6|63&c));break;case 14:c=e[t+r++],h=e[t+r++],a.push(String.fromCharCode((15&s)<<12|(63&c)<<6|63&h))}(++l>=32768||r>=o)&&(n+=a.join(""),a.length=0,l=0)}return n}(e,t,i):n(e,t,i);for(var r="",a=t,l=t+i;a=48&&r<=57&&(i=10*i+(r-48)),n++}return i}function u(e,t){for(var i=0,n=0,r=e.length;n=48&&c<=57?(l=10*l+(c-48),a=!0):44==c||93==c?a&&(o[i++]=l,a=!1,l=0):(a=!1,l=0),n++}return o}function d(e){for(var t=0,i=e.length-1,n=0;n{"use strict";i.r(t),i.d(t,{VBB_MITER_SEGMENT_CP:()=>a,VBB_MITER_SEGMENT_LIMIT:()=>o,VBB_MITER_SEGMENT_SCALE_FACTOR:()=>s,VertexBufferBuilder:()=>l});var n=2*Math.PI,r=[0,1,3,0,3,2];const o=6,s=1023,a=65536;function l(e,t,i,n){var r=t||65536;this.FULL_COUNT=0|(i||32767),this.useInstancing=e,this.useCompactBuffers=n,this.stride=10,this.allocVcount=4*(this.useInstancing?r/4:r),this.vb=new ArrayBuffer(this.stride*this.allocVcount),this.vbf=new Float32Array(this.vb),this.vbi=new Int32Array(this.vb),this.ib=this.useInstancing?null:new Uint16Array(r),this.minLineWidth=Number.MAX_VALUE,this.reset(0)}l.FORCE_BUTT_CAPS_FOR_TESTING=!1,l.prototype.reset=function(e){this.vcount=e,this.icount=0,this.minx=this.miny=1/0,this.maxx=this.maxy=-1/0,this.dbIds={},this.lastDbId=null,this.colors={},this.numEllipticals=0,this.numCirculars=0,this.numTriangleGeoms=0,this.numMiterLines=0,this.hasLineStyles=!1,this.changeTracking={},this.stride=10},l.prototype.expandStride=function(){var e=this.stride;if(!(e>=12)){for(var t=this.stride+2,i=new ArrayBuffer(t*this.allocVcount),n=new Uint8Array(this.vb),r=new Uint8Array(i),o=0,s=this.vcount;othis.maxx&&(this.maxx=e),tthis.maxy&&(this.maxy=t)},l.prototype.addToBoundsWithLineWidth=function(e,t,i,n,r){if(r<0)return this.addToBounds(e,t),void this.addToBounds(i,n);const o=[Math.min(e,i)-.5*r,Math.max(e,i)+.5*r],s=[Math.min(t,n)-.5*r,Math.max(t,n)+.5*r];this.addToBounds(o[0],s[0]),this.addToBounds(o[1],s[1])};var c=new Int32Array(1);function h(e){return c[0]=e,c[0]}l.prototype.trackChanges=function(e,t,i,n,r,o){if(i!==this.lastDbId&&(this.dbIds[h(i)]=1,this.lastDbId=i),o&&(this.hasLineStyles=!0),this.useCompactBuffers){var s=this.changeTracking;a("geomType",e),a("color",t),a("dbId",i),a("layerId",n),a("viewportId",r),a("linePattern",o),this.colors[h(t)]=1}function a(t,i){void 0===s[t]?s[t]=e:s[t]===i&&(s[t+"Varies"]=!0)}},l.prototype.setCommonVertexAttribs=function(e,t,i,n,r,o,s,a){this.trackChanges(i,n,r,o,s,a),t&=255,i&=255,a&=255,o&=65535,s&=65535,this.vbi[e+8]=t|i<<8|a<<16,this.vbi[e+6]=n,this.vbi[e+7]=r,this.vbi[e+9]=o|s<<16},l.prototype.addVertexTriangleGeom=function(e,t,i,n,r,o,s,a,l,c){for(var h=this.vcount,u=this.vbf,d=this.useInstancing?1:4,f=0;f=0&&s>0&&r>0&&(this.minLineWidth=Math.min(this.minLineWidth,s)),l.FORCE_BUTT_CAPS_FOR_TESTING&&(f=!0,p=!0);var v=1;f&&p?v=8:f?v=9:p&&(v=10);for(var y=this.useInstancing?1:4,b=0;b=0&&l>0&&(this.minLineWidth=Math.min(this.minLineWidth,l));for(var g=this.useInstancing?1:4,v=0;v6&&void 0!==arguments[6]?arguments[6]:0;if(!this.useInstancing){var a=this.vcount,l=this.stride*a,c=this.vbf;return c[l]=e,c[l+1]=t,this.setCommonVertexAttribs(l,0,s,i,n,r,o,0),this.vcount++,a}},l.prototype.addVertexPolytriangle=function(e,t,i,n,r,o){this.useInstancing||(this.addVertex(e,t,i,n,r,o),this.addToBounds(e,t))},l.prototype.addVertexMSDFPolytriangle=function(e,t,i,n,r,o,s,a){this.addVertexTexPolytriangle(e,t,i,n,r,o,s,a,6)},l.prototype.addIndices=function(e,t){if(!this.useInstancing){var i=this.ib,n=this.icount;if(n+e.length>=i.length){var r=new Uint16Array(2*Math.max(e.length,i.length));for(let e=0;e1e-4&&Math.abs(m-n)>1e-4){var g=e+o*Math.cos(i),v=t+s*Math.sin(i);this.addSegment(g,v,g,v,0,l,c,h,d,f);var y=e+o*Math.cos(r),b=t+s*Math.sin(r);this.addSegment(y,b,y,b,0,l,c,h,d,f)}else this.addToBoundsWithLineWidth(e-o,t-s,e+o,t+s,l);const a=33554431;var x=this.addVertexLine(e,t,0,1e-4,0,0,a,h,d,f);this.finalizeQuad(x)}var _=this.addVertexArc(e,t,i,r,o,s,a,l,c,h,d,f);this.finalizeQuad(_)},l.prototype.addTexturedQuad=function(e,t,i,n,r,o,s,a,l){var c=this.addVertexTexQuad(e,t,i,n,r,o,s,a,l);this.finalizeQuad(c);var h=.5*Math.cos(r),u=.5*Math.sin(r),d=Math.abs(i*h)+Math.abs(n*u),f=Math.abs(i*u)+Math.abs(n*h);this.addToBounds(e-d,t-f),this.addToBounds(e+d,t+f)},l.prototype.addVertexImagePolytriangle=function(e,t,i,n,r,o,s,a){return this.addVertexTexPolytriangle(e,t,i,n,r,o,s,a,7)},l.prototype.addVertexTexPolytriangle=function(e,t,i,n,r,o,s,a,l){if(this.useInstancing)return;let c=this.vcount,h=this.vbf;this.addVertex(e,t,r,o,s,a,l),h[c*this.stride+2]=i,h[c*this.stride+3]=n,this.addToBounds(e,t)},l.prototype.isFull=function(e){e=e||3;var t=this.useInstancing?4:1;return this.vcount*t+e>this.FULL_COUNT},l.prototype.makeCompactVertexLayout=function(){var e=Object.keys(this.colors),t=Object.keys(this.dbIds);if(10!==this.stride)return null;var i=e.length+t.length;if(e.length+t.length>65536)return null;var n=new Int32Array(i+1);n[0]=0;var r=1;for(let t=0;t>8&255){case 0:a[_]=f(this.vbf[b]),a[_+1]=p(this.vbf[b+1]);break;case 1:case 8:case 9:case 10:a[_]=f(this.vbf[b]),a[_+1]=p(this.vbf[b+1]),a[_+2]=g(this.vbf[b+2]),a[_+3]=m(this.vbf[b+3]),a[_+4]=v(this.vbf[b+4]);break;case 2:a[_]=f(this.vbf[b]),a[_+1]=p(this.vbf[b+1]),a[_+2]=g(this.vbf[b+2]),a[_+3]=g(this.vbf[b+3]),a[_+4]=v(this.vbf[b+4]),a[_+5]=m(this.vbf[b+5]);break;case 3:case 11:break;case 4:a[_]=f(this.vbf[b]),a[_+1]=p(this.vbf[b+1]),a[_+2]=g(this.vbf[b+2]),a[_+3]=m(this.vbf[b+3]),a[_+4]=m(this.vbf[b+4]);break;case 5:a[_]=f(this.vbf[b]),a[_+1]=p(this.vbf[b+1]),a[_+2]=f(this.vbf[b+2]),a[_+3]=p(this.vbf[b+3]),a[_+4]=f(this.vbf[b+4]),a[_+5]=p(this.vbf[b+5]);break;default:console.error("Unknown geometry type")}a[_+6]=this.colors[this.vbi[b+6]]||0,a[_+7]=this.dbIds[this.vbi[b+7]]||0,s[x+4]=this.vbi[b+8],s[x+5]=this.vbi[b+9]}var E={};E.vb=new Float32Array(o),E.vbstride=6;var S=this.useInstancing?1:0;return E.vblayout={fields1:{offset:0,itemSize:2,bytesPerItem:2,divisor:S,normalized:!0},fields2:{offset:1,itemSize:4,bytesPerItem:2,divisor:S,normalized:!0},uvIdColor:{offset:3,itemSize:2,bytesPerItem:2,divisor:S,normalized:!1},flags4b:{offset:4,itemSize:4,bytesPerItem:1,divisor:S,normalized:!1},layerVp4b:{offset:5,itemSize:4,bytesPerItem:1,divisor:S,normalized:!1}},E.unpackXform={x:l,y:c,z:h,w:u},E.texData=n,E},l.prototype.makeWideVertexLayout=function(){var e={};e.vb=new Float32Array(this.vb.slice(0,this.vcount*this.stride*4)),e.vbstride=this.stride;var t=this.useInstancing?1:0;return e.vblayout={fields1:{offset:0,itemSize:2,bytesPerItem:4,divisor:t,normalized:!1},fields2:{offset:2,itemSize:4,bytesPerItem:4,divisor:t,normalized:!1},color4b:{offset:6,itemSize:4,bytesPerItem:1,divisor:t,normalized:!0},dbId4b:{offset:7,itemSize:4,bytesPerItem:1,divisor:t,normalized:!1},flags4b:{offset:8,itemSize:4,bytesPerItem:1,divisor:t,normalized:!1},layerVp4b:{offset:9,itemSize:4,bytesPerItem:1,divisor:t,normalized:!1}},e.vblayout.extraParams={offset:this.stride-2,itemSize:2,bytesPerItem:4,divisor:t,normalized:!1},e},l.prototype.toMesh=function(){var e=null;if(this.useCompactBuffers&&(e=this.makeCompactVertexLayout()),e||(e=this.makeWideVertexLayout()),this.useInstancing){e.numInstances=this.vcount;var t=new Int32Array([0,1,2,3]);e.vblayout.instFlags4b={offset:0,itemSize:4,bytesPerItem:1,divisor:0,normalized:!1},e.vblayout.instFlags4b.array=t.buffer,e.indices=new Uint16Array(r)}else e.indices=new Uint16Array(this.ib.buffer.slice(0,2*this.icount));e.dbIds=this.dbIds;var i=this.maxx-this.minx,n=this.maxy-this.miny,o=Math.max(i,n);return e.boundingBox={min:{x:this.minx,y:this.miny,z:.001*-o},max:{x:this.maxx,y:this.maxy,z:.001*o}},e.boundingSphere={center:{x:.5*(this.minx+this.maxx),y:.5*(this.miny+this.maxy),z:0},radius:.5*Math.sqrt(i*i+n*n)},e};var u=function(e,t){function i(){function i(e,t){return Math.abs(e-t)<.001}i(e,0)&&(e=0),i(t,0)&&(t=0),i(e,n)&&(e=n),i(t,n)&&(t=n)}if(i(),e>t)for(;e>n;)e-=n,t-=n;else for(;t>n;)e-=n,t-=n;return i(),e<0&&t>0&&(e+=n),{start:e,end:t}}},93509:(e,t,i)=>{"use strict";i.r(t),i.d(t,{F2D:()=>m,F2dDataType:()=>u,F2dSemanticType:()=>d,F2dShadowRatio:()=>f,restoreSignBitFromLSB:()=>p});var n=i(30514),r=i(21706),o=i(96118);const s=function(e,t){t.min.xe.max.x&&(e.max.x=t.max.x),t.max.y>e.max.y&&(e.max.y=t.max.y),t.max.z>e.max.z&&(e.max.z=t.max.z)};var a=i(83293),l=i(83081),c=i(57480),h=16383,u={dt_object:0,dt_void:1,dt_byte:2,dt_int:3,dt_float:4,dt_double:5,dt_varint:6,dt_point_varint:7,dt_byte_array:32,dt_int_array:33,dt_float_array:34,dt_double_array:35,dt_varint_array:36,dt_point_varint_array:37,dt_arc:38,dt_circle:39,dt_circular_arc:40,dt_string:63,dt_last_data_type:127},d={st_object_member:0,st_fill:1,st_fill_off:2,st_clip_off:3,st_layer:4,st_link:5,st_line_weight:6,st_miter_angle:7,st_miter_length:8,st_line_pattern_ref:9,st_back_color:10,st_color:11,st_markup:12,st_object_id:13,st_markup_id:14,st_reset_rel_offset:15,st_font_ref:16,st_begin_object:32,st_clip:33,st_line_caps:34,st_line_join:35,st_line_pattern_def:36,st_font_def:37,st_viewport:38,st_sheet:42,st_arc:43,st_polyline:44,st_raster:45,st_text:46,st_polytriangle:47,st_dot:48,st_end_object:63,st_last_semantic_type:127};const f=.0075;function p(e){return 1&e?-(e>>>1):e>>>1}function m(e,t,i){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(this.metadata=e,this.scaleX=1,this.scaleY=1,this.bbox={min:{x:0,y:0,z:0},max:{x:0,y:0,z:0}},this.is2d=!0,this.layersMap={},this.fontDefs={},this.fontCount=0,this.fontId=0,this.manifestAvailable=!1,this.geomMetricsSum=0,this.objectMemberQueue=[],this.propertydb={attrs:[],avs:[],ids:[],values:[],offsets:[],viewables:[]},e){var s=e.page_dimensions;this.paperWidth=s.page_width,this.paperHeight=s.page_height,this.scaleX=this.paperWidth/s.plot_width,this.scaleY=this.paperHeight/s.plot_height,this.hidePaper=s.hide_paper;var a=this.paperWidth,l=this.paperHeight;this.bbox.max.x=a,this.bbox.max.y=l;var c=e.page_dimensions||{};if(isFinite(c.paper_rotation)&&0!==c.paper_rotation){var u=c.paper_rotation*Math.PI/180,d=Math.cos(u),f=Math.sin(u),p=a*d,m=a*f,g=-l*f,v=l*d;this.bbox.min.x=Math.min(0,p,g,p+g),this.bbox.max.x=Math.max(0,p,g,p+g),this.bbox.min.y=Math.min(0,m,v,m+v),this.bbox.max.y=Math.max(0,m,v,m+v)}isFinite(c.paper_offset_x)&&0!==c.paper_offset_x&&(this.bbox.min.x+=c.paper_offset_x,this.bbox.max.x+=c.paper_offset_x),isFinite(c.paper_offset_y)&&0!==c.paper_offset_y&&(this.bbox.min.y+=c.paper_offset_y,this.bbox.max.y+=c.paper_offset_y);var y=0;for(var b in this.layersMap[0]=y++,e.layers){var x=parseInt(b);this.layersMap[x]=y++}if(this.layerCount=y,this.createLayerGroups(e.layers),e.geom_metrics){var _=Object.keys(e.geom_metrics).map((function(t){return e.geom_metrics[t]}));this.geomMetricsSum=_.reduce(((e,t)=>e+t))}}this.hidePaper=this.hidePaper||o.modelSpace,this.noShadow=!!o.noShadow,this.hasPageShadow=!1,this.opCount=0,this.excludeTextGeometry=o.excludeTextGeometry,this.extendStringsFetching=o.extendStringsFetching,this.fontFaces=[],this.fontFamilies=[],this.viewports=[{}],this.currentVpId=0,this.viewports[0].geom_metrics=this.currentGeomMetrics={arcs:0,circles:0,circ_arcs:0,viewports:0,clips:0,colors:0,db_ids:0,dots:0,fills:0,layers:0,line_caps:0,line_joins:0,line_patterns:0,line_pat_refs:0,plines:0,pline_points:0,line_weights:0,links:0,miters:0,ptris:0,ptri_indices:0,ptri_points:0,rasters:0,texts:0,strings:[]},this.clips=[0],this.strings=[],this.stringDbIds=[],this.stringBoxes=[],this.extendStringsFetching&&(this.stringCharWidths=[],this.stringAngles=[],this.stringPositions=[],this.stringHeights=[]),this.currentStringNumber=-1,this.currentStringBox=new r.LmvBox3,this.linkBoxes=[],this.currentLinkBox=new r.LmvBox3,this.objectNumber=0,this.currentFakeId=-2,this.imageNumber=0,this.linkNumber=0,this.maxObjectNumber=0,this.objectStack=[],this.objectNameStack=[],this.parseObjState={polyTriangle:{},viewport:{},clip:{},raster:{},text:{},fontDef:{},uknown:{}},this.layer=0,this.bgColor="number"==typeof o.bgColor?o.bgColor:4294967295,this.contrastColor=this.color=this.fillColor=4278190080,this.hidePaper&&(this.contrastColor=4294967040),this.isMobile=o&&!!o.isMobile;var E=this.isMobile,S=this.isMobile;if(this.max_vcount=this.isMobile?h:void 0,this.currentVbb=new n.VertexBufferBuilder(E,void 0,this.max_vcount,S),this.meshes=[],this.numCircles=this.numEllipses=this.numPolylines=this.numLineSegs=0,this.numPolytriangles=this.numTriangles=0,this.error=!1,this.offsetX=0,this.offsetY=0,t){this.manifestAvailable=!0,this.imageId2URI={};for(var A=t.assets,w=0,T=A.length;w>16&255,i=e>>8&255,n=255&e;return(e>>24&255)<<24|(t=255-t)<<16|(i=255-i)<<8|(n=255-n)},m.prototype.mapColor=function(e,t){if(!this.hidePaper||0!==this.bgColor)return e;var i=255&e;return i<127||i===(65280&e)>>8&&i===(16711680&e)>>16&&t&&(e&=1442840575),e},m.prototype.parsePointPositions=function(){var e=this.stream.getVarints(),t=this.stream.getVarints();return e=p(e),t=p(t),e+=this.offsetX,t+=this.offsetY,this.offsetX=e,this.offsetY=t,[this.tx(e),this.ty(t)]},m.prototype.parserAssert=function(e,t,i){return e!=t&&(l.logger.warn("Expect "+t+"; actual type is "+e+"; in function "+i),this.error=!0,!0)},m.prototype.unhandledTypeWarning=function(e,t){l.logger.warn("Unhandled semantic type : "+t+" in function "+e)},m.prototype.parseObject=function(){var e=this.stream.getVarints();switch(this.objectStack.push(e),e){case d.st_sheet:this.objectNameStack.push("sheet"),this.objectMemberQueue.unshift("paperColor");break;case d.st_viewport:this.objectNameStack.push("viewport"),this.objectMemberQueue.unshift("units","transform");break;case d.st_clip:this.objectNameStack.push("clip"),this.objectMemberQueue.unshift("contourCounts","points","indices");break;case d.st_polytriangle:this.objectNameStack.push("polyTriangle"),this.objectMemberQueue.unshift("points","indices","colors");break;case d.st_raster:this.objectNameStack.push("raster"),this.objectMemberQueue.unshift("position","width","height","imageId");break;case d.st_text:this.currentStringNumber=this.strings.length,0===this.objectNumber&&(this.objectNumber=this.currentFakeId--),this.currentStringBox.makeEmpty(),this.objectNameStack.push("text"),this.objectMemberQueue.unshift("string","position","height","widthScale","rotation","oblique","charWidths");break;case d.st_font_def:this.objectNameStack.push("fontDef"),this.objectMemberQueue.unshift("name","fullName","flags","spacing","panose");break;case d.st_end_object:if(this.objectStack.pop(),this.objectStack.length){switch(this.objectStack.pop()){case d.st_polytriangle:this.actOnPolyTriangle();break;case d.st_viewport:this.actOnViewport();break;case d.st_clip:this.actOnClip();break;case d.st_raster:this.actOnRaster();break;case d.st_text:this.actOnText();break;case d.st_font_def:this.actOnFontDef()}var t=this.objectNameStack.pop(),i=this.parseObjState[t];for(var n in i)i[n]=null}else this.parserAssert(0,1,"parseEndObject (Stack Empty)");this.objectMemberQueue.length=0;break;default:this.objectNameStack.push("unknown"),this.error=!0,this.unhandledTypeWarning("parseObject",e)}},m.prototype.initSheet=function(e){if(!this.hidePaper&&(this.bgColor=e,this.metadata)){var t=this.paperWidth,i=this.paperHeight,n={x:0,y:0},r={x:t,y:0},o={x:0,y:i},s=this.metadata.page_dimensions||{};if(isFinite(s.paper_rotation)&&0!==s.paper_rotation){var a=s.paper_rotation*Math.PI/180,l=Math.cos(a),c=Math.sin(a);r.y=t*c,r.x=t*l,o.x=-i*c,o.y=i*l}isFinite(s.paper_offset_x)&&0!==s.paper_offset_x&&(n.x=s.paper_offset_x),isFinite(s.paper_offset_y)&&0!==s.paper_offset_y&&(n.y=s.paper_offset_y);var h=this.currentVbb,u=[n.x,n.y,n.x+r.x,n.y+r.y,n.x+r.x+o.x,n.y+r.y+o.y,n.x+o.x,n.y+o.y],d=[e,e,e,e],p=[0,1,2,0,2,3];if(!this.noShadow){var m=t*f,g={x:r.x*m/t,y:r.y*m/t},v={x:o.x*m/i,y:o.y*m/i},y={x:n.x+g.x,y:n.y+g.y},b={x:n.x+r.x,y:n.y+r.y},x=4283782485;u=u.concat([y.x-v.x,y.y-v.y,y.x-v.x+r.x,y.y-v.y+r.y,y.x+r.x,y.y+r.y,y.x,y.y,b.x,b.y,b.x+g.x,b.y+g.y,b.x+g.x-v.x+o.x,b.y+g.y-v.y+o.y,b.x-v.x+o.x,b.y-v.y+o.y]),d=d.concat([x,x,x,x,x,x,x,x]),p=p.concat([4,5,6,4,6,7,8,9,10,8,10,11]),this.hasPageShadow=!0}this.addPolyTriangle(u,d,p,4294967295,-1,0,!1),h.addSegment(n.x,n.y,n.x+r.x,n.y+r.y,0,1e-6,4278190080,-1,0,this.currentVpId),h.addSegment(n.x+r.x,n.y+r.y,n.x+r.x+o.x,n.y+r.y+o.y,0,1e-6,4278190080,-1,0,this.currentVpId),h.addSegment(n.x+r.x+o.x,n.y+r.y+o.y,n.x+o.x,n.y+o.y,0,1e-6,4278190080,-1,0,this.currentVpId),h.addSegment(n.x+o.x,n.y+o.y,n.x,n.y,0,1e-6,4278190080,-1,0,this.currentVpId)}},m.prototype.setObjectMember=function(e){if(!this.objectMemberQueue.length)return l.logger.warn("Unexpected object member. "+e+" on object "+this.objectNameStack[this.objectNameStack.length-1]),!1;var t=this.objectMemberQueue.shift(),i=this.objectNameStack[this.objectNameStack.length-1];return"sheet"==i&&"paperColor"==t?(this.initSheet(e),!0):!!i&&(this.parseObjState[i][t]=e,!0)},m.prototype.parseString=function(){var e=this.stream,t=e.getVarints(),i=e.getVarints(),n=e.getString(i);if(t===d.st_object_member){if(this.setObjectMember(n))return}else l.logger.info("Unexpected opcode semantic type for string.");return n},m.prototype.actOnFontDef=function(){var e=this.parseObjState.fontDef;this.fontDefs[++this.fontCount]=e,this.fontId=this.fontCount},m.prototype.parsePoint=function(){var e=this.stream.getVarints(),t=this.parsePointPositions();if(e===d.st_object_member){if(this.setObjectMember(t))return}else l.logger.info("Unexpected opcode semantic type for point.");return t},m.prototype.parsePointsArray=function(){var e=this.stream,t=e.getVarints(),i=e.getVarints();if(i){i/=2;for(var n,r=[],o=0;ot){var i=e;e=t,t=i}if(c[e]){var n=c[e],r=n.lastIndexOf(t);-1==r?n.push(t):n[r]=-1}else c[e]=[t]}function f(i,s){if(i>s){var u=i;i=s,s=u}var d=c[i];d&&(-1!=d.indexOf(s)&&(a.flushBuffer(4),a.currentVbb.addSegment(e[2*i],e[2*i+1],e[2*s],e[2*s+1],0,h,a.mapColor(t?t[i]:n,!0),r,o,a.currentVpId),t&&t[i]!=t[s]&&l.logger.warn("Gouraud triangle encountered. Will have incorrect antialiasing.")))}if(this.objectStack[this.objectStack.length-1]==d.st_text&&(h=-.5),s){c=new Array(e.length/2);for(let e=0,t=i.length;e1)for(var h=0;h{const t=new Array(256);for(let e=0;e<256;e++){let i=e.toString(16);1===i.length&&(i="0"+i),t[e]=i}var i=new Array(20),n=new Array(10);e.exports={binToPackedString:function(e,t,i){for(var r=20===i?n:[],o=0;o>8&255]}return n.join("")},packedToBin:function(e,t,i){for(let n=0;n>8&255}}}},58536:(e,t,i)=>{"use strict";i.r(t),i.d(t,{readLmvBufferGeom:()=>L,serializeLmvBufferGeom:()=>C});var n=i(55280),r=i(83293),o=i(21706);const s={Index:0,IndexEdges:1,Position:2,Normal:3,TextureUV:4,Color:5},a=0,l=1,c=2,h=3,u=4,d=5,f=6,p=7,m=8,g=9,v=10,y={TRIANGLES:0,LINES:1,POINTS:2,WIDE_LINES:3},b={position:s.Position,normal:s.Normal,index:s.Index,indexlines:s.IndexEdges,color:s.Color},x={};x[s.Position]="position",x[s.Normal]="normal",x[s.Index]="index",x[s.IndexEdges]="indexlines",x[s.Color]="color",x[s.TextureUV]="uv";const _={};function E(e){var t=[];for(let i=0;ie[1]){var i=e[0];e[0]=e[1],e[1]=i}t.sort((function(e,t){return e[0]-t[0]}));var n=t[0],r=0;e[r]=n[0],e[r+1]=n[1]-n[0],r+=2;for(let i=1;ir[1]||r[0]>r[2];)i=void 0,i=(t=r)[0],t[0]=t[1],t[1]=t[2],t[2]=i;n.sort((function(e,t){return e[0]-t[0]}));var r=n[0],o=0;e[o]=r[0],e[o+1]=r[1]-r[0],e[o+2]=r[2]-r[0],o+=3;for(let t=1;t>4,i.bytesPerItem=_[i.type],i.normalized=i.type===u||i.type===d||i.type===f||i.type===p,i.itemOffset=this.buffer.readUInt8(this.readOffset)/4,this.readOffset++,i.itemStride=this.buffer.readUInt8(this.readOffset)/4,this.readOffset++,i.bufferIndex=this.buffer.readUInt8(this.readOffset),this.readOffset++,this.attributes.push(i)}for(;this.readOffset%4!=0;)this.readOffset++;for(let e=0;e>4,i.bytesPerItem=_[i.type],i.normalized=i.type===u||i.type===d||i.type===f||i.type===p,i.itemOffset=e.getUint8()/4,i.itemStride=e.getUint8()/4,i.bufferIndex=e.getUint8(),this.attributes.push(i)}for(;e.offset%4!=0;)e.offset++;for(let t=0;t1&&(h+=r.toString())),n.vbstride?n.vbstride!==a.itemStride&&console.error("Unexpected vertex buffer stride mismatch."):n.vbstride=a.itemStride,a.itemOffset>=a.itemStride||(n.vblayout[h]={bytesPerItem:a.bytesPerItem,offset:a.itemOffset,normalized:a.normalized,itemSize:a.itemSize})}}return{mesh:n,packId:0,meshIndex:0}}},87816:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Empty2DModelLoader:()=>n});class n{constructor(e){this.viewer3DImpl=e}loadFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0;const r=t.width||100,o=t.height||100;n&&n(),this.svf={is2d:!0,viewports:[],layersMap:{0:0},layerCount:1,bbox:new THREE.Box3(new THREE.Vector3(0,0,0),new THREE.Vector3(r,o,0)),fragments:{length:1,fragId2dbId:[0],dbId2fragId:{},transforms:new Float32Array(12),boxes:[0,0,0,r,o,0]},loadOptions:{bubbleNode:new Autodesk.Viewing.BubbleNode({urn:"Dummy_urn",guid:"Dummy_guid"})},metadata:{page_dimensions:{page_width:r,page_height:o,logical_width:r,logical_height:o,logical_offset_x:0,logical_offset_y:0,page_units:"inch"}},strings:[],stringDbIds:[],loadDone:!0};const s=new Autodesk.Viewing.Model(this.svf);s.initialize(),s.loader=this,this.model=s,i(null,s),this.viewer3DImpl.api.dispatchEvent({type:Autodesk.Viewing.MODEL_ROOT_LOADED_EVENT,svf:this.svf,model:s}),this.viewer3DImpl.onLoadComplete(s)}dtor(){}is2d(){return!0}is3d(){return!1}}},47261:(e,t,i)=>{"use strict";i.r(t),i.d(t,{F2DLoader:()=>x,OUTPUT_TYPE:()=>b});var n=i(83081),r=i(77201),o=i(22040),s=i(57480),a=i(28441),l=i(54393),c=i(84045),h=i(7756),u=i(13e3),d=i(55280),f=i(19556),p=i(90255),m=i(8412),g=i(63764),v=i(72091);const y=Autodesk.Viewing.Private,b={GEOMETRY:"geometry",VERTEX_BUFFER:"vertexBuffer"};function x(e){this.viewer3DImpl=e,this.loading=!1,this.tmpMatrix=new v.Matrix4,this.logger=n.logger,this.loadTime=0}x.prototype.dtor=function(){this.streamingWorker&&(this.streamingWorker.terminate(),this.streamingWorker=null,n.logger.debug("F2D loader dtor: on streaming worker.")),this.parsingWorker&&(this.parsingWorker.terminate(),this.parsingWorker=null,n.logger.debug("F2D loader dtor: on parsing worker.")),this.svf&&this.svf.propDbLoader&&(this.svf.propDbLoader.dtor(),this.svf.propDbLoader=null),this.viewer3DImpl=null,this.loading=!1,this.tmpMatrix=null,this.logger=null,this.loadTime=0,this.svf=null,this.model=null,this.options=null},x.prototype.isValid=function(){return!!this.viewer3DImpl},x.prototype.loadFile=function(e,t,i,r){if(!this.viewer3DImpl)return n.logger.log("F2D loader was already destructed. So no longer usable."),!1;if(this.loading)return n.logger.log("Loading of F2D already in progress. Ignoring new request."),!1;this.loading=!0;var o=e.indexOf("urn:");if(-1!=o){var s=(e=decodeURIComponent(e)).substr(o,e.substr(o).indexOf("/"));n.logger.log("Extracted URN: "+s);var a=s.lastIndexOf(":");this.svfUrn=s.substr(a+1)}else this.svfUrn=e;return this.sharedDbPath=t.sharedPropertyDbPath,this.currentLoadPath=e,this.acmSessionId=t.acmSessionId,this.queryParams="",this.acmSessionId&&(this.queryParams="acmsession="+this.acmSessionId),this.options=t,this.options.placementTransform?this.modelScale=this.options.modelScale||this.options.placementTransform.getMaxScaleOnAxis():this.modelScale=this.options.modelScale||1,this.isf2d=!0,this.loadFydoCB(e,t,i,r),!0},x.prototype.loadFydoCB=function(e,t,i,r){this.t0=Date.now();var o=(0,c.pathToURL)(e);this.streamingWorker=(0,h.createWorker)("F2DStreamWorker",!0),this.parsingWorker=(0,h.createWorker)("F2DParseWorker");var l=this,u=!0,p=function(){l.parsingWorker.terminate(),l.parsingWorker=null};this.streamingWorker.addEventListener("message",(function(e){var c;l.isValid()&&(u&&r&&(u=!1,r()),e.data&&"F2DBLOB"==e.data.type?(c={operation:"PARSE_F2D",data:e.data.buffer,metadata:e.data.metadata,manifest:e.data.manifest,basePath:e.data.basePath,f2dLoadOptions:{modelSpace:t.modelSpace,bgColor:t.bgColor,noShadow:t.noShadow,isMobile:(0,d.isMobileDevice)(),excludeTextGeometry:t.excludeTextGeometry,outputType:t.outputType||b.VERTEX_BUFFER,extendStringsFetching:t.extendStringsFetching},url:o},l.parsingWorker.doOperation(c,[c.data]),l.streamingWorker.terminate(),l.streamingWorker=null):e.data&&"F2DSTREAM"==e.data.type?(c={operation:"PARSE_F2D_FRAME",data:e.data.frames,url:o,f2dLoadOptions:{modelSpace:t.modelSpace,bgColor:t.bgColor,noShadow:t.noShadow,isMobile:(0,d.isMobileDevice)(),excludeTextGeometry:t.excludeTextGeometry,outputType:t.outputType||b.VERTEX_BUFFER,extendStringsFetching:t.extendStringsFetching}},e.data.metadata&&(c.metadata=e.data.metadata,c.manifest=e.data.manifest),e.data.finalFrame&&(c.finalFrame=!0,l.streamingWorker.terminate(),l.streamingWorker=null,l.fileMemorySize/=2),e.data.progress&&l.viewer3DImpl.signalProgress(100*e.data.progress,a.ProgressState.LOADING),l.parsingWorker.doOperation(c,c.data?[c.data]:void 0)):e.data&&"F2DAssetURL"==e.data.type||e.data&&e.data.progress||(e.data&&e.data.debug?n.logger.debug(e.data.message):e.data&&e.data.error?(l.loading=!1,l.streamingWorker.terminate(),l.streamingWorker=null,i&&i(e.data.error)):(n.logger.error("F2D download failed.",(0,s.errorCodeString)(s.ErrorCodes.NETWORK_FAILURE)),l.loading=!1,l.streamingWorker.terminate(),l.streamingWorker=null)))}),!1);var g=t.outputType===b.GEOMETRY?function(e){if(l.isValid()&&(u&&r&&(u=!1,r()),e.data&&e.data.f2d)){l.svf=e.data.f2d;const t=e.data.f2d.geometry;p(),n.logger.info("Num polylines: "+t.numPolylines),n.logger.info("Line segments: "+t.numLineSegs),n.logger.info("Circular arcs: "+t.numCircles),n.logger.info("Ellipitcal arcs:"+t.numEllipses),l.onModelRootLoadDone(l.svf),i&&i(null,l.model),l.viewer3DImpl.api.dispatchEvent({type:f.MODEL_ROOT_LOADED_EVENT,svf:l.svf,model:l.model}),l.onGeomLoadDone()}}:function(e){var t,o;if(l.isValid())if(u&&r&&(u=!1,r()),e.data&&e.data.f2d){for(t=l.svf=e.data.f2d,p(),n.logger.info("Num polylines: "+t.numPolylines),n.logger.info("Line segments: "+t.numLineSegs),n.logger.info("Circular arcs: "+t.numCircles),n.logger.info("Ellipitcal arcs:"+t.numEllipses),n.logger.info("Plain triangles:"+t.numTriangles),n.logger.info("Total # of op codes generated by fydo.parse: "+t.opCount),l.onModelRootLoadDone(l.svf),i&&i(null,l.model),l.viewer3DImpl.api.dispatchEvent({type:f.MODEL_ROOT_LOADED_EVENT,svf:l.svf,model:l.model}),o=0;oi.nextRepaintPolys&&(i.numRepaints++,i.nextRepaintPolys+=1e4*Math.pow(1.5,i.numRepaints),this.viewer3DImpl.api.dispatchEvent({type:f.LOADER_REPAINT_REQUEST_EVENT,loader:this,model:this.model})),x%20==0&&this.viewer3DImpl.api.dispatchEvent({type:f.LOADER_REPAINT_REQUEST_EVENT,loader:this,model:this.model})},x.prototype.processReceivedMesh2D=function(e,t){t>=this.bufferCount&&(this.bufferCount=t+1);var i={mesh:e,is2d:!0,packId:"0",meshIndex:t},n="0:"+t,r=this.svf.fragments;if(!r.fragId2dbId[t]){var o=Object.keys(i.mesh.dbIds).map((function(e){return parseInt(e)}));r.fragId2dbId[t]=o;for(var s=0;s{"use strict";i.r(t),i.d(t,{LeafletLoader:()=>m});var n=i(28441),r=i(57480),o=i(83081),s=i(84045),a=i(47712),l=i(90255),c=i(54393),h=i(63764),u=i(8412),d=i(19556),f=i(72091);const p=Autodesk.Viewing.Private;function m(e){var t=e;this.isLeafletLoader=!0,this.loading=!1;var i=function(e,t){var i=[80,75,1,2],n=t;if(e[n++]!==i[0]||e[n++]!==i[1]||e[n++]!==i[2]||e[n++]!==i[3])return o.logger.error("invalid file header signature"),null;var r={};return r.version=e[n++],r.os=e[n++],r.needVersion=e[n++]|e[n++]<<8,r.flags=e[n++]|e[n++]<<8,r.compression=e[n++]|e[n++]<<8,r.time=e[n++]|e[n++]<<8,r.date=e[n++]|e[n++]<<8,r.crc32=(e[n++]|e[n++]<<8|e[n++]<<16|e[n++]<<24)>>>0,r.compressedSize=(e[n++]|e[n++]<<8|e[n++]<<16|e[n++]<<24)>>>0,r.plainSize=(e[n++]|e[n++]<<8|e[n++]<<16|e[n++]<<24)>>>0,r.fileNameLength=e[n++]|e[n++]<<8,r.extraFieldLength=e[n++]|e[n++]<<8,r.fileCommentLength=e[n++]|e[n++]<<8,r.diskNumberStart=e[n++]|e[n++]<<8,r.internalFileAttributes=e[n++]|e[n++]<<8,r.externalFileAttributes=e[n++]|e[n++]<<8|e[n++]<<16|e[n++]<<24,r.relativeOffset=(e[n++]|e[n++]<<8|e[n++]<<16|e[n++]<<24)>>>0,r.filename=String.fromCharCode.apply(null,e.slice(n,n+=r.fileNameLength)),r.extraField=e.slice(n,n+=r.extraFieldLength),r.comment=e.slice(n,n+r.fileCommentLength),r.length=n-t,r},c=function(e){var t=function(e){var t=[80,75,3,4],i=0;if(e[i++]!==t[0]||e[i++]!==t[1]||e[i++]!==t[2]||e[i++]!==t[3])return o.logger.error("invalid local file header signature"),null;var n={};return n.needVersion=e[i++]|e[i++]<<8,n.flags=e[i++]|e[i++]<<8,n.compression=e[i++]|e[i++]<<8,n.time=e[i++]|e[i++]<<8,n.date=e[i++]|e[i++]<<8,n.crc32=(e[i++]|e[i++]<<8|e[i++]<<16|e[i++]<<24)>>>0,n.compressedSize=(e[i++]|e[i++]<<8|e[i++]<<16|e[i++]<<24)>>>0,n.plainSize=(e[i++]|e[i++]<<8|e[i++]<<16|e[i++]<<24)>>>0,n.fileNameLength=e[i++]|e[i++]<<8,n.extraFieldLength=e[i++]|e[i++]<<8,n.filename=String.fromCharCode.apply(null,e.slice(i,i+=n.fileNameLength)),n.extraField=e.slice(i,i+=n.extraFieldLength),n.length=i,n}(e);if(!t)return null;var i=t.length,n=t.compressedSize;return e.slice(i,i+n)};this.continueLoadFile=function(e,i,s,l,c,u){var m,g,v=this;if(!v.loading)return void s({code:r.ErrorCodes.LOAD_CANCELED,msg:"Load canceled"},null);null!==(m=i.loadOptions)&&void 0!==m&&m.loadFromZip?g="{z}/{x}_{y}."+i.loadOptions.mime.split("/")[1]:g=e;c.initFromLoadOptions(g,i.loadOptions,u,i);let y=null;l&&l(),!c.valid()&&c.initForSimpleImage(e),c.onRootLoaded=function(){if(!v.loading)return void s({code:r.ErrorCodes.LOAD_CANCELED,msg:"Load canceled"},null);var a=new function(r){var o;this.bbox=new f.Box3,this.basePath=e,this.is2d=!0,this.urn=null===(o=i.bubbleNode)||void 0===o?void 0:o.getRootNode().urn();var s=r&&r.paperWidth>=0?r.paperWidth:c.texWidth,a=r&&r.paperHeight>=0?r.paperHeight:c.texHeight;this.pageToModelTransform=c.getPageToModelTransform(s,a),this.metadata={},this.metadata.page_dimensions={};var l=this.metadata.page_dimensions;l.page_width=s,l.page_height=a,l.page_units=r&&r.paperUnits,this.loadDone=!0,this.isLeaflet=!0,t.signalProgress(100,n.ProgressState.LOADING),c.texWidth>0&&(this.maxPixelPerUnit=c.texWidth/c.getQuadWidth(),c.isSimpleImage&&(this.maxPixelPerUnit*=10))}(i.loadOptions);a.loadOptions=i,a.bbox.copy(c.getBBox()),a.modelSpaceBBox=a.bbox.clone(),i.placementTransform&&(a.placementTransform=i.placementTransform.clone(),a.placementWithOffset=i.placementTransform.clone(),a.bbox.applyMatrix4(i.placementTransform));const l=new h.Model(a);return l.addTraversalController("Custom",y),l.loader=v,t.api.dispatchEvent({type:d.MODEL_ROOT_LOADED_EVENT,svf:a,model:l}),y.callWhenRefined((function(){var e,t=Date.now();a.loadTime=t-v.t0,o.logger.log("SVF load: "+a.loadTime),p.analytics.track("viewer.model.loaded",{load_time:a.loadTime,total_raster_pixels:null===(e=a.loadOptions.bubbleNode)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.totalRasterPixels,viewable_type:"2d",url:a.basePath,urn:a.urn})})),s(null,l),v.loading=!1,l.id},c.onDone=s,c.getPixelRatio=t.glrenderer().getPixelRatio,c.maxAnisotropy=t.glrenderer().getMaxAnisotropy(),c.placementTransform=i.placementTransform,y=new a.ModelIteratorTexQuad(c,t.getMaterials()),y.requestRootTile()},this.loadFile=function(e,t,n,h){if(this.loading)return o.logger.log("Loading of Leaflet already in progress. Ignoring new request."),!1;var d=this;this.loading=!0,this.options=t,this.t0=Date.now();var p=new a.TexQuadConfig,m=null,g=t.acmSessionId;if(t.loadOptions&&t.loadOptions.loadFromZip){m=function(e,t,i){for(var n,r=e.split("/")[0]-p.levelOffset,o=0;o0}))&&d.continueLoadFile(e,t,n,h,p,m)}),(function(e){o.logger.error("Zip download failed: "+e.statusText,(0,r.errorCodeString)(r.ErrorCodes.NETWORK_FAILURE)),n("Zip download failed: "+e.statusText,null)}))}))}else m=function(e,t,i){l.TextureLoader.loadTextureWithSecurity(e,f.UVMapping,t,i,g,!0)},this.continueLoadFile(e,t,n,h,p,m);return!0},this.dtor=function(){this.loading=!1}}m.prototype.is3d=function(){return!1},m.prototype.isPageCoordinates=function(){var e;return!(null===(e=this.options)||void 0===e||null===(e=e.loadOptions)||void 0===e||!e.fitPaperSize)},c.FileLoaderManager.registerFileLoader("Leaflet",["jpeg","jpg","png"],m)},91496:(e,t,i)=>{"use strict";i.r(t),i.d(t,{OtgLoader:()=>ve});var n=i(37365),r=i(21706),o=i(83081),s=i(90255),a=i(75468),l=i(68747),c=i(13e3),h=i(7756),u=i(8412),d=i(84045),f=i(96118);function p(e){switch(e){case"meter":case"meters":case"m":default:return 1;case"feet and inches":case"foot":case"feet":case"ft":return.3048;case"inch":case"inches":case"in":return.0254;case"centimeter":case"centimeters":case"cm":return.01;case"millimeter":case"millimeters":case"mm":return.001}}function m(e,t){if(e.metadata){var i=e.metadata["world bounding box"],o=new f.LmvVector3(i.minXYZ[0],i.minXYZ[1],i.minXYZ[2]),s=new f.LmvVector3(i.maxXYZ[0],i.maxXYZ[1],i.maxXYZ[2]);e.bbox=new r.LmvBox3(o,s),e.modelSpaceBBox=e.bbox.clone();var a=function(e,t){var i=e.metadata["custom values"];if(e.placementTransform=t.placementTransform,t.applyScaling){var r="m";e.metadata["distance unit"]&&(r=e.metadata["distance unit"].value),e.scalingUnit=r,"object"==typeof t.applyScaling?(t.applyScaling.from&&(r=t.applyScaling.from),t.applyScaling.to&&(e.scalingUnit=t.applyScaling.to)):e.scalingUnit=t.applyScaling;var o=p(r)/p(e.scalingUnit);if(1!=o){var s=new n.LmvMatrix4(!0),a=new n.LmvMatrix4(!0);a.elements[0]=o,a.elements[5]=o,a.elements[10]=o,t.placementTransform&&s.copy(t.placementTransform),t.applyPlacementInModelUnits?t.placementTransform=a.multiply(s):t.placementTransform=s.multiply(a),e.placementTransform=t.placementTransform,e.scalingFactor=o}}if(i&&i.refPointTransform){e.refPointTransform=new n.LmvMatrix4(!0);var l=e.refPointTransform.elements,c=i.refPointTransform;l[0]=c[0],l[1]=c[1],l[2]=c[2],l[4]=c[3],l[5]=c[4],l[6]=c[5],l[8]=c[6],l[9]=c[7],l[10]=c[8],l[12]=c[9],l[13]=c[10],l[14]=c[11]}else{var h=e.metadata.georeference,u=h&&h.refPointLMV,d=0;if(i&&Object.prototype.hasOwnProperty.call(i,"angleToTrueNorth")&&(d=Math.PI/180*i.angleToTrueNorth),u||d){var f=new n.LmvMatrix4(!0),m=f.elements;m[0]=m[5]=Math.cos(d),m[1]=-Math.sin(d),m[4]=Math.sin(d);var g=new n.LmvMatrix4(!0);m=g.elements,u&&(m[12]=-u[0],m[13]=-u[1],m[14]=-u[2]),e.refPointTransform=f.multiply(g)}}if(t.applyRefPoint&&e.refPointTransform){var v=new n.LmvMatrix4(!0);t.placementTransform&&v.copy(t.placementTransform),v.multiply(e.refPointTransform),e.placementTransform=t.placementTransform=v}else!t.applyRefPoint&&t.placementTransform&&(e.placementTransform=new n.LmvMatrix4(!0).copy(t.placementTransform));return e.placementTransform&&function(e){for(var t=e.elements,i=0;i<4;i++)for(var n=0;n<4;n++)if(i===n){if(1!==t[4*i+n])return!1}else if(0!==t[4*i+n])return!1;return!0}(e.placementTransform)&&(e.placementTransform=null),e.placementTransform}(e,t);a&&!e.bbox.isEmpty()&&e.bbox.applyMatrix4(a),t.globalOffset?e.globalOffset=t.globalOffset:e.globalOffset=e.bbox.getCenter(new f.LmvVector3),function(e,t){var i=e.globalOffset;if(i.x||i.y||i.z){if(t){var r=new n.LmvMatrix4(!0);r.copy(t),(t=r).elements[12]-=i.x,t.elements[13]-=i.y,t.elements[14]-=i.z}else(t=new n.LmvMatrix4(!0)).makeTranslation(-i.x,-i.y,-i.z);e.placementWithOffset=t}else e.placementWithOffset=t}(e,a),e.bbox.isEmpty()||(e.bbox.min.sub(e.globalOffset),e.bbox.max.sub(e.globalOffset)),Object.prototype.hasOwnProperty.call(e.metadata,"double sided geometry")&&e.metadata["double sided geometry"].value&&(e.doubleSided=!0)}}function g(e,t){e[0]-=t.x,e[1]-=t.y,e[2]-=t.z}function v(e,t){if(t&&(t.transformPoint(e.position),t.transformPoint(e.target),t.transformDirection(e.up),isFinite(e.orthoScale))){const i=t.getMaxScaleOnAxis();e.orthoScale*=i}}var y=i(35982),b=i(10149);function x(e,t){let i,n,r,s,a,l,c=0;let h,u,d=new Array,f=0,p=new Uint8Array(4),m=0,g=0;this.onData=function(v){for(v&&(h?d.push(v):(h=v,f=0));h;){let v=Math.min(p.length-m,h.length-f);if(v>0&&(p.set(h.subarray(f,f+v),m),f+=v,m+=v),c)if(u>0)m===p.length&&(u=0,r=new Uint8Array(1024*i),s=new Float32Array(r.buffer),a=new Uint32Array(r.buffer),l=new Uint16Array(r.buffer),p=r,m=0);else{for(;g+i<=m;){if(!e(this,g,c))return;g+=i,c++}m===p.length&&(g=0,m=0)}else m===p.length&&(i=p[1]<<8|p[0],i||(i=t||0),i||o.logger.error("Unknown byte stride."),i%4&&o.logger.error("Expected byte size to be multiple of 4, but got "+i),n=p[3]<<8|p[2],u=i-4,p=new Uint8Array(u),m=0,c++);f===h.length&&(h=d.shift(),f=0)}},this.flush=function(){this.onData(null),v(),m%i>0&&o.logger.warn("unexpected extra bytes at end of stream")},this.idata=function(){return a},this.i16data=function(){return l},this.fdata=function(){return s},this.bdata=function(){return r},this.version=function(){return n},this.byteStride=function(){return i};let v=()=>null;this.done=new Promise((e=>v=e))}var _,E,S,A,w,T=i(83293);function M(e){var t=this.stream=new T.z(e),i=t.getInt32();this.type=t.getString(i),this.version=t.getInt32(),this.types=null,this.entryOffsets=[];var n=t.offset;t.seek(t.byteLength-8);var r=t.getUint32();this.typesOffset=t.getUint32(),t.seek(this.typesOffset);var o=this.readU32V();this.types=[];for(var s=0;s=this.getEntryCounts())return null;this.stream.seek(this.entryOffsets[e]);var t=this.stream.getUint32();return t>=this.types.length?null:this.types[t]},M.prototype.readPathID=function(){let e,t=this.stream;if(this.version<2){let i=t.getUint16();if(!i)return null;if(t.getUint16(),1==i)return"";e=t.getUint16();for(let n=2;n2)return null;var r=e.stream,o={isPerspective:!r.getUint8(),position:e.readVector3f(),target:e.readVector3f(),up:e.readVector3f(),aspect:r.getFloat32(),fov:r.getFloat32()*(180/Math.PI)};return n.version<2&&(r.getFloat32(),r.getFloat32()),o.orthoScale=r.getFloat32(),o}(t,i)}if(r&P&&(n.cameraTransform=e.readTransform(),n.camera&&n.cameraTransform&&v(n.camera,n.cameraTransform)),r&D&&(n.renderMode=e.readU8()),r&L&&(n.primitiveDisplayFlags=e.readU8()),r&R&&(n.overrideSet=e.readVarint()),r&I)if(n.clipPlaneMode=e.readU8(),0===n.clipPlaneMode){n.sectionCount=e.readU8(),n.clipData={},n.sectionPlane=[];for(let t=0;t{const{defaultMaterialIndex:i,materialOverrides:n}=e;i&&t.add(i),null==n||n.forEach((e=>{t.add(e.materialIndex)}))}));const i=[...t].filter((e=>!this.materialIdToHash[e]));i.length&&(this.needExtraMaterials=!0);for(const e of i){const t=this.getMaterialHash(e);t&&(this.extraMatHashes[e]=t)}},q.prototype.getGeometryHash=function(e){var t;if(null===(t=this.geomMetadata)||void 0===t||!t.hashes)return null;var i=this.geomMetadata.hashes[e];return null!=i&&i.length?i:null},q.prototype.initEmptyLists=function(e){var t=this,i=t.fragments={};i.length=t.metadata.stats.num_fragments,i.numLoaded=0,i.boxes=e.fragmentTransformsDouble?new Float64Array(6*i.length):new Float32Array(6*i.length),i.transforms=e.fragmentTransformsDouble?new Float64Array(12*i.length):new Float32Array(12*i.length),i.materials=(0,b.z)(i.length,t.metadata.stats.num_materials),i.geomDataIndexes=(0,b.z)(i.length,t.metadata.stats.num_geoms),i.fragId2dbId=new Int32Array(i.length),i.visibilityFlags=new Uint8Array(i.length),i.topoIndexes=null,e.buildDbId2FragIdMap&&(i.dbId2fragId={}),t.geomMetadata={hashes:null,byteStride:0,version:0,numLoaded:0,hashToIndex:new Map},t.materialHashes={hashes:null,byteStride:0,version:0,numLoaded:0},t.materials={name:"LMVTK Simple Materials",version:"1.0",scene:{SceneUnit:8215,YIsUp:0},materials:{}}},q.prototype.loadAsyncResource=function(e,t,i,n){var r=this;this.pendingRequests++,t=(0,d.pathToURL)(t,e.basePath),d.ViewingService.getItem(e,t,(function(e){r.pendingRequests--,n(e)}),e.onFailureCallback,{responseType:i||"arraybuffer"})},q.prototype.loadAsyncProgressive=function(e,t,i,n,r){var o=this;t=(0,d.pathToURL)(t,e.basePath),d.ViewingService.getItem(e,t,(function(){o.postLoad(e,n)}),r||e.onFailureCallback,{responseType:"arraybuffer",ondata:function(e){i.onData(e)},abortSignal:o.abortController.signal,useFetch:!0})},q.prototype.loadMetadata=function(e,t){var i=this;this.loadAsyncResource(e,t,"json",(function(r){i.metadata=r,i.manifest=i.metadata.manifest,i.numGeoms=i.metadata.stats.num_geoms,i.processViewPointData(e),i.processMetadata(e),i.initEmptyLists(e);var o=i.metadata.manifest,s=o.shared_assets.pdb;for(let e in s)i.propertydb[e]&&i.propertydb[e].push({path:s[e],isShared:!0});var a=o.assets.pdb;for(let e in a)i.propertydb[e]&&i.propertydb[e].push({path:a[e],isShared:!1});o.assets.animations&&i.loadAsyncResource(e,o.assets.animations,"json",(function(e){i.animations=e,function(e){if(e.animations){var t=e.animations.animations;if(t)for(var i=e.globalOffset,r=(new n.LmvMatrix4).makeTranslation(i.x,i.y,i.z),o=(new n.LmvMatrix4).makeTranslation(-i.x,-i.y,-i.z),s=new n.LmvMatrix4,a=new n.LmvMatrix4,l=0;li.geomMetadata.numLoaded||g>i.materialHashes.numLoaded)return!1;f=!i.dbIdFilter||i.dbIdFilter[v]?1&y?l.MeshFlags.MESH_HIDE:0:l.MeshFlags.MESH_NOTLOADED,p.visibilityFlags[h]=f;var b=i.metadata.fragmentTransformsOffset||c,x=n+4;r.set(d[x+0]+b.x,d[x+1]+b.y,d[x+2]+b.z),s.x=d[x+3],s.y=d[x+4],s.z=d[x+5],s.w=d[x+6],o.set(d[x+7],d[x+8],d[x+9]),a.compose(r,s,o),i.placementWithOffset&&a.multiplyMatrices(i.placementWithOffset,a);var _=a.elements,E=p.transforms,S=12*h;if(E[S+0]=_[0],E[S+1]=_[1],E[S+2]=_[2],E[S+3]=_[4],E[S+4]=_[5],E[S+5]=_[6],E[S+6]=_[8],E[S+7]=_[9],E[S+8]=_[10],E[S+9]=_[12],E[S+10]=_[13],E[S+11]=_[14],!p.boxesLoaded){let e=p.boxes,t=6*h;for(let i=0;i<3;i++){let n=Math.abs(_[i]);n+=Math.abs(_[i+4]),n+=Math.abs(_[i+8]),n*=.5;let r=_[12+i];e[t+i]=r-n,e[t+i+3]=r+n}}return p.numLoaded=h+1,e.onLoaderEvent("fragment",h),!0}));return this.loadAsyncProgressive(e,t,h,"all_fragments"),h},q.prototype.handleHashListRequestFailures=function(e){this.metadata&&(this.geomHashListFailure&&this.metadata.stats.num_geoms>0&&e.onFailureCallback.apply(e,this.geomHashListFailure),this.matHashListFailure&&this.metadata.stats.num_materials>0&&e.onFailureCallback.apply(e,this.matHashListFailure),this.geomHashListFailure=null,this.matHashListFailure=null)},q.prototype.loadGeometryHashList=function(e,t){var i=this;let n=new x((function(e,t,n){return!!i.metadata&&(i.geomMetadata.hashes||(i.geomMetadata.hashes=new Array(i.numGeoms+1),i.geomMetadata.byteStride=e.byteStride(),i.geomMetadata.version=e.version()),i.geomMetadata.hashes[n]=(0,y.bin16ToPackedString)(e.i16data(),t/2),i.geomMetadata.numLoaded=n,!0)}),20);return this.loadAsyncProgressive(e,t,n,"geometry_ptrs",(function(){i.geomHashListFailure=arguments,i.handleHashListRequestFailures(e),i.postLoad(e,"geometry_ptrs",n)})),n},q.prototype.loadMaterialHashList=function(e,t){var i=this;let n=new x((function(e,t,n){return!!i.metadata&&(i.materialHashes.hashes||(i.numMaterials=i.metadata.stats.num_materials,i.materialHashes.hashes=new Array(i.numMaterials+1),i.materialHashes.byteStride=e.byteStride(),i.materialHashes.version=e.version()),i.materialHashes.hashes[n]=(0,y.bin16ToPackedString)(e.i16data(),t/2),i.materialHashes.numLoaded=n,!0)}),20);return this.loadAsyncProgressive(e,t,n,"material_ptrs",(function(){i.matHashListFailure=arguments,i.handleHashListRequestFailures(e),i.postLoad(e,"material_ptrs",n)})),n},q.prototype.processMetadata=function(e){var t=this,i=t.metadata;m(t,e);var n=t.placementWithOffset;if(i.cameras){t.cameras=i.cameras;for(var r=0;r!t(e,i)}static _buildOrCondition(e){const t=new Array;if(e instanceof Array)for(let i=0;i{for(const n of t)if(n(e,i))return!0;return!1}}static _buildAndCondition(e){const t=new Array;if(e instanceof Array)for(let i=0;i{let n=!0;for(const r of t)n&=r(e,i);return n}}static _buildEnclosesClause(e){const t=e[0];let i;for(i in t)break;const n=new ie.Box3;[n.min.x,n.min.y,n.min.z,n.max.x,n.max.y,n.max.z]=t[i];const r=e.length>1&&"number"==typeof e[2]?e[2]:1e-8;return 0!==r&&n.expandByScalar(r),(e,t)=>(e.getFragmentList().getWorldBounds(t,ne),n.containsBox(ne))}static _buildIntersectsClause(e){const t=e[0];let i;for(i in t)break;const n=new ie.Box3;return[n.min.x,n.min.y,n.min.z,n.max.x,n.max.y,n.max.z]=t[i],(e,t)=>(e.getFragmentList().getWorldBounds(t,ne),n.intersectsBox(ne))}static _buildExtentClause(e){return(t,i)=>{const n=new ie.Box3;t.getFragmentList().getWorldBounds(i,n);const r=new ie.Vector3;n.getSize(r);return r.x*r.y*r.z>e}}static _parse(e){let t;for(t in e)break;switch(t){case"$not":return this._buildNotCondition(e[t]);case"$or":return this._buildOrCondition(e[t]);case"$and":return this._buildAndCondition(e[t]);case"$encloses":return this._buildEnclosesClause(e[t]);case"$intersects":return this._buildIntersectsClause(e[t]);case"$extent":return this._buildExtentClause(e[t]);default:return void console.warn("Spatial Query Parser: condition type not supported, given",t)}}static parse(e){return this._parse(e)}}class oe{_source;_predicate;static validate(e){return!0}fromString(e){if(this._source!==e){if(this._predicate=void 0,void 0!==e&&0!==e.length)return oe.validate(e)?void(this._source=e):(console.warn("Validation of spatial query failed, given:",e),void(this._source=void 0));this._source=void 0}}fromObject(e){if(void 0===e||0===Object.keys(e).length)return this._source=void 0,void(this._predicate=void 0);const t=JSON.stringify(e);this.fromString(t)}isEmpty(){return void 0===this._source}isReady(){return!!this._predicate}initialize(){if(this.isEmpty()||this.isReady())return;const e=JSON.parse(this._source,((e,t)=>"number"==typeof t?parseFloat(t):t));this._predicate=re.parse(e)}get isFragmentPassing(){return this._predicate}}const se=/(?["'])\?(.*?)\k/g;class ae{_source;_fragmentIDs;_extension;_initializing=!1;static validate(e){return!0}static async preprocessAttributeLookups(e,t,i){const n=await e.getAttributeDefinitions(t)||new Array,r=i.matchAll(se);for(const e of r){const t=e[2].trim();let r=n.filter((e=>e.name===t)).map((t=>`${e[0][0]}s.props.${t.propertyHash}${e[0][0]}`));if(1===r.length)i=i.replace(e[0],r[0]);else console.error(`Expected unique property from hash lookup, found ${r.length}, given`,e[2]),i=i.replace(e[0],'"s.props.unresolved"')}return i}fromString(e){if(this._source!==e){if(this._fragmentIDs=void 0,void 0!==e&&0!==e.length)return ae.validate(e)?void(this._source=e):(console.warn("Validation of property query failed, given:",e),void(this._source=void 0));this._source=void 0}}fromObject(e){if(void 0===e||0===Object.keys(e).length)return this._source=void 0,void(this._fragmentIDs=void 0);const t=JSON.stringify(e);this.fromString(t)}fromDbIDs(e,t){if(void 0===e||void 0===t)return void(this._fragmentIDs=void 0);const i=e.getInstanceTree(),n=new Array;t.forEach((e=>i.enumNodeFragments(e,(e=>{n.push(e)}),!0))),this._fragmentIDs=new Set(n)}isEmpty(){return void 0===this._source}isReady(){return!!this._fragmentIDs}isInitializing(){return this._initializing}async initialize(e){var t;if(this.isEmpty()||this.isReady())return;if(this._initializing=!0,void 0===this._extension){const t=e.loader.viewer3DImpl.api;this._extension=await t.loadExtension("Autodesk.Filter")}if(void 0===this._extension)return void console.warn("Expected loading Autodesk.Filter extension to succeed.");const i=await ae.preprocessAttributeLookups(this._extension,e,this._source),n=JSON.parse(i,((e,t)=>"number"==typeof t?parseFloat(t):t)),r=await this._extension.getModelIdsWithFilter(e,n,void 0,void 0,!1),o=null===(t=r.ids)||void 0===t?void 0:t.concat(r.ids2??[]);this.fromDbIDs(e,o),this._initializing=!1}isFragmentPassing(e,t){return this._fragmentIDs.has(t)}}class le{_asyncInit;_match;_initializing=!1;_initialized=!1;fromObjects(e,t){this._asyncInit===e&&this._match===t||(this._asyncInit=e,this._match=t,this._initialized=!1)}isEmpty(){return void 0===this._match}isReady(){return!(void 0!==this._asyncInit)||!this._initializing&&this._initialized}needsInitializing(){return!(void 0!==this._asyncInit&&(this._initializing||this._initialized))}isInitializing(){return this._initializing}async initialize(e){if(!this.needsInitializing())return;this._initializing=!0;const t=e.loader.viewer3DImpl.api;await this._asyncInit(e,t),this._initializing=!1,this._initialized=!0}isFragmentPassing(e,t){return this._match(e,t)}}const ce=Object.freeze({FRAGMENT_LIST_READY:1,BOUNDING_VOLUME_HIERARCHY_READY:2,PROPERTIES_READY:4}),he=Object.freeze({ON_FRAGMENT_READY:"immediate",ON_FRAGMENT_LIST_READY:"fast",ON_BOUNDING_VOLUME_HIERARCHY_READY:"exact"}),ue=he.ON_BOUNDING_VOLUME_HIERARCHY_READY,de=Object.freeze({ANY:0,ALL:1}),fe=de.ALL;class pe{_model;_rootCondition=fe;_active=!1;_spatialQuery=new oe;_spatialQueryLoadTimeBehavior=ue;_propertyQuery=new ae;_lambdaQuery=new le;_state=0;constructor(e){this.evaluate=e,this._state=0,this._isFragmentPassingImpl=this._isFragmentPassing_true}onModelRootReady(e){this._model=e}onFragmentReady(e){this._isFragmentPassingImpl===this._isFragmentPassing_spatial&&this.evaluate(e)}onFragmentListReady(){this.update(ce.FRAGMENT_LIST_READY)}onBoundingVolumeHierarchyReady(){this.update(ce.BOUNDING_VOLUME_HIERARCHY_READY)}onPropertiesReady(){this.update(ce.PROPERTIES_READY)}setRootCondition(e){void 0!==e&&this._rootCondition!==e&&(this._rootCondition=e)}setSpatialQueryBehavior(e){void 0!==e&&this._spatialQueryLoadTimeBehavior!==e&&(this._spatialQueryLoadTimeBehavior=e)}setSpatialQuery(e){this._spatialQuery.fromObject(e),this._active||=!this._spatialQuery.isEmpty()}setPropertyQuery(e){this._propertyQuery.fromObject(e),this._active||=!this._propertyQuery.isEmpty()}setLambdaQuery(e,t){this._lambdaQuery.fromObjects(e,t),this._active||=!this._lambdaQuery.isEmpty()}prepare(e){var t,i,n,r,o,s;this.setSpatialQuery(null===(t=e.filter)||void 0===t?void 0:t.spatial_query),this.setPropertyQuery(null===(i=e.filter)||void 0===i?void 0:i.property_query),this.setLambdaQuery(null===(n=e.filter)||void 0===n?void 0:n.asyncInit,null===(r=e.filter)||void 0===r?void 0:r.match);switch(null===(o=e.filter)||void 0===o?void 0:o.root_condition){case"or":this.setRootCondition(de.ANY);break;case"and":this.setRootCondition(de.ALL);break;default:this.setRootCondition(fe)}const a=null===(s=e.filter)||void 0===s?void 0:s.spatial_behavior;switch(a){case he.ON_FRAGMENT_READY:case he.ON_FRAGMENT_LIST_READY:case he.ON_BOUNDING_VOLUME_HIERARCHY_READY:this.setSpatialQueryBehavior(a);break;default:this.setSpatialQueryBehavior(ue)}const l=!this._spatialQuery.isEmpty(),c=this._propertyQuery.isEmpty(),h=this._rootCondition===de.ANY||c,u=this._spatialQueryLoadTimeBehavior===he.ON_FRAGMENT_READY;l&&u&&h&&(this._spatialQuery.initialize(),this._isFragmentPassingImpl=this._isFragmentPassing_spatial)}update(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(e&&this._state&e)return;this._state|=e;if(this._spatialQuery.isEmpty()&&this._propertyQuery.isEmpty()&&this._lambdaQuery.isEmpty()){if(this._isFragmentPassingImpl=this._isFragmentPassing_true,!this._active)return;return void this.evaluate()}this._state|=void 0!==e?e:0;const i=!this._lambdaQuery.isEmpty(),n=!this._lambdaQuery.needsInitializing()||!!(this._state&ce.FRAGMENT_LIST_READY);let r=!i;switch(this._spatialQueryLoadTimeBehavior){case he.ON_FRAGMENT_READY:r&&=!0;break;case he.ON_FRAGMENT_LIST_READY:r&&=!!(this._state&ce.FRAGMENT_LIST_READY);break;case he.ON_BOUNDING_VOLUME_HIERARCHY_READY:r&&=!!(this._state&ce.BOUNDING_VOLUME_HIERARCHY_READY)}const s=!i&&!!(this._state&ce.FRAGMENT_LIST_READY)&&!!(this._state&ce.PROPERTIES_READY),a=!this._spatialQuery.isEmpty();a&&r&&!this._spatialQuery.isReady()?(this._spatialQuery.initialize(),t=!0):!a||i||r||(t=!1);const l=!this._propertyQuery.isEmpty();if(l&&s&&!this._propertyQuery.isReady()&&!this._propertyQuery.isInitializing()){const e=this;return void this._propertyQuery.initialize(this._model).then((()=>e.update(void 0,!0)))}if(!l||i||s&&!this._propertyQuery.isInitializing()||(t=!1),i&&n&&!this._lambdaQuery.isReady()&&!this._lambdaQuery.isInitializing()){const e=this;return void this._lambdaQuery.initialize(this._model).catch((e=>{o.logger.warn("Filter initialization failed, falling back to load the whole model",e),this.setLambdaQuery(void 0)})).then((()=>e.update(void 0,!0)))}if(i&&n&&this._lambdaQuery.isReady())console.warn("Lambda queries are currently disabled."),this._isFragmentPassingImpl=this._isFragmentPassing_lambda,t=!0;else{const e=a&&r&&this._spatialQuery.isReady(),t=l&&s&&this._propertyQuery.isReady();switch(this._rootCondition|a<<1|e<<2|l<<3|t<<4){case 6:case 14:case 7:this._isFragmentPassingImpl=this._isFragmentPassing_spatial;break;case 24:case 26:case 25:this._isFragmentPassingImpl=this._isFragmentPassing_property;break;case 30:this._isFragmentPassingImpl=this._isFragmentPassing_any;break;case 31:this._isFragmentPassingImpl=this._isFragmentPassing_all;break;default:this._isFragmentPassingImpl=this._isFragmentPassing_false}}this._isFragmentPassingImpl!==this._isFragmentPassing_false&&t&&this.evaluate()}evaluate(){throw new TypeError("Method expected to be replaced.")}_isFragmentPassing_true(){return!0}_isFragmentPassing_false(){return!1}_isFragmentPassing_spatial(e){return this._spatialQuery.isFragmentPassing(this._model,e)}_isFragmentPassing_property(e){return this._propertyQuery.isFragmentPassing(this._model,e)}_isFragmentPassing_all(e){return this._spatialQuery.isFragmentPassing(this._model,e)&&this._propertyQuery.isFragmentPassing(this._model,e)}_isFragmentPassing_any(e){return this._spatialQuery.isFragmentPassing(this._model,e)||this._propertyQuery.isFragmentPassing(this._model,e)}_isFragmentPassing_lambda(e){return this._lambdaQuery.isFragmentPassing(this._model,e)}_isFragmentPassingImpl(e){throw new TypeError("This method must be set to a specific evaluation.")}isFragmentPassing(e){if(this._isFragmentPassingImpl===this._isFragmentPassing_true||this._isFragmentPassingImpl===this._isFragmentPassing_false||this._isFragmentPassingImpl===this._isFragmentPassing_lambda)return this._isFragmentPassingImpl(e);return this._isFragmentPassingImpl(e)}get isActive(){return this._active}}const me=Autodesk.Viewing,ge=Autodesk.Viewing.Private;function ve(e){this.viewer3DImpl=e,this.loading=!1,this.tmpMatrix=new n.LmvMatrix4,this.tmpBox=new r.LmvBox3,this.logger=o.logger,this.loadTime=0,this.pendingMaterials=new Map,this.pendingMeshes=new Array,this.pendingRequests=0,this.operationsDone=0,this.viewpointMatHashes=new Set,this.notifiesFirstPixel=!0,this._selectiveLoadingController=new pe(ve.prototype.evaluate.bind(this)),this._lineageUrn=null}function ye(e){var t="",i=e.lastIndexOf("/");return-1!=i&&(t=e.substr(0,i+1)),t}function be(e){return e.acmSessionId?"acmsession="+e.acmSessionId:""}function xe(e,t,i){var n={basePath:t,objectIds:e.ids,globalOffset:e.globalOffset,fragmentTransformsDouble:e.fragmentTransformsDouble,placementTransform:e.placementTransform,applyRefPoint:e.applyRefPoint,queryParams:i,bvhOptions:e.bvhOptions||{isWeakDevice:(0,$.isMobileDevice)()},applyScaling:e.applyScaling,applyPlacementInModelUnits:e.applyPlacementInModelUnits,loadInstanceTree:e.loadInstanceTree};return(0,u.initLoadContext)(n)}function _e(e){return Math.floor(100*e.fragsLoaded/e.metadata.stats.num_fragments)}ve.prototype.dtor=function(){this.bvhWorker&&(this.bvhWorker.terminate(),this.bvhWorker=null,o.logger.debug("SVF loader dtor: on svf worker.")),this.svf&&(this.svf.loadDone||console.log("stopping load before it was complete"),this.svf.abort(),this.svf.propDbLoader&&(this.svf.propDbLoader.dtor(),this.svf.propDbLoader=null)),this.viewer3DImpl.geomCache()&&this.model&&(this.loading&&this.viewer3DImpl.geomCache().cancelRequests(this.svf.geomMetadata.hashToIndex.keys()),this.pendingRequests=0,this.removeMeshReceiveListener()),this.viewer3DImpl=null,this.model=null,this.svf=null,this.logger=null,this.tmpMatrix=null,this.loading=!1,this.loadTime=0},ve.prototype.isValid=function(){return null!=this.viewer3DImpl},ve.prototype.removeMeshReceiveListener=function(){this.meshReceivedListener&&(this.viewer3DImpl.geomCache().loaderRemoved(),this.viewer3DImpl.geomCache().removeEventListener(J.MESH_RECEIVE_EVENT,this.meshReceivedListener),this.viewer3DImpl.geomCache().removeEventListener(J.MESH_FAILED_EVENT,this.meshFailedListener),this.viewer3DImpl.geomCache().removeEventListener(J.MATERIAL_RECEIVE_EVENT,this.materialReceiveListener),this.viewer3DImpl.geomCache().removeEventListener(J.MATERIAL_FAILED_EVENT,this.materialReceiveListener),this.meshReceivedListener=null,this.meshFailedListener=null)},ve.prototype.loadFile=function(e,t,i,n){if(!this.viewer3DImpl)return o.logger.log("SVF loader was already destructed. So no longer usable."),!1;if(this.viewer3DImpl._signalNoMeshes(),this.loading)return o.logger.log("Loading of SVF already in progress. Ignoring new request."),!1;if(this.loading=!0,t.acmSessionId)this.svfUrn=t.acmSessionId.split(",")[0];else{console.warn("DEPRECATED: Automatic derivation of URN will be removed in a future release. Please set the acmSessionId parameter when loading OTG data.");var r=e.indexOf(W);if(-1===r&&(r=e.indexOf(j)),-1!==r){var s=e.split("/"),a=s[1]+"?version="+s[2],l=me.toUrlSafeBase64(a);this.svfUrn=l}}return this.sharedDbPath=t.sharedPropertyDbPath,this.currentLoadPath=e,this.basePath=ye(e),this.acmSessionId=t.acmSessionId,this.options=t,this.queryParams=be(t),this.loadContext=xe(t,this.basePath,this.queryParams),this.loadContext.raiseError=function(e,t,n){i&&i({code:e,msg:t,args:n})},this.loadContext.onFailureCallback=d.ViewingService.defaultFailureCallback.bind(this.loadContext),this.viewer3DImpl.isWebGPU()&&(this.loadContext.buildDbId2FragIdMap=!0),this._selectiveLoadingController.prepare(t),this.loadModelRoot(this.loadContext,i),n&&n(),!0},ve.prototype._requestRepaint=function(){var e;null!==(e=this.viewer3DImpl)&&void 0!==e&&e.modelVisible(this.model.id)&&this.viewer3DImpl.api.dispatchEvent({type:me.LOADER_REPAINT_REQUEST_EVENT,loader:this,model:this.model})},ve.prototype.loadModelRoot=function(e,t){this.t0=(new Date).getTime(),this.firstPixelTimestamp=null;var i=this;i.viewer3DImpl.geomCache();var n=this.svf=new q;return n.basePath=e.basePath,e.onLoaderEvent=function(e,r){if(i.svf){if("otg_root"===e){i.onModelRootLoadDone(n),t&&t(null,i.model),i.makeBVHInWorker();var s=i.viewer3DImpl.geomCache();s||o.logger.error("geomCache is required for loading OTG models."),s.loaderAdded(i.options.acmSessionId,i._lineageUrn),i.meshReceivedListener=e=>i.onMeshReceived(e.geom),i.meshFailedListener=e=>i.onMeshError(e.hash),s.addEventListener(J.MESH_RECEIVE_EVENT,i.meshReceivedListener),s.addEventListener(J.MESH_FAILED_EVENT,i.meshFailedListener),i.materialReceiveListener=function(e){e.material&&e.material.length?i.onMaterialLoaded((0,ee.TN)(e.material),e.hash):i.onMaterialLoaded(null,e.hash)},s.addEventListener(J.MATERIAL_RECEIVE_EVENT,i.materialReceiveListener),s.addEventListener(J.MATERIAL_FAILED_EVENT,i.materialReceiveListener),i.svf.loadDone=!1}else if("fragment"===e){if(!i.options.skipMeshLoad){const e=r;i._selectiveLoadingController.isActive?i._selectiveLoadingController.onFragmentReady(e):i.tryToActivateFragment(e,"fragment")}i.options.onFragmentListLoadProgress&&i.trackFragmentListLoadProgress()}else if("all_fragments"===e)i.options.skipPropertyDb||(i.loadPropertyDb(),i._selectiveLoadingController.onPropertiesReady()),i.fragmentDataLoaded=!0,i._selectiveLoadingController.onFragmentListReady(),i.viewer3DImpl.api.fireEvent({type:Q.MODEL_ROOT_LOADED_EVENT,svf:n,model:i.model}),i.options.skipMeshLoad||!i.svf.fragments.length?i.onGeomLoadDone():i.onOperationComplete();else if("viewpointData"===e){if(i.svf.needExtraMaterials){Object.values(i.svf.extraMatHashes).forEach((e=>i.viewpointMatHashes.add(e))),i.tryToLoadExtraMaterials()}else i.onOperationComplete();i.svf.viewpointTreeRoot&&i.options.addViews&&i.options.addViews(i.svf.viewpointTreeRoot,i.model)}}else console.error("load callback called after load was aborted")},e.onOperationComplete=function(){i.onOperationComplete()},this.svf.beginLoad(this.loadContext,(0,d.pathToURL)(this.currentLoadPath)),!0},ve.prototype.makeBVHInWorker=function(){var e=this;e.bvhWorker=(0,h.createWorker)("OtgBvhWorker");e.bvhWorker.addEventListener("message",(function(t){console.log("Received BVH from worker");var i=t.data.bvh;e.model&&(e.svf.bvh=i,e.model.setBVH(new a.NodeArray(i.nodes,i.useLeanNodes),i.primitives,e.options.bvhOptions),e.model.setFragmentBoundingBoxes(t.data.boxes,t.data.boxStride),e._selectiveLoadingController.onBoundingVolumeHierarchyReady(),e._requestRepaint()),e.bvhWorker.terminate(),e.bvhWorker=null,e.onOperationComplete()}));var t=Object.assign({},e.loadContext);t.operation="LOAD_OTG_BVH",t.raiseError=null,t.onFailureCallback=null,t.onLoaderEvent=null,t.onOperationComplete=null,t.fragments_extra=(0,d.pathToURL)(e.basePath)+e.svf.manifest.assets.fragments_extra,t.placementTransform=e.svf.placementTransform,t.placementWithOffset=e.svf.placementWithOffset,t.fragmentTransformsOffset=e.svf.metadata.fragmentTransformsOffset,t.globalOffset=e.svf.globalOffset,te.USE_HLOD&&(t.wantSort=!0),t.fragments_extra?e.bvhWorker.doOperation(t):e.onOperationComplete()},ve.prototype.tryToActivateFragment=function(e,t){var i=this.svf,n=this.model;if(!n)return;const r=i.fragments.visibilityFlags[e],o=r&l.MeshFlags.MESH_NOTLOADED||this._selectiveLoadingController.isActive&&!this._selectiveLoadingController.isFragmentPassing(e),s=!!(r&l.MeshFlags.MESH_HIDE),a=i.loadOptions.skipHiddenFragments??!1;if(o||s&&a)return n.getFragmentList().setFlagFragment(e,l.MeshFlags.MESH_NOTLOADED,!0),n.getFragmentList().setFragOff(e,!0),void this.trackGeomLoadProgress(i,e,!1);s&&(n.getFragmentList().setFlagFragment(e,l.MeshFlags.MESH_HIDE,!1),n.getFragmentList().setFlagFragment(e,l.MeshFlags.MESH_VISIBLE,!1));var c=!1,h=i.fragments.materials[e],u=i.getMaterialHash(h),d=this.findOrLoadMaterial(n,u);d||("fragment"===t&&(this.pendingMaterials.get(u).push(e),this.pendingRequests++),"material"!==t&&(c=!0));var f=i.fragments.geomDataIndexes[e];if(0!==f){var p=n.getGeometryList().getGeometry(f);if(p?"fragment"===t&&n.getGeometryList().addInstance(f):("fragment"===t&&this.loadGeometry(f,e),c=!0),!c){n.getFragmentList().getOriginalWorldMatrix(e,this.tmpMatrix);var m=this.viewer3DImpl.setupMesh(n,p,u,this.tmpMatrix);m.geomId=f,n.activateFragment(e,m,!!i.placementTransform),this.viewer3DImpl.geomCache().updateGeomImportance(n,e),this.trackGeomLoadProgress(i,e,!1)}}else(d||"material"===t)&&this.trackGeomLoadProgress(i,e,!1)},ve.prototype.tryToLoadExtraMaterials=function(){var e=this.svf,t=this.model;if(t&&!e.extraMaterialLoaded){e.extraMaterialLoaded=!0;for(const i of Object.values(e.extraMatHashes))this.findOrLoadMaterial(t,i)}},ve.prototype.onModelRootLoadDone=function(e){var t;e.isOTG=!0,e.geomMetadata.hashToIndex=new Map,e.failedFrags={},e.failedMeshes={},e.failedMaterials={},e.fragsLoaded=0,e.fragsLoadedNoGeom=0,e.nextRepaintPolys=0,e.numRepaints=0,e.urn=this.svfUrn,e.acmSessionId=this.acmSessionId,e.basePath=this.basePath,e.loadOptions=this.options||{};var i=Date.now();o.logger.log("SVF load: "+(i-this.t0));var n=this.model=new Y.Model(e);n.loader=this,n.initialize(),this._selectiveLoadingController.onModelRootReady(n),this.t1=i,o.logger.log("scene bounds: "+JSON.stringify(e.bbox));var r={category:"metadata_load_stats",urn:e.urn,has_topology:!!e.topology,has_animations:!!e.animations,materials:e.metadata.stats.num_materials,is_mobile:(0,$.isMobileDevice)()};o.logger.track(r),this.viewer3DImpl.signalProgress(5,Z.ProgressState.ROOT_LOADED,this.model),e.handleHashListRequestFailures(this.loadContext),e.propDbLoader=new c.PropDbLoader(this.sharedDbPath,this.model,this.viewer3DImpl.api),this._lineageUrn=null===(t=n.getDocumentNode())||void 0===t?void 0:t.lineageUrn(),this._lineageUrn||(this._lineageUrn=K.BubbleNode.parseLineageUrnFromDecodedUrn(Autodesk.Viewing.fromUrlSafeBase64(e.urn)))},ve.prototype.trackGeomLoadProgress=function(e,t,i){if(i){if(e.failedFrags[t])return void console.log("Double fail",t);e.failedFrags[t]=1}var n=_e(e);e.fragsLoaded++;var r=_e(e);r>n&&this.viewer3DImpl.signalProgress(r,Z.ProgressState.LOADING,this.model),this.model.getGeometryList().geomPolyCount>e.nextRepaintPolys&&(this.firstPixelTimestamp||(this.firstPixelTimestamp=Date.now()),e.numRepaints++,e.nextRepaintPolys+=1e5*Math.pow(1.5,e.numRepaints),this._requestRepaint()),e.fragsLoaded===e.metadata.stats.num_fragments&&this.onOperationComplete(),this.trackOnDemandLoadProgress()},ve.prototype.trackFragmentListLoadProgress=function(){var e=this.svf;function t(e){return Math.floor(100*e.fragsLoadedNoGeom/e.metadata.stats.num_fragments)}var i=t(e);e.fragsLoadedNoGeom++;var n=t(e);n>i&&this.options.onFragmentListLoadProgress(this.model,n)},ve.prototype.onOperationComplete=function(){this.operationsDone++,4===this.operationsDone&&this.onGeomLoadDone()},ve.prototype.onMaterialLoaded=async function(e,t,i){if(this.loading){var n=this.pendingMaterials.get(t);if(n){var r=this.viewer3DImpl.matman();if(e){e.hash=t;try{var o=await r.convertSharedMaterial(this.model,e,t);s.TextureLoader.loadMaterialTextures(this.model,o,this.viewer3DImpl),r.hasTwoSidedMaterials()&&this.viewer3DImpl.renderer().toggleTwoSided(!0)}catch(e){this.svf.failedMaterials[t]=1}}else this.svf.failedMaterials[t]=1;for(var a=0;a0&&(n.first_pixel_time=i),o.logger.track(n,!0);const r=this.model.getGeometryList(),a={load_time:this.loadTime,polygons:r.geomPolyCount,fragments:this.model.getFragmentList().getCount(),mem_usage:r.gpuMeshMemory,time_to_first_pixel:this.firstPixelTimestamp-this.t0,viewable_type:"3d",url:this.currentLoadPath,urn:this.svfUrn};ge.analytics.track("viewer.model.loaded",a),this.currentLoadPath=null,this.viewer3DImpl.onLoadComplete(this.model)},ve.prototype.loadPropertyDb=function(){this.svf.propDbLoader.load()},ve.prototype.is3d=function(){return!0},ve.loadOnlyOtgRoot=function(e,t){const i=ye(e),n=xe(t,i,be(t)),r=new q;r.basePath=i;const o=(0,d.pathToURL)(e);return new Promise(((e,t)=>{n.onFailureCallback=()=>e(null),r.loadAsyncResource(n,o,"json",(function(t){r.metadata=t,r.manifest=t.manifest,r.numGeoms=r.metadata.stats.num_geoms,r.processMetadata(n),e(r)}))}))},ve.prototype.waitForFragmentData=async function(){if(this.fragmentDataLoaded)return!0;const e=this.viewer3DImpl.api;return new Promise((t=>{const i=()=>{e.removeEventListener(me.MODEL_ROOT_LOADED_EVENT,n),e.removeEventListener(me.MODEL_UNLOADED_EVENT,r)},n=e=>{e.model.loader===this&&(i(),t(!0))},r=e=>{e.model.loader===this&&(i(),t(!1))};e.addEventListener(me.MODEL_ROOT_LOADED_EVENT,n),e.addEventListener(me.MODEL_UNLOADED_EVENT,r)}))},ve.prototype.trackOnDemandLoadProgress=function(){this.svf.loadDone&&!1===this.fragLoadingInProgress&&0===this.pendingRequests&&this.viewer3DImpl.api.dispatchEvent({type:me.FRAGMENTS_LOADED_EVENT,loader:this,model:this.model})},ve.prototype.evaluate=function(e){if(!this.model||this.options.skipMeshLoad)return;if(void 0!==e)return void this.tryToActivateFragment(e,"fragment");const t=this.model.getFragmentList().fragments.length;for(let e=0;e{"use strict";i.r(t),i.d(t,{MATERIAL_FAILED_EVENT:()=>I,MATERIAL_RECEIVE_EVENT:()=>L,MESH_FAILED_EVENT:()=>D,MESH_RECEIVE_EVENT:()=>P,OtgResourceCache:()=>W});var n=i(55280),r=i(77201),o=i(7756),s=i(8412),a=i(25004),l=i(8600),c=i(96118),h=i(21706),u=i(4897),d=i(12153);function f(e,t,i){return Math.abs(e.x-t.x)3e3||!this.fullSortDone;this.fullSortDone=!s,this.prevNumTasks=this.waitingTasks.length;for(let n=this.waitingTasksHead;n10){o=!0;break}a.importanceNeedsUpdate=!1,a.importance=0;var l=0,c=a.hash;for(const e of i)if(e.isOTG()){var h=e.myData.geomMetadata.hashToIndex.get(c);if(h){var u=e.loader.pendingMeshes[h];if(u){var d=e.myData.fragments.boxes;for(const i of this.viewers)if(-1!==i.impl.modelQueue().getModels().indexOf(e))for(const e of u)l+=g(e,d,t[i.id])}}}if(a.importance=l,!s){for(var f=n;f>this.waitingTasksHead&&l>this.waitingTasks[f-1].importance;)this.waitingTasks[f]=this.waitingTasks[f-1],f--;this.waitingTasks[f]=a}}}return s&&!o&&(this._sortTasks(),this.fullSortDone=!0),!o}makeUrgent(e){var t=0;for(var i in e)!0===e[i]&&(this.urgentHashes[i]=!0,t++);if(0===t)return 0;for(var n=this.waitingTasksHead;n1e4&&this._removeGarbage(),this.waitingTasks[this.waitingTasksHead++]}isEmpty(){return this.waitCount()<=0}waitCount(){return this.waitingTasks.length-this.waitingTasksHead}}const y="otg",b="otg-content",x="otg-lru";class _{constructor(e){this.db=null,this.readTransaction=null,this.loaded=!1,this.opening=!1,this.dbDisabled=this._isDbDisabled(e),!(0,n.isNodeJS)()&&this.dbDisabled&&console.log("IndexedDb disabled"),this.storeName=b,this.storeNameTimestamp=x,this.bothStoreNames=[this.storeName,this.storeNameTimestamp],this.pendingTimestampUpdates={},this.pendingTimestampCount=0,this.pendingStores=[],this._pendingCallbacks=[]}_isDbDisabled(e){return e||(0,n.isNodeJS)()||(0,n.isSafari)()||(0,n.isMobileDevice)()||"undefined"==typeof indexedDB}notifyPendingCallbacks(e){this._pendingCallbacks.forEach((t=>t(e,this.db))),this._pendingCallbacks=[]}open(e){if(this.dbDisabled)return void(e&&e());if(this.loaded)return void(e&&e(null,this.db));if(e&&this._pendingCallbacks.push(e),this.opening)return;this.opening=!0;let t=indexedDB.open(y,1);t.onerror=e=>{console.error("Failed to open or create cache database."),this.dbDisabled=!0,this.notifyPendingCallbacks(e)},t.onsuccess=e=>{this.opening=!1,this.db=e.target.result,this.db.onerror=function(e){console.error("Database error",e)},this.loaded=!0,this.notifyPendingCallbacks()},t.onupgradeneeded=e=>{console.log("Db upgrade",this.storeName);let t=e.target.result;t.createObjectStore(b),t.createObjectStore(x).createIndex(x+"-index","t",{unique:!1})}}deleteOld(e){if(!this.db)return void e();if(this.deleteInProgress)return;this.deleteInProgress=!0;let t=IDBKeyRange.upperBound(Date.now()-3e5,!0),i=[];this.db.transaction([this.storeNameTimestamp]).objectStore(this.storeNameTimestamp).index(this.storeNameTimestamp+"-index").openCursor(t).onsuccess=t=>{let n=t.target.result;if(n&&i.length<200)return i.push(n.primaryKey),void n.continue();if(i.length){console.log("Deleting old objects.",i.length);let t=this.db.transaction(this.bothStoreNames,"readwrite");t.oncomplete=t=>{this.deleteInProgress=!1,console.log("Delete done"),e&&e()},t.onerror=e=>{this.deleteInProgress=!1,console.error("Transaction error.",e)},t.onabort=e=>{this.deleteInProgress=!1;let t=e.target.error;console.log("Failed to delete cached objects",t)};let n=t.objectStore(this.storeName),r=t.objectStore(this.storeNameTimestamp);for(let e=0;e{e()}),t.onerror=t=>{console.error("Transaction error.",t),e&&e(t.target.error)},t.onabort=t=>{"QuotaExceededError"===t.target.error.name&&this.deleteOld((()=>{})),e&&e(t.target.error)},this.writeTransaction=t}for(var t=0;t{console.error("Object store error.",e)},this.writeTransaction.objectStore(this.storeNameTimestamp).put({t:Date.now()},i)}this.pendingStores=[],this.writeTransaction=null}else e&&e()}store(e,t,i){this.db?(t=t.slice(),this.pendingStores.push(e),this.pendingStores.push(t),this.pendingStores.length<200||this.deleteInProgress?i&&i():this.flush(i)):i&&i()}flushTimestamps(e){let t=this.db.transaction([this.storeNameTimestamp],"readwrite");e&&(t.oncomplete=t=>{e()}),t.onerror=t=>{console.error("Transaction error.",t),e&&e(t.target.error)},t.onabort=t=>{"QuotaExceededError"===t.target.error.name&&(console.log("Quota exceeded"),this.deleteOld((()=>{}))),e&&e(t.target.error)};let i=t.objectStore(this.storeNameTimestamp);for(let e in this.pendingTimestampUpdates)i.put({t:this.pendingTimestampUpdates[e]},e);this.pendingTimestampUpdates={},this.pendingTimestampCount=0}_createReadTransaction(){let e=this.readTransaction=this.db.transaction(this.storeName);e.oncomplete=e=>{this.readTransaction=null},e.onerror=e=>{console.error("Transaction error.",e),this.readTransaction=null},e.onabort=e=>{console.warn("Transaction abort",e),this.readTransaction=null}}get(e,t){if(this.opening)return console.error("Tried to get IndexedDb resource while database was still opening"),void t(-1,null);if(!this.db)return void t(-1,null);let i;this.readTransaction||this._createReadTransaction();try{i=this.readTransaction.objectStore(this.storeName).get(e)}catch(t){this._createReadTransaction(),i=this.readTransaction.objectStore(this.storeName).get(e)}i.onsuccess=i=>{if(!i.target.result)return void t(-1,null);let n=i.target.result;t(null,n),this.pendingTimestampUpdates[e]=Date.now(),this.pendingTimestampCount++},i.onerror=e=>{t(e.target.errorCode)}}flushStoresAndTimestamps(){this.db&&this.flush((e=>{e||this.flushTimestamps()}))}size(e){if(!this.db)return void e();let t=0,i=0,n=this.db.transaction([this.storeName]).objectStore(this.storeName).openCursor();n.onsuccess=n=>{let r=n.target.result;if(r){let e=r.value;t+=e.length,i++,r.continue()}else e(null,{size:t,items:i})},n.onerror=function(t){e(t)}}estimateCachedHashCount(e){if(this.opening)return console.error("Tried to get IndexedDb resource while database was still opening"),void e(void 0);if(!this.db)return void e(void 0);let t,i=this.db.transaction(this.storeNameTimestamp);try{t=i.objectStore(this.storeNameTimestamp).openKeyCursor()}catch(t){return void e(void 0)}let n=2;const r=1e3;t.onsuccess=t=>{const o=t.target.result;if(o)if(--n>0)o.advance(999);else{const t=o.key.charCodeAt(0);e(65536e3/t),i.abort()}else e(2==n?0:1==n?r:void 0)},t.onerror=t=>{e(void 0)}}readAllCachedHashes(e){if(this.opening)return console.error("Tried to get IndexedDb resource while database was still opening"),void e([]);if(!this.db)return void e([]);let t,i=this.db.transaction(this.storeNameTimestamp);try{t=i.objectStore(this.storeNameTimestamp).getAllKeys()}catch(t){return void e([])}t.onsuccess=t=>{e(t.target.result)},t.onerror=t=>{e([])}}}var E=i(83081);const S=0,A=1,w={ws:{min:2,max:16},size:{min:500,max:4096}};class T{static FALLBACK_FLIGHT=3e3;static MIN_FLIGHT=1500;static MAX_FLIGHT=3e4;#p;CWND_DEVIATION=30;BETA=.8;FAST_CONVERGENCE=.7;wMax=0;lastReductionTs=performance.now();SCALING=.25;cwnd=0;initialAssetEstimate;#m=0;#g=1e3;#v=new M(1e3);#y=new M(20);wasReset=!1;#b=w.ws.min;#x={count:0,totalBytes:0};constructor(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:()=>null,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>null;this.onFlightSizeUpdated=n,this.onConnectionCountUpdated=r,this.#m=e,this.#x.totalBytes=i,this.#x.count=Math.round(i/t),this.initialAssetEstimate=t,this.wMax=this.#x.totalBytes,this.cwnd=this.wMax*this.BETA,this.#_()}hasCongestionEvent(){if(this.#v.count<3)return!1;const e=this.#v.tail.data,t=this.#v.head.data;if(this.cwndthis.CWND_DEVIATION}shouldTimeout(){if(this.#y.count0)return!1;e=e.prev}return t>=this.#y.MAX_SIZE/2}getMode(){return this.cwnd>this.wMax?A:S}#_(){if(this.shouldTimeout())return this.onFlightSizeUpdated(T.FALLBACK_FLIGHT),clearInterval(this.#p),void this.#E();const e=this.#S();let t=0,i=0,n=0;for(let{data:e}of this.#y){if(3==t++)break;i+=e.receivedBytes,n+=e.receivedCount}const r=Math.round(i/n||e.fragmentSize);let o;const s=e=>e/1e6,a=Math.cbrt(s(this.wMax)*(1-this.BETA)/this.SCALING),l=(performance.now()-this.lastReductionTs)/1e3;if(o=this.cwnd=1e6*(this.SCALING*Math.pow(l-a,3)+s(this.wMax)),this.hasCongestionEvent()){const e=this.getMode()===A?this.BETA:this.FAST_CONVERGENCE;this.lastReductionTs=performance.now(),this.wMax=this.#v.tail.prev.data.receivedBytes,this.#v.clear(),o=e*this.wMax}let c=Math.round(o/r);this.#m=c=Math.min(T.MAX_FLIGHT,Math.max(T.MIN_FLIGHT,c)),E.logger.debug(`${this.#v.head?"Increase":"Congestion"}: CWND=${(o/1e6).toFixed(2)}Mb RX=${(e.receivedBytes/1e6).toFixed(2)}Mb FLIGHT=${c} ( Average Size: ${r} )`),this.onFlightSizeUpdated(c),this.updateConnectionCount()}updateConnectionCount(){const{ws:e,size:t}=w;let i=1;let n=0;for(let{data:e}of this.#y){if(++n>6)break;i=Math.max(e.fragmentSize,i,t.min)}if(i>t.max)return;const r=(t.max-t.min)/(e.max-e.min),o=Math.round((t.max-i)/r);let s=0;for(let{data:e}of this.#y)if(6==++s||e.fragmentSize>i)break;let a=e.min+Math.round(o*Math.pow(s/6,3));a>this.#b&&(this.#b=a,this.onConnectionCountUpdated(a),E.logger.debug(`Updating connection count: ${a}`))}#E(){let e=0,t=0;for(let{data:i}of this.#y)t++{this.#_()}),this.#g))}deviation(e,t){return Math.abs(e-t)/((e+t)/2)*100}static createAndStart(e,t,i,n,r){const o=new T(e,t,i,n,r);return o.#p=setInterval((()=>{o.#_()}),o.#g),o}}class M{MAX_SIZE=2e3;#A=0;totalBytes=0;head;tail;get count(){return this.#A}constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2e3,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(e,t)=>this.count>this.MAX_SIZE;this.MAX_SIZE=e,this.trimEval=t}clear(){this.#A=0,this.totalBytes=0,this.head=null,this.tail=null}onReceived(e,t){this.addNode(new C(e),t)}addNode(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;for(0===this.#A?this.head=e:1===this.#A?(this.tail=e,this.head.setNext(e)):(this.tail.setNext(e),this.tail=e),this.#A+=t;this.trimEval(this.head,this.tail);){var i;const e=this.head.next;this.head.unlink(),this.totalBytes-=this.head.size,this.#A-=(null===(i=this.head.data)||void 0===i?void 0:i.count)||1,this.head=e}this.totalBytes+=e.size}}M.prototype[Symbol.iterator]=function*(){let e=this.tail;for(;e;)yield e,e=e.prev};class C{data;size=0;prev;next;timestamp;constructor(e){this.data=e,e.size&&(this.size=e.size),this.timestamp=Date.now()}setNext(e){return this.next=e,e&&(this.next.prev=this),this}setPrev(e){return this.prev=e,e&&(this.prev.next=this),this}unlink(){var e,t;null===(e=this.prev)||void 0===e||e.setNext(this.next),null===(t=this.next)||void 0===t||t.setPrev(this.prev),this.prev=null,this.next=null}}var P="meshReceived",D="meshFailed",L="materialReceived",I="materialFailed";let R=Autodesk.Viewing.Private,O="false"!==(0,l.getParameterByName)("useOPFS")&&!1!==(0,n.getGlobal)().USE_OPFS;const N=(0,l.getParameterByName)("useAdaptiveStreaming")||(0,n.getGlobal)().USE_ADAPTIVE_STREAMING,F="false"!==N&&!1!==N,U="true"===(0,l.getParameterByName)("disableIndexedDb").toLowerCase()||(0,n.getGlobal)().DISABLE_INDEXED_DB,B="true"===(0,l.getParameterByName)("disableWebSocket").toLowerCase()||(0,n.getGlobal)().DISABLE_WEBSOCKET;let k=U||O||!(0,n.isChrome)();const V={dummy_value:"error"},G={dummy_value:"error"};function z(e){var t=(0,s.initLoadContext)(e);return t.disableIndexedDb=U,t.disableWebSocket=B,t}function H(e,t){return e.importance-t.importance}function W(e){var t,i=new Map,s=new Map,a=new Map,l="OPFS"===(null==e||null===(t=e.cache)||void 0===t?void 0:t.type);(O||l)&&(O=!0,k=!0);var c=(0,o.createWorker)("OtgLoadWorker");c.addEventListener("message",q);for(var h=(0,n.isMobileDevice)()?2:4,u=[],d=[],f=0;f{if(g||y||(y=Date.now()),g||this.requestsReceived<2*S)return g;const e=this.byteSize/this.requestsReceived*.9,t=this.byteSize/((Date.now()-y)/1e3);return F&&(g=T.createAndStart(E+x,e,t,(e=>S=e),(e=>{w.waitingTasks.length/(this.requestsSent+w.waitingTasks.length)*100>5&&c.doOperation({operation:"SET_OTGWS_COUNT",count:e})}))),g},this.byteSize=0,this.refCount=0,this.cachedHashesDb=void 0,this.cachedHashes=null,this.cachedHashesPending=!1,this.cachedHashesEstimate=void 0,this.cachedHashesEstimatePending=!1,this.fromCacheCount=0,this.fromRemoteCount=0,this.requestsSent=0,this.requestsReceived=0;var x=0,E=0;var S=F?T.MIN_FLIGHT:T.FALLBACK_FLIGHT,A=void 0,w=new v,M=this,C=1048576;this._maxMemory=100*C,this._minCleanup=50*C;var N=new Map,B=[];function W(e,t){return!e.cachedHashes||e.cachedHashes.has(t)}function q(e){var t,n,o;if(e.data.event&&e.data.properties)return void R.analytics.track(e.data.event,e.data.properties);if(w.isEmpty()||A||(A=setTimeout(Y,0)),e.data.error){var l=e.data.error,c=l.args.hash;return"m"===l.args.resourceType?(x--,s.set(c,G),M.fireEvent({type:I,hash:c}),console.error("Error loading material.",l.msg,l.args)):(E--,i.set(c,V),M.fireEvent({type:D,hash:c}),console.error("Error loading mesh.",l.msg,l.args)),a.delete(l.hash),void M.requestsReceived++}let h=0;if(e.data.materials)for(let t=0;t{this.cachedHashesDb.readAllCachedHashes((e=>{this.cachedHashes=new Set(e),this.cachedHashesPending=!1})),this.cachedHashesDb=void 0})))},this._clearHashCache=function(){this.cachedHashes=null},this._getHashCacheEstimate=function(){this.cachedHashesEstimatePending||(this.cachedHashesDb=new _(U,!1),this.cachedHashesDb.open(null),this.cachedHashesEstimatePending=!0,this.cachedHashesDb.open((()=>{this.cachedHashesDb.estimateCachedHashCount((e=>{this.cachedHashesEstimate=e,this.cachedHashesEstimatePending=void 0===e}))})))},this._handleCache=function(){if(this.cachedHashes||k)return;const e=this.fromCacheCount+this.fromRemoteCount;if(e<200)return;const t=w.waitCount()*this.fromRemoteCount/e;null!=this.cachedHashesEstimate?this.cachedHashesEstimate<50*t&&this._loadHashCache():t>1e3&&this._getHashCacheEstimate()},this.loaderAdded=function(e,t){this._numActiveLoaders++;var i={operation:"ADD_MODEL_OTG",modelUrn:e,lineageUrn:t,useOpfs:O};c.doOperation(z(i)),this.fromCacheCount=0,this.fromRemoteCount=0},this.loaderRemoved=function(){if(this._numActiveLoaders--,0===this._numActiveLoaders){this._clearHashCache();c.doOperation({operation:"FLUSH_CACHE_AND_DISCONNECT_OTG"})}},this.requestGeometry=function(e,t,r,o,s,l){var c=i.get(r);if(c!==V)if(c)(0,n.isNodeJS)()?setImmediate((()=>this.fireEvent({type:P,geom:c}))):this.fireEvent({type:P,geom:c});else{var h=a.get(r);if(h&&h.refcount)return h.importanceNeedsUpdate=!0,void h.refcount++;var u={operation:"LOAD_CDN_RESOURCE_OTG",type:"g",url:e,lineageUrn:l,hash:r,queryParams:s,importance:0,importanceNeedsUpdate:!0,refcount:1};w.addTask(u),a.set(r,u),A||(A=setTimeout(Y,0))}else(0,n.isNodeJS)()?setImmediate((()=>this.fireEvent({type:D,hash:r}))):this.fireEvent({type:D,hash:r})},this.requestMaterial=function(e,t,i,n,r,o){var l=s.get(i);if(l!==G)if(l)setImmediate((()=>this.fireEvent({type:L,material:l,hash:i})));else{var h=a.get(i);if(h&&h.refcount)h.refcount++;else{var u={operation:"LOAD_CDN_RESOURCE_OTG",type:"m",urls:[e],lineageUrns:[o],hashes:[i],queryParams:r,refcount:1,couldBeInCache:[W(this,i)]};a.set(i,u),c.doOperation(z(u)),x++,this.requestsSent++}}else setImmediate((()=>this.fireEvent({type:I,error:l,hash:i,repeated:!0})))},this.cancelRequests=function(e){for(var t of e){var i=a.get(t);i&&i.refcount--}w.filterTasks((e=>{const t=a.get(e),i=t&&t.refcount;return i||a.delete(e),i}))},this.updateGeomImportance=function(e,t){return function(e,t){var i=e.getFragmentList(),n=i.getGeometry(t);if(i.getWorldBounds(t,m),n){var r,o,s,a,l=n.importance||0,c=2*((o=(r=m).max.x-r.min.x)*(s=r.max.y-r.min.y)+s*(a=r.max.z-r.min.z)+a*o);n.importance=Math.max(l,c)}}(e,t)},this.cleanup=function(e){if(!(0===N.size||!e&&this.byteSize=n;r++){var o=t[r];i.delete(o.hash),N.delete(o.id),this.byteSize-=o.byteSize,o.dispose()}}},this.waitForGeometry=function(e,t){var n=0,r=w.makeUrgent(e);if(0===r&&e)t(e);else{Y(),this.addEventListener(P,a),this.addEventListener(D,l);for(let t in e){var o=i.get(t);o&&s(t,o)}}function s(i,o){w.removeUrgent(i),!0!=!e[i]&&(e[i]=o,++n=1){N.get(e.id)&&N.delete(e.id)}else 0===t&&N.set(e.id,e);e._modelRefCount=t},this.addMaterialData=function(e,t){s.set(e,t)},this.clearOpfsCache=function(){c.doOperation({operation:"CLEAR_OPFS_CACHE"})},this.reportLoadingState=function(){console.log("OtgResourceCache:",{sent:this.requestsSent,received:this.requestsReceived});c.doOperation({operation:"REPORT_LOADING_STATE"})}}function j(){return this._modelRefCount}a.EventDispatcher.prototype.apply(W.prototype);let q=!1;function X(e,t){t?t.setGeomRefCount(this,e):(q||(console.warn("geometry_setModelRefCount: geomCache is not defined"),q=!0),this._modelRefCount=1)}},13e3:(e,t,i)=>{"use strict";i.r(t),i.d(t,{PropDbLoader:()=>T,clearPropertyWorkerCache:()=>_,getPropWorker:()=>b,shutdownPropWorker:()=>x});var n,r=i(83081),o=i(84045),s=i(57480),a=i(19556),l=i(8412),c=i(41428),h=i(65435),u=i(7756),d=i(25004),f="GET_PROPERTIES",p="UNLOAD_PROPERTYDB",m=1,g={};function v(e){var t=e.data;if(t&&t.debug)r.logger.debug(t.message);else{var i=t&&t.cbId&&g[t.cbId];i&&(t.progress?i[2]&&i[2](t.progress):(t.error?i[1]&&i[1](t.error):i[0]&&i[0](t.result),delete g[t.cbId]))}}function y(e,t,i){var n=m++;return g[n]=[e,t,i],n}function b(){return n}function x(){n&&(n.terminate(),n=void 0)}function _(){n&&n.doOperation({operation:p,clearCaches:!0})}var E=0,S=1,A=2,w=3,T=function(e,t,i){var n,s;this.eventTarget=i||new d.EventDispatcher,this.model=t,this.svf=t&&t.getData(),this.dbPath="",this.sharedDbPath=!1;const a=this.svf&&this.svf.loadOptions.bubbleNode&&this.svf.loadOptions.bubbleNode.findViewableParent()._getOtgManifest(),l=a&&this.svf&&this.svf.is2d;if(this.svf&&!l&&this.svf.propertydb&&this.svf.propertydb.avs.length){for(var c in this.dbFiles=this.svf.propertydb,this.dbFiles)this.dbFiles[c][0]&&(this.dbFiles[c][0].path=this.dbFiles[c][0].path.replace(/\\/g,"/"));var h=(0,o.pathToURL)(this.svf.basePath);if(e){var u=o.ViewingService.simplifyPath(h+this.svf.propertydb.avs[0].path);if((u=u.slice(0,u.lastIndexOf("/")+1))===e){var f={};for(let t in this.dbFiles){var p=this.dbFiles[t][0],m=p.path;0===(m=o.ViewingService.simplifyPath(h+m)).indexOf(e)&&(m=m.slice(e.length)),f[t]=[{path:m,isShared:p.isShared}]}this.dbFiles=f,this.dbPath=e,this.sharedDbPath=!0}else this.dbPath=h,this.sharedDbPath=!1}else this.dbPath=h,this.sharedDbPath=!1}else{if(this.sharedDbPath=!0,this.svf&&this.svf.loadOptions.bubbleNode){this.dbPath=e;let t=this.svf.loadOptions.bubbleNode.getPropertyDbManifest();this.dbFiles=t.propertydb,this.needsDbIdRemap=t.needsDbIdRemap}else r.logger.warn("Deprecated shared property database initialization without bubbleNode in Model load options."),this.dbPath=e,this.dbFiles={attrs:[],avs:[],ids:[],values:[],offsets:[]};r.logger.log("Using shared db path "+e)}a&&(this.needsDbIdRemap=this.svf.loadOptions.needsDbIdRemap||this.needsDbIdRemap),this.queryParams="";let g=null===(n=this.model)||void 0===n||null===(n=n.getDocumentNode())||void 0===n||null===(n=n.getDocument())||void 0===n?void 0:n.getAcmSessionId(this.dbPath);g=g||(null===(s=this.svf)||void 0===s?void 0:s.acmSessionId),this.svf&&g&&(this.queryParams="acmsession="+g),this.loadProgress=0,this.cbId=void 0,this.idLoadState=E,this.waitingForExternalIds=[]};T.prototype.dtor=function(){this.asyncPropertyOperation({operation:p},(function(){}),(function(){}));var e,t=Boolean(this.cbId),i=this.instanceTree||this.propertyDbError;t&&!i&&(e=this.cbId,delete g[e],this.propertyDbError={propDbWasUnloaded:!0},this.eventTarget.dispatchEvent({type:a.OBJECT_TREE_UNAVAILABLE_EVENT,svf:this.svf,model:this.model,target:this})),this.model=null,this.svf=null},T.prototype.processLoadResult=function(e){if(e.instanceTreeStorage){var t=new h.InstanceTreeAccess(e.instanceTreeStorage,e.rootId,e.instanceBoxes);this.instanceTree=new c.InstanceTree(t,e.objectCount,e.maxTreeDepth),this.svf&&((i=this).svf.instanceTree=i.instanceTree,this.instanceTree.setFragmentList(this.model.getFragmentList()))}var i;e.objectCount&&(this.hasObjectProperties=e.objectCount,this.svf&&(this.svf.hasObjectProperties=e.objectCount)),e.dbidOldToNew&&this.model.setDbIdRemap(e.dbidOldToNew),this.onLoadProgress(100),this.eventTarget.dispatchEvent({type:a.OBJECT_TREE_CREATED_EVENT,svf:this.svf,model:this.model,target:this})},T.prototype.processLoadError=function(e){var t=this;t.propertyDbError=e,t.onLoadProgress(100),t.eventTarget.dispatchEvent({type:a.OBJECT_TREE_UNAVAILABLE_EVENT,svf:t.svf,model:t.model,target:t})},T.prototype.load=function(e){var t=this;e=T.prototype.useCustomProperties?Object.assign({useCustomProperties:!0},e):e||{},n||(n=(0,u.createWorker)("PropWorker",!0)).addEventListener("message",v);this.cbId=y((function(e){t.processLoadResult(e)}),(function(e){t.processLoadError(e)}),(function(e){t.onLoadProgress(e.percent)}));var i=this.svf&&this.svf.loadOptions,r=!(i&&i.disablePrecomputedNodeBoxes),o=!(!i||!i.skipExternalIds);let s;o||(this.idLoadState=S),s=this.svf&&this.svf.instanceTree&&this.svf.instanceBoxes?"CREATE_TREE":"LOAD_PROPERTYDB";var a={operation:s,dbPath:this.dbPath,sharedDbPath:this.sharedDbPath,propertydb:this.dbFiles,fragToDbId:this.svf&&this.svf.fragments.fragId2dbId,fragBoxes:r&&this.svf&&this.svf.fragments.boxes,needsDbIdRemap:this.needsDbIdRemap,is2d:this.svf&&this.svf.is2d,cbId:this.cbId,queryParams:this.queryParams,skipExternalIds:o,gltfTree:this.svf.instanceTree,dbToFragId:this.svf&&this.svf.fragments.dbToFragId,...e};n.doOperation((0,l.initLoadContext)(a))},T.prototype.asyncPropertyOperation=function(e,t,i,r){const o=this;if(e.dbPath=this.dbPath,o.instanceTree||o.hasObjectProperties)e.cbId=y(t,i,r),n.doOperation(e);else if(o.propertyDbError)i&&i(o.propertyDbError);else{const n=function(l){o.model===l.model&&(o.eventTarget.removeEventListener(a.OBJECT_TREE_CREATED_EVENT,n),o.eventTarget.removeEventListener(a.OBJECT_TREE_UNAVAILABLE_EVENT,n),o.instanceTree||o.hasObjectProperties||o.propertyDbError?o.asyncPropertyOperation(e,t,i,r):i&&i({code:s.ErrorCodes.UNKNOWN_FAILURE,msg:"Failed to load properties"}))};o.eventTarget.addEventListener(a.OBJECT_TREE_CREATED_EVENT,n),o.eventTarget.addEventListener(a.OBJECT_TREE_UNAVAILABLE_EVENT,n)}},T.prototype.getProperties=function(e,t,i){this.idLoadState===E&&r.logger.warn("Calling getProperties() will cause loading of the potentially large externalIDs file. Use getProperties2() to avoid this warning."),this.getProperties2(e,t,i,{needsExternalId:!0})},T.prototype.getProperties2=function(e,t,i,n){const r=()=>{this.asyncPropertyOperation({operation:f,dbId:e,gltfTree:this.svf&&this.svf.instanceTreeBackup},t,i)};n&&n.needsExternalId?this.loadExternalIds().then(r).catch(i):r()},T.prototype.getBulkProperties=function(e,t,i,n,o){const s={ignoreHidden:o,propFilter:t,needsExternalId:!t||t.includes("externalId")};s.needsExternalId&&this.idLoadState===E&&r.logger.warn("Calling getProperties() will cause loading of the potentially large externalIDs file. Use getProperties2() to avoid this warning."),this.getBulkProperties2(e,s,i,n)},T.prototype.getBulkProperties2=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0;const r=()=>{this.asyncPropertyOperation({operation:f,dbIds:e,propFilter:t.propFilter,categoryFilter:t.categoryFilter,ignoreHidden:t.ignoreHidden},i,n)};t&&t.needsExternalId?this.loadExternalIds().then(r).catch(n):r()},T.prototype.getPropertySet=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0;const r=()=>{this.asyncPropertyOperation({operation:"GET_PROPERTY_SET",dbIds:e,propFilter:t.propFilter,ignoreHidden:t.ignoreHidden,fileType:t.fileType},i,n)};t&&t.needsExternalId?this.loadExternalIds().then(r).catch(n):r()},T.prototype.searchProperties=function(e,t,i,n,r){this.asyncPropertyOperation({operation:"SEARCH_PROPERTIES",searchText:e,attributeNames:t,searchOptions:r},i,n)},T.prototype.findProperty=function(e){var t=this;return new Promise((function(i,n){t.asyncPropertyOperation({operation:"FIND_PROPERTY",propertyName:e},i,n)}))},T.prototype.diffProperties=function(e,t,i,n,r){this.asyncPropertyOperation({operation:"DIFF_PROPERTIES",dbPath2:e,diffOptions:n},t,i,r)},T.prototype.findLayers=function(){var e=this;return new Promise((function(t,i){e.asyncPropertyOperation({operation:"FIND_LAYERS"},t,i)}))},T.prototype.getExternalIdMapping=function(e,t,i){return this.loadExternalIds().then((()=>{this.asyncPropertyOperation({operation:"BUILD_EXTERNAL_ID_MAPPING",extIdFilter:i},e,t)}))},T.prototype.getLayerToNodeIdMapping=function(e,t){this.asyncPropertyOperation({operation:"BUILD_LAYER_TO_NODE_ID_MAPPING"},e,t)},T.prototype.executeUserFunction=function(e,t){if("function"==typeof e)e=e.toString();else if("string"!=typeof e)return Promise.reject("Expected Function or string.");let i;try{i=new Blob([e],{type:"application/javascript"})}catch(t){let n=new BlobBuilder;n.append(e),i=n.getBlob()}let n=URL.createObjectURL(i);return new Promise(((e,i)=>{this.asyncPropertyOperation({operation:"USER_FUNCTION",userFunction:n,userData:t},e,i)}))},T.prototype.isObjectTreeLoaded=function(){return!!this.instanceTree},T.prototype.getObjectTree=function(e,t){var i=this;if(i.instanceTree)e(i.instanceTree);else if(i.propertyDbError)t&&t(i.propertyDbError);else if("hasObjectProperties"in i)i.svf&&i.svf.is2d&&t?t("F2D files do not have an InstanceTree."):e(null);else{var n=function(){i.eventTarget.removeEventListener(a.OBJECT_TREE_CREATED_EVENT,n),i.eventTarget.removeEventListener(a.OBJECT_TREE_UNAVAILABLE_EVENT,n),i.getObjectTree(e,t)};i.eventTarget.addEventListener(a.OBJECT_TREE_CREATED_EVENT,n),i.eventTarget.addEventListener(a.OBJECT_TREE_UNAVAILABLE_EVENT,n)}},T.prototype.onLoadProgress=function(e){this.eventTarget.dispatchEvent({type:a.OBJECT_TREE_LOAD_PROGRESS_EVENT,percent:e,svf:this.svf,model:this.model,target:this}),this.loadProgress=e},T.prototype.getLoadProgress=function(){return this.loadProgress},T.prototype.isLoadDone=function(){return 100==this.loadProgress},T.prototype.loadExternalIds=function(){switch(this.idLoadState){case S:return Promise.resolve();case w:return Promise.reject();case E:{this.idLoadState=A;const e=()=>{this.idLoadState=S,this.waitingForExternalIds.forEach((e=>e.resolve()))},t=()=>{this.idLoadState=w,this.waitingForExternalIds.forEach((e=>e.reject()))},i={operation:"LOAD_EXTERNAL_IDS",idsFile:this.dbFiles.ids[0],queryParams:this.queryParams};(0,l.initLoadContext)(i),this.asyncPropertyOperation(i,e,t);break}}return new Promise(((e,t)=>{this.waitingForExternalIds.push({resolve:e,reject:t})}))},T.prototype.refreshCustomProperties=function(e){return new Promise(((t,i)=>{e.operation="REFRESH_CUSTOM_PROPERTIES",e.cbId=y(t,i),e.dbPath=this.dbPath,n.doOperation(e)}))},T.prototype.applyCustomProperties=function(e){return new Promise(((t,i)=>{e.operation="APPLY_CUSTOM_PROPERTIES",e.cbId=y(t,i),e.dbPath=this.dbPath,n.doOperation(e)}))},T.prototype.refreshCustomPropertiesValues=function(e){return new Promise(((t,i)=>{e.operation="REFRESH_CUSTOM_PROPERTIES_VALUES",e.dbPath=this.dbPath;e.cbId=y((r=>{if(this.instanceTree||"hasObjectProperties"in this)t(r);else{const r=this.eventTarget,o=()=>{r.removeEventListener(a.OBJECT_TREE_CREATED_EVENT,o),r.removeEventListener(a.OBJECT_TREE_UNAVAILABLE_EVENT,o),e.cbId=y(t,i),n.doOperation(e)};r.addEventListener(a.OBJECT_TREE_CREATED_EVENT,o),r.addEventListener(a.OBJECT_TREE_UNAVAILABLE_EVENT,o)}}),i),n.doOperation(e)}))},T.prototype.setCustomPropertiesValues=function(e){return new Promise(((t,i)=>{e.operation="SET_CUSTOM_PROPERTIES_VALUES",e.dbPath=this.dbPath;e.cbId=y((r=>{if(this.instanceTree||"hasObjectProperties"in this)t(r);else{const r=this.eventTarget,o=()=>{r.removeEventListener(a.OBJECT_TREE_CREATED_EVENT,o),r.removeEventListener(a.OBJECT_TREE_UNAVAILABLE_EVENT,o),e.cbId=y(t,i),n.doOperation(e)};r.addEventListener(a.OBJECT_TREE_CREATED_EVENT,o),r.addEventListener(a.OBJECT_TREE_UNAVAILABLE_EVENT,o)}}),i),n.doOperation(e)}))},T.prototype.useCustomProperties=!1},5968:(e,t,i)=>{"use strict";i.r(t),i.d(t,{SvfLoader:()=>w});var n=i(55280),r=i(83081),o=i(37365),s=i(57480),a=i(75468),l=i(68747),c=i(22040),h=i(68630),u=i(84045),d=i(77201),f=i(13e3),p=i(90255),m=i(7756),g=i(19556),v=i(63764),y=i(72091),b=i(54393),x=i(8412),_=i(28441);const E=Autodesk.Viewing,S=E.Private;var A=(0,n.isNodeJS)()?10:(0,n.isMobileDevice)()?2:6,w=function(e){this.viewer3DImpl=e,this.next_pack=0,this.loading=!1,this.loadedPacksCount=0,this.tmpMatrix=new y.Matrix4,this.tmpBox=new y.Box3,this.fetchingTopology=!1,this.loadTime=0,this.notifiesFirstPixel=!0};w.prototype.dtor=function(){if(this.svfWorker&&(this.svfWorker.terminate(),this.svfWorker=null,r.logger.debug("SVF loader dtor: on svf worker.")),this.pack_workers){for(var e=0;e{setTimeout((()=>{this.loadGeometryPack(e.id,e.uri)}),200*i)})(r)}},w.prototype.createModel=function(e){var t=this.model=new v.Model(e);return t.loader=this,t.initialize(),t},w.prototype.isValid=function(){return this.viewer3DImpl},w.prototype.loadFile=function(e,t,i,n){if(!this.viewer3DImpl)return r.logger.log("SVF loader was already destructed. So no longer usable."),!1;if(this.loading)return r.logger.log("Loading of SVF already in progress. Ignoring new request."),!1;this.loading=!0;var o=e.indexOf("urn:");if(-1!=o){var s=(e=decodeURIComponent(e)).substr(o,e.substr(o).indexOf("/"));r.logger.log("Extracted URN: "+s);var a=s.lastIndexOf(":");this.svfUrn=s.substr(a+1)}else this.svfUrn=e;this.sharedDbPath=t.sharedPropertyDbPath,this.currentLoadPath=e;var l=this.currentLoadPath.lastIndexOf("/");return-1!=l&&(this.basePath=this.currentLoadPath.substr(0,l+1)),this.acmSessionId=t.acmSessionId,this.queryParams="",this.acmSessionId&&(this.queryParams="acmsession="+this.acmSessionId),this.options=t,this.loadSvfCB(e,t,i,n),!0},w.prototype.loadSvfCB=function(e,t,i,o){this.t0=(new Date).getTime(),this.firstPixelTimestamp=null,this.failedToLoadSomeGeometryPacks=null,this.failedToLoadPacksCount=0;var l=!0,c=this,h={url:(0,u.pathToURL)(e),basePath:this.currentLoadPath,objectIds:t.ids,globalOffset:t.globalOffset,fragmentTransformsDouble:t.fragmentTransformsDouble,placementTransform:t.placementTransform,applyRefPoint:t.applyRefPoint,queryParams:this.queryParams,bvhOptions:t.bvhOptions||{isWeakDevice:(0,n.isMobileDevice)()},applyScaling:t.applyScaling,applyPlacementInModelUnits:t.applyPlacementInModelUnits,loadInstanceTree:t.loadInstanceTree};this.viewer3DImpl._signalNoMeshes();var d=this.svfWorker=this.createWorker();return d.addEventListener("message",(async function(e){var t=function(){d.terminate(),c.svfWorker=null,d=null};if(l&&o&&(l=!1,o()),e.data&&e.data.manifest)c.interceptManifest(e.data.manifest),h.operation="LOAD_SVF_CONTD",h.manifest=e.data.manifest,d.doOperation(h);else if(e.data&&e.data.svf){var n=c.svf=e.data.svf;c.failedToLoadSomeGeometryPacks&&(i&&i(c.failedToLoadSomeGeometryPacks),c.failedToLoadSomeGeometryPacks=null),await c.onModelRootLoadDone(n),i&&i(null,c.model),c.svf.viewpointTreeRoot&&c.options.addViews&&c.options.addViews(c.svf.viewpointTreeRoot,c.model),c.viewer3DImpl.api.dispatchEvent({type:g.MODEL_ROOT_LOADED_EVENT,svf:n,model:c.model}),n.loadDone=!1;var u=!1;n.metadata&&n.metadata.gltf&&(u=!0),u||(0==n.geompacks.length?c.onGeomLoadDone():c.startWorkers()),1==e.data.progress&&(c.loading=!1,t()),n.fragments.polygonCounts||(n.fragments.polygonCounts=new Int32Array(n.fragments.length)),e.data.bvh&&(n.bvh=e.data.bvh,c.model.setBVH(new a.NodeArray(n.bvh.nodes,n.bvh.useLeanNodes),n.bvh.primitives,c.options.bvhOptions),c.viewer3DImpl.api.dispatchEvent({type:g.LOADER_REPAINT_REQUEST_EVENT,loader:c,model:c.model}))}else e.data&&e.data.bvh?(c.svf&&!c.svf.bvh&&(c.svf.bvh=e.data.bvh,c.model.setBVH(new a.NodeArray(c.svf.bvh.nodes,c.svf.bvh.useLeanNodes),c.svf.bvh.primitives,c.options.bvhOptions),c.viewer3DImpl.api.dispatchEvent({type:g.LOADER_REPAINT_REQUEST_EVENT,loader:c,model:c.model})),c.loading=!1,t()):e.data&&e.data.mesh?(c.processReceivedMesh(e.data),1===e.data.progress&&(c.onGeomLoadDone(),c.loading=!1,t())):e.data&&e.data.progress?1==e.data.progress&&(c.loading=!1,t()):e.data&&e.data.error?(c.loading=!1,t(),r.logger.error("Error while processing SVF: "+JSON.stringify(e.data.error.args)),i&&i(e.data.error,null)):e.data&&e.data.debug?r.logger.debug(e.data.message):(r.logger.error("SVF download failed.",(0,s.errorCodeString)(s.ErrorCodes.NETWORK_FAILURE)),c.loading=!1,t())})),h.operation="LOAD_SVF",h.interceptManifest=!!this.interceptManifest,d.doOperation((0,x.initLoadContext)(h)),!0},w.prototype.loadGeometryPack=function(e,t){var i,n,o,s,a=this;if(this.svf&&this.isValid()){var l=this.pack_workers;if(l||(l=this.pack_workers=[]),l.length<(E.NUM_WORKER_THREADS||A)){var c=!0;for(o=0;o=1){a.pack_workers[e.data.workerId].queued-=1,a.loadedPacksCount++,a.viewer3DImpl.signalProgress(100*a.loadedPacksCount/a.svf.geompacks.length,_.ProgressState.LOADING,a.model);var l=!0;for(s=0;si.nextRepaintPolys&&(this.firstPixelTimestamp=this.firstPixelTimestamp||Date.now(),i.numRepaints++,i.nextRepaintPolys+=1e4*Math.pow(1.5,i.numRepaints),this.viewer3DImpl.api.dispatchEvent({type:g.LOADER_REPAINT_REQUEST_EVENT,loader:this,model:this.model})),u},w.prototype.setupCamera=function(e){return e.position=(new y.Vector3).copy(e.position),e.target=(new y.Vector3).copy(e.target),e.up=(new y.Vector3).copy(e.up),isFinite(e.position.x+e.position.y+e.position.z+e.target.x+e.target.y+e.target.z+e.up.x+e.up.y+e.up.z)||(e.target=this.svf.bbox.getCenter(new y.Vector3),e.position.copy(e.target),e.position.z+=this.svf.bbox.max.z-this.svf.bbox.min.z,e.up.set(0,1,0)),isFinite(e.aspect)||(e.aspect=1),isFinite(e.fov)||(e.fov=90),isFinite(e.orthoScale)||(e.orthoScale=1),e},w.prototype.onModelRootLoadDone=async function(e){e.fragments.numLoaded=0,e.nextRepaintPolys=0,e.numRepaints=0,e.urn=this.svfUrn,e.acmSessionId=this.acmSessionId,e.basePath=this.basePath,e.loadOptions=this.options,e.verylargebbox&&this.viewer3DImpl.setNearRadius(this.options.nearRadius||1);var t=Date.now();r.logger.log("SVF load: "+(t-this.t0));var i=this.createModel(e);this.options.skipPropertyDb||this.loadPropertyDb();var s=await this.convertMaterials(i);if(this.viewer3DImpl.matman().hasTwoSidedMaterials()&&this.viewer3DImpl.renderer().toggleTwoSided(!0),this.t1=t,e.bbox=(new y.Box3).copy(e.bbox),e.refPointTransform&&(e.refPointTransform=new o.LmvMatrix4(!0).copy(e.refPointTransform)),e.placementTransform&&(e.placementTransform=new o.LmvMatrix4(!0).copy(e.placementTransform)),e.placementWithOffset&&(e.placementWithOffset=new o.LmvMatrix4(!0).copy(e.placementWithOffset)),e.cameras)for(var a=0;a0&&(n.first_pixel_time=i),r.logger.track(n,!0);const o=this.model.getGeometryList(),s={load_time:this.loadTime,polygons:o.geomPolyCount,fragments:this.model.getFragmentList().getCount(),mem_usage:o.gpuMeshMemory,viewable_type:"3d",url:this.currentLoadPath,urn:this.svfUrn};S.analytics.track("viewer.model.loaded",s),this.currentLoadPath=null,this.viewer3DImpl.onLoadComplete(this.model)},w.prototype.loadPropertyDb=function(){this.svf.propDbLoader=new f.PropDbLoader(this.sharedDbPath,this.model,this.viewer3DImpl.api),this.svf.propDbLoader.load()},w.prototype.fetchTopologyFile=function(e,t){if(!this.fetchingTopology){this.fetchingTopology=!0;var i=this.createWorker();i.addEventListener("message",(function(e){if(e.data["status-topology"])return n=(new Date).getTime(),s=Math.round((n-l)/1e3),void r.logger.log("Topology file downloaded. ("+s+" seconds). Processing...");var a=e.data["fetch-topology"];a&&(o=(new Date).getTime(),s=Math.round((o-n)/1e3),a.topology?r.logger.log("Topology file processed successfully! ("+s+" seconds)."):r.logger.log("Topology file processed, but an error ocurred. ("+s+" seconds)."),t(a),c.fetchingTopology=!1,i.terminate(),i=null)}));var n,o,s,a={path:e,queryParams:this.queryParams},l=(new Date).getTime();r.logger.log("Fetching topology file..."),a.operation="FETCH_TOPOLOGY",i.doOperation((0,x.initLoadContext)(a));var c=this}},w.prototype.is3d=function(){return!0},b.FileLoaderManager.registerFileLoader("svf",["svf"],w)},90255:(e,t,i)=>{"use strict";i.r(t),i.d(t,{TextureLoader:()=>M});var n=i(84045),r=i(55280),o=i(57480),s=i(68630),a=i(12360),l=i(83081),c=i(72091),h=i(8412),u=i(9341),d=function(e){this.manager=void 0!==e?e:c.DefaultLoadingManager,this._parser=d.parse};d.prototype=Object.create(c.CompressedTextureLoader.prototype),d.prototype.constructor=d,d.parse=function(e,t){var i=new Uint32Array(e,0,13),n={buffer:e,header:i,loadMipmaps:t};if(55727696===i[0])return d._parseV3(n);if(559044176===i[11])return d._parseV2(n);throw new Error("[THREE.PVRLoader] Unknown PVR format")},d._parseV3=function(e){var t,i,n=e.header,r=n[12],o=n[2],s=n[6],a=n[7],l=(n[9],n[10]),h=n[11];switch(o){case 0:t=2,i=c.RGB_PVRTC_2BPPV1_Format;break;case 1:t=2,i=c.RGBA_PVRTC_2BPPV1_Format;break;case 2:t=4,i=c.RGB_PVRTC_4BPPV1_Format;break;case 3:t=4,i=c.RGBA_PVRTC_4BPPV1_Format;break;default:throw new Error("pvrtc - unsupported PVR format "+o)}return e.dataPtr=52+r,e.bpp=t,e.format=i,e.width=a,e.height=s,e.numSurfaces=l,e.numMipmaps=h,e.isCubemap=6===l,d._extract(e)},d._parseV2=function(e){var t,i=e.header,n=i[0],r=i[1],o=i[2],s=i[3],a=i[4],l=(i[5],i[6]),h=(i[7],i[8],i[9],i[10]),u=(i[11],i[12]),f=255&a,p=h>0;if(25===f)t=p?c.RGBA_PVRTC_4BPPV1_Format:c.RGB_PVRTC_4BPPV1_Format,l=4;else{if(24!==f)throw new Error("pvrtc - unknown format "+f);t=p?c.RGBA_PVRTC_2BPPV1_Format:c.RGB_PVRTC_2BPPV1_Format,l=2}return e.dataPtr=n,e.bpp=l,e.format=t,e.width=o,e.height=r,e.numSurfaces=u,e.numMipmaps=s+1,e.isCubemap=6===u,d._extract(e)},d._extract=function(e){var t,i={mipmaps:[],width:e.width,height:e.height,format:e.format,mipmapCount:e.numMipmaps,isCubemap:e.isCubemap},n=e.buffer,r=e.dataPtr,o=e.bpp,s=e.numSurfaces,a=0,l=0,c=0,h=0,u=0;2===o?(l=8,c=4):(l=4,c=4),t=l*c*o/8,i.mipmaps.length=e.numMipmaps*s;for(var d=0;d>d,p=e.height>>d;(h=f/l)<2&&(h=2),(u=p/c)<2&&(u=2),a=h*u*t;for(var m=0;m{c.ImageUtils.loadTexture(e,t,i,n)};function E(e,t,i,s,a,f,y){var b=h.endpoint.getUseCredentials(),E=h.endpoint.getUseCookie();b&&E?c.ImageUtils.crossOrigin="use-credentials":h.endpoint.getUseCredentials()?c.ImageUtils.crossOrigin="anonymous":c.ImageUtils.crossOrigin="";var S="";b&&a&&(S="acmsession="+a),y&&y.queryParams&&(S=S?S+"&":"",S+=y.queryParams);const A=h.endpoint.initLoadContext({queryParams:S});e.startsWith("blob:")&&(A.queryParams=void 0),v++,g.go((function(a){var h=function(e,t){v--,t&&s?s(t):i(e),a()},g=f?h:function(e){function t(t){e&&(e.image=t),v--,i(e),a()}e&&e.image?function(e,t){let i,n,r=e.width,s=e.height;if(r&r-1||s&s-1){for(i=1;1.5*ix;)i=Math.max(i/2,1),n=Math.max(n/2,1);let a=m.createElement("canvas"),c=a.getContext("2d");a.width=i,a.height=n,c.drawImage(e,0,0,i,n);const h=new Image;h.src=a.toDataURL(),h.onload=function(){t(h)},h.onerror=function(e){l.logger.error(e,(0,o.errorCodeString)(o.ErrorCodes.UNKNOWN_FAILURE)),t(null)}}(e.image,t):t()},S=function(e){v--,l.logger.error("Texture load error",e),i(null),a()};if((0,r.isNodeJS)())return void function(e,t,i,r,s){var a=new c.DataTexture(void 0,i);function h(e){s&&s.extractImage&&(e=s.extractImage(e)),a.image={data:e,width:void 0,height:void 0},a.needsUpdate=!0,r&&r(a)}function u(e,t){var i="Error: "+e+" ("+t+")";l.logger.error(i,(0,o.errorCodeString)(o.ErrorCodes.NETWORK_SERVER_ERROR)),r&&r(null,{msg:t,args:e})}n.ViewingService.getItem(t,e,h,u)}(e,A,t,h,y);const w=A.queryParams?`?${A.queryParams}`:"";let T=`${e}${w}`;if(e.toLocaleLowerCase().endsWith(".dds"))(0,r.isIOSDevice)()?(T=`${e.slice(0,e.length-4)}.pvr${w}`,(new d).load(T,h,S)):(new u.DDSLoader).load(T,h,S);else if(b&&!E||y&&(y.rawData||y.extractImage))!function(e,t,i,r,s){var a=new c.Texture(void 0,i);function h(e){s&&s.extractImage&&(e=s.extractImage(e));var t,i,n=new Image;a.image=n,n.onload=function(){a.needsUpdate=!0,r&&r(a),p.URL.revokeObjectURL(n.src),n.onload=null,n.onerror=null},n.onerror=function(e){l.logger.error(e,(0,o.errorCodeString)(o.ErrorCodes.UNKNOWN_FAILURE)),r&&r(null),n.onload=null,n.onerror=null},n.src=(t=new Uint8Array(e),i=new Blob([t],{type:"image/jpeg"}),(p.URL||p.webkitURL).createObjectURL(i))}function u(e,t){var i="Error: "+e+" ("+t+")";l.logger.error(i,(0,o.errorCodeString)(o.ErrorCodes.NETWORK_SERVER_ERROR)),r&&r(null,{msg:t,args:e})}s&&s.rawData?h(s.rawData):n.ViewingService.getItem(t,e,h,u,s)}(e,A,t,g,y);else if(e.startsWith("data:"))_(e,t,g,S);else{/(\w+):\/\//gi.exec(e)&&!/^(https?|file|blob:\w+):\/\//gi.test(e)?Autodesk.Viewing.Private.ViewingService.rawGet("","",e,(function(i){let n=/\.(\w+)$/gi.exec(e);n=n?n[1]:"png";var r,o,s=`data:image/${n};base64, `+(r=i,o=Array.prototype.map.call(r,(function(e){return String.fromCharCode(e)})).join(""),btoa(o));_(s,t,g,S)}),console.error):_(T,t,g,S)}}))}function S(e,t,i){var r=t.getData();let o;return e.startsWith("embed:")?o=r.loadedBuffers[e.charAt(e.length-1)]:(e=e.replace(/\\/g,"/"),o=t.isOTG()?function(e){var t=h.endpoint.initLoadContext({});return r.makeSharedResourcePath(t.otg_cdn,"textures",e)}(e):function(e){for(var t=null,i=0;i=0&&(b=e,x=Math.max(16384,y/(4*b)))}const M={loadTextureWithSecurity:E,loadMaterialTextures:A,loadModelTextures:function(e,t){var i=t.matman(),n=i._getModelHash(e),r=e.isOTG(),o=0;if(r)o=e.getData().metadata.stats.num_textures||0;else for(let e in i._materials){if(-1===e.indexOf(n))continue;let t=i._materials[e];t.textureMaps&&(o+=Object.keys(t.textureMaps).length)}T(o);for(let o in i._materials){if(!r&&-1===o.indexOf(n))continue;A(e,i._materials[o],t)}var s=e.getData();!w()&&t&&s.loadDone&&!s.texLoadDone&&(s.texLoadDone=!0,t.onTextureLoadComplete(e))},loadCubeMap:function(e,t,i){var n,r=function(n){n?(n.mapping=c.CubeReflectionMapping,n.LogLuv=-1!==e.indexOf("logluv"),n.RGBM=-1!==e.indexOf("rgbm"),(0,a.DecodeEnvMap)(n,t,!1/*!isMobileDevice()*/,i)):i&&i(n)};return c.ImageUtils.crossOrigin="",Array.isArray(e)?(n=c.ImageUtils.loadTextureCube(e,c.CubeReflectionMapping,r)).format=c.RGBFormat:"string"==typeof e?-1!==e.toLowerCase().indexOf(".dds")?(n=(new u.DDSLoader).load(e,r)).mipmaps=n.mipmaps||[]:(n=_(e,c.SphericalReflectionMapping,i)).format=c.RGBFormat:e?i&&i(e):i&&i(null),n},requestsInProgress:w,calculateTextureSize:function(e){var t=4;switch(e.format){case c.AlphaFormat:t=1;break;case c.RGBFormat:t=3;break;case c.LuminanceFormat:t=1;break;case c.LuminanceAlphaFormat:t=2}switch(e.type){case c.ShortType:case c.UnsignedShortType:case c.HalfFloatType:t*=2;break;case c.IntType:case c.UnsignedIntType:case c.FloatType:t*=4;break;case c.UnsignedShort4444Type:case c.UnsignedShort5551Type:case c.UnsignedShort565Type:t=2}var i=t*e.image.width;return i+=e.unpackAlignment-1,i-=i%e.unpackAlignment,e.image.height*i},imageToCanvas:function(e,t,i){let n=e.width,r=e.height,o=m.createElement("canvas"),s=o.getContext("2d");return s.globalCompositeOperation="copy",o.width=n,o.height=r,t&&(s.fillStyle=i||"#FFFFFF",s.fillRect(0,0,n,r)),s.drawImage(e,0,0,n,r),o}}},7756:(e,t,i)=>{const{isNodeJS:n}=i(55280);var r,o,s,a,l=i(8600).getResourceUrl;n()?(a=i(86059).MainWorker,e.exports={createWorker:function(){return new a},initWorkerScript:function(){}}):(r=Autodesk.Viewing.Private,o=r.LMV_WORKER_URL||"src/file-loaders/workers/MainWorker-web.js",s=null,e.exports={createWorker:function(e,t){if(!s){const e=new URL(l(o),document.baseURI).href,t=new Blob([`\n try {\n importScripts("${e}");\n } catch (e) {\n console.warn("Failed to import worker script. Could be a network failure or just the worker closing." + e);\n }\n `],{type:"application/javascript"});s=URL.createObjectURL(t)}let i=new Worker(s,{name:e});return i.doOperation=i.postMessage,!0===t&&r.ViewingService.forwardProtocolHandlerToWorker(i),i},initWorkerScript:function(){fetch(l(o))}})},82076:(e,t,i)=>{"use strict";i.r(t),i.d(t,{loadWasmWorker:()=>o});const{getResourceUrl:n}=i(8600),{getGlobal:r}=i(55280);function o(e){const t={},i=n("wasm.worker.js");return new Promise(((t,s)=>{(function(e){const t=Autodesk.Viewing.Private;return new Promise((function(i){if(t.ENABLE_INLINE_WORKER){let t=new XMLHttpRequest;t.open("GET",e,!0),t.withCredentials=!1,t.onload=function(){let e,n=r();n.URL=n.URL||n.webkitURL;try{e=new Blob([t.responseText],{type:"application/javascript"})}catch(i){let n=new BlobBuilder;n.append(t.responseText),e=n.getBlob()}i(URL.createObjectURL(e))},t.send()}else i(e)}))})(i).then((function(i){const r=new Worker(i),a={},l=n(e);r.postMessage({eventType:"INITIALIZE",eventData:l}),r.addEventListener("message",(function(e){if("INITIALIZED"===e.data.eventType){e.data.eventData.forEach((e=>{a[e]=function(){return o(e,r,(t=>{t.postMessage({eventData:{method:e,arguments:Array.from(arguments)}})}))}}));const i="getBuffer";return a[i]=function(){return o(i,r,(e=>{e.postMessage({eventType:"GET_BUFFER"})}))},void t(a)}})),r.addEventListener("error",(function(e){s(e)}))}))}));function o(e,i,n){return new Promise(((r,o)=>{const s=function(e,i){let n,r;t&&Object.prototype.hasOwnProperty.call(t,e)?(n=t[e][0],r=n.inUse):(t[e]=[],r=!0);r&&(n={channel:new MessageChannel,inUse:!1},t[e].push(n),i.postMessage({eventType:"SET_CHANNEL_PORT",eventData:{method:e,port:n.channel.port2}},[n.channel.port2]));return n}(e,i),a=s.channel;s.inUse=!0,n(a.port1),a.port1.onmessage=function(i){s.inUse=!1;const n=i.data.eventType,a=i.data.eventData;"ERROR"===n?o(a):r(a),function(e,t){for(let i=1;i{"use strict";i.r(t),i.d(t,{ErrorCodes:()=>n,errorCodeString:()=>r,getErrorCode:()=>o});const n={UNKNOWN_FAILURE:1,BAD_DATA:2,NETWORK_FAILURE:3,NETWORK_ACCESS_DENIED:4,NETWORK_FILE_NOT_FOUND:5,NETWORK_SERVER_ERROR:6,NETWORK_UNHANDLED_RESPONSE_CODE:7,BROWSER_WEBGL_NOT_SUPPORTED:8,BAD_DATA_NO_VIEWABLE_CONTENT:9,BROWSER_WEBGL_DISABLED:10,BAD_DATA_MODEL_IS_EMPTY:11,UNSUPORTED_FILE_EXTENSION:13,VIEWER_INTERNAL_ERROR:14,WEBGL_LOST_CONTEXT:15,LOAD_CANCELED:16};function r(e){return"ErrorCode:"+e+"."}function o(e){return 403===e||401===e?n.NETWORK_ACCESS_DENIED:404===e?n.NETWORK_FILE_NOT_FOUND:e>=500?n.NETWORK_SERVER_ERROR:n.NETWORK_UNHANDLED_RESPONSE_CODE}},84045:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ViewingService:()=>z,pathToURL:()=>j,textToArrayBuffer:()=>q});i(74423),i(69479),i(28845),i(17656),i(55105),i(7467),i(10586),i(71517),i(93777),i(14190),i(12359),i(86097),i(39172),i(57019),i(17273),i(81723),i(27415),i(19929),i(37583),i(55122),i(16385),i(20230),i(57268),i(79733),i(58179),i(30456),i(74017),i(79310),i(83062),i(96369),i(15637),i(2848),i(24842),i(24746),i(33454),i(6660),i(15941),i(82101),i(2917),i(47628),i(65186),i(42978),i(72527),i(79852),i(42376),i(40617),i(73067),i(66820),i(8288),i(25509),i(65223),i(60321),i(41927),i(11632),i(64377),i(49522),i(66771),i(12516),i(68931),i(52514),i(35694),i(52774),i(23283),i(49536),i(21926),i(94483),i(16215),i(78898),i(74176),i(43275),i(42793),i(77208),i(67348),i(26957),i(79732),i(83742),i(56422),i(82451),i(46270),i(59848);var n=i(83081),r=i(57480),o=i(42759),s=i(8412),a=i(55280),l=i(84406),c=Uint8Array,h=Uint16Array,u=Int32Array,d=new c([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),f=new c([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),p=new c([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),m=function(e,t){for(var i=new h(31),n=0;n<31;++n)i[n]=t+=1<>1|(21845&E)<<1;S=(61680&(S=(52428&S)>>2|(13107&S)<<2))>>4|(3855&S)<<4,_[E]=((65280&S)>>8|(255&S)<<8)>>1}var A=function(e,t,i){for(var n=e.length,r=0,o=new h(t);r>l]=c}else for(s=new h(n),r=0;r>15-e[r]);return s},w=new c(288);for(E=0;E<144;++E)w[E]=8;for(E=144;E<256;++E)w[E]=9;for(E=256;E<280;++E)w[E]=7;for(E=280;E<288;++E)w[E]=8;var T=new c(32);for(E=0;E<32;++E)T[E]=5;var M=A(w,9,1),C=A(T,5,1),P=function(e){for(var t=e[0],i=1;it&&(t=e[i]);return t},D=function(e,t,i){var n=t/8|0;return(e[n]|e[n+1]<<8)>>(7&t)&i},L=function(e,t){var i=t/8|0;return(e[i]|e[i+1]<<8|e[i+2]<<16)>>(7&t)},I=function(e){return(e+7)/8|0},R=function(e,t,i){return(null==t||t<0)&&(t=0),(null==i||i>e.length)&&(i=e.length),new c(e.subarray(t,i))},O=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],N=function(e,t,i){var n=new Error(t||O[e]);if(n.code=e,Error.captureStackTrace&&Error.captureStackTrace(n,N),!i)throw n;return n},F=function(e,t,i,n){var r=e.length,o=n?n.length:0;if(!r||t.f&&!t.l)return i||new c(0);var s=!i,a=s||2!=t.i,l=t.i;s&&(i=new c(3*r));var h=function(e){var t=i.length;if(e>t){var n=new c(Math.max(2*t,e));n.set(i),i=n}},u=t.f||0,m=t.p||0,g=t.b||0,y=t.l,b=t.d,_=t.m,E=t.n,S=8*r;do{if(!y){u=D(e,m,1);var w=D(e,m+1,3);if(m+=3,!w){var T=e[(j=I(m)+4)-4]|e[j-3]<<8,O=j+T;if(O>r){l&&N(0);break}a&&h(g+T),i.set(e.subarray(j,O),g),t.b=g+=T,t.p=m=8*O,t.f=u;continue}if(1==w)y=M,b=C,_=9,E=5;else if(2==w){var F=D(e,m,31)+257,U=D(e,m+10,15)+4,B=F+D(e,m+5,31)+1;m+=14;for(var k=new c(B),V=new c(19),G=0;G>4)<16)k[G++]=j;else{var X=0,Y=0;for(16==j?(Y=3+D(e,m,3),m+=2,X=k[G-1]):17==j?(Y=3+D(e,m,7),m+=3):18==j&&(Y=11+D(e,m,127),m+=7);Y--;)k[G++]=X}}var K=k.subarray(0,F),Q=k.subarray(F);_=P(K),E=P(Q),y=A(K,_,1),b=A(Q,E,1)}else N(1);if(m>S){l&&N(0);break}}a&&h(g+131072);for(var Z=(1<<_)-1,$=(1<>4;if((m+=15&X)>S){l&&N(0);break}if(X||N(2),ee<256)i[g++]=ee;else{if(256==ee){J=m,y=null;break}var te=ee-254;if(ee>264){var ie=d[G=ee-257];te=D(e,m,(1<>4;ne||N(3),m+=15≠Q=x[re];if(re>3){ie=f[re];Q+=L(e,m)&(1<S){l&&N(0);break}a&&h(g+131072);var oe=g+te;if(g>3&1)+(t>>4&1);n>0;n-=!e[i++]);return i+(2&t)},k=function(e){var t=e.length;return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0};function V(e,t){var i=B(e);return i+8>e.length&&N(6,"invalid gzip data"),F(e.subarray(i,-8),{i:2},t&&t.out||new c(k(e)),t&&t.dictionary)}var G="undefined"!=typeof TextDecoder&&new TextDecoder;try{G.decode(U,{stream:!0}),1}catch(e){}"function"==typeof queueMicrotask?queueMicrotask:"function"==typeof setTimeout&&setTimeout;let z={WORKER_REGISTER_FILE_PORT:"REGISTER_FILE_PORT",WORKER_READ_FILE:"READ_FILE"};var H=!1;function W(e){var t=e.split("/");if(0==t.length)return e;for(var i=[],n=0;n=200&&e.statusCode<400),o=e;!i&&function(e,t){return!!("gzip"===e.headers["content-encoding"]||t.endsWith(".json.gz")||t.endsWith("FragmentList.pack")||t.endsWith("LightList.bin")||t.endsWith("CameraList.bin")||t.endsWith("CameraDefinitions.bin")||t.endsWith("LightDefinitions.bin"))}(e,v.pathname)&&(o=e.pipe(t.createGunzip())),"json"!==m.responseType&&"text"!==m.responseType&&m.responseType||o.setEncoding("utf8");var s=[],a=(Buffer.allocUnsafe(65536),0);o.on("data",(function(e){s.push(e),m.ondata&&m.ondata(e)})),o.on("end",(function(){if(e.statusCode>=200&&e.statusCode<400){if("json"===m.responseType){var i=JSON.parse(s.join(""));return void f(i)}if("text"===m.responseType||""===m.responseType){var o=s.join("");return void f(o)}var l=Buffer.concat(s);if(31===l[0]&&139===l[1]){n.logger.warn("An LMV resource ("+d+") was double compressed, or Content-Encoding header missing");try{l=t.gunzipSync(l),a=l.length}catch(e){p(r.ErrorCodes.BAD_DATA,"Malformed data received when requesting file",{url:d,exception:e.toString(),stack:e.stack})}}200===x.status&&m.range&&(l=new Uint8Array(l,m.range.min,m.range.max-m.range.min)),f(l,a)}else p&&p(e.statusCode,e.statusMessage,{url:d})}))}));x.on("error",(function(e){p&&p(e.code,e.message,{url:d})})),m.postData&&x.write(m.postData),x.end()}else!function(i,n,r,o){function s(e){if("json"===o.responseType)try{return JSON.parse(e.toString("utf8"))}catch(e){r(e)}return e}0===i.indexOf("file://")&&(i=i.substr(7)),e.readFile(i,(function(e,a){e?r(0,0,{httpStatusText:e,url:i}):31===a[0]&&139===a[1]?t.gunzip(a,null,(function(e,t){e?r(0,0,{httpStatusText:e,url:i}):(t=s(t),o.ondata&&o.ondata(t),n(t))})):(a=s(a),o.ondata&&o.ondata(a),n(a))}))}(d,f,p,m)}}();else{var Y=new(i(51436));Y.max=25;var K={},Q={},Z={};z.registerProtocolPort=function(e,t){/^(http(s)?|file):/gi.test(e)?console.warn("http(s) or file protocol were not allowed to be handled"):t?(K[e]=t,t.onmessage=function(e){var t=e.data.url;if(Q[t]){var i=Q[t];if(e.data.error)i.onFailureWrapped(r.ErrorCodes.BAD_DATA,"Malformed data received when requesting file",{url:t,exception:e.data.error.message,stack:e.data.error.stack});else{var n=e.data.buffer;if(Q[t]=void 0,31===n[0]&&139===n[1]&&t.match(/(.f2d|.gz)$/gi))try{n=V(n),i.options&&i.options.ondata&&i.options.ondata(n),i.onSuccessWrapped(n)}catch(e){i.onFailureWrapped(r.ErrorCodes.BAD_DATA,"Malformed data received when requesting file",{url:t,exception:e.toString(),stack:e.stack})}else i.onSuccessWrapped(n)}}else if(Z[t]){var o=[];e.data&&e.data.buffer&&e.data.buffer.buffer instanceof ArrayBuffer&&o.push(e.data.buffer.buffer),Z[t].postMessage(e.data,o),Z[t]=void 0}}):K[e]&&K[e]instanceof MessagePort&&(K[e].onmessage=void 0,K[e]=void 0)},z.handlerProtocol=function(e,t,i,n,r){var o=K[e];Q[t]={onSuccessWrapped:i,onFailureWrapped:n,options:r},o.postMessage({operation:z.WORKER_READ_FILE,url:t})},z.forwardProtocolHandlerToWorker=function(e){var t={},i=new MessageChannel;for(var n in i.port1.onmessage=function(e){var t=new URL(e.data.url);K[t.protocol].postMessage(e.data),Z[t]=i.port1},K)K[n]instanceof MessagePort&&(t[n]=i.port2);e.doOperation({operation:z.WORKER_REGISTER_FILE_PORT,protocolPortMap:t},[i.port2])},z.rawGet=function(e,t,i,r,o,s){Y.go((a=>{let l=function(){a();for(var e=arguments.length,t=new Array(e),i=0;i=500);if((arguments.length<=2?void 0:arguments[2]).aborted&&(o=!1),o){const o=arguments.length<=3?void 0:arguments[3];let a=100,h=5,u=!1;if(429!==r&&503!==r||null==o||!o.getResponseHeader("Retry-After")?0===r&&(u=3,h=2):u=o.getResponseHeader("Retry-After"),u){const e=Number(u);a=!isNaN(e)&&1e3*e||Date.parse(u)-(new Date).getTime(),a=a>100?a:100}z._retryRequest(e,t,i,s,a,h).then((e=>{n.logger.warn(`request ${i} successful after retries.`),c(...e)})).catch((e=>{n.logger.warn(`request ${i} unsuccessful after retries.`),l(...e)}))}else l(...arguments)}),s)}}))},z._retryRequest=function(e,t,i,r,o,s){const a={delayFirstAttempt:!0,startingDelay:o,numOfAttempts:4,retry:(e,t)=>{let[i,r,{url:o}]=e;return n.logger.warn(`request ${o} failed with status ${i} ${r}. Attempt ${t}`),!0},timeMultiple:s};return(0,l.backOff)((()=>new Promise(((n,o)=>{let s=z._rawGet;null!=r&&r.useFetch&&(s=z._rawGetFetch),s(e,t,i,(function(){for(var e=arguments.length,t=new Array(e),i=0;i{const i=e.indexOf("?acmsession=");-1!==i&&(e=e.substring(0,i)),e+="/signeds3download?useCdn=true";const n=new XMLHttpRequest;n.open("GET",e),n.setRequestHeader("Authorization",s.endpoint.HTTP_REQUEST_HEADERS.Authorization),n.responseType="json",n.send();const r=()=>{t(null)};n.onload=e=>{const i=e.currentTarget.response;t(i.url)},n.onerror=r,n.ontimeout=r,n.onabort=r}))},z._rawGet=async function(e,t,i,s,a,l){l=l||{},i=z.generateUrl(e,t,i,l.apiData,l.escapeOssObjects,l.guid);let c=!1;if(z.isOSSUrl(i)){const e=await z.getSignedS3DownloadUrl(i);e?(i=e,c=!0):console.warn("Failed getting signed URL - Fallback to direct OSS resource.")}if(l.queryParams&&!c){var h=-1===i.indexOf("?")?"?":"&";i=i+h+l.queryParams}var u=new XMLHttpRequest;function d(e){a&&a(u.status,u.statusText,{url:i},u)}function f(e){if("json"===l.responseType)try{if(e instanceof Uint8Array)return(0,o.TN)(e);if("string"==typeof e)return JSON.parse(e)}catch(e){}return e}function p(e){if(u.status>=200&&u.status<400)if(u.response&&u.response instanceof ArrayBuffer){var t;if(31===(t=200===u.status&&l.range?new Uint8Array(u.response,l.range.min,l.range.max-l.range.min):new Uint8Array(u.response))[0]&&139===t[1]){H||(H=!0,n.logger.warn("An LMV resource ("+i+") was not uncompressed by the browser. This hurts performance. Check the Content-Encoding header returned by the server and check whether you're getting double-compressed streams. The warning prints only once but it's likely the problem affects multiple resources."));try{t=V(t)}catch(e){a(r.ErrorCodes.BAD_DATA,"Malformed data received when requesting file",{url:i,exception:e.toString(),stack:e.stack},u)}}s&&s(f(t))}else{var o=u.response;o||l.responseType&&"text"!==l.responseType||(o=u.responseText),s&&s(f(o))}else d()}try{var m=!Object.prototype.hasOwnProperty.call(l,"asynchronous")||l.asynchronous;if(u.open(l.method||(l.noBody?"HEAD":"GET"),i,m),Object.prototype.hasOwnProperty.call(l,"responseType")&&(u.responseType=l.responseType),l.range&&u.setRequestHeader("Range","bytes="+l.range.min+"-"+l.range.max),!c&&(u.withCredentials=!0,Object.prototype.hasOwnProperty.call(l,"withCredentials")&&(u.withCredentials=l.withCredentials),l.headers))for(var g in l.headers)u.setRequestHeader(g,l.headers[g]),"authorization"===g.toLocaleLowerCase()&&(u.withCredentials=!1);m&&(u.onload=p,u.onerror=d,u.ontimeout=d,u.onabort=function(e){a&&a(u.status,"request was aborted",{url:i,aborted:!0},u)},l.ondata&&(u.overrideMimeType("text/plain; charset=x-user-defined"),l._dlProgress={streamOffset:0},u.onreadystatechange=function(){if(u.readyState>2&&200===u.status&&l.ondata){var e=u.responseText;if(l._dlProgress.streamOffset>=e.length)return;var t=q(e,l._dlProgress.streamOffset);l._dlProgress.streamOffset=e.length,l.ondata(t)}})),u.send(l.postData),m||p()}catch(e){a(u.status,u.statusText,{url:i,exception:e},u)}},z._rawGetFetch=async function(e,t,i,n,r,o){o=o||{},i=z.generateUrl(e,t,i,o.apiData,o.escapeOssObjects,o.guid);let s=!1;if(z.isOSSUrl(i)){const e=await z.getSignedS3DownloadUrl(i);e?(i=e,s=!0):console.warn("Failed getting signed URL - Fallback to direct OSS resource.")}if(o.queryParams&&!s){var a=-1===i.indexOf("?")?"?":"&";i=i+a+o.queryParams}var l,c=new Request(i);function h(e){return{getResponseHeader:t=>{var i;return null==e||null===(i=e.headers)||void 0===i?void 0:i.get(t)}}}try{const e={method:o.method||(o.noBody?"HEAD":"GET"),body:o.postData,headers:o.headers||{},signal:o.abortSignal};if(o.range&&(e.headers.Range="bytes="+o.range.min+"-"+o.range.max),!s&&(e.credentials="include",Object.prototype.hasOwnProperty.call(o,"withCredentials")&&!1===o.withCredentials&&(e.credentials="omit"),o.headers))for(var u in o.headers)"authorization"===u.toLocaleLowerCase()&&(e.credentials="omit");if(!(l=await fetch(c,e)).ok){let e=await l.text();return void r(l.status,e,{url:i},h(l))}if(o.ondata){const e=l.body.getReader();for(;;){let{done:t,value:i}=await e.read();if(t)return void(n&&n(null));o.ondata(i)}}else{let e;o.responseType&&"text"!==o.responseType?"json"===o.responseType?e=await l.json():(e=await l.arrayBuffer(),200===c.status&&o.range&&(e=new Uint8Array(e,o.range.min,o.range.max-o.range.min))):e=await l.text(),n&&n(e)}}catch(e){"AbortError"===e.name?r(0,"request was aborted",{url:i,aborted:!0},h(l)):l?r(l.status,l.statusText,{url:i,exception:e},h(l)):r(0,"network error",{url:i,exception:e})}}}function $(e,t){Object.prototype.hasOwnProperty.call(t,"responseType")||(t.responseType="arraybuffer"),Object.prototype.hasOwnProperty.call(t,"withCredentials")||(t.withCredentials=!!e.auth),t.headers=e.headers,t.queryParams=e.queryParams,t.endpoint=e.endpoint,t.escapeOssObjects=e.escapeOssObjects}z.defaultFailureCallback=function(e,t,i){403==e?this.raiseError(r.ErrorCodes.NETWORK_ACCESS_DENIED,"Access denied to remote resource",{url:i.url,httpStatus:e,httpStatusText:t}):404==e?this.raiseError(r.ErrorCodes.NETWORK_FILE_NOT_FOUND,"Remote resource not found",{url:i.url,httpStatus:e,httpStatusText:t}):0===e&&i.aborted?this.raiseError(r.ErrorCodes.LOAD_CANCELED,"Request aborted",{url:i.url,httpStatus:e,httpStatusText:t}):e>=500&&e<600?this.raiseError(r.ErrorCodes.NETWORK_SERVER_ERROR,"Server error when accessing resource",{url:i.url,httpStatus:e,httpStatusText:t}):i.exception?this.raiseError(r.ErrorCodes.NETWORK_FAILURE,"Network failure",{url:i.url,exception:i.exception.toString(),stack:i.exception.stack}):this.raiseError(r.ErrorCodes.NETWORK_UNHANDLED_RESPONSE_CODE,"Unhandled response code from server",{url:i.url,httpStatus:e,httpStatusText:t,data:i})},z.getItem=function(e,t,i,n,r){if($(e,r=r||{}),r.range&&!e.supportsRangeRequests){let e="start="+r.range.min+"&end="+r.range.max;r.queryParams?r.queryParams+="&"+e:r.queryParams=e,r.range=void 0}z.rawGet(e.endpoint,"items",t,i,n,r)},z.getManifest=function(e,t,i,n,r){r=r||{},Object.prototype.hasOwnProperty.call(r,"responseType")||(r.responseType="json"),$(e,r),z.rawGet(e.endpoint,"bubbles",t,i,n,r)},z.getProperties=function(e,t,i,n,r,o){const s={};$(e,s),s.responseType="json",s.guid=i,s.method="POST",s.postData=JSON.stringify(n),s.headers["Content-Type"]="application/json",s.headers.accept="application/json",s.headers["Access-Control-Allow-Origin"]="*",z.rawGet(e.endpoint,"properties",t,r,o,s)},z.getThumbnail=function(e,t,i,n,r){$(e,r=r||{});var o=r.queryParams||"",s=[];if(-1===o.indexOf("guid=")&&r.guid&&s.push("guid="+encodeURIComponent(r.guid)),-1===o.indexOf("role=")){var a=r.role||"rendered";s.push("role="+a)}if(-1===o.indexOf("width=")){let e=r.size||400;s.push("width="+e)}if(-1===o.indexOf("height=")){let e=r.size||400;s.push("height="+e)}-1===o.indexOf("acmsession=")&&r.acmsession&&s.push("acmsession="+r.acmsession);var l=s.join("&");r.queryParams?r.queryParams=r.queryParams+"&"+l:r.queryParams=l,z.rawGet(e.endpoint,"thumbnails",t,i,n,r)},z.getACMSession=function(e,t,i,r){const o={numOfAttempts:4,timeMultiple:5,retry:(e,t)=>(n.logger.warn(`acmsession request failed. Attempt #${t}`),!0)};(0,l.backOff)((()=>new Promise(((i,n)=>{z._getACMSession(e,t,i,n)}))),o).then((function(){return i(...arguments)})).catch((function(){return r(...arguments)}))},z._getACMSession=function(e,t,i,n){var r,o={};for(var s in t)"oauth2AccessToken"===s?r=t[s]:-1!==s.indexOf("x-ads-acm")&&(o[s]=t[s]);o.application="autodesk";var a=new XMLHttpRequest;a.open("POST",e+"/oss-ext/v2/acmsessions",!0),a.setRequestHeader("Content-Type","application/json"),a.setRequestHeader("Authorization","Bearer "+r),a.responseType="json",a.onload=function(){if(200===a.status&&a.response){var e="string"==typeof a.response?JSON.parse(a.response):a.response;e&&e.acmsession?i(e.acmsession):n(a.status,"Can't get acm session from response.")}else n(a.status)},a.onerror=n,a.ontimeout=n,a.send(JSON.stringify(o)),delete o.application}},8412:(e,t,i)=>{"use strict";i.r(t),i.d(t,{endpoint:()=>A,getEnv:()=>g,getOfflineResourcePrefix:()=>S,initLoadContext:()=>w,isOffline:()=>b,setEnv:()=>v,setOffline:()=>x,setOfflineResourcePrefix:()=>E});var n=i(55280),r=i(8600);const o=(0,n.getGlobal)();var s={},a=null;s.ENDPOINT_API_DERIVATIVE_SERVICE_V2="derivativeV2",s.ENDPOINT_API_MODEL_DERIVATIVE_V2="modelDerivativeV2",s.ENDPOINT_API_FLUENT="fluent",s.ENDPOINT_API_D3S="D3S",s.ENDPOINT_API_DERIVATIVE_STREAMING="streamingV2";var l,c={derivativeV2:{baseURL:"/derivativeservice/v2",itemURL:"/derivativeservice/v2/derivatives/:derivativeurn",manifestURL:"/derivativeservice/v2/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",propertyQueryURL:"/modelderivative/v2/designdata/:urn/metadata/:guid/properties:query"},derivativeV2_EU:{baseURL:"/derivativeservice/v2/regions/eu",itemURL:"/derivativeservice/v2/regions/eu/derivatives/:derivativeurn",manifestURL:"/derivativeservice/v2/regions/eu/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/eu/thumbnails/:urn"},derivativeV2_APAC:{baseURL:"/derivativeservice/v2/regions/apac",itemURL:"/derivativeservice/v2/regions/apac/derivatives/:derivativeurn",manifestURL:"/derivativeservice/v2/regions/apac/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/apac/thumbnails/:urn"},derivativeV2_Fedramp:{baseURL:"/derivativeservice/v2",itemURL:"/derivativeservice/v2/derivatives/:derivativeurn",manifestURL:"/derivativeservice/v2/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn"},modelDerivativeV2:{baseURL:"/modelderivative/v2/",itemURL:"/modelderivative/v2/designdata/:urn/manifest/:derivativeurn",manifestURL:"/modelderivative/v2/designdata/:urn/manifest",thumbnailsURL:"/modelderivative/v2/designdata/:urn/thumbnail",propertyQueryURL:"/modelderivative/v2/designdata/:urn/metadata/:guid/properties:query"},fluent:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},D3S:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},D3S_EU:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/eu/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},D3S_APAC:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/APAC/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},streamingV2:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},streamingV2_EU:{baseURL:"/regions/eu/modeldata",itemURL:"/regions/eu/modeldata/file/:derivativeurn",manifestURL:"/regions/eu/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/regions/eu/thumbnails/:urn",cdnURL:"/regions/eu/cdn",cdnWS:"/regions/eu/cdnws"},streamingV2_APAC:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"},streamingV2_Fedramp:{baseURL:"/modeldata",itemURL:"/modeldata/file/:derivativeurn",manifestURL:"/modeldata/manifest/:urn",thumbnailsURL:"/derivativeservice/v2/thumbnails/:urn",cdnURL:"/cdn",cdnWS:"/cdnws"}},h="",u=s.ENDPOINT_API_DERIVATIVE_SERVICE_V2,d=!1,f=!1,p="",m=!1;function g(){return l}function v(e){l=e,e.startsWith("MD20")&&console.warn(`env=${e} is deprecated and will be removed in a future release. Use Autodesk{env}2 instead, where env=Development, Staging, or Production`)}s.HTTP_REQUEST_HEADERS={},s.queryParams={},s.setEndpointAndApi=function(e,t){null!=e&&(h=e),t&&(u=t,t.startsWith("D3S")&&console.warn(`api=${t} is deprecated and will be removed in a future release. Use streamingV2 or streamingV2_EU (europe region) instead`))},s.getEndpointAndApi=function(){return h+c[u].baseURL},s.getApiEndpoint=function(){return h},s.getApiFlavor=function(){return u},s.getCdnUrl=function(){return a||(h?h+c[u].cdnURL:void 0)},s.getCdnWebSocketEndpoint=function(){return h+(c[u].cdnWS||"")},s.setCdnUrl=function(e){a=e},s.getCdnRedirectUrl=function(){var e=c[u].cdnRedirectURL;return e?h+e:null},s.setAcmSession=function(e){p=e},s.getAcmSession=function(){return p},s.getManifestApi=function(e,t,i){var n=e||h;return t=t||"",n=(n+=c[i=i||u].manifestURL).replace(":urn",t)},s.getItemApi=function(e,t,i){var n=i||u,r=(e||h)+c[n].itemURL;t=t||"";var o=decodeURIComponent(t);if(-1!==r.indexOf(":urn")){var a=o.split("/")[0]||"";a=(a=a.split(":"))[a.length-1]||"",r=r.replace(":urn",a)}return n===s.ENDPOINT_API_MODEL_DERIVATIVE_V2&&(t=encodeURIComponent(o)),r=r.replace(":derivativeurn",t)},s.getThumbnailApi=function(e,t,i){return((e||h)+c[i||u].thumbnailsURL).replace(":urn",t||"")},s.getPropertyQueryApi=function(e,t,i,n){let r=(e||h)+c[i||u].propertyQueryURL;return r=r.replace(":urn",t||""),r.replace(":guid",n||"")},s.getUseCredentials=function(){return d},s.getDomainParam=function(){return console.warn("getDomainParam is deprecated, switch to getQueryParams instead."),this.getUseCredentials()&&!(0,n.isNodeJS)()?"domain="+encodeURIComponent(o.location.origin):""},s.addQueryParam=function(e,t){this.queryParams[e]=t},s.deleteQueryParam=function(e){delete this.queryParams[e]},s.getQueryParams=function(e){let t=this.getUseCredentials()&&!(0,n.isNodeJS)()?"domain="+encodeURIComponent(o.location.origin):"";(0,r.getParameterByName)("bypassds")&&(t=t?t+"&bypassds=1":"bypassds=1");let i=[];for(let e in this.queryParams)i.push(encodeURIComponent(e)+"="+encodeURIComponent(this.queryParams[e]));return i.length&&(t?t+="&"+i.join("&"):t=i.join("&")),t&&e&&(e.queryParams?e.queryParams+="&"+t:e.queryParams=t),t},s.setUseCredentials=function(e){d=e},s.setUseCookie=function(e){f=e},s.getUseCookie=function(){return f},s.isOtgBackend=function(){return this.getApiFlavor()===this.ENDPOINT_API_FLUENT},s.isSVF2Backend=function(){let e=this.getApiFlavor();return e.startsWith(this.ENDPOINT_API_D3S)||e.startsWith(this.ENDPOINT_API_DERIVATIVE_STREAMING)},s.setEscapeOssObjects=function(e){m=e},s.getEscapeOssObjects=function(){return m},s.initLoadContext=function(e){for(var t in(e=e||{}).auth=this.getUseCredentials(),e.endpoint||(e.endpoint=this.getApiEndpoint()),e.api||(e.api=this.getApiFlavor()),e.headers||(e.headers={}),this.HTTP_REQUEST_HEADERS)e.headers[t]=this.HTTP_REQUEST_HEADERS[t];return e.api,this.ENDPOINT_API_FLUENT,this.getQueryParams(e),e.otg_cdn=a||this.getCdnUrl(),e.otg_ws=this.getCdnWebSocketEndpoint(),e.escapeOssObjects=this.getEscapeOssObjects(),e};var y=!1;function b(){return y}function x(e){y=e}var _="";function E(e){_=e}function S(){return _}let A=s,w=s.initLoadContext.bind(s)},38685:(e,t,i)=>{"use strict";function n(e){return e[e.LMV_APP_NAMESPACE]=e[e.LMV_APP_NAMESPACE]||{}}function r(){const e="undefined"!=typeof window&&null!==window?window:"undefined"!=typeof self&&null!==self?self:i.g;return e.USE_LMV_APP_NAMESPACES?(e.globalProxy||(e.globalProxy=new Proxy({},{get(t,i){let n=e[i];return"function"==typeof n?function(e,t){return new Proxy(t,{get:(e,t)=>e[t],apply:(t,i,n)=>t.call(e||i,...n)})}(e,n):n},set:(t,i,r)=>(Object.prototype.hasOwnProperty.call(e,i)?e[i]!==r&&(e[i]=r):(n(e)[i]=r,Object.defineProperty(e,i,{get:()=>n(e)[i],set:t=>{n(e)[i]=t}})),!0)})),e.globalProxy):e}i.r(t),i.d(t,{getGlobal:()=>r})},16271:(e,t,i)=>{"use strict";i.r(t),i.d(t,{extendLocalization:()=>w,initializeLocalization:()=>M,setLanguage:()=>T});var n=i(55280);function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}var o=[],s=o.forEach,a=o.slice;function l(e){return s.call(a.call(arguments,1),(function(t){if(t)for(var i in t)void 0===e[i]&&(e[i]=t[i])})),e}function c(){return"function"==typeof XMLHttpRequest||"object"===("undefined"==typeof XMLHttpRequest?"undefined":r(XMLHttpRequest))}var h,u,d,f=i(85178),p=i.t(f,2);function m(e){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},m(e)}"function"==typeof fetch&&(h="undefined"!=typeof global&&global.fetch?global.fetch:"undefined"!=typeof window&&window.fetch?window.fetch:fetch),c()&&("undefined"!=typeof global&&global.XMLHttpRequest?u=global.XMLHttpRequest:"undefined"!=typeof window&&window.XMLHttpRequest&&(u=window.XMLHttpRequest)),"function"==typeof ActiveXObject&&("undefined"!=typeof global&&global.ActiveXObject?d=global.ActiveXObject:"undefined"!=typeof window&&window.ActiveXObject&&(d=window.ActiveXObject)),h||!p||u||d||(h=f||p),"function"!=typeof h&&(h=void 0);var g=function(e,t){if(t&&"object"===m(t)){var i="";for(var n in t)i+="&"+encodeURIComponent(n)+"="+encodeURIComponent(t[n]);if(!i)return e;e=e+(-1!==e.indexOf("?")?"&":"?")+i.slice(1)}return e},v=function(e,t,i){h(e,t).then((function(e){if(!e.ok)return i(e.statusText||"Error",{status:e.status});e.text().then((function(t){i(null,{status:e.status,data:t})})).catch(i)})).catch(i)},y=!1;const b=function(e,t,i,n){return"function"==typeof i&&(n=i,i=void 0),n=n||function(){},h?function(e,t,i,n){e.queryStringParams&&(t=g(t,e.queryStringParams));var r=l({},"function"==typeof e.customHeaders?e.customHeaders():e.customHeaders);i&&(r["Content-Type"]="application/json");var o="function"==typeof e.requestOptions?e.requestOptions(i):e.requestOptions,s=l({method:i?"POST":"GET",body:i?e.stringify(i):void 0,headers:r},y?{}:o);try{v(t,s,n)}catch(e){if(!o||0===Object.keys(o).length||!e.message||e.message.indexOf("not implemented")<0)return n(e);try{Object.keys(o).forEach((function(e){delete s[e]})),v(t,s,n),y=!0}catch(e){n(e)}}}(e,t,i,n):c()||"function"==typeof ActiveXObject?function(e,t,i,n){i&&"object"===m(i)&&(i=g("",i).slice(1)),e.queryStringParams&&(t=g(t,e.queryStringParams));try{var r;(r=u?new u:new d("MSXML2.XMLHTTP.3.0")).open(i?"POST":"GET",t,1),e.crossDomain||r.setRequestHeader("X-Requested-With","XMLHttpRequest"),r.withCredentials=!!e.withCredentials,i&&r.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),r.overrideMimeType&&r.overrideMimeType("application/json");var o=e.customHeaders;if(o="function"==typeof o?o():o)for(var s in o)r.setRequestHeader(s,o[s]);r.onreadystatechange=function(){r.readyState>3&&n(r.status>=400?r.statusText:null,{status:r.status,data:r.responseText})},r.send(i)}catch(e){console&&console.log(e)}}(e,t,i,n):void n(new Error("No fetch and no xhr implementation found!"))};function x(e,t){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.services=t,this.options=i,this.allOptions=n,this.type="backend",this.init(t,i,n)}var t,i,n;return t=e,i=[{key:"init",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.services=e,this.options=l(i,this.options||{},_()),this.allOptions=n,this.services&&this.options.reloadInterval&&setInterval((function(){return t.reload()}),this.options.reloadInterval)}},{key:"readMulti",value:function(e,t,i){this._readAny(e,e,t,t,i)}},{key:"read",value:function(e,t,i){this._readAny([e],e,[t],t,i)}},{key:"_readAny",value:function(e,t,i,n,r){var o,s=this,a=this.options.loadPath;"function"==typeof this.options.loadPath&&(a=this.options.loadPath(e,i)),(a=function(e){return!!e&&"function"==typeof e.then}(o=a)?o:Promise.resolve(o)).then((function(o){if(!o)return r(null,{});var a=s.services.interpolator.interpolate(o,{lng:e.join("+"),ns:i.join("+")});s.loadUrl(a,r,t,n)}))}},{key:"loadUrl",value:function(e,t,i,n){var r=this;this.options.request(this.options,e,void 0,(function(o,s){if(s&&(s.status>=500&&s.status<600||!s.status))return t("failed loading "+e+"; status code: "+s.status,!0);if(s&&s.status>=400&&s.status<500)return t("failed loading "+e+"; status code: "+s.status,!1);if(!s&&o&&o.message&&o.message.indexOf("Failed to fetch")>-1)return t("failed loading "+e+": "+o.message,!0);if(o)return t(o,!1);var a,l;try{a="string"==typeof s.data?r.options.parse(s.data,i,n):s.data}catch(t){l="failed parsing "+e+" to json"}if(l)return t(l,!1);t(null,a)}))}},{key:"create",value:function(e,t,i,n,r){var o=this;if(this.options.addPath){"string"==typeof e&&(e=[e]);var s=this.options.parsePayload(t,i,n),a=0,l=[],c=[];e.forEach((function(i){var n=o.options.addPath;"function"==typeof o.options.addPath&&(n=o.options.addPath(i,t));var h=o.services.interpolator.interpolate(n,{lng:i,ns:t});o.options.request(o.options,h,s,(function(t,i){a+=1,l.push(t),c.push(i),a===e.length&&r&&r(l,c)}))}))}}},{key:"reload",value:function(){var e=this,t=this.services,i=t.backendConnector,n=t.languageUtils,r=t.logger,o=i.language;if(!o||"cimode"!==o.toLowerCase()){var s=[],a=function(e){n.toResolveHierarchy(e).forEach((function(e){s.indexOf(e)<0&&s.push(e)}))};a(o),this.allOptions.preload&&this.allOptions.preload.forEach((function(e){return a(e)})),s.forEach((function(t){e.allOptions.ns.forEach((function(e){i.read(t,e,"read",null,null,(function(n,o){n&&r.warn("loading namespace ".concat(e," for language ").concat(t," failed"),n),!n&&o&&r.log("loaded namespace ".concat(e," for language ").concat(t),o),i.loaded("".concat(t,"|").concat(e),n,o)}))}))}))}}}],i&&x(t.prototype,i),n&&x(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();E.type="backend";const S=E;var A=i(77427),w=function(e){return null!==e&&"object"==typeof e&&(Object.keys(e).forEach((function(t){Autodesk.Viewing.i18n.addResourceBundle(t,"allstrings",e[t],!0,!0)})),!0)},T=function(e,t){return(0,n.getGlobal)().LOCALIZATION_REL_PATH="res/locales/"+e+"/",Autodesk.Viewing.i18n.changeLanguage(e).then((()=>Autodesk.Viewing.i18n.reloadResources())).then((()=>{t&&t()}))},M=function(e){const t=(0,n.getGlobal)(),i=t&&t.document;Autodesk.Viewing.i18n.localize=function(e){var t=e||i;Array.prototype.forEach.call(t.querySelectorAll("[data-i18n]"),(function(e){var t=e.getAttribute("data-i18n"),i=[null,t],n=i[0],r=i[1],o=Autodesk.Viewing.i18n.translate(r);o?n?e.setAttribute(n,o):e.placeholder?e.placeholder=o:e.textContent=o:n?e.setAttribute(n,r):e.textContent=r}))};var r=e&&e.language||navigator.language;return r=A.Lang.getSupported(r),Autodesk.Viewing.i18n.use(S).init({lng:r,backend:{loadPath:Autodesk.Viewing.Private.getResourceUrl("res/locales/%(lng)/%(ns).json")},ns:"allstrings",defaultNS:"allstrings",fallbackLng:"en",debug:!1,useCookie:!1,interpolation:{prefix:"%(",suffix:")",escapeValue:!1}}),T(r)}},77427:e=>{"use strict";let t=new function(){this.names=[{symbol:"en",label:"English"},{symbol:"zh-Hans",label:"Chinese Simplified"},{symbol:"zh-Hant",label:"Chinese Traditional"},{symbol:"zh-HK",label:"Hong Kong Traditional"},{symbol:"ja",label:"Japanese"},{symbol:"cs",label:"Czech"},{symbol:"ko",label:"Korean"},{symbol:"pl",label:"Polish"},{symbol:"ru",label:"Russian"},{symbol:"fr",label:"French"},{symbol:"fr-CA",label:"Canadian French"},{symbol:"de",label:"German"},{symbol:"it",label:"Italian"},{symbol:"nl",label:"Dutch"},{symbol:"es",label:"Spanish"},{symbol:"pt-PT",label:"Portuguese Portugal"},{symbol:"pt-BR",label:"Portuguese Brazil"},{symbol:"tr",label:"Turkish"},{symbol:"sv",label:"Swedish"},{symbol:"da",label:"Danish"},{symbol:"no",label:"Norwegian"},{symbol:"en-GB",label:"British English"}],this.isSupported=function(e){for(var t=0;t1){let i=t[1].toUpperCase();i.length>2&&(i=i[0]+i.substring(1).toLowerCase()),e+="-"+i}return this.isSupported(e)||(e=e.indexOf("zh-CN")>-1?"zh-Hans":e.indexOf("zh-TW")>-1?"zh-Hant":t.length>1&&this.isSupported(t[0].toLowerCase())?t[0]:"en"),e},this.getLanguages=function(){return this.names.slice()}};e.exports={Lang:t}},8600:(e,t,i)=>{"use strict";i.r(t),i.d(t,{DISABLE_FORGE_CANVAS_LOGO:()=>l,DISABLE_FORGE_LOGO:()=>a,fromUrlSafeBase64:()=>y,getHtmlTemplate:()=>u,getParameterByName:()=>p,getParameterByNameFromPath:()=>m,getResourceUrl:()=>f,getScript:()=>c,injectCSS:()=>h,isExperimentalFlagEnabled:()=>d,stringToDOM:()=>g,toUrlSafeBase64:()=>v});var n=i(55280),r=(0,n.getGlobal)(),o=r,s=o&&o.document;r.LOCALIZATION_REL_PATH="",r.LMV_VIEWER_VERSION="7.99.1",r.LMV_BUILD_TYPE="Production",r.LMV_RESOURCE_ROOT="",r.LMV_IS_FLUENT_BUILD=!1,r.USE_OTG_DS_PROXY=!1,r.LMV_THIRD_PARTY_COOKIE=!(0,n.isNodeJS)()&&void 0,"v"===r.LMV_VIEWER_VERSION.charAt(0)&&(r.LMV_VIEWER_VERSION=r.LMV_VIEWER_VERSION.substr(1)),r.LMV_VECTOR_PDF=!1,r.LMV_RASTER_PDF=!0;let a=!1,l=!0;function c(e){e=e.toLowerCase();var t=s.getElementsByTagName("SCRIPT");if(t&&t.length>0)for(var i=0;i0?e:f(e),r=s.getElementsByTagName("link"),o=0,a=r.length;o0?e:f(e),n=new XMLHttpRequest;function r(e){t(e,null)}n.onload=function(e){var i=e.currentTarget.responseText;t(null,i)},n.onerror=r,n.ontimeout=r,n.open("GET",i,!0),n.send()}function d(e,t){return!(!t||!Array.isArray(t.experimental))&&-1!==t.experimental.indexOf(e)}function f(e){return r.LMV_RESOURCE_ROOT+e}function p(e){return"undefined"==typeof window?"":m(e,o.location.href)}function m(e,t){e=e.replace(/[[]/,"\\[").replace(/[\]]/,"\\]");var i=new RegExp("[\\?&]"+e+"=([^&#]*)").exec(t);return null==i?"":decodeURIComponent(i[1].replace(/\+/g," "))}function g(e){var t=s.createElement("div");return t.innerHTML=e,t.firstChild}function v(e){return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function y(e){for(e=(e=e.replace(/-/g,"+")).replace(/_/g,"/");e.length%4;)e+="=";return(0,n.isNodeJS)()?Buffer.from(e,"base64").toString():atob(e)}},1581:(e,t,i)=>{"use strict";i.r(t),i.d(t,{AlertBox:()=>r});var n=i(38842);function r(){}r.instances=[],r.displayError=function(e,t,i,o,s,a){var l=e.ownerDocument,c=l.createElement("div");c.className="alert-box error",e.appendChild(c);var h=o;h||(h="img-item-not-found");var u=l.createElement("div");u.className="alert-box-image "+h,c.appendChild(u);var d=l.createElement("div");d.className="alert-box-msg",c.appendChild(d);var f=i;f||(f=n.A.t("Error Occurred",{defaultValue:"Error Occurred"}));var p=l.createElement("div");p.className="alert-box-title",p.textContent=f,p.setAttribute("data-i18n",f),d.appendChild(p);var m=l.createElement("div");if(m.className="alert-box-text",m.textContent=t,m.setAttribute("data-i18n",t),d.appendChild(m),s){var g=l.createElement("div");g.className="alert-box-content",d.appendChild(g);var v=l.createElement("ul");v.className="alert-box-content";for(var y=0;y")){var i=e.split("
    ");t.msg=i[0],i=i[1].split("
"),t.list=i[0].split(", "),1===t.list.length&&(t.list=i[0].split(","))}return t},r.generateListElement=function(e,t){for(var i=t.createElement("ul"),n=0;nt&&t.tag===e));if(-1==t)return!1;var i=r.instances[t];return i.alertBox.style.visibility="hidden",i.container.removeChild(i.alertBox),r.instances.splice(t,1),!0},r.dismiss=function(){if(r.instances.length>0){var e=r.instances.pop();return e.alertBox.style.visibility="hidden",e.container.removeChild(e.alertBox),!0}return!1}},86022:(e,t,i)=>{"use strict";i.r(t),i.d(t,{OptionButton:()=>u,OptionCheckbox:()=>c,OptionDropDown:()=>d,OptionLabel:()=>h,OptionRow:()=>p,OptionSlider:()=>l,ResizeFooter:()=>f,SimpleList:()=>m});var n=i(25004),r=i(38842),o=i(55280),s=i(26206);const a=i(41944);function l(e,t,i,n,o){var s=this;this.tbody=n;var a=o&&o.insertAtIndex?o.insertAtIndex:-1;this.hideStepper=o&&o.hideStepper;var l=o&&o.hideCaption;this.sliderRow=this.tbody.insertRow(a),this.sliderRow.classList.add("switch-slider-row");var c=this.getDocument(),h=this.sliderRow.insertCell(0);function u(e){e.target!=s.stepperElement&&(s.stepperElement.value=s.sliderElement.value),s.fireChangeEvent()}this.caption=c.createElement("div"),this.caption.setAttribute("data-i18n",e),this.caption.textContent=r.A.t(e),l&&(this.caption.style.display="none"),h.appendChild(this.caption),h=this.sliderRow.insertCell(1),this.sliderElement=c.createElement("input"),this.sliderElement.type="range",this.sliderElement.id=e+"_slider",this.sliderElement.min=t,this.sliderElement.max=i,this.sliderElement.style.width="85%",h.appendChild(this.sliderElement),h=this.sliderRow.insertCell(2),this.stepperElement=c.createElement("input"),this.stepperElement.type="number",this.stepperElement.id=e+"_stepper",this.stepperElement.min=t,this.stepperElement.max=i,this.stepperElement.step=1,this.stepperElement.style.width="64px",this.hideStepper&&(this.stepperElement.style.display="none"),h.appendChild(this.stepperElement),this.blockEvent=!1,this.stepperElement.addEventListener("change",(function(e){e.target!=s.sliderElement&&(s.sliderElement.value=s.stepperElement.value),s.fireChangeEvent()}),!1),this.sliderElement.addEventListener("change",u,!1),this.sliderElement.addEventListener("input",u,!1)}function c(e,t,i,n,s,l){var c=this;this.tbody=t;var h=l&&l.insertAtIndex?l.insertAtIndex:-1;this.sliderRow=this.tbody.insertRow(h),this.sliderRow.classList.add("switch-slider-row");var u=this.getDocument(),d=this.sliderRow.insertCell(0);if(this.caption=u.createElement("div"),this.caption.setAttribute("data-i18n",e),this.caption.textContent=r.A.t(e,null==l?void 0:l.i18nOptions),d.appendChild(this.caption),l&&!0===l.betaLabel){let e=u.createElement("div");e.setAttribute("data-i18n","BETA"),e.textContent=r.A.t("BETA",null==l?void 0:l.i18nOptions),e.classList.add("switch-slider-row-beta-label"),this.caption.appendChild(e)}d=this.sliderRow.insertCell(1),n&&(this.description=u.createElement("div"),this.description.setAttribute("data-i18n",n),this.description.textContent=r.A.t(n,null==l?void 0:l.i18nOptions),d.appendChild(this.description),d=this.sliderRow.insertCell(2));var f=u.createElement("label");f.classList.add("switch"),this.checkElement=u.createElement("input"),this.checkElement.type="checkbox",this.checkElement.id=e+"_check",this.checkElement.checked=i,f.appendChild(this.checkElement);var p=u.createElement("div");p.classList.add("slider"),f.appendChild(p),d.appendChild(f),this.blockEvent=!1,this.checked=i,this.checkElement.addEventListener("change",(function(e){c.fireChangeEvent()}),!1),(0,o.isTouchDevice)()&&(this.sliderRowHammer=new a.Manager(this.sliderRow,{recognizers:[[a.Tap]],handlePointerEventMouse:!1,inputClass:a.TouchInput}),this.sliderRowHammer.on("tap",(function(e){e.preventDefault(),e.target.click()}))),this.checkElement.addEventListener("click",(function(e){e.stopPropagation()}),!1),this.sliderRow.addEventListener("click",(function(e){c.checkElement.disabled||(c.checkElement.checked=!c.checkElement.checked,c.fireChangeEvent())}),!1),s&&this.setGlobalManager(s)}function h(e,t,i,n){this.tbody=t;var o=n&&n.insertAtIndex?n.insertAtIndex:-1;this.sliderRow=this.tbody.insertRow(o);var s=this.getDocument(),a=this.sliderRow.insertCell(0);this.caption=s.createElement("div"),this.caption.setAttribute("data-i18n",e),this.caption.textContent=r.A.t(e),a.appendChild(this.caption),a.colSpan="3",this.blockEvent=!1,this.removeFromParent=function(){this.tbody.removeChild(this.sliderRow),this.tbody=null,this.sliderRow=null,this.caption=null}}function u(e,t,i,n){this.tbody=t;var o=n&&n.insertAtIndex?n.insertAtIndex:-1;this.sliderRow=this.tbody.insertRow(o),this.sliderRow.insertCell();var s=this.sliderRow.insertCell();this.sliderRow.insertCell();var a=this.getDocument();this.caption=a.createElement("div"),this.caption.setAttribute("data-i18n",e),this.caption.textContent=r.A.t(e),this.caption.classList.add("adsk-button"),this.caption.classList.add("table-button"),s.appendChild(this.caption),this.removeFromParent=function(){this.tbody.removeChild(this.sliderRow),this._onClick&&(this.caption.removeEventListener("click",this._onClick),this._onClick=null),this.tbody=null,this.sliderRow=null,this.caption=null},this.setOnClick=function(e){this._onClick=e,this.caption.addEventListener("click",e,!1)}}function d(e,t,i,n,o,s,a){var l=this;this.tbody=t;var c=a&&a.insertAtIndex?a.insertAtIndex:-1;this.sliderRow=this.tbody.insertRow(c);var h=this.getDocument();this.dropdownElement=h.createElement("select"),this.dropdownElement.id=e+"_dropdown",this.dropdownElement.classList.add("option-drop-down");for(var u=0;u{"use strict";i.r(t),i.d(t,{ContextMenu:()=>l});var n=i(55280),r=i(83081),o=i(38842),s=i(26206),a=i(24840);function l(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.viewer=e,this.setGlobalManager(e.globalManager),this.menus=[],this.container=null,this.open=!1,this._onDOMevent=this._onDOMevent.bind(this),this.onHide=t.onHide}l.prototype.constructor=l,s.GlobalManagerMixin.call(l.prototype),l.prototype.show=function(e,t){var i=this.viewer.container.getBoundingClientRect();Array.isArray(e.changedPointers)&&e.changedPointers.length>0&&(e.clientX=e.changedPointers[0].clientX,e.clientY=e.changedPointers[0].clientY);var n=e.clientX-i.left,r=e.clientY-i.top;this.open||(this.showMenu(t,n,r),this.open=!0),this._startX=e.clientX,this._startY=e.clientY},l.prototype.showMenu=function(e,t,i,o){var s,a=[],l=this.getDocument(),c=l.createElement("div");c.style.left="0",c.style.top="0",c.style.width="100%",c.style.height="100%",c.style.position="absolute",c.style.zIndex="10";var h=l.createElement("div");h.classList.add("menu"),h.classList.add("docking-panel"),h.classList.add("docking-panel-container-solid-color-a"),c.appendChild(h),this.viewer.container.appendChild(c),this.container=c,this.menus.push(h);let u=!1;for(var d=0;d0&&i.removeChild(n[0])}}var b=h.getBoundingClientRect(),x=b.width,_=b.height,E=this.viewer.container.getBoundingClientRect(),S=E.width,A=E.height;(o=!!o||(0,n.isTouchDevice)()&&!this.viewer.navigation.getUseLeftHandedInput())&&(t-=x),t<0&&(t=0),S{const i=e.getElementsByClassName("menu-item-expand");e.removeChild(i[0]);const n=e.getElementsByClassName("menu-item-icon");n.length>0&&e.insertBefore(n[0],e.childNodes[e.length-1]),this.setMenuExpand(e,!0,t)};let T=!1;for(d=0;d0&&T){const e=h.children;for(let t=0;t2&&-1!==i.children[2].className.indexOf("menu-item-expand")&&w(i,!1)}}this.container.addEventListener("touchend",this._onDOMevent),this.container.addEventListener("mousedown",this._onDOMevent),this.container.addEventListener("mouseup",this._onDOMevent),(0,n.isTouchDevice)()||this.container.addEventListener("mousemove",this._onDOMevent)},l.prototype._onDOMevent=function(e){switch(e.type){case"touchend":this._isContextMenu(e)||this.hide();break;case"mousedown":this._startX=e.clientX,this._startY=e.clientY;break;case"mouseup":this._isContextMenu(e)||(this.hide(),a.EventUtils.isRightClick(e)&&e.clientX===this._startX&&e.clientY===this._startY&&this.viewer.triggerContextMenu(e));break;case"mousemove":{if(!this.currentItem||this.menus.length<2)break;const t=this._isInside(e,this.currentItem),i=this._isInside(e,this.menus[1]);t||i?this.currentItem.backgroundColor&&(this.currentItem.style.backgroundColor=this.currentItem.backgroundColor):(this.hideMenu(this.menus[1]),this.currentItem.style.backgroundColor=null,this.currentItem=null);break}}},l.prototype.createMenuItem=function(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];var r=this.getDocument().createElement("div");return r.className="menu-item",i=i||"",this.setMenuItemIcon(r,t),this.setMenuItemText(r,e),this.setMenuExpand(r,!1,n),this.setMenuItemShortcut(r,i),r},l.prototype.createDivider=function(){var e=this.getDocument(),t=e.createElement("div");t.className="menu-divider-container";var i=e.createElement("div");return i.className="menu-divider",t.appendChild(i),t},l.prototype.setMenuItemIcon=function(e,t){var i=this.getDocument().createElement("div");i.classList.add("menu-item-icon"),t&&i.classList.add(t),e.appendChild(i)},l.prototype.setMenuItemText=function(e,t){var i=this.getDocument().createElement("div");i.classList.add("menu-item-text"),i.setAttribute("data-i18n",t),i.textContent=o.A.t(t),e.appendChild(i)},l.prototype.setMenuItemShortcut=function(e,t){var i=this.getDocument().createElement("div");i.classList.add("menu-item-shortcut"),i.textContent=t,e.appendChild(i)},l.prototype.setMenuExpand=function(e,t,i){var n=this.getDocument().createElement("div");n.classList.add("menu-item-expand"),t?(n.style.transform="scale(-1)",e.insertBefore(n,e.childNodes[0])):e.appendChild(n);const r=0|i;n.style.opacity=r},l.prototype.addCallbackToMenuItem=function(e,t){var i=this;e.addEventListener("click",(function(e){return i.hide(),t(),e.preventDefault(),!1}),!1)},l.prototype.addSubmenuCallbackToMenuItem=function(e,t,i,r,o){var s=this;t.isChild=!0,(0,n.isTouchDevice)()?e.addEventListener("click",(function(){s.open=!0,s.currentItem=e,s.showMenu(t,i,r,o)}),!1):e.addEventListener("mouseenter",(function(){s.open=!0,s.currentItem=e;const n=s.getWindow().getComputedStyle(s.currentItem).getPropertyValue("background-color");s.currentItem.backgroundColor=n,s.showMenu(t,i,r,o)}),!1)},l.prototype.hideMenu=function(e){const t=e=>{e.removeEventListener("touchend",this._onDOMevent),e.removeEventListener("mousedown",this._onDOMevent),e.removeEventListener("mouseup",this._onDOMevent),(0,n.isTouchDevice)()||e.removeEventListener("mousemove",this._onDOMevent),e.parentNode.removeChild(e)};e&&-1!==this.menus.indexOf(e)&&e.parentNode&&(t(e.parentNode),this.menus.splice(this.menus.indexOf(e),1)),0===this.menus.length?(this.open=!1,this.container=null):1===this.menus.length&&(this.container=this.menus[0].parentNode)},l.prototype.hide=function(){if(this.open){for(;this.menus.length>0;)this.hideMenu(this.menus[0]);return this.onHide&&this.onHide(),!0}return!1},l.prototype._isContextMenu=function(e){for(let i=0;i0&&(e.clientX=e.changedPointers[0].clientX,e.clientY=e.changedPointers[0].clientY);var n=Math.ceil(e.clientX-i.left),r=Math.ceil(e.clientY-i.top);const o=t.getBoundingClientRect(),s=Math.floor(o.top-i.top)-1,a=Math.floor(o.left-i.left)-1,l=Math.ceil(o.bottom-i.top),c=Math.ceil(o.right-i.left);return r>=s&&r<=l&&n>=a&&n<=c}},82024:(e,t,i)=>{"use strict";i.r(t),i.d(t,{DataTable:()=>o});var n=i(8939);const r=Autodesk.Viewing.UI;function o(e){if(!(e instanceof r.DockingPanel))throw new Error("Invalid docking panel");this.dockingPanel=e;let t=this.dockingPanel.getDocument();this.datatableDiv=t.createElement("div"),this.datatableDiv.setAttribute("id","datatable"),this.datatableDiv.setAttribute("class","datatable"),e.container.appendChild(this.datatableDiv),e.footerInstance&&(e.footerInstance.resizeCallback=this._fitHeaderColumns.bind(this)),this.groupedByColumn=!1,this.aggregated=!1}o.prototype._createColumns=function(e){let t=this.dockingPanel.getDocument();var i=t.createElement("div");i.setAttribute("id","columnArea"),i.setAttribute("class","clusterize-headers");var n='
';i.innerHTML=n,this.datatableDiv.appendChild(i);var r=i.querySelector("tr");e.forEach((function(e){var i=t.createElement("th");i.appendChild(t.createTextNode(e)),r.appendChild(i)})),n=this.datatableDiv.querySelector("table"),this._makeTableSortable(n)},o.prototype._createRows=function(){var e=this.dockingPanel.getDocument().createElement("div");e.innerHTML='
Loading data…
',this.datatableDiv.appendChild(e)},o.prototype.setData=function(e,t){if(t.length!==e[0].length)throw new Error("Column length should be same as the row length");this._createColumns(t),this._createRows();var i=this;this.rowData=e,this.clusterize=new n({rows:this.rowData.map((function(e){return""+e.map((function(e){return""+e+""})).join(" ")+""})),scrollId:"scrollArea",contentId:"contentArea",callbacks:{clusterChanged:function(){i._fitHeaderColumns(),i._syncHeaderWidth(),i.groupedByColumn&&i._updateClusterGroup()}}}),this.datatableDiv.querySelector(".clusterize-scroll").addEventListener("scroll",(function(){var e=this.scrollLeft;r(e)}));var r=function(e){i.datatableDiv.querySelector("#headersArea").style.setProperty("margin-left",-e+"px")}},o.prototype.destroyTable=function(){this.clusterize.destroy(!0),this.clusterize=null,this.rowData=null,this.groupedByColumn=!1},o.prototype._makeTableSortable=function(e){var t,i=this,n=e.tHead;if(n&&n.rows[0]&&(n=n.rows[0].cells),n)for(t=n.length;--t>=0;)!function(e){var t=1;n[e].addEventListener("click",(function(){i._sortTable(e,t=1-t)}))}(t)},o.prototype._sortTable=function(e,t){var i=this.rowData;this.sortFunction||this.restoreDefaultSortFunction();var n=this.sortFunction&&this.sortFunction.bind(this),r=(i=i.sort(n(e,t))).map((function(e){return""+e.map((function(e){return""+e+""})).join(" ")+""}));this.clusterize.update(r);var o=this.datatableDiv.querySelector("#bodyArea");o.classList.contains("table-striped")||o.classList.add("table-striped")},o.prototype.setSortFunction=function(e){this.sortFunction=e},o.prototype.getSortFunction=function(){return this.sortFunction},o.prototype.restoreDefaultSortFunction=function(){this.sortFunction=function(e,t){return t=-(+t||-1),function(i,n){return t*i[e].localeCompare(n[e])}}},o.prototype.getGroupByColumn=function(e){var t=this.rowData,i={};for(let r=0;r0)o=""+o.map((function(e){return""+e+""})).join(" ")+"";else{const e=o.length;o=""+o.map((function(t,i){return e===i+1?""+t+'':""+t+""})).join(" ")+""}i[n].push(o)}var r=[];for(let e in i){var o=i[e];for(let e=0;e{this._slideDown(e),e.style.fontSize="14px"}));var a=this._fitHeaderColumns.bind(this),l=this._expandContent.bind(this);this.datatableDiv.querySelectorAll("span").forEach((e=>{e.addEventListener("click",(function(e){l(this,e),a()}))})),this._fitHeaderColumns(),this.groupedByColumn||(this.groupedByColumn=!0)},o.prototype._updateClusterGroup=function(){var e=this._fitHeaderColumns.bind(this),t=this._expandContent.bind(this);this.datatableDiv.querySelectorAll("span").forEach((i=>{i.addEventListener("click",(function(i){t(this,i),e()}))})),this.datatableDiv.querySelectorAll(".subrow").forEach((e=>{this._slideDown(e),e.style.fontSize="14px"}))},o.prototype._expandContent=function(e){var t=!1;"collapsed"===e.className&&(t=!0);var i=t?14:0,n=e.closest("tr"),r=this._nextUntil(n,":not(.subrow)");for(let e=0;e{e.style.removeProperty("height"),e.style.removeProperty("overflow"),e.style.removeProperty("transition-duration"),e.style.removeProperty("transition-property")}),t)},o.prototype.getAggregate=function(e,t){var i,n=this.rowData,r=null;switch(e){case"MIN":r=function(){var e=n[0][t];for(let i=1;in[i][t]&&(e=n[i][t]);return e||0}();break;case"MAX":r=function(){var e=n[0][t];for(let i=1;i',this.datatableDiv.appendChild(a)}for(var l=this.datatableDiv.querySelector("#aggregateArea"),c=0;c-1)return}for(var h=0;h{"use strict";i.r(t),i.d(t,{DockingPanel:()=>o});var n=i(38842),r=i(86022);function o(e,t,i,n){this.kMinWdth=100,this.kMinHeight=100,this.visibilityCallbacks=[],this.movedSinceLastClick=!1,this.movedSinceCreate=!1,this.parentContainer=e;var r=this.getDocument();this.container=r.createElement("div"),this.container.id=t,this.container.lastWidth="",this.container.dockRight=!1,this.container.dockBottom=!1,this.titleLabel=i,n=n||{},Object.prototype.hasOwnProperty.call(n,"localizeTitle")||(n.localizeTitle=!0),Object.prototype.hasOwnProperty.call(n,"addFooter")||(n.addFooter=!0),this.options=n,this.container.classList.add("docking-panel"),e.appendChild(this.container),this.listeners=[],this.initialize(),this.setVisible(!1)}i(26206).GlobalManagerMixin.call(o.prototype),o.prototype.onSetGlobalManager=function(e){this.footerInstance&&this.footerInstance.setGlobalManager(e)},o.prototype.initialize=function(){this.title=this.createTitleBar(this.titleLabel||this.container.id),this.container.appendChild(this.title),this.initializeMoveHandlers(this.title),this.setTitle(this.titleLabel||this.container.id,this.options),this.closer=this.createCloseButton(),this.container.appendChild(this.closer),this.options.addFooter&&(this.footer=this.createFooter(),this.container.appendChild(this.footer))},o.prototype.uninitialize=function(){for(var e=0;e0?l+"px":0}this.container.style.maxHeight=t.height+"px",this.container.style.maxWidth=t.width+"px",this.container.style.display="block",this.bringToFront()}else this.container.lastWidth=this.container.style.width,this.container.lastHeight=this.container.style.height,this.container.style.display="none";for(var c=0;cparseInt(c.style.maxWidth)&&(c.style.width=c.style.maxWidth),c.style.maxHeight&&parseInt(c.style.height)>parseInt(c.style.maxHeight)&&(c.style.height=c.style.maxHeight),parseInt(c.style.width)o&&(t=o),this.container.style.maxHeight=o.toString()+"px",this.container.style.height=t.toString()+"px"}},o.prototype.getContainerBoundingRect=function(){return this.parentContainer.getBoundingClientRect()},o.prototype.animateScroll=function(e,t,i){var n=this.scrollEaseCurve,r=this.scrollEaseSpeed,o=this.scrollContainer;var s=performance.now();requestAnimationFrame((function a(l){var c=(l-s)*r;c=Math.min(c,1);var h=function(e,t){var i=3*e[1],n=3*(e[3]-e[1])-i;return(((1-i-n)*t+n)*t+i)*t}(n,c),u=e+(t-e)*h;o.scrollTop=u,i&&i(u),c<1&&requestAnimationFrame(a)}))},o.prototype.onViewerResize=function(e,t,i,n,r,o){var s=this.container,a=s.getBoundingClientRect(),l=a.width,c=a.height;if(!l||!c)return!1;var h=a.top,u=a.bottom,d=a.left,f=a.right;return r{"use strict";i.r(t),i.d(t,{ErrorHandler:()=>l});var n=i(1581),r=i(83081),o=i(38842),s=i(11653),a={1:{img:"img-reload","globalized-msg":"Viewer-UnknownFailure","default-msg":" Sorry We seem to have some technical difficulties and couldn't complete your request.Try loading the item again. Please verify your Internet connection, and refresh the browser to see if that fixes the problem."},2:{img:"img-unsupported","globalized-msg":"Viewer-BadData","default-msg":" Sorry The item you are trying to view was not processed completely. Try loading the item again.Please upload the file again to see if that fixes the issue."},3:{img:"img-reload","globalized-msg":"Viewer-NetworkError","default-msg":" Sorry We seem to have some technical difficulties and couldn't complete your request. Try loading the item again. Please verify your Internet connection, and refresh the browser to see if that fixes the problem."},4:{img:"img-unlock","globalized-msg":"Viewer-AccessDenied","default-msg":" No access Sorry. You don’t have the required privileges to access this item. Please contact the author"},5:{img:"img-item-not-found","globalized-msg":"Viewer-FileNotFound","default-msg":' Sorry We can’t display the item you are looking for. It may not have been processed yet. It may have been moved, deleted, or you may be using a corrupt file or unsupported file format. Try loading the item again. Please upload the file again to see if that fixes the issue. See a list of supported formats.'},6:{img:"img-reload","globalized-msg":"Viewer-ServerError","default-msg":" Sorry We seem to have some technical difficulties and couldn't complete your request. Try loading the item again. Please verify your Internet connection, and refresh the browser to see if that fixes the problem."},7:{img:"img-reload","globalized-msg":"Viewer-UnhandledResponseCode","default-msg":" Network problem Sorry. We seem to have some technical difficulties and couldn't complete your request. Try loading the item again. Please verify your Internet connection, and refresh the browser to see if that fixes the problem."},8:{img:"img-unsupported","globalized-msg":"Viewer-WebGlNotSupported","default-msg":'SorryWe can\'t show this item because this browser doesn\'t support WebGL.Try Google Chrome, Mozilla Firefox, or another browser that supports WebGL 3D graphics.For more information, see the A360 browser reqirements.'},9:{img:"img-item-not-found","globalized-msg":"Viewer-NoViewable","default-msg":" No viewable content There’s nothing to display for this item. It may not have been processed or it may not have content we can display. Please contact the author. Please upload the file again to see if that fixes the issue."},10:{img:"img-unsupported","globalized-msg":"Viewer-WebGlDisabled","default-msg":'SorryWe can\'t show this item because WebGL is disabled on this device. For more information see the A360 Help.'},11:{img:"img-item-not-found","globalized-msg":"Viewer-ModeIsEmpty","default-msg":"Model is emptyModel is empty, there is no geometry for the viewer to show. Please contact the author. Please upload the file again to see if that fixes the issue."},13:{img:"img-unsupported","globalized-msg":"Viewer-FileExtNotSupported","default-msg":{title:"Sorry",message:"The file extension loaded into the Viewer is not supported",hints:["Try a different file"]}},15:{img:"img-unsupported","globalized-msg":"Viewer-WebGlContextLost","default-msg":{title:"WebGL context lost",message:"Unable to recover from software mode. Please restart your browser and reload the Viewer.",hints:["If you continue to encounter this issue when viewing this model, we recommend switching to a different browser."]}}};function l(){}l.prototype.constructor=l,l.reportError=function(e,t,i,c,h,u){if(l.currentError=null,l.currentErrors=null,t){var d={category:"error",code:t,message:i,httpStatusCode:c,httpStatusText:h};r.logger.track(d,!0),l.currentError=[e,t,i,u];var f=a[t];if(f){(b={defaultValue:""}).defaultValue=f["default-msg"];var p=f.img,m=f["globalized-msg"],g=this.parseErrorString(m,b);if(t===Autodesk.Viewing.ErrorCodes.BROWSER_WEBGL_DISABLED||t===Autodesk.Viewing.ErrorCodes.BROWSER_WEBGL_NOT_SUPPORTED)for(var v=(0,s.getWebGLHelpLink)()||"http://www.autodesk.com/a360-browsers",y=0;y")){var s=r.split("")[1].split("");i.header=s[0],r=s[1]}if(r&&-1!=r.indexOf("")){s=r.split("")[1].split("");i.msg=s[0],r=s[1]}else i.msg=r;if(r&&-1!=r.indexOf("")){i.hints=[];for(var a=r.split(""),l=0;l0)if(n.AlertBox.dismiss(),l.currentError){var e=l.currentError.shift(),t=l.currentError;l.reportError(e,t[0],t[1],t[2])}else{e=l.currentErrors.shift();var i=l.currentErrors[0];l.reportErrors(e,i)}},l.dismissError=function(e){return n.AlertBox.dismissByTag(e)}},66316:(e,t,i)=>{"use strict";i.r(t),i.d(t,{GuiViewer3D:()=>D});var n=i(19556),r=i(35922),o=i(91735),s=i(55280),a=i(57480),l=i(16271),c=i(38842),h=i(77427),u=i(8600),d=i(83081),f=i(4746),p=i(1581),m=i(22767),g=i(37463),v=i(91904),y=i(36523),b=i(88946),x=i(42440),_=i(47898),E=i(94589),S=i(92037),A=i(41129),w=i(4355);function T(e,t){null!=t&&t.globalManager&&this.setGlobalManager(t.globalManager),w.ToolBar.call(this,e,t),this.onToolbarUpdated=(null==t?void 0:t.onToolbarUpdated)||function(){},this.screenModeDelegate=null==t?void 0:t.screenModeDelegate,this.navigation=null==t?void 0:t.navigation,this.onClickViewerOption=(null==t?void 0:t.onClickViewerOption)||function(){},this.onClickRenderOptions=(null==t?void 0:t.onClickRenderOptions)||function(){},this.onClickFullScreen=(null==t?void 0:t.onClickFullScreen)||function(){},this.navTools=new A.RadioButtonGroup(y.TOOLBAR.NAVTOOLSID),this.modelTools=new g.ControlGroup(y.TOOLBAR.MODELTOOLSID),this.settingsTools=new g.ControlGroup(y.TOOLBAR.SETTINGSTOOLSID),this.addControl(this.navTools),this.addControl(this.modelTools),this.addControl(this.settingsTools)}i(26206).GlobalManagerMixin.call(T.prototype),T.prototype=Object.create(w.ToolBar.prototype),T.prototype.constructor=T,T.prototype.initRenderOptionsButton=function(){this.settingsTools&&!this.renderOptionsButton&&(this.renderOptionsButton=new m.Button("toolbar-renderOptionsTool"),this.renderOptionsButton.setToolTip("Rendering options"),this.renderOptionsButton.setIcon("adsk-icon-settings-render"),this.renderOptionsButton.onClick=this.onClickRenderOptions,this.settingsTools.addControl(this.renderOptionsButton))},T.prototype.initSettingsOptionsButton=function(){var e=new m.Button("toolbar-settingsTool");this.viewerOptionButton=e,e.setIcon("adsk-icon-settings"),e.setToolTip("Settings"),this.viewerOptionButton.onClick=this.onClickViewerOption,this.settingsTools.addControl(e)},T.prototype.initModelTools=function(){if(!this.settingsTools.fullscreenbutton){var e=new m.Button("toolbar-fullscreenTool",{collapsible:!1});e.setToolTip("Full screen"),e.setIcon("adsk-icon-fullscreen"),e.onClick=this.onClickFullScreen,this.settingsTools.addControl(e),this.settingsTools.fullscreenbutton=e,this.updateFullscreenButton(this.screenModeDelegate.getMode())}},T.prototype.updateFullscreenButton=function(e){var t="adsk-icon-fullscreen";switch(e){case S.ScreenMode.kNormal:this.screenModeDelegate.isModeSupported(S.ScreenMode.kFullBrowser)||(t="adsk-icon-fullscreen");break;case S.ScreenMode.kFullBrowser:t=this.screenModeDelegate.isModeSupported(S.ScreenMode.kFullScreen)?"adsk-icon-fullscreen":"adsk-icon-fullscreen-exit";break;case S.ScreenMode.kFullScreen:t="adsk-icon-fullscreen-exit"}this.settingsTools.fullscreenbutton.setIcon(t)},T.prototype.updateToolbarButtons=function(e,t){var i,n,r;r=e>310,(n=this.modelTools.getControl("toolbar-explodeTool"))&&n.setVisible(r),r=e>380?"block":"none",(n=this.modelTools.getControl("toolbar-collaborateTool"))&&n.setDisplay(r),r=e>515?"block":"none";var o=this.navTools.getControl("toolbar-cameraSubmenuTool");o&&(o.setDisplay(r),(n=o.subMenu.getControl("toolbar-homeTool"))&&n.setDisplay(this.navigation.isActionEnabled("gotoview")?"block":"none"),(n=o.subMenu.getControl("toolbar-fitToViewTool"))&&n.setDisplay(this.navigation.isActionEnabled("gotoview")?"block":"none"),(n=o.subMenu.getControl("toolbar-focalLengthTool"))&&n.setDisplay(this.navigation.isActionEnabled("fov")?"block":"none"),(n=o.subMenu.getControl("toolbar-rollTool"))&&n.setDisplay(this.navigation.isActionEnabled("roll")?"block":"none")),r=e>700?"block":"none",(n=this.modelTools.getControl("toolbar-measureTool"))&&n.setDisplay(r),(n=this.modelTools.getControl("toolbar-sectionTool"))&&n.setDisplay(r),r=e>740?"block":"none",(n=this.navTools.getControl("toolbar-beelineTool"))&&n.setDisplay(this.navigation.isActionEnabled("walk")?r:"none"),(n=this.navTools.getControl("toolbar-firstPersonTool"))&&n.setDisplay(this.navigation.isActionEnabled("walk")?r:"none"),(n=this.navTools.getControl("toolbar-zoomTool"))&&n.setDisplay(this.navigation.isActionEnabled("zoom")?r:"none"),(n=this.navTools.getControl("toolbar-panTool"))&&n.setDisplay(this.navigation.isActionEnabled("pan")?r:"none"),(n=this.navTools.getControl("toolbar-orbitTools"))&&n.setDisplay(this.navigation.isActionEnabled("orbit")?r:"none"),null===(i=this.onToolbarUpdated)||void 0===i||i.call(this,e,t)},T.prototype.registerCustomizeToolbarCB=function(e){this.onToolbarUpdated=e};var M=i(11337),C=i(28441),P=i(57872);function D(e,t){t||(t={}),t.startOnInitialize=!1,o.Viewer3D.call(this,e,t),this.toolbar=null,this.dockingPanels=[],this.onFullScreenModeEvent=this.onFullScreenModeEvent.bind(this),this.onProgressBarUpdate=this.onProgressBarUpdate.bind(this),this.progressInModelLoad=!1,this.progressInModelOptimizing=!1}D.prototype=Object.create(o.Viewer3D.prototype),D.prototype.constructor=D,D.prototype.initialize=function(e){var t=o.Viewer3D.prototype.initialize.call(this,e);if(t>0)return v.ErrorHandler.reportError(this.container,t),t;var i=this;if(this.toolController){var r=new f.HotGestureTool(this);this.toolController.registerTool(r),this.toolController.activateTool(r.getName())}return this.addEventListener(n.FULLSCREEN_MODE_EVENT,this.onFullScreenModeEvent),this.contextMenu||this.setDefaultContextMenu(),this.progressbar=new x.ProgressBar(this.container,P.USE_HLOD),this.addEventListener(n.PROGRESS_UPDATE_EVENT,this.onProgressBarUpdate),this.addEventListener(n.VIEWER_RESIZE_EVENT,(function(e){var t;i.resizePanels(),null===(t=i.toolbar)||void 0===t||t.updateToolbarButtons(e.width,e.height)})),this.addEventListener(n.NAVIGATION_MODE_CHANGED_EVENT,(function(){var e;null===(e=i.toolbar)||void 0===e||e.updateToolbarButtons(i.container.clientWidth,i.container.clientHeight)})),this.initEscapeHandlers(),this.localize(),this.addEventListener(n.WEBGL_CONTEXT_LOST_EVENT,function(){for(var e=this.container,t=e.childElementCount,i=0;i=0;t--)o(e.children[t],e,t);else{let n=r.find((t=>t.data.name==e.name));n&&(n.data.isViewpoint=!0,n.data.entry=e.entry,t.children.splice(i,1))}}if(r){var s;let t=null===(s=e.children)||void 0===s?void 0:s.length;for(;t--;)o(e.children[t],e,t)}let a=null===(n=t.getDocumentNode())||void 0===n?void 0:n.getRootNode();if(a){const t=new Autodesk.Viewing.BubbleNode(e);t.parent=a.children[0],a.children[0].children.push(t)}}};var l=o.Viewer3D.prototype.loadModel.call(this,e,t,(function(e){setTimeout((function(){t&&(t.loadAsHidden||t.headlessViewer)||function(e){s.running?s.createUI(e):d.logger.error("createUI expects the viewer to be running.",(0,a.errorCodeString)(a.ErrorCodes.VIEWER_INTERNAL_ERROR))}(e),i&&(i.call(i,e),i=null)}),0)}),(function(e){e!==a.ErrorCodes.LOAD_CANCELED?v.ErrorHandler.reportError(s.container,e):d.logger.warn("A load was canceled"),n&&n.apply(n,arguments)}),r);return l},D.prototype.createUI=function(e,t){if(this.model!==e&&!t)return;var i=this;const r=this._createToolbar();this.checkGeometry=function(e){setTimeout((function(){if(i.impl&&!i.impl.is2d&&e.model&&!e.model.hasGeometry()){var t=a.ErrorCodes.BAD_DATA_MODEL_IS_EMPTY;v.ErrorHandler.reportError(i.container,t,"Model is empty"),i._loadingSpinner.hide()}}),0)};var o=this.config.disabledExtensions||{};const l=e=>-1===(this.profile&&this.profile.extensions.unload?this.profile.extensions.unload:[]).indexOf(e);this.initModelTools(e),(0,s.getGlobal)().ENABLE_DEBUG&&this.initDebugTools(),"true"===(0,u.getParameterByName)("lmv_viewer_debug")&&this.loadExtension("Autodesk.Debug",this.config);var c=function(e){i.getExtension(e)&&i.unloadExtension(e)};e.is2d()&&(c("Autodesk.BimWalk"),c("Autodesk.Section"),c("Autodesk.Viewing.FusionOrbit"),c("Autodesk.Explode")),o.measure||c("Autodesk.Measure"),r&&(this.dispatchEvent({type:y.TOOLBAR_CREATED_EVENT}),this.forEachExtension((e=>{e.onToolbarCreated&&e.onToolbarCreated(this.toolbar)})));var h="Autodesk.DefaultTools.NavTools",d=this.getExtension(h);d?d.updateUI(e.is3d()):this.loadExtension(h,i.config),this.resize(),e.is2d()?(this.setDefaultNavigationTool("pan"),this.setClickToSetCOI(!1,!1),setTimeout((function(){if(!i.impl)return;const e={viewcube:"Autodesk.ViewCubeUi",measure:"Autodesk.Measure",hyperlink:"Autodesk.Hyperlink",layerManager:"Autodesk.LayerManager",propertiesPanel:"Autodesk.PropertiesManager"};(0,s.isMobileDevice)()||(e.boxSelection="Autodesk.BoxSelection");for(let t in e){const n=e[t];!o[t]&&l(n)&&i.loadExtension(n,i.config)}}),0)):(-1===this.getDefaultNavigationToolName().indexOf("orbit")&&this.setDefaultNavigationTool("orbit"),setTimeout((function(){if(!i.impl)return;const e={viewcube:"Autodesk.ViewCubeUi",explode:"Autodesk.Explode",bimwalk:"Autodesk.BimWalk",fusionOrbit:"Autodesk.Viewing.FusionOrbit",measure:"Autodesk.Measure",section:"Autodesk.Section",layerManager:"Autodesk.LayerManager",modelBrowser:"Autodesk.ModelStructure",propertiesPanel:"Autodesk.PropertiesManager"};(0,s.isMobileDevice)()||(e.boxSelection="Autodesk.BoxSelection");for(let t in e){const n=e[t];!o[t]&&l(n)&&i.loadExtension(n,i.config)}!o.scalarisSimulation&&l("Autodesk.Viewing.ScalarisSimulation")&&i.model&&i.model.isScalaris&&i.loadExtension("Autodesk.Viewing.ScalarisSimulation",i.config)}),0),e.isLoadDone()?this.checkGeometry({model:e}):this.addEventListener(n.GEOMETRY_LOADED_EVENT,this.checkGeometry,{once:!0}))},D.prototype.onFullScreenModeEvent=function(e){this.resizePanels(),this.toolbar.updateFullscreenButton(e.mode)},D.prototype.onProgressBarUpdate=function(e){if(e.state==C.ProgressState.ROOT_LOADED||e.state==C.ProgressState.LOADING)this.progressInModelLoad=e.percent<100;else if(e.state==C.ProgressState.OPTIMIZING)this.progressInModelOptimizing=e.percent<100;else if(this.progressInModelLoad||this.progressInModelOptimizing)return;e.percent>=0&&this.progressbar.setPercent(e.percent,e.state)},D.prototype.addOptionToggle=function(e,t,i,n,r){var o=r?this.prefs[r]:null;i="boolean"==typeof o?o:i;let a=this.getDocument();var l=a.createElement("li");l.className="toolbar-submenu-listitem";var h=a.createElement("input");h.className="toolbar-submenu-checkbox",h.type="checkbox",h.id=t,l.appendChild(h);var u=a.createElement("label");return u.setAttribute("for",t),u.setAttribute("data-i18n",t),u.textContent=c.A.t(t),l.appendChild(u),e.appendChild(l),h.checked=i,h.addEventListener("touchstart",s.touchStartToClick),u.addEventListener("touchstart",s.touchStartToClick),l.addEventListener("touchstart",s.touchStartToClick),h.addEventListener("click",(function(e){n(h.checked),e.stopPropagation()})),u.addEventListener("click",(function(e){e.stopPropagation()})),l.addEventListener("click",(function(e){e.stopPropagation(),h.checked=!h.checked,n(h.checked)})),r&&this.prefs.addListeners(r,(function(e){h.checked=e}),(function(e){h.checked=e,n(e)})),h},D.prototype.addOptionList=function(e,t,i,n,r,o){var s=this.prefs[o];n="number"==typeof s?s:n;let a=this.getDocument();var l=a.createElement("select");l.className="option-drop-down",l.id="selectMenu_"+t;for(var h=0;h) and will be removed in version 8.0.0.'),this.prefs.set(r.Prefs.OPEN_PROPERTIES_ON_SELECT,e)},D.prototype.addDivider=function(e){var t=this.getDocument().createElement("li");return t.className="toolbar-submenu-horizontal-divider",e.appendChild(t),t},D.prototype.initDebugTools=function(){if(this.debugMenu)return!1;var e=new g.ControlGroup("debugTools");this.debugMenu=e;var t=new m.Button("toolbar-debugTool");return t.setIcon("adsk-icon-bug"),e.addControl(t),this.debugMenu.debugSubMenuButton=t,this.createDebugSubmenu(this.debugMenu.debugSubMenuButton),this.toolbar.addControl(e),!0},D.prototype.removeDebugTools=function(){this.debugMenu&&(this.debugMenu.removeFromParent(),this.debugMenu=null)},D.prototype.createDebugSubmenu=function(e){var t=this,i=this.getDocument().createElement("div");i.id="toolbar-debugToolSubmenu",i.classList.add("toolbar-submenu"),i.classList.add("toolbar-settings-sub-menu"),i.classList.add("adsk-hidden"),this.debugMenu.subMenu=i,this.debugMenu.subMenu.style.minWidth="180px",this.container.appendChild(i),this.initModelStats(),this.addDivider(i),this.addDivider(i);var n=h.Lang.getLanguages(),r=n.map((function(e){return e.label})),o=n.map((function(e){return e.symbol}));function a(){t.localize()}var c=t.selectedLanguage?t.selectedLanguage:0;this.addOptionList(i,"Language",r,c,(function(e){var i=o[e];t.selectedLanguage=e,(0,l.setLanguage)(i,a)}),null).parentNode.style.paddingBottom="15px",this.addDivider(this.debugMenu.subMenu);this.addOptionList(i,"Error",["UNKNOWN FAILURE","BAD DATA","NETWORK ERROR","NETWORK ACCESS DENIED","NETWORK FILE NOT FOUND","NETWORK SERVER ERROR","NETWORK UNHANDLED RESPONSE CODE","BROWSER WEBGL NOT SUPPORTED","BAD DATA NO VIEWABLE CONTENT"],0,(function(e){var i=e+1;v.ErrorHandler.reportError(t.container,i,"")}),null).parentNode.style.paddingBottom="15px";var u=i.getBoundingClientRect();this.debugMenu.subMenu.style.width=u.width+"px",this.container.removeChild(i),e.container.appendChild(i);var d=u.left+u.width,f=this.container.getBoundingClientRect().right;if(d>f){var p=-(d-f+10)+"px";this.debugMenu.subMenu.style.left=p}e.onMouseOver=function(){i.classList.remove("adsk-hidden")},e.onMouseOut=function(){i.classList.add("adsk-hidden")},(0,s.isTouchDevice)()&&(e.onClick=function(){i.classList.toggle("adsk-hidden")})},D.prototype.initModelStats=function(){var e=this;function t(){var t=e.model;const i=e=>(e/1e3).toFixed(2)+"s",n=t.loader.t1?i(t.loader.t1-t.loader.t0):"-",r=t.loader.firstPixelTimestamp?i(t.loader.firstPixelTimestamp-t.loader.t0):"-",o=t.loader.loadTime?i(t.loader.loadTime):"...";t&&(e.modelStats.innerHTML=`\n Geometry Polygons: ${t.getGeometryList().geomPolyCount.toLocaleString()}
\n Instance Polygons: ${t.getGeometryList().instancePolyCount.toLocaleString()}
\n Fragments:  ${t.getFragmentList().getCount().toLocaleString()}
\n Geometries: ${t.getGeometryList().getCount().toLocaleString()}
\n
\n Root data loaded:  ${n}
\n First pixel drawn: ${r}
\n Geometries loaded: ${o}
\n `)}this.addOptionToggle(this.debugMenu.subMenu,"Model statistics",!1,(function(i){i&&!e.modelStats&&(!function(){let i=e.getDocument();e.modelStats=i.createElement("div"),e.modelStats.className="statspanel",e.container.appendChild(e.modelStats),e.addEventListener(n.PROGRESS_UPDATE_EVENT,t),e.addEventListener(n.GEOMETRY_LOADED_EVENT,t),e.fpsDisplay=i.createElement("div"),e.fpsDisplay.className="fps",e.container.appendChild(e.fpsDisplay)}(),t()),e.modelStats.style.visibility=i?"visible":"hidden",e.fpsDisplay.style.visibility=i?"visible":"hidden",e.impl.fpsCallback=i?function(t){e.fpsDisplay.textContent=""+(0|t)}:null}))},D.prototype.initEscapeHandlers=function(){var e=this;this.addEventListener(n.ESCAPE_EVENT,(function(){if(!e.contextMenu||!e.contextMenu.hide())if(e.renderoptions&&e.renderoptions.isVisible())e.renderoptions.setVisible(!1);else if(e.impl.selector.hasSelection())e.clearSelection();else{if(e.getActiveNavigationTool()!==e.getDefaultNavigationToolName())return e.toolController&&e.toolController.setIsLocked(!1),e.setActiveNavigationTool(),void b.HudMessage.dismiss();if(e.areAllVisible()){if(!p.AlertBox.dismiss()){for(var t=0;t{var e=this.renderoptions&&this.renderoptions.isVisible();this.renderoptions.setVisible(!e)},onClickViewerOption:()=>{e.getSettingsPanel(!0).isVisible()?e.showViewer3dOptions(!1):e.showViewer3dOptions(!0)}}),this._forgeLogo){const e=this._forgeLogo.getBoundingClientRect();this.toolbar.container.style.bottom=`${e.height+10}px`}return this.container.appendChild(this.toolbar.container),this.toolbar.updateToolbarButtons(this.container.clientWidth,this.container.clientHeight,this.navigation),!0},D.prototype.showModelStructurePanel=function(e){d.logger.warn('viewer.showModelStructurePanel() is deprecated and will be removed in v8.0.0 - Use extension "Autodesk.ModelStructure".'),e?this.activateExtension("Autodesk.ModelStructure"):this.deactivateExtension("Autodesk.ModelStructure")},D.prototype.onPanelVisible=function(e){this.dockingPanels.splice(this.dockingPanels.indexOf(e),1),this.dockingPanels.splice(0,0,e)},D.prototype.localize=function(){this.debugMenu&&this.debugMenu.debugSubMenuButton&&(this.debugMenu.debugSubMenuButton.container.removeChild(this.debugMenu.subMenu),this.createDebugSubmenu(this.debugMenu.debugSubMenuButton)),v.ErrorHandler.localize(),o.Viewer3D.prototype.localize.call(this)},D.prototype.addPanel=function(e){return-1===this.dockingPanels.indexOf(e)&&(this.dockingPanels.push(e),!0)},D.prototype.removePanel=function(e){var t=this.dockingPanels.indexOf(e);return t>-1&&(this.dockingPanels.splice(t,1),!0)},D.prototype.resizePanels=function(e){e=e||{};var t=this.toolbar?this.toolbar.getDimensions().height:0,i=this.getDimensions(),n=i.height;e.dimensions&&e.dimensions.height?n=e.dimensions.height:e.dimensions={height:i.height,width:i.width},e.dimensions.height=n-t;var r=e?e.dockingPanels:null;r||(r=this.dockingPanels);var o,s,a=this.container.getBoundingClientRect(),l=a.top,c=a.bottom,h=a.left,u=a.right;e&&e.dimensions?(o=e.dimensions.width,c=l+(s=e.dimensions.height)):(o=a.width,s=a.height);for(var d=0;d{"use strict";i.r(t),i.d(t,{SETTINGS_PANEL_CREATED_EVENT:()=>r,TOOLBAR:()=>s,TOOLBAR_CREATED_EVENT:()=>n,VIEW_CUBE_CREATED_EVENT:()=>o});const n="toolbarCreated",r="settingsPanelCreated",o="viewCubeCreated",s={NAVTOOLSID:"navTools",MODELTOOLSID:"modelTools",SETTINGSTOOLSID:"settingsTools",MEASURETOOLSID:"measureTools"}},88946:(e,t,i)=>{"use strict";i.r(t),i.d(t,{HudMessage:()=>r});var n=i(38842);function r(){}r.instances=[],r.displayMessage=function(e,t,i,o,s){let a=e.ownerDocument,l=a.defaultView||a.parentWindow;function c(e){var t=l.getComputedStyle(e),i=parseInt(t["margin-top"]),n=parseInt(t["margin-bottom"]);return e.getBoundingClientRect().height+i+n}function h(e,t,i){var n=l.getComputedStyle(e,null);if(!Array.isArray(t))return n[t];for(var r=i||{},o=0;o0)){var u=t.msgTitleKey,d=t.msgTitleDefaultValue||u,f=t.messageKey,p=t.messageDefaultValue||f,m=t.buttonText,g=t.checkboxChecked||!1,v=t.position||"center",y=a.createElement("div");if(y.classList.add("docking-panel"),y.classList.add("hud"),"top"===v&&y.classList.add("top"),e.appendChild(y),u){var b,x=a.createElement("div");x.classList.add("docking-panel-title"),x.classList.add("docking-panel-delimiter-shadow"),x.textContent=n.A.t(u,{defaultValue:d}),x.setAttribute("data-i18n",u),y.appendChild(x),i&&((b=a.createElement("div")).classList.add("docking-panel-close"),b.addEventListener("click",(function(e){r.dismiss(),i&&i(e)})),y.appendChild(b));var _=h(x,["width","font-size"]),E=function(e){var t=e.textContent,i=a.createElement("span");h(e,["font-size","font-weight","text-transform","padding","white-space","font-family"],i.style),i.textContent=t,i.style.position="absolute",i.style.top="10000px",i.style.left="-10000px",a.body.appendChild(i);var n=i.offsetWidth;return a.body.removeChild(i),n}(x),S=parseFloat(_["font-size"]),A=b?parseFloat(h(b,"width")):0,w=parseFloat(_.width)-A;x.style["font-size"]=E>w?w/E*S+"px":`${S}px`}var T=a.createElement("div");T.classList.add("hud-client"),T.classList.add("docking-panel-container-solid-color-b"),y.appendChild(T);var M=a.createElement("div");M.className="hud-message",M.textContent=n.A.t(f,{defaultValue:p}),M.setAttribute("data-i18n",p),T.appendChild(M);var C=c(M);if(o){var P=a.createElement("div");P.classList.add("docking-panel-primary-button"),P.classList.add("hud-button"),P.textContent=n.A.t(m,{defaultValue:m}),P.setAttribute("data-i18n",m),P.addEventListener("click",o),T.appendChild(P),C+=c(P)}if(s){var D=a.createElement("div"),L=a.createElement("input");L.className="hud-checkbox",L.type="checkbox",L.checked=g,D.appendChild(L);var I="Do not show this message again",R=a.createElement("label");R.setAttribute("for",I),R.setAttribute("data-i18n",I),R.textContent=n.A.t(I,{defaultValue:I}),D.appendChild(R),L.addEventListener("change",s),T.appendChild(D),C+=c(s)}T.style.height=C+"px",y.style.height=C+(x?c(x):0)+"px";var O={hudMessage:y,container:e};r.instances.push(O)}},r.dismiss=function(){if(r.instances.length>0){var e=r.instances.pop();return e.hudMessage.style.visibility="hidden",e.container.removeChild(e.hudMessage),!0}return!1}},98087:(e,t,i)=>{"use strict";i.r(t),i.d(t,{LoadingSpinner:()=>r});var n=i(38842);function r(e){this.parentDiv=e;var t=this.getDocument();this.container=t.createElement("div"),this.container.innerHTML=['
','','','',"","
",'
LOADING
'].join(""),this.container.className="loading-spinner"}i(26206).GlobalManagerMixin.call(r.prototype),r.prototype.addClass=function(e){this.container.classList.add(e)},r.prototype.attachToDom=function(){return!this.container.parentNode&&(n.A.localize(this.container),this.parentDiv.appendChild(this.container),!0)},r.prototype.removeFromDom=function(){return!!this.container.parentNode&&(this.container.parentNode.removeChild(this.container),!0)},r.prototype.setVisible=function(e){e?this.attachToDom():this.removeFromDom()}},99587:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ModelStructurePanel:()=>p});var n=i(96551),r=i(76948),o=i(87241),s=i(83081),a=i(8600),l=i(38842),c=-1,h=-2;const u=-1e10;function d(e,t){o.TreeDelegate.call(this),this.panel=e,this.model=t;let i=this.getDocument();this.modelDiv=i.createElement("div"),this.modelDiv.classList.add("model-div"),this.modelDiv.setAttribute("lmv-modelId",t.id),this.instanceTree=null,this.rootId=c,this.state=1}function f(e){var t=function(e){var t=e.getData();if(t&&t.loadOptions&&t.loadOptions.modelNameOverride)return t.loadOptions.modelNameOverride;return""}(e);if(t)return t;if(!e.getData())return"";var i=e.getDocumentNode();return i?i.getModelName():"Model"}function p(e,t,i,r){n.DockingPanel.call(this,e,t,i,r),this.container.classList.add("model-structure-panel"),(r=r||{}).heightAdjustment||(r.heightAdjustment=40),r.marginTop||(r.marginTop=0),r.left=!0,this.createScrollContainer(r),this.onScroll=this.onScroll.bind(this),this.scrollContainer.addEventListener("scroll",this.onScroll),this.scrollContainer.style["overflow-x"]="hidden",this.options=r,this.tree=null,this._pendingModels=[],this.uiCreated=!1;var o=this;this.addVisibilityListener((function(e){e&&(o.uiCreated||o.createUI(),o.resizeToContent())}))}d.prototype=Object.create(o.TreeDelegate.prototype),d.prototype.constructor=d,d.prototype.isLoading=function(){return 1===this.state},d.prototype.isAvailable=function(){return 2===this.state},d.prototype.isNotAvailable=function(){return 3===this.state},d.prototype.isControlId=function(e){return e===c||e===h},d.prototype.getControlIdCss=function(e){return null},d.prototype.getRootId=function(){return this.rootId},d.prototype.getTreeNodeId=function(e){return"object"==typeof e?(s.logger.warn("Object used instead of dbId. Fix it."),e.dbId):e},d.prototype.getTreeNodeIndex=function(e){return this.instanceTree.nodeAccess.dbIdToIndex[e]},d.prototype.getTreeNodeLabel=function(e){if(e===c){var t=f(this.model);return l.A.t("Loading model",{name:t})}return e===h||e===this.getRootId()?t=f(this.model):e==u?"Object 0":this.instanceTree.getNodeName(e,!0)||"Object "+e},d.prototype.getTreeNodeClass=function(e){return e===c||e===h?"message-unexpected":""},d.prototype.getTreeNodeParentId=function(e){if(e===u)return 0;let t=this.instanceTree.nodeAccess.getParentId(e);return 0===t?u:t},d.prototype.getTreeNodeCount=function(){return this.instanceTree.nodeAccess.getNumNodes()},d.prototype.getTreeNodeClientHeight=function(e){return 36},d.prototype.getTreeNodeDepthOffset=function(e,t){return 13+25*t},d.prototype.isTreeNodeGroup=function(e){return!this.isControlId(e)&&this.instanceTree.getChildCount(e)>0},d.prototype.shouldCreateTreeNode=function(e){return!0},d.prototype.createTreeNode=function(e,t){let i=this,n=i.getDocument(),r=function(){var e=function(){i.removeDocumentEventListener("mouseup",e),this.classList.remove("highlight")}.bind(t);t.classList.add("highlight"),i.addDocumentEventListener("mouseup",e)};if(t.addEventListener("mousedown",r),console.log("Event listener added"),t._mouseDownListener=r,!this.isControlId(e)){var s=n.createElement("div");s.dbId=e,s.classList.add("visibility");let i=function(e){e.preventDefault(),e.stopPropagation()};s.addEventListener("mousedown",i),s._mouseDownListener=i;let r=function(e){e.preventDefault(),e.stopPropagation();var t=parseInt(e.target.dbId);this.panel.onEyeIcon(t,this.model)}.bind(this);s.addEventListener("click",r),s._clickListener=r,t.appendChild(s)}if(e===c){var l=n.createElement("img");l.src=(0,a.getResourceUrl)("res/ui/spinner.png"),l.style.animation="loading-spinner-perpetual-motion 1s infinite linear",l.style.float="right",l.style.marginRight="5px",l.style.width="20px",t.appendChild(l)}var u={localize:e===c||e===h};o.TreeDelegate.prototype.createTreeNode.call(this,e,t,u)},d.prototype.onTreeNodeRightClick=function(e,t,i){this.isControlId(t)||this.panel.onTreeNodeRightClick(e,t,this.model,i)},d.prototype.onTreeNodeClick=function(e,t,i){this.isControlId(t)||this.panel.onTreeNodeClick(e,t,this.model,i)},d.prototype.onTreeNodeDoubleClick=function(e,t,i){},d.prototype.onTreeNodeIconClick=function(e,t,i){if(this.isTreeNodeGroup(t)){var n=e.isCollapsed(this,t);e.setCollapsed(this,t,!n)}},d.prototype.onTreeNodeReized=function(e){},d.prototype.forEachChild=function(e,t,i){this.isControlId(e)||this.instanceTree.enumNodeChildren(e,t,i)},d.prototype.setInstanceTree=function(e){this.instanceTree=e,this.state=e?2:3,this.rootId=e?e.getRootId():h,function(e){var t=e.instanceTree;if(!t)return;var i,n=e.rootId,r=t.getNodeName(n),o=0,s=0;t.enumNodeChildren(n,(function(e){s||(i=t.getNodeName(e),o=e),s++})),e.hasDoubleRoot=1===s&&r===i,e.rootId=e.hasDoubleRoot?o:n}(this)},d.prototype.clean=function(){for(var e,t=this.modelDiv;e=t.lastChild;)t.removeChild(e)},d.prototype.dtor=function(){this.model=null},p.prototype=Object.create(n.DockingPanel.prototype),p.prototype.constructor=p,p.prototype.uninitialize=function(){var e;this.scrollContainer.addEventListener("scroll",this.onScroll),this.scrollContainer.parentNode.removeChild(this.scrollContainer),null===(e=this.tree)||void 0===e||e.destroy(),n.DockingPanel.prototype.uninitialize.call(this)},p.prototype.addModel=function(e){if(e)if(this.uiCreated)this.createTreeUI(e);else{if(-1!==this._pendingModels.indexOf(e))return;this._pendingModels.push(e)}},p.prototype.unloadModel=function(e){if(e)if(this.uiCreated)this.removeTreeUI(e);else{var t=this._pendingModels.indexOf(e);if(-1===t)return;this._pendingModels.splice(t,1)}},p.prototype.createUI=function(){if(!this.uiCreated){var e,t="";if(this.options&&this.options.defaultTitle?(t=this.options.defaultTitle,e=void 0===this.options.localizeTitle||!!this.options.localizeTitle):(t=this.modelTitle,e=!1),t||(t="Browser",e=!0),this.setTitle(t,{localizeTitle:e}),this.uiCreated=!0,this.tree=new r.TreeOnDemand(this.scrollContainer,this.options),this.tree.setGlobalManager(this.globalManager),0!==this._pendingModels.length){for(var i=0;i{"use strict";i.r(t),i.d(t,{ObjectContextMenu:()=>o});var n=i(26452),r=i(26206);function o(e){this.viewer=e,this.setGlobalManager(e.globalManager),this.contextMenu=new n.ContextMenu(e)}o.prototype.constructor=o,r.GlobalManagerMixin.call(o.prototype),o.prototype.show=function(e){const t=this.viewer.getSelectionCount(),i=this.viewer.getSelectionVisibility(),n=this.viewer.impl.getCanvasBoundingClientRect(),r=n.width,o=n.height,s=e.clientX-n.left,a=e.clientY-n.top,l={event:e,numSelected:t,hasSelected:0{"use strict";i.r(t),i.d(t,{ProgressBar:()=>r});var n=i(38842);function r(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=e.ownerDocument;this.bg=i.createElement("div"),this.bg.className="progressbg",this.fg=i.createElement("div"),this.fg.className="progressfg",this.bg.appendChild(this.fg),e.appendChild(this.bg),this.lastValue=-1,this.fg.style.transform="scale(0, 1)",this.labels=[],this.showLabel=t,this.registerLabel(e,"ProgressLoading"),this.registerLabel(e,"ProgressLoading"),this.registerLabel(e,"ProgressRendering"),this.registerLabel(e,"ProgressOptimizing")}r.prototype.registerLabel=function(e,t){const i=e.ownerDocument.createElement("div");i.className="progresslb",i.style.opacity="0",i.setAttribute("data-i18n",t),i.textContent=n.A.t(t),this.labels.push(i),e.appendChild(i)},r.prototype.setPercent=function(e,t){e!=this.lastValue&&(this.lastValue=e,e>=100?(this.bg.style.opacity="0",this.labels.forEach((e=>e.style.opacity="0"))):(this.bg.style.opacity="1",this.fg.style.transform=`scale(${e/100}, 1)`,this.showLabel&&this.labels.forEach(((e,i)=>e.style.opacity=t===i?"1":"0"))))},r.prototype.setStyle=function(e){!this.fg.classList.contains(e)&&this.fg.classList.add(e)},r.prototype.removeStyle=function(e){this.fg.classList.contains(e)&&this.fg.classList.remove(e)}},14813:(e,t,i)=>{"use strict";i.r(t),i.d(t,{PropertyPanel:()=>c});var n=i(96551),r=i(87241),o=i(55266),s=i(27623),a=i(38842),l=i(8022);function c(e,t,i,s){n.DockingPanel.call(this,e,t,i,s),this.title.classList.add("docking-panel-delimiter-shadow"),this.container.classList.add("property-panel"),this.container.dockRight=!0,this.createScrollContainer({left:!1,heightAdjustment:70,marginTop:0}),this.highlightableElements={};var a=this;var l=function(){var e=new r.TreeDelegate;function t(e){return"category"===e.type}return e.setGlobalManager(a.globalManager),e.getTreeNodeId=function(e){return e.name+(Object.prototype.hasOwnProperty.call(e,"value")?e.value:"")+(Object.prototype.hasOwnProperty.call(e,"category")?e.category:"")},e.getTreeNodeClass=function(e){return t(e)?a.getCategoryClass(e):a.getPropertyClass(e)},e.isTreeNodeGroup=function(e){return t(e)},e.onTreeNodeClick=function(e,i,n){t(i)?a.onCategoryClick(i,n):a.onPropertyClick(i,n)},e.onTreeNodeRightClick=function(e,i,n){t(i)?a.onCategoryRightClick(i,n):a.onPropertyRightClick(i,n)},e.onTreeNodeDoubleClick=function(e,i,n){t(i)?a.onCategoryDoubleClick(i,n):a.onPropertyDoubleClick(i,n)},e.onTreeNodeIconClick=function(e,i,n){t(i)?a.onCategoryIconClick(i,n):a.onPropertyIconClick(i,n)},e.createTreeNode=function(e,i,n){var r=null;(r=t(e)?a.displayCategory(e,i,n):a.displayProperty(e,i,n))&&(a.highlightableElements[this.getTreeNodeId(e)]=r)},e}();this.tree=new o.Tree(l,null,this.scrollContainer,{}),this.tree.setGlobalManager(this.globalManager)}function h(e){e=String(e);var t=' target="blank" class="propertyLink" ';return[{pattern:/\b(?:https?|ftp):\/\/[a-z0-9-+&@#/%?=~_|()!:,.;]*[a-z0-9-+&@#/%=~_|()]/gim,value:"$&'},{pattern:/(^|[^/])(www\.[\S]+(\b|$))/gim,value:"$1$2'}].reduce((function(e,t){return e.replace(t.pattern,t.value)}),e)}c.prototype=Object.create(n.DockingPanel.prototype),c.prototype.constructor=c,c.prototype.setAggregatedProperties=function(e){this.removeAllProperties();const t=Autodesk.Viewing.Private,i=this.viewer.prefs.get(t.Prefs.DISPLAY_UNITS);let n=this.viewer.prefs.get(t.Prefs.DISPLAY_UNITS_PRECISION);const r=Object.prototype.hasOwnProperty.call(e.map,"Name")?e.map.Name.map((e=>e.displayValue)):[];function o(e,t){const r=Number(e);e=isNaN(r)?e:r;var o="number"==typeof n?n:t.precision||(0,s.calculatePrecision)(e),a=(0,s.convertToDisplayUnits)(e,t.type,t.units,i);return(0,s.formatValueWithUnits)(a.displayValue,a.displayUnits,t.type,o)}const c=e.getValue2PropertiesMap("Name");if(c){const e=Object.keys(c);if(1===e.length){const t=e[0],i={name:"aggregate-name"};this.tree.createElement_({name:"Name",value:t,type:"property",category:"",css:i},this.tree.myRootContainer)}else{const e={name:"Name",type:"category",value:"Varies"},t=this.tree.createElement_(e,this.tree.myRootContainer);this.setCategoryCollapsed(e,!0);for(let e in c)this.tree.createElement_({name:e,value:"",type:"property",category:"Name"},t)}}let h=e.getKeysWithCategories().length>0;e.forEach(((t,i)=>{if("Name"===t)return;const n=e.getAggregation(t),s=e.getValue2PropertiesMap(t);if(!n&&!s)return;const c=i[0];if(c.hidden)return;const u=!!c.displayCategory;let d,f="";if(u)f=c.displayCategory,d=this.tree.getElementForNode({name:f}),d=d||this.tree.createElement_({name:f,type:"category"},this.tree.myRootContainer);else if(h){if(f="Other",d=this.tree.getElementForNode({name:f}),!d){let e=f;d=this.tree.createElement_({name:e,type:"category"},this.tree.myRootContainer);const t=d.children[0].children[1];t.setAttribute("data-i18n",e),e=a.A.t(e),t.textContent=e,t.title=e}}else d=this.tree.myRootContainer;const p=Object.keys(s);if(1===p.length){let e=p[0];return e=(0,l.hA)(i[0].type)?o(Number(e),c):e,void(d=this.tree.createElement_({name:c.displayName,value:e,type:"property",category:f,css:{name:"aggregate-name"}},d))}const m={name:c.displayName,value:"Varies",type:"category",category:f};if(d=this.tree.createElement_(m,d),this.setCategoryCollapsed(m,!0),f=c.displayName,(u||h)&&d.classList.add("indented"),n){const e={};for(let t in n){if("count"===t){e[t]=n[t];continue}if("mode"===t){e[t]=n[t].map((e=>o(e,c))).join(", ");continue}const i=n[t];e[t]=o(i,c)}this.tree.createElement_({map:e,default:"sum",type:"property",category:f},d)}const g=[];for(let e in s){const t=o(e,c),i=s[e];for(let e=0;e-1&&r.splice(t,1)}g.push({name:i,value:t,type:"property",category:f})}r.length>0&&this.tree.createElement_({name:r,value:"--",type:"property",category:f},d),g.forEach((e=>{this.tree.createElement_(e,d)}))}))},c.prototype.setProperties=function(e){this.removeAllProperties();var t=[],i=[];for(let r=0;r0,c=0;c|<\/highlight>)/gim,"");if(i!==n&&(t.innerHTML=n),e&&""!==e){var r=new RegExp("(\\b"+e+"\\b)","gim"),o=n.replace(r,"$1");t.innerHTML=o}}for(var i in this.highlightableElements)for(var n=this.highlightableElements[i],r=0;r{const i=t.target.value,n=e.map[i];c.title=n,c.innerHTML=n}),!1);const d=e.css;return d&&(d.name&&n.classList.add(d.name),d.value&&c.classList.add(d.value)),t.appendChild(n),t.appendChild(o),t.appendChild(c),[n,c]},c.prototype.getCategoryClass=function(){return"category"},c.prototype.getPropertyClass=function(){return"property"},c.prototype.onCategoryClick=function(e){this.setCategoryCollapsed(e,!this.isCategoryCollapsed(e))},c.prototype.onPropertyClick=function(){},c.prototype.onCategoryIconClick=function(e){this.setCategoryCollapsed(e,!this.isCategoryCollapsed(e))},c.prototype.onPropertyIconClick=function(){},c.prototype.onCategoryDoubleClick=function(){},c.prototype.onPropertyDoubleClick=function(){},c.prototype.onCategoryRightClick=function(){},c.prototype.onPropertyRightClick=function(){}},47898:(e,t,i)=>{"use strict";i.r(t),i.d(t,{RenderOptionsPanel:()=>a});var n=i(96551),r=i(19556),o=i(86022),s=i(97005);function a(e){var t=this;this.viewer=e,this.setGlobalManager(e.globalManager),n.DockingPanel.call(this,e.container,"RenderOptionsPanel","Rendering Options");let i=this.getDocument();this.table=i.createElement("table"),this.table.className="adsk-lmv-tftable",this.tbody=i.createElement("tbody"),this.table.appendChild(this.tbody),this.createScrollContainer({heightAdjustment:70}),this.scrollContainer.appendChild(this.table),this.container.style.width="320px",this.container.style.top="260px",this.container.style.left="220px",this.container.style.height="460px",this.container.dockRight=!0,this.saoToggle=new o.OptionCheckbox("AO Enabled",this.tbody,!0),this.saoToggle.setGlobalManager(this.globalManager),this.addEventListener(this.saoToggle,"change",(function(i){var n=t.saoToggle.checked;e.prefs.set("ambientShadows",n),e.setQualityLevel(n,e.impl.renderer().settings.antialias)})),this.saoRadius=new o.OptionSlider("AO Radius",0,200,this.tbody),this.saoRadius.setGlobalManager(this.globalManager),this.saoRadius.setValue(10),this.saoRadius.sliderElement.step=this.saoRadius.stepperElement.step=.01,this.addEventListener(this.saoRadius,"change",(function(i){e.impl.renderer().setAOOptions(parseFloat(t.saoRadius.value),parseFloat(t.saoIntensity.value)),e.impl.renderer().composeFinalFrame()})),this.saoIntensity=new o.OptionSlider("AO Intensity",0,3,this.tbody),this.saoIntensity.setGlobalManager(this.globalManager),this.saoIntensity.setValue(.4),this.saoIntensity.sliderElement.step=this.saoIntensity.stepperElement.step=.01,this.addEventListener(this.saoIntensity,"change",(function(i){e.impl.renderer().setAOOptions(parseFloat(t.saoRadius.value),parseFloat(t.saoIntensity.value)),e.impl.renderer().composeFinalFrame()})),this.groundShadowAlpha=new o.OptionSlider("Shadow Alpha",0,2,this.tbody),this.groundShadowAlpha.setGlobalManager(this.globalManager),this.groundShadowAlpha.setValue(1),this.groundShadowAlpha.sliderElement.step=this.groundShadowAlpha.stepperElement.step=.1,this.addEventListener(this.groundShadowAlpha,"change",(function(i){e.setGroundShadowAlpha(parseFloat(t.groundShadowAlpha.value))})),this.groundShadowColor=new o.OptionCheckbox("Shadow Color",this.tbody),this.groundShadowColor.setGlobalManager(this.globalManager),this.groundShadowColor.checkElement.value="#000000",this.groundShadowColor.checkElement.type="color",this.addEventListener(this.groundShadowColor,"change",(function(i){var n=t.groundShadowColor.checkElement.value;e.setGroundShadowColor(new THREE.Color(parseInt(n.substr(1,7),16)))})),this.groundReflectionAlpha=new o.OptionSlider("Reflection Alpha",0,2,this.tbody),this.groundReflectionAlpha.setGlobalManager(this.globalManager),this.groundReflectionAlpha.setValue(1),this.groundReflectionAlpha.sliderElement.step=this.groundReflectionAlpha.stepperElement.step=.1,this.addEventListener(this.groundReflectionAlpha,"change",(function(i){e.setGroundReflectionAlpha(parseFloat(t.groundReflectionAlpha.value))})),this.groundReflectionColor=new o.OptionCheckbox("Reflection Color",this.tbody),this.groundReflectionColor.setGlobalManager(this.globalManager),this.groundReflectionColor.checkElement.value="#000000",this.groundReflectionColor.checkElement.type="color",this.addEventListener(this.groundReflectionColor,"change",(function(i){var n=t.groundReflectionColor.checkElement.value;e.setGroundReflectionColor(new THREE.Color(parseInt(n.substr(1,7),16)))}));for(var a=[],l=0;l{"use strict";i.r(t),i.d(t,{SettingsPanel:()=>l});var n=i(96551),r=i(38842),o=i(55280),s=i(86022);const a=40;function l(e,t,i,r){n.DockingPanel.call(this,e,t,i,r),this.panelTabs=[],this.tabIdToIndex={},this.controls={},this.controlIdCount=0,this.shown=!1;var o=this,s=r&&void 0!==r.width?r.width:340;this.container.style.maxWidth="800px",this.container.style.minWidth=s+"px",this.container.style.top="10px",this.container.style.left=e.offsetWidth/2-170+"px",this.container.style.position="absolute";var l=this.getDocument();this.tabContainer=l.createElement("div"),this.tabContainer.classList.add("docking-panel-container-solid-color-b"),this.tabContainer.classList.add("settings-tabs"),this.tabContainer.classList.add("docking-panel-delimiter-shadow"),this.container.appendChild(this.tabContainer),this.tabs=l.createElement("ul"),this.tabContainer.appendChild(this.tabs),this.heightAdjustment=r&&r.heightAdjustment?r.heightAdjustment:179,r&&r.hideTabBar&&(this.heightAdjustment-=a,this.tabContainer.style.display="none",this.tabContainer.style.height=0),this.createScrollContainer({left:!1,heightAdjustment:this.heightAdjustment,marginTop:0}),this.tablesContainer=l.createElement("div"),this.tablesContainer.classList.add("settings-tabs-tables-container"),r&&r.hideTabBar&&(this.scrollContainer.style.top=90-a+"px"),this.scrollContainer.appendChild(this.tablesContainer),this.mouseOver=!1,this.addEventListener(this.container,"mouseover",(function(e){var t=e.toElement||e.relatedTarget;if(o.mouseOver)return!0;for(var i=o.getWindow();t&&t.parentNode&&t.parentNode!=i;){if(t.parentNode==this||t==this){t.preventDefault&&t.preventDefault(),o.mouseOver=!0;for(var n=0;n(this.container.style.minWidth?parseInt(this.container.style.minWidth):0)&&(this.container.style.minWidth=a+"px"),!0},l.prototype.removeTab=function(e){var t=this.tabIdToIndex[e];if(!t)return!1;this.panelTabs.splice(t,1);var i=this.getDocument().getElementById(this.expandID(e));this.tabs.removeChild(i),this.tabIdToIndex={};for(var n=this.panelTabs.length,r=0;ra.length&&(n=-1);var l=a.tBodies[0].insertRow(n),c=l.insertCell(0);if(o){var h=s.createElement("div");h.setAttribute("data-i18n",o),h.textContent=r.A.t(o),c.appendChild(h),c=l.insertCell(1)}else c.colSpan=3;c.appendChild(t),t.sliderRow=l,t.tbody=a.tBodies[0]}var u=this.expandID("adsk_settings_control_id_"+this.controlIdCount.toString());return this.controlIdCount=this.controlIdCount+1,this.controls[u]=t,t.parent=this,u},l.prototype.removeButton=function(e){return this.removeControl(e)},l.prototype.removeCheckbox=function(e){return this.removeControl(e)},l.prototype.removeSlider=function(e){return this.removeControl(e)},l.prototype.removeDropdownMenu=function(e){return this.removeControl(e)},l.prototype.removeControl=function(e){var t;if("object"==typeof e&&e.tbody){for(var i in t=e,this.controls)if(this.controls[i]===t){e=i;break}}else t=this.controls[e];if(void 0===t)return!1;if(t.removeFromParent)t.removeFromParent();else{var n=t.tbody,r=t.sliderRow.rowIndex;n.deleteRow(r)}return delete this.controls[e],t.parent=void 0,!0},l.prototype.getControl=function(e){return this.controls[e]||null},l.prototype.getContentSize=function(){for(var e=this.heightAdjustment,t=0,i=this.getDocument(),n=0;n{"use strict";i.r(t),i.d(t,{Tree:()=>a});var n=i(55280),r=i(55855),o=i(26206);const s=i(41944);function a(e,t,i,n){this.myDelegate=e,this.mySelectedNodes=[],this.myOptions=n||{},this.parentContainer=i;this.groupClassName=this.myOptions.groupClassName||"expanded",this.leafClassName=this.myOptions.leafClassName||"expanded",this.selectedClassName=this.myOptions.selectedClassName||"selected",this.myGroupNodes=[],this.nodeToElement={},this.nodeIdToNode={};var r=this.myRootContainer=this.createHtmlElement_(i,"div","treeview"),o=this.rootElem=this.createElement_(t,r,n,0);this.setInputHandlers_(),n&&n.excludeRoot&&o.classList.add("exclude")}a.prototype.constructor=a,o.GlobalManagerMixin.call(a.prototype),a.prototype.destroy=function(){this.myDelegate=null,this.parentContainer&&(this.parentContainer.removeChild(this.myRootContainer),this.myRootContainer=null,this.parentContainer=null)},a.prototype.show=function(e){var t=this.myRootContainer;t.style.display=e?"block":"none"},a.prototype.getRootContainer=function(){return this.myRootContainer},a.prototype.getElementForNode=function(e){return"number"!=typeof e&&"string"!=typeof e&&(e=this.myDelegate.getTreeNodeId(e)),this.nodeToElement[e]},a.prototype.delegate=function(){return this.myDelegate},a.prototype.isCollapsed=function(e){return this.hasClass(e,"collapsed")},a.prototype.setCollapsed=function(e,t,i){t?(this.addClass(e,"collapsed",i),this.removeClass(e,"expanded",i)):(this.addClass(e,"expanded",i),this.removeClass(e,"collapsed",i))},a.prototype.setAllCollapsed=function(e){var t,i;e?(t=function(e){return e.classList.contains("expanded")},i=function(e){e.classList.add("collapsed"),e.classList.remove("expanded")}):(t=function(e){return e.classList.contains("collapsed")},i=function(e){e.classList.add("expanded"),e.classList.remove("collapsed")});for(var n=0;n=0;--n){var r=e[n];i(r)&&this.removeClass(r,this.selectedClassName)}},a.prototype.setSelection=function(e){return this.removeFromSelection(this.mySelectedNodes),this.addToSelection(e),this.mySelectedNodes},a.prototype.getSelection=function(){return this.mySelectedNodes.concat()},a.prototype.clearSelection=function(){this.removeFromSelection(this.mySelectedNodes)},a.prototype.isSelected=function(e){return this.hasClass(e,this.selectedClassName)},a.prototype.scrollTo=function(e){var t=this.getElementForNode(e);if(t){var i=t.offsetTop;for(t=t.parentNode;t&&t!=this.myRootContainer;)i+=t.offsetTop,t=t.parentNode;var n=this.myRootContainer.parentNode;this.myDelegate.getScrollContainer()&&(n=this.myDelegate.getScrollContainer()),n.scrollTop=i}},a.prototype.addClass=function(e,t,i){var n=this.getElementForNode(e);if(n){if(i){n=n.parentNode;for(var r=this.myOptions.excludeRoot?this.rootElem:this.myRootContainer;n&&n!==r;)n.classList.add(t),n=n.parentNode}else n.classList.add(t);return!0}return!1},a.prototype.removeClass=function(e,t,i){var n=this.getElementForNode(e);if(n){if(i){n=n.parentNode;for(var r=this.myOptions.excludeRoot?this.rootElem:this.myRootContainer;n&&n!==r;)n.classList.remove(t),n=n.parentNode}else n.classList.remove(t);return!0}return!1},a.prototype.hasClass=function(e,t){return this.getElementForNode(e).classList.contains(t)},a.prototype.clear=function(){for(var e=this.myRootContainer;e.hasChildNodes();)e.removeChild(e.lastChild);this.nodeToElement={},this.nodeIdToNode={}},a.prototype.createElement_=function(e,t,i,n){if(null==e)return null;if(!this.myDelegate.shouldCreateTreeNode(e))return null;var r,o=this;function s(t,r,s,a){var l=o.createHtmlElement_(t,r,s),c=o.myDelegate.getTreeNodeId(a);l.setAttribute("lmv-nodeId",c);var h=o.createHtmlElement_(l,"lmvheader"),u=o.createHtmlElement_(h,"icon");return u.addEventListener("mousedown",(function(e){e.stopPropagation(),e.preventDefault()}),!1),u.addEventListener("click",(function(t){o.myDelegate.onTreeNodeIconClick(o,e,t),t.stopPropagation(),t.preventDefault()}),!1),o.myDelegate.createTreeNode(e,h,i,r,n),l}var a=this.myDelegate.getTreeNodeId(e),l=o.myOptions.excludeRoot?1:0;o.myDelegate.isTreeNodeGroup(e)?(r=s(t,"group",o.groupClassName,e),o.nodeToElement[a]=r,o.nodeIdToNode[a]=e,n==l&&(r.style.left="0px"),o.myGroupNodes.push(r),o.myDelegate.forEachChild(e,(function(e){o.createElement_(e,r,i,n+1)}))):(r=s(t,"leaf",o.leafClassName,e),o.nodeToElement[a]=r,o.nodeIdToNode[a]=e,n==l&&(r.style.marginLeft="0px"));var c=o.myDelegate.getTreeNodeClass(e);return c&&r.classList.add(c),r},a.prototype.setInputHandlers_=function(){var e=this,t=this.myRootContainer,i=null,o=function(n){var r=null,o=!1;do{n&&n!==t?n.hasAttribute("lmv-nodeId")?(r=n,o=!0):n=n.parentElement:(r=null,o=!0)}while(!o);if(r){var s=r.getAttribute("lmv-nodeId");return e.nodeIdToNode[s]||i}return i};(0,n.isTouchDevice)()&&(this.hammer=new s.Manager(t,{recognizers:[r.GestureRecognizers.doubletap,r.GestureRecognizers.press],handlePointerEventMouse:!1,inputClass:s.TouchInput}),this.hammer.on("doubletap",(function(t){var n=o(t.target);n!==i&&e.myDelegate.onTreeNodeDoubleClick(e,n,t)})),this.hammer.on("press",(function(t){var n=o(t.target);n!==i&&e.myDelegate.onTreeNodeRightClick(e,n,t)}))),t.addEventListener("click",(function(t){var n=o(t.target);n!==i&&(e.myDelegate.onTreeNodeClick(e,n,t),t.stopPropagation(),t.target.classList.contains("propertyLink")||t.preventDefault())}),!1),t.addEventListener("dblclick",(function(t){var n=o(t.target);n!==i&&(e.myDelegate.onTreeNodeDoubleClick(e,n,t),t.stopPropagation(),t.preventDefault())}),!1),t.addEventListener("contextmenu",(function(t){var n=o(t.target);n!==i&&(e.myDelegate.onTreeNodeRightClick(e,n,t),t.stopPropagation(),t.preventDefault())}),!1),t.addEventListener("mouseover",(function(t){var n=o(t.target);n!==i&&(e.myDelegate.onTreeNodeHover(e,n,t),t.stopPropagation(),t.preventDefault())}),!1),t.addEventListener("mouseout",(function(t){var i=t.toElement||t.relatedTarget;if(o(t.target)!=o(i)){e.myDelegate.onTreeNodeHover(e,-1,t),t.stopPropagation(),t.preventDefault()}}),!1)},a.prototype.createHtmlElement_=function(e,t,i){var n=this.getDocument().createElement(t);return e.appendChild(n),i&&(n.className=i),n},a.prototype.iterate=function(e,t){if(null!=e&&this.myDelegate.shouldCreateTreeNode(e)){var i=this.getElementForNode(e);if(i){t(e,i);var n=this;this.myDelegate.forEachChild(e,(function(e){n.iterate(e,t)}))}}}},87241:(e,t,i)=>{"use strict";i.r(t),i.d(t,{TreeDelegate:()=>r});var n=i(38842);function r(){}i(26206).GlobalManagerMixin.call(r.prototype),r.prototype.constructor=r,r.prototype.isTreeNodeGroup=function(e){throw"isTreeNodeGroup is not implemented."},r.prototype.getTreeNodeId=function(e){throw"getTreeNodeId is not implemented."},r.prototype.getTreeNodeIndex=function(e){throw"getTreeNodeIndex is not implemented."},r.prototype.getTreeNodeParentId=function(e){throw"getTreeNodeParentId is not implemented."},r.prototype.getTreeNodeLabel=function(e){return e.name},r.prototype.getTreeNodeCount=function(){throw"getTreeNodeCount is not implemented."},r.prototype.shouldCreateTreeNode=function(e){return!0},r.prototype.forEachChild=function(e,t){for(var i=e.children?e.children.length:0,n=0;n{"use strict";i.r(t),i.d(t,{TreeOnDemand:()=>u});var n=i(55280),r=i(55855),o=i(98087),s=i(38842),a=i(26206);const l=i(41944);var c=150,h=300;function u(e,t){this.dirty=!1,this.nextFrameId=0,this.scrollY=0,this.delegates=[],this.idToDelegate={},this.options=t;var i=this.getDocument();this.rootContainer=i.createElement("div"),this.rootContainer.classList.add("docking-panel-container-gradient"),this.rootContainer.classList.add("treeview"),this.rootContainer.classList.add("on-demand"),e.appendChild(this.rootContainer),this.paddingDiv=i.createElement("div"),this.paddingDiv.style.border=0,this.paddingDiv.style.margin=0,this.paddingDiv.style.padding=0,this.sizedDiv=e.parentNode,this.nodeCssTable=[[],["group"],["leaf"]],this.cssStringToNodeCssTable={"":0,group:1,leaf:2},this.nodeIndexToNodeCssTables={};for(var s=[],a=c,h=0;he.has(t)))}var u=c.modelDiv;t.appendChild(u);for(var d=[c.getRootId()],f={curr:l?-1:0,popIds:[]};d.length&&s;){if(r>e.scrollY+n+h){s=!1;break}if(e.elementsUsed===e.elementsPool.length){s=!1;break}var m=d.shift();if(!C||i[m]){var g=r+(T=-1===f.curr?0:c.getTreeNodeClientHeight(m));if(T>0&&g+h>=e.scrollY){var v=e.elementsPool[e.elementsUsed++];v.setAttribute("lmv-nodeId",m),c.createTreeNode(m,v.header);var y=c.getTreeNodeClass(m);y&&v.classList.add(y);var x=b(e,c,m);if(x)for(var _=x.length,E=0;E<_;++E)v.classList.add(x[E]);var S=c.getTreeNodeDepthOffset(m,f.curr);v.header.style.paddingLeft=S+"px",u.appendChild(v)}if(g+h0){f.curr++;for(var A=M[M.length-1],w=f.popIds.length-1;w>=0&&f.popIds[w]===m;)f.popIds[w--]=A;f.popIds.push(A),d=M.concat(d)}for(;f.popIds.length>0&&m===f.popIds[f.popIds.length-1];)f.popIds.pop(),f.curr--}else for(;f.popIds.length>0&&m===f.popIds[f.popIds.length-1];)f.popIds.pop(),f.curr--}for(e.paddingDiv.style.height=o+"px";d.length;){var T,M;m=d.shift();r=g=r+(T=-1===f.curr?0:c.getTreeNodeClientHeight(m)),(M=p(e,c,m))&&M.length&&(d=M.concat(d))}}t.style.height=r+"px"}(e)}else e.spinner.setVisible(!1)}function p(e,t,i,n){if(!t.isTreeNodeGroup(i))return null;if(!n&&e.isCollapsed(t,i))return null;var r=[];return t.forEachChild(i,(function(e){r.push(e)})),r}function m(e,t){e.dirty&&!t||(t?f(e):(e.dirty=!0,e.nextFrameId=requestAnimationFrame((function(){f(e)}))))}function g(e,t){return"number"!=typeof t&&"string"!=typeof t?e.threeDelegate.getTreeNodeId(0|t):t}function v(e,t){for(var i=null;t&&t!==e.rootContainer;){if(t.hasAttribute("lmv-nodeId")){i=t;break}t=t.parentElement}if(!i)return null;var n=i.getAttribute("lmv-nodeId");return parseFloat(n)}function y(e,t){for(var i=null;t&&t!==e.rootContainer;){if(t.hasAttribute("lmv-modelId")){i=t;break}t=t.parentElement}if(!i)return null;var n=i.getAttribute("lmv-modelId");return parseInt(n)}function b(e,t,i){if(t.isControlId(i))return t.getControlIdCss(i);var n=t.getTreeNodeIndex(i);return e.nodeCssTable[e.nodeIndexToNodeCssTables[t.model.id][n]]}function x(e,t,i,n){var r=n.join(" "),o=e.cssStringToNodeCssTable[r]||e.nodeCssTable.length;o===e.nodeCssTable.length&&(e.nodeCssTable.push(n),e.cssStringToNodeCssTable[r]=o);var s=t.getTreeNodeIndex(i);e.nodeIndexToNodeCssTables[t.model.id][s]=o}function _(e,t,i){var n=e.createElement("lmvheader"),r=e.createElement("icon");n.appendChild(r);var o=e.createElement("div");return o.header=n,o.icon=r,o.appendChild(n),o}function E(e){var t=v(this,e.target);if(t){var i=y(this,e.target),n=this.getDelegate(i);n&&n.onTreeNodeDoubleClick(this,t,e)}}function S(e){var t=v(this,e.target);if(t){var i=y(this,e.target),n=this.getDelegate(i);n&&n.onTreeNodeRightClick(this,t,e)}}function A(e){if(!e.target.classList.contains("group")&&!e.target.classList.contains("leaf")){var t=v(this,e.target);if(t){var i=y(this,e.target),n=this.getDelegate(i);n&&(n.onTreeNodeClick(this,t,e),e.stopPropagation(),e.preventDefault())}}}function w(e){if(!e.target.classList.contains("group")&&!e.target.classList.contains("leaf")){var t=v(this,e.target);if(t){var i=y(this,e.target),n=this.getDelegate(i);n&&(n.onTreeNodeDoubleClick(this,t,e),e.stopPropagation(),e.preventDefault())}}}function T(e){if(!e.target.classList.contains("group")&&!e.target.classList.contains("leaf")){var t=v(this,e.target);if(t){var i=y(this,e.target),n=this.getDelegate(i);n&&(n.onTreeNodeRightClick(this,t,e),e.stopPropagation(),e.preventDefault())}}}function M(e){var t=v(this,e.target);if(t){var i=y(this,e.target),n=this.getDelegate(i);n&&(n.onTreeNodeIconClick(this,t,e),e.stopPropagation(),e.preventDefault())}}function C(e){e.stopPropagation(),e.preventDefault()}d.constructor=u,a.GlobalManagerMixin.call(d),d.pushDelegate=function(e){this.delegates.push(e),this.idToDelegate[e.model.id]=e,m(this)},d.removeDelegate=function(e){for(var t=0;ts&&r.splice(s)}}.bind(this);this.setCollapsed(i,e,!1,!0);var s=i.getRootId();if(o(s,i),!n)return-1;for(var a=0,l=r.length,c=this.isExcludeRoot()?1:0;ch&&(this.scrollY=e,m(this))},d.displayNoProperties=function(e){var t=this.getDocument();if(e){if(!this.divNoProps){this.divNoProps=t.createElement("div");var i="Model Browser is not available";this.divNoProps.innerText=s.A.t(i),this.divNoProps.setAttribute("data-i18n",i),this.divNoProps.classList.add("lmv-no-properties")}if(!this.divNoProps.parentNode)this.rootContainer.parentNode.appendChild(this.divNoProps)}else this.divNoProps&&this.divNoProps.parentNode&&this.divNoProps.parentNode.removeChild(this.divNoProps)},d.isExcludeRoot=function(){return 1===this.delegates.length&&this.options.excludeRoot},d.getDelegateCount=function(){return this.delegates.length}},72738:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ViewerModelStructurePanel:()=>d,generateDefaultViewerHandlerOptions:()=>c});var n=i(99587),r=i(11674),o=i(19556),s=i(77995),a=i(83081),l=i(81215);const c=e=>({onSearchSelected:function(t){var i=t.id,n=e.impl.findModel(t.modelId);e.setAggregateIsolation([{model:n,ids:[i]}])},onVisibilityIconClick:function(t,i){e.toggleVisibility(t,i)},onCreateUI:function(t){e.resizePanels&&e.resizePanels({dockingPanels:[t]}),t.scrollContainer.addEventListener("contextmenu",function(t){e.contextMenu.show(t)}.bind(t))},onIsolate:function(t,i){if(e.setAggregateIsolation([{model:i,ids:[t]}]),e.fitToView([t],i,!1),i){var n={type:o.SHOW_PROPERTIES_EVENT,dbId:t,model:i};e.dispatchEvent(n)}},onToggleMultipleOverlayedSelection:function(t){e.impl.selector.setAggregateSelection(t.map((t=>({model:e.impl.findModel(parseInt(t.modelId)),ids:t.ids}))));var i=e.getAggregateSelection();e.fitToView(i)},onToggleOverlayedSelection:function(t,i,n){n?e.select([],void 0,i):(e.select(t,i),e.fitToView([t],i,!1))},onTreeNodeRightClick:function(t){e.contextMenu.show(t)},onSelectOnly:function(t,i){e.select(t,i)},onDeselectAll:function(){e.clearSelection()},onSelectToggle:function(t,i){e.toggleSelect(t,i)},onShowAll:function(){e.showAll()},onFocus:function(){e.fitToView()},onHide:function(t,i){e.hide(t,i)},onShow:function(t,i){e.show(t,i)},onToggleVisibility:function(t,i){e.toggleVisibility(t,i)},getAggregateIsolation:e.getAggregateIsolation.bind(e),getAggregateHiddenNodes:e.getAggregateHiddenNodes.bind(e),getAggregateSelection:e.getAggregateSelection.bind(e),globalManager:e.globalManager,container:e.container,removeEventListener:e.removeEventListener.bind(e),addEventListener:e.addEventListener.bind(e)}),h=Autodesk.Viewing.Private;var u={click:{onObject:["isolate"]},clickShift:{onObject:["toggleMultipleOverlayedSelection"]},clickCtrl:{onObject:["toggleVisibility"]}};function d(e,t,i){let o={...i}||{},l=t;e instanceof Autodesk.Viewing.GuiViewer3D||e instanceof Autodesk.Viewing.Viewer3D?(a.logger.warn("Deprecated use of Viewer as parameter. Use options callbacks instead"),o={...o,...c(e)}):o={...e},this.visible=!1,this._trackNodeClick=!0,o.defaultTitle="Model",o.excludeRoot=void 0===o.excludeRoot||o.excludeRoot,o.startCollapsed=void 0!==o.startCollapsed&&o.startCollapsed,o.scrollEaseCurve=o.scrollEaseCurve||[0,0,.29,1],o.scrollEaseSpeed=void 0!==o.scrollEaseSpeed?o.scrollEaseSpeed:.003,o.addFooter=void 0===o.addFooter||o.addFooter,this.clickConfig=o&&o.docStructureConfig?o.docStructureConfig:u,this.isMac=-1!==navigator.userAgent.search("Mac OS"),o.hideSearch?(o.heightAdjustment=70,n.ModelStructurePanel.call(this,o.container,o.container.id+"ViewerModelStructurePanel",l,o),this.scrollContainer.classList.add("no-search")):(o.heightAdjustment=104,n.ModelStructurePanel.call(this,o.container,o.container.id+"ViewerModelStructurePanel",l,o),this.searchbox=new s.Searchbox(o.container.id+"ViewerModelStructurePanel-Searchbox",o.container,{excludeRoot:o.excludeRoot,searchFunction:f.bind(this)}),this.searchbox.setGlobalManager(this.globalManager),o.onSearchSelected&&this.searchbox.addEventListener(r.j,o.onSearchSelected),this.container.appendChild(this.searchbox.container)),this.setGlobalManager(o.globalManager),this._ignoreScroll=!1,this.selectedNodes={},this.onViewerSelect=this.onViewerSelect.bind(this),this.onViewerIsolate=this.onViewerIsolate.bind(this),this.onViewerHide=this.onViewerHide.bind(this),this.onViewerShow=this.onViewerShow.bind(this)}function f(e){var t=this.tree,i=e.toLowerCase(),n=[];return t.forEachDelegate((function(e){var r=e.getRootId(),o=[];t.iterate(e,r,(function(t){var n=e.instanceTree&&e.instanceTree.getNodeName(t);return n&&-1!==n.toLowerCase().indexOf(i)&&o.push(t),!0})),n.push({ids:o,delegate:e})})),h.analytics.track("viewer.model_browser",{from:"Panel",action:"Search"}),n}d.prototype=Object.create(n.ModelStructurePanel.prototype),d.prototype.constructor=d,l.ViewerPanelMixin.call(d.prototype),d.prototype.uninitialize=function(){var e,t,i,r,s,a,l,c;null===(e=(t=this.options).removeEventListener)||void 0===e||e.call(t,o.AGGREGATE_SELECTION_CHANGED_EVENT,this.onViewerSelect),null===(i=(r=this.options).removeEventListener)||void 0===i||i.call(r,o.AGGREGATE_ISOLATION_CHANGED_EVENT,this.onViewerIsolate),null===(s=(a=this.options).removeEventListener)||void 0===s||s.call(a,o.HIDE_EVENT,this.onViewerHide),null===(l=(c=this.options).removeEventListener)||void 0===l||l.call(c,o.SHOW_EVENT,this.onViewerShow),this.searchResults&&(this.searchResults.uninitialize(),this.searchResults=null),n.ModelStructurePanel.prototype.uninitialize.call(this)},d.prototype.resizeToContent=function(){var e=this.scrollContainer,t=this.tree?this.tree.getRootContainer():null;if(e&&t){var i="calc(100% + "+e.scrollLeft+"px)";t.style.width=i}},d.prototype.createUI=function(){var e,t,i,r,s,a,l,c,h,u;if(!this.uiCreated){n.ModelStructurePanel.prototype.createUI.call(this),this.scrollContainer.classList.remove("left");var d=function(){this.visible&&this.resizeToContent(),requestAnimationFrame(d)}.bind(this);d(),null===(e=(t=this.options).onCreateUI)||void 0===e||e.call(t,this);var f=this.options,p=f.maxHeight?f.maxHeight:"calc("+this.container.style.maxHeight+" - 30px)";this.container.style.top="10px",this.container.style.left="10px",this.container.style.height=p,this.container.style.maxHeight=p,null===(i=(r=this.options).addEventListener)||void 0===i||i.call(r,o.AGGREGATE_SELECTION_CHANGED_EVENT,this.onViewerSelect),null===(s=(a=this.options).addEventListener)||void 0===s||s.call(a,o.AGGREGATE_ISOLATION_CHANGED_EVENT,this.onViewerIsolate),null===(l=(c=this.options).addEventListener)||void 0===l||l.call(c,o.HIDE_EVENT,this.onViewerHide),null===(h=(u=this.options).addEventListener)||void 0===h||h.call(u,o.SHOW_EVENT,this.onViewerShow)}},d.prototype.onViewerSelect=function(e){this.setSelection(e.selections),this._ignoreScroll||this.scrollToSelection(e.selections),this._ignoreScroll=!1},d.prototype.onViewerIsolate=function(e){this.setIsolation(e.isolation)},d.prototype.onViewerHide=function(e){this.setHidden(e.nodeIdArray.slice(),e.model,!0)},d.prototype.onViewerShow=function(e){this.setHidden(e.nodeIdArray.slice(),e.model,!1)},d.prototype.setVisible=function(e){n.ModelStructurePanel.prototype.setVisible.call(this,e),this.visible!==e&&(this.visible=e,this.visible&&this.sync())},d.prototype.sync=function(){var e,t,i,n,r,o,s=(null===(e=(t=this.options).getAggregateIsolation)||void 0===e?void 0:e.call(t))||[],a=(null===(i=(n=this.options).getAggregateHiddenNodes)||void 0===i?void 0:i.call(n))||[],l=(null===(r=(o=this.options).getAggregateSelection)||void 0===r?void 0:r.call(o))||[];if(this.setIsolation(s),0===s.length)for(var c=0;c0?this.animateScroll(o,s,function(e){this.tree.setScroll(e)}.bind(this)):(this.scrollContainer.scrollTop=s,this.tree.setScroll(s))}},d.prototype.onEyeIcon=function(e,t){var i,n;null===(i=(n=this.options).onVisibilityIconClick)||void 0===i||i.call(n,e,t),h.analytics.track("viewer.model_browser",{from:"Panel",action:"Toggle Visibility"})},d.prototype.onTreeNodeClick=function(e,t,i,n){if(this._trackNodeClick&&(a.logger.track({category:"node_selected",name:"model_browser_tool"}),this._trackNodeClick=!1),!this.isMac||!n.ctrlKey){var r="click";this.ctrlDown(n)&&(r+="Ctrl"),n.shiftKey&&(r+="Shift"),n.altKey&&(r+="Alt");var o=["toggleOverlayedSelection"],s=this.clickConfig[r];s&&(o=s.onObject),h.analytics.track("viewer.model_browser",{from:"Panel",action:"Select"}),this.handleAction(o,t,i)}},d.prototype.onTreeNodeRightClick=function(e,t,i,n){if(this.isMac&&n.ctrlKey&&0===n.button)return this.clickConfig&&this.clickConfig.clickCtrl&&this.handleAction(this.clickConfig.clickCtrl.onObject,t,i),null;this.options.onTreeNodeRightClick&&this.options.onTreeNodeRightClick(n)},d.prototype.handleAction=function(e,t,i){var n,r,o,s,a,l,c,h,u,d,f,p,m,g,v,y;for(var b in e)switch(e[b]){case"toggleOverlayedSelection":this.toggleOverlayedSelection(t,i);break;case"toggleMultipleOverlayedSelection":this.toggleMultipleOverlayedSelection(t,i);break;case"selectOnly":this.options.onSelectOnly&&this.options.onSelectOnly(t,i);break;case"deselectAll":null===(n=(r=this.options).onDeselectAll)||void 0===n||n.call(r,t,i);break;case"selectToggle":null===(o=(s=this.options).onSelectToggle)||void 0===o||o.call(s,t,i);break;case"isolate":null===(a=(l=this.options).onIsolate)||void 0===a||a.call(l,t,i);break;case"showAll":null===(c=(h=this.options).onShowAll)||void 0===c||c.call(h,t,i);break;case"focus":null===(u=(d=this.options).onFocus)||void 0===u||u.call(d,t,i);break;case"hide":null===(f=(p=this.options).onHide)||void 0===f||f.call(p,t,i);break;case"show":null===(m=(g=this.options).onShow)||void 0===m||m.call(g,t,i);break;case"toggleVisibility":null===(v=(y=this.options).onToggleVisibility)||void 0===v||v.call(y,t,i)}},d.prototype.toggleOverlayedSelection=function(e,t){var i,n,r=this.selectedNodes[t.id],o=r?r.indexOf(e):-1;this._ignoreScroll=!0,null===(i=(n=this.options).onToggleOverlayedSelection)||void 0===i||i.call(n,e,t,-1!==o)},d.prototype.toggleMultipleOverlayedSelection=function(e,t){var i=this.selectedNodes[t.id],n=i?i.indexOf(e):-1;if(-1===n?(i||(i=this.selectedNodes[t.id]=[]),i.push(e)):i.splice(n,1),this.options.onToggleMultipleOverlayedSelection){var r=[];for(var o in this.selectedNodes)if(Object.prototype.hasOwnProperty.call(this.selectedNodes,o)){var s=this.selectedNodes[o];r.push({modelId:o,ids:s})}this.options.onToggleMultipleOverlayedSelection(r)}this._ignoreScroll=!0},d.prototype.ctrlDown=function(e){return this.isMac&&e.metaKey||!this.isMac&&e.ctrlKey}},23611:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ViewerObjectContextMenu:()=>o});var n=i(16969),r=i(83081);function o(e){n.ObjectContextMenu.call(this,e)}o.prototype=Object.create(n.ObjectContextMenu.prototype),o.prototype.constructor=o,o.prototype.buildMenu=function(e,t){if(!this.viewer.model)return;var i=this,n=[],o=this.viewer.navigation,s=this.viewer.model.is2d();const a=Autodesk.Viewing.Private.analytics;t.hasSelected&&(n.push({title:"Isolate",target:function(){var e=i.viewer.getAggregateSelection();i.viewer.clearSelection(),i.viewer.impl.visibilityManager.aggregateIsolate(e),r.logger.track({name:"isolate_count",aggregate:"count"}),a.track("viewer.object.visibility",{action:"Isolate"})}}),t.hasVisible&&n.push({title:"Hide Selected",target:function(){const e=i.viewer.impl.selector.getAggregateSelection();i.viewer.clearSelection(),i.viewer.impl.visibilityManager.aggregateHide(e),a.track("viewer.object.visibility",{action:"Hide Selected"})}}),t.hasHidden&&n.push({title:"Show Selected",target:function(){var e=i.viewer.getSelection();i.viewer.clearSelection(),i.viewer.show(e),a.track("viewer.object.visibility",{action:"Show Selected"})}})),s&&n.push({title:"Show All Layers",target:function(){i.viewer.setLayerVisible(null,!0),a.track("viewer.object.visibility",{action:"Show All Layers"})}}),n.push({title:"Show All Objects",target:function(){i.viewer.showAll(),r.logger.track({name:"showall",aggregate:"count"}),a.track("viewer.object.visibility",{action:"Show All Objects"})}});var l=i.viewer.getAggregateSelection();if(!s&&1===l.length&&o.isActionEnabled("gotoview")&&n.push({title:"Focus",target:function(){if((l=i.viewer.getAggregateSelection()).length>0){var e=l[0];i.viewer.fitToView(e.selection,e.model)}else 0===l.length&&i.viewer.fitToView();r.logger.track({name:"fittoview",aggregate:"count"})}}),!s){var c=this.viewer.impl.getCanvasBoundingClientRect(),h=e.clientX-c.left,u=e.clientY-c.top,d=this.viewer.clientToWorld(h,u,!1);d&&n.push({title:"Pivot",target:()=>{this.viewer.navigation.setPivotPoint(d.point)}})}return t.hasSelected&&n.push({title:"Clear Selection",target:function(){i.viewer.clearSelection(),r.logger.track({name:"clearselection",aggregate:"count"})}}),n}},81215:(e,t,i)=>{"use strict";function n(){this.getContainerBoundingRect=function(){var e=this.parentContainer.getBoundingClientRect(),t={height:0,width:0,left:0,bottom:0,right:0,top:0},i=this.getDocument().getElementsByClassName("toolbar-menu");return i&&i.length>0&&(t=i[0].getBoundingClientRect()),{height:e.height-t.height,width:e.width,left:e.left,bottom:e.bottom-t.height,right:e.right,top:e.top}}}i.r(t),i.d(t,{ViewerPanelMixin:()=>n})},87471:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ViewerPropertyPanel:()=>l});var n=i(14813),r=i(81215),o=i(19556),s=i(96551),a=i(83081);function l(e){this.viewer=e,this.setGlobalManager(e.globalManager),this.currentNodeIds=[],this.currentModel=null,this.currentSelections=[],this.isDirty=!0,this.propertyNodeId=null,this.normalTitle="Properties",this.loadingTitle="Object Properties Loading",this._viewDbId=null,this.onProperties=this.onProperties.bind(this),this.onPropertySet=this.onPropertySet.bind(this),this.onPropError=this.onPropError.bind(this),this.setPropertiesIntoUI=this.setPropertiesIntoUI.bind(this),this.setAggregatedPropertiesIntoUI=this.setAggregatedPropertiesIntoUI.bind(this),this._onDisplayUnitPreferenceChanged=this._onDisplayUnitPreferenceChanged.bind(this),n.PropertyPanel.call(this,e.container,"ViewerPropertyPanel",this.loadingTitle)}function c(e){var t=e.getDocumentNode(),i=t&&t.findViewableParent();return!(!i||-1===i.name().toLocaleLowerCase().indexOf(".sld"))}l.prototype=Object.create(n.PropertyPanel.prototype),l.prototype.constructor=l,r.ViewerPanelMixin.call(l.prototype),l.prototype._onDisplayUnitPreferenceChanged=function(){this.isDirty=!0;const e=this.currentModel?this.currentModel.getRootId():null;if(null!==this.propertyNodeId&&this.propertyNodeId!==e){const e={model:this.currentModel};e.selection=Array.isArray(this.propertyNodeId)?this.propertyNodeId:[this.propertyNodeId],this.requestAggregatedNodeProperties(e)}else this.requestProperties()},l.prototype.initialize=function(){n.PropertyPanel.prototype.initialize.call(this);var e=this;this.viewer.prefs.addListeners(Autodesk.Viewing.Private.Prefs.DISPLAY_UNITS,this._onDisplayUnitPreferenceChanged),this.viewer.prefs.addListeners(Autodesk.Viewing.Private.Prefs.DISPLAY_UNITS_PRECISION,this._onDisplayUnitPreferenceChanged),e.addEventListener(e.viewer,o.AGGREGATE_SELECTION_CHANGED_EVENT,(function(t){t.selections&&t.selections.length?(e.currentNodeIds=t.selections[0].dbIdArray,e.currentModel=t.selections[0].model,e.currentSelections=[],t.selections.forEach((t=>{e.currentSelections.push({model:t.model,selection:t.dbIdArray})}))):e.resetCurrentModel(),e.isDirty=!0,e.requestProperties()})),e.addEventListener(e.viewer,o.SHOW_PROPERTIES_EVENT,(function(t){t&&t.dbId&&(e.currentModel=t.model,e.requestAggregatedNodeProperties({model:t.model,selection:[t.dbId]}))})),e.addEventListener(e.viewer,o.HIDE_EVENT,(function(t){e.isDirty=!0,e.requestProperties()})),e.addEventListener(e.viewer,o.OBJECT_TREE_CREATED_EVENT,(function(t){e.currentModel===t.model&&(e.isDirty=!0,e.requestProperties())})),e.addEventListener(e.viewer,o.SHOW_EVENT,(function(t){e.isDirty=!0,e.requestProperties()})),e.viewer.addEventListener(o.MODEL_UNLOADED_EVENT,(function(t){t.model===e.currentModel&&e.resetCurrentModel()}));var t=this.viewer.getAggregateSelection();t.length?(this.currentModel=t[0].model,this.currentNodeIds=t[0].selection,this.currentSelections=t):this.resetCurrentModel()},l.prototype.resetCurrentModel=function(){var e=this.viewer?this.viewer.getVisibleModels():[];this.currentModel=1===e.length?e[0]:null,this.currentNodeIds=[],this.currentSelections=[]},l.prototype.setTitle=function(e,t){e||(e="Object Properties",(t=t||{}).localizeTitle=!0),n.PropertyPanel.prototype.setTitle.call(this,e,t)},l.prototype.setVisible=function(e){s.DockingPanel.prototype.setVisible.call(this,e),this.requestProperties()},l.prototype.visibilityChanged=function(){s.DockingPanel.prototype.visibilityChanged.call(this),this.isVisible()&&this.requestProperties()},l.prototype.requestProperties=function(){this.isVisible()&&this.isDirty&&(this.currentSelections.length>0?this.requestAggregatedNodeProperties(this.currentSelections):this.showDefaultProperties(),this.isDirty=!1)},l.prototype.onProperties=function(e){if(!this.viewer||!this.currentModel)return;if(e.dbId!==this.propertyNodeId)return;var t,i=[],n=e.properties;if(n)for(var r=0,o=n.length;r0?function(e,t,i){return new Promise((function(n,r){e.getBulkProperties2(t,{ignoreHidden:!0},(function(e){for(var t=0,r=e.length;t{this.setProperties([]),this.highlight(""),this.resizeToContent(),this.respositionPanel()}))},l.prototype.onPropertySet=function(e){if(!this.viewer||!this.currentModel)return;if(0===e.getVisibleKeys().length)return this.onPropError(),this.resizeToContent(),void this.respositionPanel();const t=e.map,i=[];let n;e.getValidIds(null,"__internalref__").forEach((e=>{t[e].forEach((e=>{i.includes(e.displayValue)||i.push(e.displayValue)}))}));const r=this.currentModel;n=r.is3d()&&c(r)&&i.length>0?function(e,t,i){return new Promise(((n,r)=>{e.getPropertySet(t,(e=>{n(i.merge(e))}),r,{ignoreHidden:!0})}))}(r,i,e):Promise.resolve(e),n.then(this.setAggregatedPropertiesIntoUI).catch((e=>{a.logger.error(e),this.setProperties([]),this.highlight(""),this.resizeToContent(),this.respositionPanel()}))},l.prototype.setAggregatedPropertiesIntoUI=function(e){const t=e.getDbIds().length;if(1===t){let t=Object.prototype.hasOwnProperty.call(e.map,"Name"),i=t?e.map.Name[0]:this.normalTitle;"object"==typeof i&&Object.prototype.hasOwnProperty.call(i,"displayValue")&&(t=!0,i=i.displayValue),this.setTitle(i,{localizeTitle:!t})}else this.setTitle("Properties %(value)",{localizeTitle:!0,i18nOpts:{value:`(${t})`}});this.setAggregatedProperties(e),this.highlight(this.viewer.searchText),this.resizeToContent(),this.respositionPanel()},l.prototype.setPropertiesIntoUI=function(e){var t=e.name||this.normalTitle,i=!e.name;this.setTitle(t,{localizeTitle:i}),"name"in e&&e.properties&&e.properties.splice(0,0,{displayName:"Name",displayValue:e.name,displayCategory:null,attributeName:"Name",type:20,units:null,hidden:!1,precision:0}),this.setProperties(e.properties),this.highlight(this.viewer.searchText),this.resizeToContent(),this.respositionPanel()},l.prototype.onPropError=function(){this.setTitle(this.normalTitle,{localizeTitle:!0}),this.showNoProperties()},l.prototype.requestAggregatedNodeProperties=function(e){var t;1===(e=Array.isArray(e)?e:[e]).length&&1===(null===(t=e[0].selection)||void 0===t?void 0:t.length)&&(this.propertyNodeId=e[0].selection[0]);const i=[];e.forEach((e=>{var t,n;i.push(e.model.getPropertySetAsync(e.selection,{fileType:null===(t=e.model.getData())||void 0===t||null===(t=t.loadOptions)||void 0===t?void 0:t.fileExt,needsExternalId:null===(n=e.model.getData())||void 0===n||null===(n=n.loadOptions)||void 0===n?void 0:n.needsExternalId}))})),Promise.all(i).then((e=>{const t=e[0];for(let i=1;i{this.viewer&&t===this.currentModel&&(i?this.onPropertySet(e):this.onProperties(e))}),this.onPropError)},l.prototype.setNodeProperties=l.prototype.requestNodeProperties,l.prototype.requestViewProperties=function(e){if(null!==this._viewDbId){const e={model:this.currentModel,selection:[this._viewDbId]};return void this.requestAggregatedNodeProperties(e)}const t=this.currentModel,i=t.getRootId();this.propertyNodeId=i,t.getPropertySet([i],(n=>{if(!this.viewer)return;if(t!==this.currentModel)return;this._viewDbId=i;const r=e.name(),o=e.isSheet(),s=[],a=[],l=n.getValidIds("Sheet"),c=n.getValidIds("View");l.forEach((e=>{n.map[e].forEach((e=>{a.push(e.displayValue)}))})),c.forEach((e=>{n.map[e].forEach((e=>{s.push(e.displayValue)}))}));const h=o?a:s;if(0!==h.length){var u=this;t.getBulkProperties2(h,{propFilter:["name","dbId"],ignoreHidden:!0},(function(e){const s=[];for(let t=0;t{"use strict";i.r(t),i.d(t,{ViewerSettingTab:()=>A,ViewerSettingsPanel:()=>T});var n=i(94589),r=i(19556),o=i(19948),s=i(83081),a=i(97005),l=i(38842),c=i(55280),h=i(81215),u=i(26206);class d{constructor(e,t){this._width=e||60,this._height=t||60}createThumbnail(e,t){return new Promise((t=>{var i=this.getDocument().createElement("canvas");i.width=this._width,i.height=this._height;var n=i.getContext("2d"),r=n.createLinearGradient(0,0,0,i.height),o=e.bgColorGradient,s=f(o[0],o[1],o[2]),a=f(o[3],o[4],o[5]);r.addColorStop(0,s),r.addColorStop(1,a),n.fillStyle=r,n.fillRect(0,0,i.width,i.height),i.toBlob((function(e){var i=URL.createObjectURL(e);t(i)}))}))}}function f(e,t,i){return e=parseInt(e),t=parseInt(t),i=parseInt(i),"#"+p(e)+p(t)+p(i)}function p(e){if(0===e)return"00";for(var t="",i=e>255?255:e;0!==i;){var n=i%16;i=i/16|0,t=m[n.toString()]+t}return t.length>1?t:"0"+t}u.GlobalManagerMixin.call(d.prototype);const m={0:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"};var g=i(38221),v=i.n(g),y=i(35922),b=i(26477),x=i(13202);const _=Autodesk.Viewing,E=_.Private;let S=0,A={Navigation:"navigationtab",Configuration:"performancetab",Appearance:"appearance",Environment:"environment"};var w=0;function T(e,t){var i,o,a;let l={...e};if(this.viewer=null,e instanceof Autodesk.Viewing.GuiViewer3D||e instanceof Autodesk.Viewing.Viewer3D){const t=e;l={preferences:t.prefs,globalManager:t.globalManager,addEventListener:t.addEventListener.bind(t),removeEventListener:t.removeEventListener.bind(t),container:t.container,version:t.config.viewerVersion,onRestoreDefaults:t.restoreDefaultSettings.bind(t),detectIfModelsHaveEdge:D.bind(this),loadExtension:t.loadExtension.bind(this),unloadExtension:t.unloadExtension.bind(this),width:400,heightAdjustment:110},this.viewer=t}this.options=l,this.preferences=l.preferences,this.is3dMode=!t.is2d();const c="pdf"===(null===(i=t.getDocumentNode())||void 0===i?void 0:i.getInputFileType()),h=null===(o=t.getDocumentNode())||void 0===o||null===(o=o.data)||void 0===o||null===(o=o.extractor)||void 0===o?void 0:o.includes("pdf");this.isPdfFile=c||h,this.enableVectorRasterSwitch=null==e||null===(a=e._curOptions)||void 0===a?void 0:a.enableVectorRasterSwitch,this.visible=!1,this._externalButtonIds=[],this._externalButtonsLabel=null,n.SettingsPanel.call(this,this.options.container,"ViewerSettingsPanel"+S+++"-"+w++,"Settings",l),this.container.classList.add("viewer-settings-panel"),this.setGlobalManager(this.options.globalManager),this.addTab(A.Configuration,"Configuration",{className:"performance"}),this.addTab(A.Navigation,"Navigation",{className:"navigation"}),this.addTab(A.Appearance,"Appearance",{className:"appearance"}),this.is3dMode?this.addTab(A.Environment,"Environment",{className:"environment"}):this.container.classList.add("for-2d-model"),this.createRestoreDefaultSettingsButton(),this.modelPreferenceCount=0,this.createNavigationPanel(),this.createConfigurationPanel(),this.createAppearancePanel(),this.modelPreferenceCount&&s.logger.log("Model locked ("+this.modelPreferenceCount+") render settings in UI."),this.selectTab(A.Configuration),this.footer=this.createFooter(),this.createVersionLabel(this.footer),this.syncUI=this.syncUI.bind(this),this.options.addEventListener(r.RESTORE_DEFAULT_SETTINGS_EVENT,this.syncUI),this.options.addEventListener(r.VIEWER_STATE_RESTORED_EVENT,this.syncUI),this.updateEdgeToggle=this.updateEdgeToggle.bind(this),this.options.addEventListener(r.GEOMETRY_LOADED_EVENT,this.updateEdgeToggle),this.sendAnalyticsDebounced=v()(P,500)}function M(e,t,i){e.createThumbnail(i).then((e=>{t.src=e,t.onload=function(){URL.revokeObjectURL(e)}}))}function C(e,t,i){const n={i18nOptions:{nsSeparator:!1,keySeparator:!1},betaLabel:!0};i&&(_.FeatureFlags.isEnabled(o.PublicFeatureFlags.LargeModelExperienceOptOut)||(e.largeModelExperienceChkBoxId=e.addCheckbox(t,"Large model experience","Improves your overall experience viewing large models. The changes will take effect on the next page load.",!1,void 0,y.Prefs3D.LARGE_MODEL_EXPERIENCE,n)),_.FeatureFlags.isEnabled(o.InternalFeatureFlags.OutOfCoreGpuMemoryManagement)&&(e.outOfCoreGpuMemoryManagementChkBoxId=e.addCheckbox(t,"Out Of Core GPU Memory Management","Dynamically manages the GPU Memory based on your viewpoint. The changes will take effect on the next page load.",!1,void 0,y.Prefs3D.OUT_OF_CORE_GPU_MEMORY_MANAGEMENT,n))),_.FeatureFlags.isEnabled(o.InternalFeatureFlags.WebGPUBackend)&&(e.webgpuChkBoxId=e.addCheckbox(t,"WebGPU Graphics","Use WebGPU for rendering (requires page reload). Not all features are supported, may cause instabilities.",!1,void 0,y.Prefs.WEBGPU,n))}function P(e,t){E.analytics.track("viewer.settings.changed",{setting_name:e,setting_value:t})}function D(){if(!this.is3dMode)return!1;let e=!1;const t=this.viewer.impl.modelQueue().getModels();for(let i=0;ie.name)).indexOf(e)}for(var t=this.gridTable.querySelectorAll(".settings-environment-cell"),i=0;i{e?this.options.loadExtension("Autodesk.Viewing.FusionOrbit",null):this.options.unloadExtension("Autodesk.Viewing.FusionOrbit",null)}),y.Prefs.FUSION_ORBIT),this.addCheckbox(e,"Orbit past world poles","Allows view rotation to continue past the model’s North Pole",!0,void 0,y.Prefs3D.ORBIT_PAST_WORLD_POLES),this.addLabel(e,"Zoom"),(0,c.isMobileDevice)()||(this.addCheckbox(e,"Zoom towards pivot","When disabled, zooming operations are centered at the current cursor location",!1,void 0,y.Prefs3D.ZOOM_TOWARDS_PIVOT),this.addCheckbox(e,"Reverse mouse zoom direction","Toggles direction of zooming in and out",!1,void 0,y.Prefs.REVERSE_MOUSE_ZOOM_DIR),this.scrollSpeed=i.call(this)),this.dragSpeed=t.call(this),this.addLabel(e,"Mouse"),(0,c.isMobileDevice)()||(this.addCheckbox(e,"Left handed mouse setup","Swaps the buttons on the mouse",!1,void 0,y.Prefs.LEFT_HANDED_MOUSE_SETUP),this.addCheckbox(e,"Set pivot with left mouse button","Change left-click behavior to set new pivot point (overrides select object)",!1,void 0,y.Prefs3D.CLICK_TO_SET_COI)),this.addCheckbox(e,"Open properties on select","Always show properties upon selecting object",!0,void 0,y.Prefs.OPEN_PROPERTIES_ON_SELECT)),this.is3dMode||(this.addLabel(e,"Zoom"),this.addCheckbox(e,"Reverse mouse zoom direction","Toggles direction of zooming in and out",!1,void 0,y.Prefs.REVERSE_MOUSE_ZOOM_DIR),(0,c.isMobileDevice)()||(this.scrollSpeed=i.call(this)),this.dragSpeed=t.call(this),this.addLabel(e,"Mouse"),this.addCheckbox(e,"Open properties on select","Always show properties upon selecting object",!0,void 0,y.Prefs.OPEN_PROPERTIES_ON_SELECT),(0,c.isMobileDevice)()||this.addCheckbox(e,"Left handed mouse setup","Swaps the buttons on the mouse",!1,void 0,y.Prefs.LEFT_HANDED_MOUSE_SETUP))},T.prototype.addConfigButton=function(e,t){if(!t)throw new Error("Must register a function callback.");this._externalButtonsLabel||(this._externalButtonsLabel=this.addLabel(A.Configuration,"More"));var i=this.addButton(A.Configuration,e);return this.getControl(i).setOnClick((()=>{this.setVisible(!1),t()})),this._externalButtonIds.push(i),i},T.prototype.removeConfigButton=function(e){var t=this._externalButtonIds.indexOf(e);if(-1===t)return!1;var i=this.getControl(e);return!!i&&(this.removeControl(i),this._externalButtonIds.splice(t,1),0===this._externalButtonIds.length&&null!==this._externalButtonsLabel&&(this._externalButtonsLabel.removeFromParent(),this._externalButtonsLabel=null),!0)},T.prototype.updateEdgeToggle=function(){const e=document.getElementById(this.edgeCheckboxName+"_check");if(!e)return;if(!this.is3dMode)return;this.options.detectIfModelsHaveEdge()?e.disabled=!1:(e.disabled=!0,e.checked=!1)},T.prototype.createConfigurationPanel=function(){var e=A.Configuration;this.is3dMode?(this.addLabel(e,"Performance Optimization"),this.optimizeNavigationhkBoxId=this.addCheckbox(e,"Disable shadow effect","Provides faster response(but degrades quality) while navigating",(0,c.isMobileDevice)(),void 0,y.Prefs3D.OPTIMIZE_NAVIGATION),this.progressiveRenderChkBoxId=this.addCheckbox(e,"Progressive display","Shows incremental updates of the view and allows for more responsive interaction with the model (some elements may flicker) This improves perceived waiting time",!0,void 0,y.Prefs.PROGRESSIVE_RENDERING),C(this,e,this.is3dMode),this.addLabel(e,"Display"),this.ghosthiddenChkBoxId=this.addCheckbox(e,"Ghost hidden objects","Leave hidden objects slightly visible",!0,void 0,y.Prefs3D.GHOSTING),this.displayLinesId=this.addCheckbox(e,"Display Lines","Toggles display of line objects",!0,void 0,y.Prefs3D.LINE_RENDERING),this.displayPointsId=this.addCheckbox(e,"Display Points","Toggles display of point objects",!0,void 0,y.Prefs.POINT_RENDERING),this.edgeCheckboxName="Display edges",this.displayEdgesId=this.addCheckbox(e,this.edgeCheckboxName,"Shows outline of model surfaces",!1,(e=>{this.getControl(this.displayEdgesId).setValue(e),this.updateEdgeToggle()}),y.Prefs3D.EDGE_RENDERING),this.updateEdgeToggle(),this.displaySectionHatchesId=this.addCheckbox(e,"Display Section Hatches","Shows hatch pattern for section planes this does not apply to section boxes",!0,null,E.Prefs3D.DISPLAY_SECTION_HATCHES)):(this.addLabel(e,"Performance Optimization"),this.progressiveRenderChkBoxId=this.addCheckbox(e,"Progressive display","Shows incremental updates of the view and allows for more responsive interaction with the model (some elements may flicker) This improves perceived waiting time",!0,void 0,y.Prefs.PROGRESSIVE_RENDERING),C(this,e,this.is3dMode),this.isPdfFile&&this.enableVectorRasterSwitch&&(this.vectorViewingChkBoxId=this.addCheckbox(e,"Vector Viewing","Provides increased zooming, snapping and access to PDF vector data. If turned off, all PDFs will be rasterized.",!0,void 0,y.Prefs2D.VECTOR_VIEWING)),this.addLabel(e,"Display")),this.displayUnitsId=this.addDropDownMenu(e,"Display Units",E.displayUnits,E.displayUnitsEnum,null,E.Prefs.DISPLAY_UNITS),this.displayUnitsPrecisionId=this.addDropDownMenu(e,"Precision",E.displayUnitsPrecision,E.displayUnitsPrecisionEnum,null,E.Prefs.DISPLAY_UNITS_PRECISION),this.is3dMode&&this._addSelectionModeOption()},T.prototype._addSelectionModeOption=function(){const e=A.Configuration;this.addLabel(e,"Selection");const t=[],i=[];let n=0;for(let e in Autodesk.Viewing.SelectionMode)t[n]=e,i[n]=Autodesk.Viewing.SelectionMode[e],n++;const r=t.map((e=>e.split("_").map((e=>e.charAt(0)+e.slice(1).toLowerCase())).join(" ")));this.selectionModeId=this.addDropDownMenu(e,"Selection Mode",r,i,null,E.Prefs3D.SELECTION_MODE)},T.prototype.createAppearancePanel=function(){var e=A.Appearance;this.is3dMode?(this.addLabel(e,"Visual Quality Optimization"),this.antialiasingChkBoxId=this.addCheckbox(e,"Anti-aliasing","Remove jagged edges from lines",!0,void 0,y.Prefs3D.ANTIALIASING),this.ambientshadowsChkBoxId=this.addCheckbox(e,"Ambient shadows","Improve shading of occluded surfaces",!0,void 0,y.Prefs3D.AMBIENT_SHADOWS),this.groundShadowChkBoxId=this.addCheckbox(e,"Ground shadow","Add simulated ground surface shadows",!0,void 0,y.Prefs3D.GROUND_SHADOW),this.groundReflectionChkBoxId=this.addCheckbox(e,"Ground reflection","Add simulated ground surface reflections",!1,void 0,y.Prefs3D.GROUND_REFLECTION)):(this.addLabel(e,"Existing behavior"),this.swapBlackAndWhiteChkBoxId=this.addCheckbox(e,"2D Sheet Color","Switch sheet color white to black",!0,void 0,y.Prefs2D.SWAP_BLACK_AND_WHITE),this.loadingAnimationChkBoxId=this.addCheckbox(e,"Loading Animation","Animate lines during loading",!0,void 0,y.Prefs2D.LOADING_ANIMATION))},T.prototype.createEnvironmentPanel=function(){if(this.is3dMode&&!this.envTabCreated){this.envTabCreated=!0;var e=A.Environment,t=this.tablesContainer.childNodes[3];this.gridTable=t,this.addLabel(e,"Environment"),this.envMapBackgroundChkBoxId=this.addCheckbox(e,"Environment Image Visible","Shows lighting environment as background",!0,void 0,y.Prefs3D.ENV_MAP_BACKGROUND);var i=t.tBodies[0].insertRow(-1).insertCell(0),n=this.getDocument();this.caption=n.createElement("div"),this.caption.setAttribute("data-i18n","Environments and Lighting Selection"),this.caption.textContent=l.A.t("Environments and Lighting Selection"),this.caption.classList.add("settings-row-title"),i.appendChild(this.caption),i.colSpan="3",this.envSelect=this.addGrid(t,a.LightPresets,this.updateEnvironmentSelection.bind(this),E.Prefs3D.LIGHT_PRESET),this.updateEnvironmentSelection(),this.envSelect.classList.add("with-environment")}},T.prototype.createVersionLabel=function(e){if(e){var t=this.getDocument();this.versionDiv=t.createElement("div"),this.versionDiv.textContent=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:LMV_VIEWER_VERSION;"@"===e.charAt(0)&&(e="0.0.0");return"v"+e}(this.options.version),this.versionDiv.className="docking-panel-version-label",this.addEventListener(this.versionDiv,"click",(e=>{e.shiftKey&&navigator.clipboard.writeText(this.versionDiv.textContent)})),e.appendChild(this.versionDiv)}},T.prototype.createRestoreDefaultSettingsButton=function(){var e=this.getDocument();this.restoreDiv=e.createElement("div"),this.restoreDiv.classList.add("docking-panel-container-solid-color-b"),this.restoreDiv.classList.add("restore-defaults-container"),this.restoreButton=e.createElement("div"),this.restoreButton.className="docking-panel-tertiary-button",this.restoreButton.setAttribute("data-i18n","Restore all default settings"),this.restoreButton.textContent=l.A.t("Restore all default settings"),this.restoreDiv.appendChild(this.restoreButton),this.addEventListener(this.restoreDiv,"touchstart",c.touchStartToClick),this.addEventListener(this.restoreDiv,"click",(()=>{var e,t;null===(e=(t=this.options).onRestoreDefaults)||void 0===e||e.call(t),E.analytics.track("viewer.settings.default")}),!1),this.scrollContainer.appendChild(this.restoreDiv)},T.prototype.selectTab=function(e){n.SettingsPanel.prototype.selectTab.call(this,e),this.sizeToContent()},T.prototype.sizeToContent=function(){n.SettingsPanel.prototype.sizeToContent.call(this,this.options.container)},T.prototype.onViewerResize=function(e,t,i,n,r,o){this.sizeToContent()},T.prototype.syncUI=function(){var e=this.preferences;this.setControlValue(this.antialiasingChkBoxId,e.get("antialiasing")),this.setControlValue(this.ambientshadowsChkBoxId,e.get("ambientShadows")),this.setControlValue(this.groundShadowChkBoxId,e.get("groundShadow")),this.setControlValue(this.groundReflectionChkBoxId,e.get("groundReflection")),this.setControlValue(this.envMapBackgroundChkBoxId,e.get("envMapBackground")),this.setControlValue(this.progressiveRenderChkBoxId,e.get("progressiveRendering")),this.setControlValue(this.largeModelExperienceChkBoxId,e.get(y.Prefs3D.LARGE_MODEL_EXPERIENCE)),this.setControlValue(this.outOfCoreGpuMemoryManagementChkBoxId,e.get(y.Prefs3D.OUT_OF_CORE_GPU_MEMORY_MANAGEMENT)),this.setControlValue(this.webGPUChkBoxId,e.get(y.Prefs.WEBGPU)),this.setControlValue(this.swapBlackAndWhiteChkBoxId,e.get("swapBlackAndWhite")),this.setControlValue(this.vectorViewingChkBoxId,e.get(E.Prefs2D.VECTOR_VIEWING)),this.setControlValue(this.loadingAnimationChkBoxId,e.get("loadingAnimation")),this.setControlValue(this.ghosthiddenChkBoxId,e.get("ghosting")),this.setControlValue(this.displayLinesId,e.get("lineRendering")),this.setControlValue(this.displayPointsId,e.get("pointRendering")),this.setControlValue(this.displayEdgesId,e.get("edgeRendering")),this.setControlValue(this.displaySectionHatchesId,e.get("displaySectionHatches")),this.setControlValue(this.scrollSpeed,e.get("zoomScrollSpeed")),this.setControlValue(this.dragSpeed,e.get("zoomDragSpeed")),this.updateEnvironmentSelection()},T.prototype.setControlValue=function(e,t){var i=this.getControl(e);i&&i.setValue(t)}},23619:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Browser:()=>c,BrowserDelegate:()=>l});var n=i(26940),r=i(57480),o=i(83081);let s=(0,i(55280).getGlobal)(),a=s.document;function l(){}function c(e,t,i){this.myDelegate=e,this.mySelectedIds=[];var n="browserview";this.myRootContainerId=i+"-"+n,this.idToElement={},this.myRootContainer=a.createElement("div"),this.myRootContainer.id=this.myRootContainerId,this.myRootContainer.classList.add(n),a.getElementById(i).appendChild(this.myRootContainer),this.createElements(t,this.myRootContainer)}l.prototype.constructor=l,l.prototype.getNodeId=function(e){throw"getId is not implemented."},l.prototype.getNodeLabel=function(e){return e.name},l.prototype.getNodeClass=function(e){return""},l.prototype.hasThumbnail=function(e){return!1},l.prototype.getThumbnailOptions=function(e){return null},l.prototype.getThumbnail=function(e){return null},l.prototype.onNodeClick=function(e,t,i){},l.prototype.onNodeHover=function(e,t,i){},l.prototype.selectItem=function(e){},l.prototype.deselectItem=function(e){},l.prototype.hasContent=function(e){return!1},l.prototype.addContent=function(e,t){},c.prototype.constructor=c,c.prototype.show=function(e){e?(this.myRootContainer.classList.remove("browserHidden"),this.myRootContainer.classList.add("browserVisible"),this.myRootContainer.style.display="block"):(this.myRootContainer.classList.remove("browserVisible"),this.myRootContainer.classList.add("browserHidden"),this.myRootContainer.style.display="none")},c.prototype.getRootContainer=function(){return this.myRootContainer},c.prototype.delegate=function(){return this.myDelegate},c.prototype.addToSelection=function(e){var t=this;function i(e){return-1==t.mySelectedIds.indexOf(e)&&(t.mySelectedIds.push(e),!0)}for(var n=0,r=e.length;n=0;--n){var r=e[n];if(i(r)){var o=this.idToElement[r];void 0===o?t.myDelegate.deselectItem(r):o.classList.remove("selected")}}},c.prototype.setSelection=function(e){return this.removeFromSelection(this.mySelectedIds),this.addToSelection(e),this.mySelectedIds},c.prototype.clearSelection=function(){this.removeFromSelection(this.mySelectedIds)},c.prototype.createElements=function(e,t){if(e)for(var i=0;i{"use strict";i.r(t),i.d(t,{Button:()=>a});var n,r,o=i(60618),s=i(55280);function a(e,t){o.Control.call(this,e,t);var i=this;this._state=a.State.INACTIVE;var n=this.getDocument();this.icon=n.createElement("div"),this.icon.classList.add("adsk-button-icon"),this.container.appendChild(this.icon),this.container.addEventListener("click",(function(e){i.getState()!==a.State.DISABLED&&(i.dispatchEvent(a.Event.CLICK),i.onClick&&i.onClick(e)),e.stopPropagation()})),(0,s.isTouchDevice)()?this.container.addEventListener("touchstart",s.touchStartToClick):(this.container.addEventListener("mouseover",(function(e){i.onMouseOver(e)})),this.container.addEventListener("mouseout",(function(e){i.onMouseOut(e)}))),this.addClass("adsk-button"),this.addClass(a.StateToClassMap[this._state])}a.Event={VISIBILITY_CHANGED:o.Control.Event.VISIBILITY_CHANGED,COLLAPSED_CHANGED:o.Control.Event.COLLAPSED_CHANGED,STATE_CHANGED:"Button.StateChanged",CLICK:"click"},a.State={ACTIVE:0,INACTIVE:1,DISABLED:2},a.StateToClassMap=(n=a.State,(r={})[n.ACTIVE]="active",r[n.INACTIVE]="inactive",r[n.DISABLED]="disabled",r),a.prototype=Object.create(o.Control.prototype),a.prototype.constructor=a,a.prototype.setState=function(e){if(e===this._state)return!1;this.removeClass(a.StateToClassMap[this._state]),this.addClass(a.StateToClassMap[e]),this._state=e;var t={type:a.Event.STATE_CHANGED,state:e};return this.dispatchEvent(t),!0},a.prototype.setIcon=function(e){this.iconClass&&this.icon.classList.remove(this.iconClass),this.iconClass=e,this.icon.classList.add(e)},a.prototype.getState=function(){return this._state},a.prototype.onClick=function(e){},a.prototype.onMouseOver=function(e){},a.prototype.onMouseOut=function(e){}},66277:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ComboButton:()=>s});var n=i(22767),r=i(41129),o=i(8600);function s(e,t){n.Button.call(this,e,t),this.arrowButton=new n.Button(e+"arrow"),this.arrowButton.addClass("adsk-button-arrow"),this.arrowButton.removeClass("adsk-button"),this.subMenu=new r.RadioButtonGroup(e+"SubMenu"),this.subMenu.addClass("toolbar-vertical-group"),this.subMenu.setVisible(!1),this.container.insertBefore(this.subMenu.container,this.container.firstChild),this.container.insertBefore(this.arrowButton.container,this.container.firstChild);var i=this;this.arrowButton.onClick=function(){i.subMenu.setVisible(!i.subMenu.isVisible())},this.toggleFlyoutVisible=function(){i.subMenu.setVisible(!i.subMenu.isVisible())},this.onClick=function(){i.subMenu.setVisible(!i.subMenu.isVisible())},this.subMenuActiveButtonChangedHandler=function(e){e.isActiveButton?(i.setIcon(e.target.getActiveButton().iconClass),i.setToolTip(e.target.getActiveButton().getToolTip()),i.setState(n.Button.State.ACTIVE),i.onClick=e.button.onClick):i.setState(n.Button.State.INACTIVE)},this.subMenu.addEventListener(r.RadioButtonGroup.Event.ACTIVE_BUTTON_CHANGED,this.subMenuActiveButtonChangedHandler);var s=(0,o.stringToDOM)('
');this.subMenu.container.insertBefore(s,this.subMenu.container.firstChild),s.addEventListener("click",(function(e){i.subMenu.setVisible(!1),e.stopPropagation()}))}s.prototype=Object.create(n.Button.prototype),s.prototype.constructor=s,s.prototype.addControl=function(e){this.subMenu.addControl(e),e.addEventListener(n.Button.Event.CLICK,this.toggleFlyoutVisible)},s.prototype.removeControl=function(e){this.subMenu.removeControl(e),e.removeEventListener(n.Button.Event.CLICK,this.toggleFlyoutVisible)},s.prototype.setState=function(e){if(e===n.Button.State.INACTIVE){var t=this.subMenu.getActiveButton();t&&t.setState(n.Button.State.INACTIVE)}n.Button.prototype.setState.call(this,e)},s.prototype.saveAsDefault=function(){this.defaultState={},this._toolTipElement&&this._toolTipElement.getAttribute("tooltipText")&&(this.defaultState.tooltip=this._toolTipElement.getAttribute("tooltipText")),this.defaultState.icon=this.iconClass,this.defaultState.onClick=this.onClick},s.prototype.restoreDefault=function(){this.defaultState&&(this.defaultState.tooltip&&this.setToolTip(this.defaultState.tooltip),this.defaultState.icon&&this.setIcon(this.defaultState.icon),this.onClick=this.defaultState.onClick,this.setState(n.Button.State.INACTIVE))}},60618:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Control:()=>r});var n=i(25004);function r(e,t){this._id=e,this._isCollapsible=!t||t.collapsible,this._toolTipElement=null,this._listeners={},this.container=this.getDocument().createElement("div"),this.container.id=e,this.addClass("adsk-control")}i(26206).GlobalManagerMixin.call(r.prototype),r.Event={VISIBILITY_CHANGED:"Control.VisibilityChanged",COLLAPSED_CHANGED:"Control.CollapsedChanged"},n.EventDispatcher.prototype.apply(r.prototype),r.prototype.constructor=r,r.prototype.container=null,r.prototype.getId=function(){return this._id},r.prototype.setVisible=function(e){if(!this.container.classList.contains("adsk-hidden")===e)return!1;e?this.container.classList.remove("adsk-hidden"):this.container.classList.add("adsk-hidden");var t={type:r.Event.VISIBILITY_CHANGED,target:this,controlId:this._id,isVisible:e};return this.dispatchEvent(t),!0},r.prototype.isVisible=function(){return!this.container.classList.contains("adsk-hidden")},r.prototype.setToolTip=function(e){return(!this._toolTipElement||this._toolTipElement.getAttribute("tooltipText")!==e)&&(this._toolTipElement||(this._toolTipElement=this.getDocument().createElement("div"),this._toolTipElement.id=this._id+"-tooltip",this._toolTipElement.classList.add("adsk-control-tooltip"),this.container.appendChild(this._toolTipElement)),this._toolTipElement.setAttribute("data-i18n",e),this._toolTipElement.setAttribute("tooltipText",e),this._toolTipElement.textContent=Autodesk.Viewing.i18n.translate(e,{defaultValue:e}),!0)},r.prototype.getToolTip=function(){return this._toolTipElement&&this._toolTipElement.getAttribute("tooltipText")},r.prototype.setCollapsed=function(e){if(!this._isCollapsible||this.isCollapsed()===e)return!1;e?this.container.classList.add("collapsed"):this.container.classList.remove("collapsed");var t={type:r.Event.COLLAPSED_CHANGED,isCollapsed:e};return this.dispatchEvent(t),!0},r.prototype.isCollapsed=function(){return!!this.container.classList.contains("collapsed")},r.prototype.isCollapsible=function(){return this._isCollapsible},r.prototype.addClass=function(e){this.container.classList.add(e)},r.prototype.removeClass=function(e){this.container.classList.remove(e)},r.prototype.getPosition=function(){var e=this.container.getBoundingClientRect();return{top:e.top,left:e.left}},r.prototype.getDimensions=function(){var e=this.container.getBoundingClientRect();return{width:e.width,height:e.height}},r.prototype.setDisplay=function(e){this.container.style.display=e},r.prototype.removeFromParent=function(){return!!this.parent&&this.parent.removeControl(this)}},37463:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ControlGroup:()=>r});var n=i(60618);function r(e,t){n.Control.call(this,e,t);var i=this;this._controls=[],this.addClass("adsk-control-group"),this.handleChildSizeChanged=function(e){var t={type:r.Event.SIZE_CHANGED,childEvent:e};i.dispatchEvent(t)}}r.Event={VISIBILITY_CHANGED:n.Control.Event.VISIBILITY_CHANGED,COLLAPSED_CHANGED:n.Control.Event.COLLAPSED_CHANGED,SIZE_CHANGED:"ControlGroup.SizeChanged",CONTROL_ADDED:"ControlGroup.ControlAdded",CONTROL_REMOVED:"ControlGroup.ControlRemoved"},r.prototype=Object.create(n.Control.prototype),r.prototype.constructor=r,r.prototype.addControl=function(e,t){e.setGlobalManager(this.globalManager);var i=t&&void 0!==t.index?t.index:this._controls.length;if(null!==this.getControl(e.getId()))return!1;var o={type:r.Event.CONTROL_ADDED,control:e,index:i};return i=this._controls.length?null:this._controls[e].getId()},r.prototype.getNumberOfControls=function(){return this._controls.length},r.prototype.setCollapsed=function(e){if(!this._isCollapsible)return!1;var t=!1;return this._controls.forEach((function(i){i.isCollapsible()&&i.setCollapsed(e)&&(t=!0)})),t&&(e?this.container.classList.add("collapsed"):this.container.classList.remove("collapsed"),this.dispatchEvent({type:r.Event.COLLAPSED_CHANGED,isCollapsed:e})),t}},25360:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Filterbox:()=>o});var n=i(60618),r=i(38842);function o(e,t){this._id=e,this._listeners={},this._options=t||{},this._filterFunction=this._options.filterFunction||function(){};var i=this.getDocument();this.container=i.createElement("div"),this.container.id=e,this.addClass("adsk-control"),this.addClass("adsk-filterbox"),this.addClass("empty");var n=i.createElement("input");n.classList.add("filter-box"),n.classList.add("docking-panel-delimiter-shadow"),n.type="search",n.placeholder=r.A.t("Enter filter term"),n.setAttribute("data-i18n","Enter filter term"),n.incremental="incremental",n.autosave=this.container.id+"filter",this.container.appendChild(n),this.filterbox=n;var o=this,s=function(e){0===(e=e.trim()).length?o.container.classList.add("empty"):o.container.classList.remove("empty"),o._filterFunction&&o._filterFunction(e)},a=i.createElement("div");a.className="filter-box-icon",this.container.insertBefore(a,n.nextSibling);var l=i.createElement("div");l.className="filter-box-close",l.addEventListener("click",(function(){o.filterbox.value="",o.addClass("empty")})),this.container.appendChild(l),n.addEventListener("keydown",(function(e){var t=o.getWindow();13===(e=e||t.event).keyCode&&o.filterbox.blur()})),n.addEventListener("input",(function(){s(this.value)})),n.addEventListener("change",(function(){s(this.value)})),n.addEventListener("focus",(function(){a.classList.add("focused")})),n.addEventListener("blur",(function(){a.classList.remove("focused")}))}o.prototype=Object.create(n.Control.prototype),o.prototype.constructor=o},41129:(e,t,i)=>{"use strict";i.r(t),i.d(t,{RadioButtonGroup:()=>s});var n=i(37463),r=i(22767),o=i(60618);function s(e,t){n.ControlGroup.call(this,e,t);var i=this;this._activeButton=null,this._handleButtonStateChange=function(e){var t=r.Button.State;e.state===t.ACTIVE?(i._activeButton=e.target,i.dispatchEvent({type:s.Event.ACTIVE_BUTTON_CHANGED,button:e.target,isActiveButton:!0}),i._controls.forEach((function(i){i!==e.target&&i.getState()!==t.DISABLED&&i.setState(t.INACTIVE)}))):e.target===i._activeButton&&(i._activeButton=null,i.dispatchEvent({type:s.Event.ACTIVE_BUTTON_CHANGED,button:e.target,isActiveButton:!1}))}}s.Event={ACTIVE_BUTTON_CHANGED:"RadioButtonGroup.ActiveButtonChanged",VISIBILITY_CHANGED:o.Control.Event.VISIBILITY_CHANGED,COLLAPSED_CHANGED:o.Control.Event.COLLAPSED_CHANGED,CONTROL_ADDED:n.ControlGroup.Event.CONTROL_ADDED,CONTROL_REMOVED:n.ControlGroup.Event.CONTROL_REMOVED,SIZE_CHANGED:n.ControlGroup.Event.SIZE_CHANGED},s.prototype=Object.create(n.ControlGroup.prototype),s.prototype.constructor=s,s.prototype.addControl=function(e,t){return e instanceof r.Button&&(!!n.ControlGroup.prototype.addControl.call(this,e,t)&&(e.addEventListener(r.Button.Event.STATE_CHANGED,this._handleButtonStateChange),!0))},s.prototype.removeControl=function(e){var t="string"==typeof e?this.getControl(e):e;return!(null===t||!n.ControlGroup.prototype.removeControl.call(this,t))&&(t.removeEventListener(r.Button.Event.STATE_CHANGED,this._handleButtonStateChange),!0)},s.prototype.getActiveButton=function(){return this._activeButton}},11674:(e,t,i)=>{"use strict";i.d(t,{j:()=>n});let n="search-selected"},77995:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Searchbox:()=>S});var n=i(60618),r=i(11674),o=i(83081),s=i(25004),a=i(86022),l=i(26206),c=50,h=150,u=100;function d(e,t,i){let n=i;this.excludeRoot=t,(n instanceof Autodesk.Viewing.GuiViewer3D||n instanceof Autodesk.Viewing.Viewer3D)&&(o.logger.warn("Deprecated use of Viewer as parameter. Provide container instead"),n=i.container),this.results=[],this.resultCount=0,this.selectedIndex=-1;let r=this.getDocument();this.container=r.createElement("div"),this.container.classList.add("docking-panel"),this.container.classList.add("adsk-search-results"),this.container.results=r.createElement("div"),this.container.results.classList.add("docking-panel-scroll"),this.container.results.classList.add("docking-panel-container-solid-color-b"),this.container.results.addEventListener("scroll",p.bind(this)),this.container.appendChild(this.container.results),e.insertBefore(this.container,e.firstChild),this.scrollingContainer=r.createElement("div"),this.scrollingContainer.classList.add("adsk-search-results-scrolling-panel"),this.scrollingContainer.addEventListener("click",f.bind(this)),this.container.results.appendChild(this.scrollingContainer),this.footer=new a.ResizeFooter(this.container,function(){var e=this.container.getBoundingClientRect(),t=n.getBoundingClientRect();t.right=u&&(this.scrollY=e,m(this))}function m(e,t){e.dirty&&!t||(t?g(e):(e.dirty=!0,e.nextFrameId=requestAnimationFrame((function(){g(e)}))))}function g(e){e.dirty=!1,function(e){for(var t=e.elementsUsed,i=e.elementsPool,n=0;nr+n+u){d=!1;break}if(e.elementsUsed===e.elementsPool.length){d=!1;break}var f=o.id(),p=o.delegate(),m=i+c,g=e.elementsPool[e.elementsUsed++];v(f,p,g,e,l===e.selectedIndex),e.scrollingContainer.appendChild(g),i=m,l++}var y=e.resultCount*c;e.scrollingContainer.style.height=y+"px"}(e)):e.setDisplayNoResults(!0)}function v(e,t,i,n,r){i.classList.add("search-result"),r?i.classList.add("selected"):i.classList.remove("selected"),i.setAttribute("lmv-nodeId",e),i.setAttribute("lmv-modelId",t.model.id),i.style.height=c+"px";var o=t.instanceTree.getNodeName(e),s=n.searchString,a=o.toLowerCase().indexOf(s.toLowerCase()),l=o.substr(0,a),h=o.substr(a,s.length),u=o.substr(a+s.length);i.domPrefix.innerText=l,i.domMatch.innerText=h,i.domSufix.innerText=u;var d=function(e,t,i){var n=[],r=t.getRootId(),o=i.isRootExcluded(),s=t.instanceTree,a=e,l=!1;for(;a&&!l&&(a!==r||(l=!0,!o));){var c=s.getNodeName(a);n.unshift(c),a=s.getNodeParentId(a)}return n}(e,t,n);i.domPath.innerText=d.join(" > ")}function y(e){var t=e.createElement("div"),i=e.createElement("div"),n=e.createElement("span"),r=e.createElement("span"),o=e.createElement("span"),s=e.createElement("span");return i.classList.add("search-result-container"),r.classList.add("search-match"),s.classList.add("search-path"),i.appendChild(n),i.appendChild(r),i.appendChild(o),i.appendChild(s),t.appendChild(i),t.domPrefix=n,t.domMatch=r,t.domSufix=o,t.domPath=s,t.domContainer=i,t}function b(e){e.setAttribute("lmv-nodeId",""),e.setAttribute("lmv-modelId",""),e.domPrefix.innerText="",e.domMatch.innerText="",e.domSufix.innerText="",e.domPath.innerText="",e.style.height="0"}function x(e,t){e.scrollTop+e.clientHeight<(t+1)*c&&(e.scrollTop+=(t+1)*c-(e.scrollTop+e.clientHeight)),e.scrollTop/c>t&&(e.scrollTop=t*c)}d.prototype.constructor=d,s.EventDispatcher.prototype.apply(d.prototype),l.GlobalManagerMixin.call(d.prototype),d.prototype.setPosition=function(e,t){this.container.style.left=e+"px",this.container.style.top=t+"px"},d.prototype.setMinWidth=function(e){this.container.style.width=e+"px"},d.prototype.setMaxWidth=function(e){this.container.style.maxHeight=e+"px"},d.prototype.setVisible=function(e){this.container.style.display=e?"":"none"},d.prototype.setResults=function(e,t){this.searchString=e,this.results=t,this.resultCount=function(e){for(var t=0,i=0;i1)&&(!(this.modelCount>1)&&this.excludeRoot)},d.prototype.uninitialize=function(){this.setVisible(!1),this.container=null,this.container.parentNode&&this.container.parentNode.removeChild(this.container),cancelAnimationFrame(this.nextFrameId),this.clearListeners()},d.prototype.setDisplayNoResults=function(e){this.divNoResults.style.display=e?"":"none"},d.prototype.selectNext=function(){0!==this.resultCount&&(this.selectedIndex=Math.min(this.resultCount-1,this.selectedIndex+1),x(this.container.results,this.selectedIndex),m(this))},d.prototype.selectPrevious=function(){0!==this.resultCount&&(this.selectedIndex=Math.max(0,this.selectedIndex-1),x(this.container.results,this.selectedIndex),m(this))},d.prototype._getNodeAndModelIds=function(e){for(;!e.hasAttribute("lmv-nodeId");)if(!(e=e.parentNode)||e===this.scrollingContainer)return;return{nodeId:parseInt(e.getAttribute("lmv-nodeId")),modelId:parseInt(e.getAttribute("lmv-modelId"))}};var _=i(38842);const E=i(38221);function S(e,t,i){this._id=e,this._listeners={},this._options=i||{},this._searchFunction=this._options.searchFunction||function(){};var n=this.getDocument();this.container=n.createElement("div"),this.container.id=e,this.addClass("adsk-control"),this.addClass("adsk-searchbox"),this.addClass("empty");var s=n.createElement("input");s.classList.add("search-box"),s.classList.add("docking-panel-delimiter-shadow"),s.type="search",s.results=[],s.placeholder=_.A.t("Search"),s.setAttribute("data-i18n","Search"),s.incremental="incremental",s.autosave=this.container.id+"search_autosave",this.container.insertBefore(s,this.scrollContainer),this.searchbox=s;var a=function(){u.searchbox.value="",u.addClass("empty")},l=function(){u.searchbox.classList.remove("searching"),u.searchResults.setVisible(!1)},c=n.createElement("div");c.className="search-box-icon",this.container.insertBefore(c,s.nextSibling);var h=n.createElement("div");h.className="search-box-close",h.addEventListener("click",(function(){a(),l()})),this.container.appendChild(h),this.searchResults=new d(this.container,i.excludeRoot,t),this.searchResults.addEventListener(r.j,(function(e){a(),l(),u.fireEvent(e)}));var u=this,f=!0;s.addEventListener("keydown",(function(e){var t=u.getWindow();if(38===(e=e||t.event).keyCode&&(u.searchResults.selectPrevious(),e.preventDefault()),40===e.keyCode&&(u.searchResults.selectNext(),e.preventDefault()),13===e.keyCode){var i=u.searchResults.getSelection();if(!i)return!1;a(),l(),u.fireEvent({type:S.Events.ON_SEARCH_SELECTED,id:i.nodeId,modelId:i.modelId}),e.preventDefault()}}));var p=E((()=>{if(0===s.value.length)return u.container.classList.add("empty"),void l();u.container.classList.remove("empty"),s.value.length<3||function(){var e=s.value.trim();if(0!==e.length){f&&(o.logger.track({category:"search_node",name:"model_browser_tool"}),f=!1),s.classList.add("searching");var t=u._searchFunction(e);u.searchResults.setResults(e,t),u.searchResults.setVisible(!0)}else l()}()}),800);s.addEventListener("input",(function(){p()})),s.addEventListener("change",(function(e){var t=u.getDocument();e.target===t.activeElement&&p()})),s.addEventListener("focus",(function(){c.classList.add("focused")})),s.addEventListener("blur",(function(){c.classList.remove("focused")}))}S.prototype=Object.create(n.Control.prototype),S.prototype.constructor=S,S.Events={ON_SEARCH_SELECTED:r.j}},857:(e,t,i)=>{"use strict";i.r(t),i.d(t,{SplitViewLayout:()=>l});const n={down:{pointer:"pointerdown",mouse:"mousedown",touch:"touchstart"},up:{pointer:"pointerup",mouse:"mouseup",touch:"touchend"},move:{pointer:"pointermove",mouse:"mousemove",touch:"touchmove"}};function r(e,t,i){const r=(arguments.length>3&&void 0!==arguments[3]&&arguments[3]?"remove":"add")+"EventListener",o=function(e){const t=[];return Autodesk.Viewing.isMobileDevice()||t.push(n[e].mouse),Autodesk.Viewing.isTouchDevice()&&t.push(n[e].touch),t}(t);for(const t of o)e[r](t,i)}class o{constructor(e,t){this.container=e,this.isDragging=!1,this.resizeHandlerElement=null,this.onMoveCB=t,this.panelSizeThreshold=20,this.margin=16,this.initResizeHandlerElement()}onDown(e){this.isDragging=!0,e.preventDefault()}onUp(e){this.isDragging=!1}onMove(e){if(this.isDragging){"touchmove"===e.type&&(e.pageX=e.touches[0].pageX,e.pageY=e.touches[0].pageY);const t=this.container.getBoundingClientRect(),i=this.getTargetWidthPercentage(e,t);this.panelSizeThreshold{"use strict";i.r(t),i.d(t,{ToolBar:()=>o});var n=i(37463),r=i(60618);function o(e,t){n.ControlGroup.call(this,e,t),this.removeClass("adsk-control-group"),this.addClass("adsk-toolbar"),t&&t.alignVertically&&this.addClass("adsk-toolbar-vertical")}o.Event={VISIBILITY_CHANGED:r.Control.Event.VISIBILITY_CHANGED,COLLAPSED_CHANGED:r.Control.Event.COLLAPSED_CHANGED,CONTROL_ADDED:n.ControlGroup.Event.CONTROL_ADDED,CONTROL_REMOVED:n.ControlGroup.Event.CONTROL_REMOVED,SIZE_CHANGED:n.ControlGroup.Event.SIZE_CHANGED},o.prototype=Object.create(n.ControlGroup.prototype),o.prototype.constructor=o},10902:(e,t,i)=>{"use strict";i.r(t)},72980:(e,t,i)=>{function n(t,i){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e.exports[n]=t[n],i&&(e.exports[i][n]=t[n]))}i(74423),i(69479),i(28845),i(17656),i(55105),i(7467),i(10586),i(71517),i(93777),i(14190),i(12359),i(86097),i(39172),i(57019),i(17273),i(81723),i(27415),i(19929),i(37583),i(55122),i(16385),i(20230),i(57268),i(79733),i(58179),i(30456),i(74017),i(79310),i(83062),i(96369),i(15637),i(2848),i(24842),i(24746),i(33454),i(6660),i(15941),i(82101),i(2917),i(47628),i(65186),i(42978),i(72527),i(79852),i(42376),i(40617),i(73067),i(66820),i(8288),i(25509),i(65223),i(60321),i(41927),i(11632),i(64377),i(49522),i(66771),i(12516),i(68931),i(52514),i(35694),i(52774),i(23283),i(49536),i(21926),i(94483),i(16215),i(78898),i(74176),i(43275),i(42793),i(77208),i(67348),i(26957),i(79732),i(83742),i(56422),i(82451),i(46270),i(59848),e.exports.Autodesk=i(54679).Autodesk;var r=Object.assign||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])};e.exports.THREE=i(72091),e.exports.av={},e.exports.avp={},e.exports.avu={},e.exports.ave={},n({Hammer:i(41944)},"av"),n(i(55280),"av"),n(i(55280),"avp"),n(i(8600),"avp"),n(i(8600),"av"),n(i(75840),"avp"),n(i(85403),"avp"),n(i(11653),"avp"),n(i(11653),"av"),n(i(20268),"avp");const o=i(38842).A;o.translate=o.t.bind(o),o.localize=()=>{},n({i18n:o},"av"),n(i(16271),"avp"),n(i(77427),"avp"),n(i(83081),"avp"),n(i(57872),"avp"),n(i(14859),"avp"),n(i(65802),"avp"),n(i(61453),"avp"),n(i(94998),"avp"),n(i(25618),"avp"),n(i(12360),"avp"),n(i(30130),"avp"),n(i(26217),"avp"),n(i(68449),"avp"),n(i(31320),"avp"),n(i(48717),"avp"),n(i(34423),"avp"),n(i(97011),"avp"),n(i(89024),"avp"),n(i(2179),"avp"),n(i(46890),"avp"),n(i(60012),"avp"),n(i(22267),"avp"),n(i(36771),"avp"),n(i(68630),"avp"),n(i(62612),"avp"),n(i(88190),"avp"),n(i(53870),"avp"),n(i(44745),"avp"),n(i(5732),"avp"),n(i(41007),"avp"),n(i(98233),"avp"),n(i(15371),"avp"),n(i(68747),"avp"),n(i(24528),"avp"),n(i(19129),"avp"),n(i(96118),"avp"),n(i(37365),"avp"),n(i(21706),"avp"),n(i(69511),"avp"),n(i(81760),"avp"),n(i(38749),"avp"),n(i(65672),"avp"),n(i(36411),"avp"),n(i(86639),"avp"),n(i(8879),"avp"),n(i(42525),"avp"),n(i(72474),"avp"),n(i(34845),"avp"),n(i(70101),"avp"),n(i(77201),"avp"),n(i(22040),"avp"),n(i(47263),"avp"),n(i(71082),"avp"),n(i(9478),"avp"),n(i(4897),"avp"),n(i(94549),"avp"),n(i(54561),"avp"),n(i(63430),"av"),n(i(41428),"avp"),n(i(65435),"avp"),n(i(75468),"avp"),n(i(12153),"avp"),n(i(65782),"avp"),n(i(76731),"avp"),n(i(47712),"avp"),n(i(90824),"avp"),n(i(81422),"avp"),n(i(23936),"avp"),n(i(32431),"avp"),n(i(1433),"avp"),n(i(30514),"avp"),n(i(58536),"avp"),n(i(93509),"avp"),n(i(46014),"avp"),n(i(57480),"av"),n(i(8412),"av"),n(i(84045),"avp"),n(i(9341),"avp"),n(i(22201),"avp"),n(i(54393),"av"),n(i(99211),"av"),n(i(25004),"av"),n(i(82712),"av"),n(i(55270),"av"),n(i(93228),"av"),n(i(19556),"av"),n(i(24840),"av"),n(i(92037),"av"),n(i(97005),"avp"),n(i(73674),"avp"),n(i(94661),"avp"),n(i(63764),"av"),n(i(26940),"av"),n(i(61183),"avp"),n(i(35922),"avp"),n(i(11743),"av"),n(i(26477),"av"),n(i(91735),"av"),n(i(55066),"avp"),n(i(21174),"avp"),n(i(67259),"av"),n(i(18817),"av"),n(i(82976),"av"),n(i(56197),"av"),n(i(13002),"av"),n(i(65251),"av"),n(i(53625),"av"),n(i(6684),"av"),n(i(33398),"av");const s=i(19948);n({FeatureFlags:s.FeatureFlags,PublicFeatureFlags:s.PublicFeatureFlags},"av"),n({InternalFeatureFlags:s.InternalFeatureFlags},"avp"),n(i(27623),"avp"),e.exports.av.ModelUnits=i(27623).ModelUnits,n(i(54386),"avp"),n(i(80152),"av"),n(i(13202),"avp");var a=e.exports.av.MeasureCommon={};r(a,i(97010)),a.MeasurementTypes=i(65918).S,a.MeasurementTypesToAnalytics=i(65918).z,a.SnapType=i(17070).h,a.Events=i(23482).G,a.Measurement=i(63795).D,a.SnapResult=i(12182).e,n(i(8811),"av"),n(i(26206),"av"),n(i(45775),"avp"),n(i(4369),"avp"),n(i(78567),"avp"),n(i(17016),"av"),n(i(63841),"av"),n(i(27579),"avp"),n(i(18310),"av"),n(i(13843),"avp"),n(i(49930),"av"),n(i(83464),"av"),n(i(75109),"av"),n(i(68793),"av"),n(i(40723),"av"),n(i(55855),"av"),n(i(74481),"av"),n(i(23261),"av"),n(i(4746),"av"),n(i(28833),"av"),n(i(60687),"av"),n(i(43719),"av"),n(i(2312),"avp"),n(i(5968),"avp"),n(i(47261),"avp"),n(i(14564),"avp"),n(i(13e3),"avp"),n(i(90255),"avp"),n(i(91496),"avp"),n(i(19356),"avp"),n(i(87816),"avp"),n(i(7756),"avp"),n(i(28441),"av"),n(i(32937),"av"),n(i(82076),"avp"),n(i(16613),"avp"),i(10902),n(i(98087),"avu"),n(i(55266),"avu"),n(i(87241),"avu"),n(i(76948),"avu"),n(i(86022),"avp"),n(i(82024),"avu"),n(i(96551),"avu"),n(i(26452),"avp"),n(i(23619),"avp"),n(i(1581),"avp"),n(i(91904),"avp"),n(i(99587),"avu"),n(i(14813),"avu"),n(i(16969),"avu"),n(i(42440),"avp"),n(i(81215),"ave"),n(i(60618),"avu"),n(i(37463),"avu"),n(i(22767),"avu"),n(i(41129),"avu"),n(i(66277),"avu"),n(i(4355),"avu"),n(i(88946),"avp"),n(i(94589),"avu"),n(i(25360),"avu"),n(i(77995),"avu"),n(i(47898),"avp"),n(i(72738),"ave"),n(i(87471),"ave"),n(i(11337),"ave"),n(i(23611),"ave"),n(i(36523),"av"),n(i(66316),"av"),n(i(857),"avu"),n(i(6614),"av"),n(i(82800),"av"),n(i(14561),"av"),n(i(88728),"av"),n(i(95062),"avp"),n(i(97705),"av"),i(63526).E(e.exports)},88728:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CrossViewerInteractionCommon:()=>r});var n=i(19556);const r={onSelectionChanged:{eventName:n.AGGREGATE_SELECTION_CHANGED_EVENT,cb:(e,t,i)=>{const n=e.getAggregateSelection();if(t.impl.model)if(n.length>0)for(let e=0;e{"use strict";i.r(t),i.d(t,{createLeechViewer:()=>a});var n=i(88190);function r(e){Autodesk.Viewing.Private.RenderContext.call(this),this.originalInit=this.init.bind(this),this.init=function(t,i,n){var r;let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};this.canvas=e,this.ctx2D=this.canvas.getContext("2d");const s=!0!==(null===(r=o.webglInitParams)||void 0===r?void 0:r.alpha),a=Object.assign({},o,{offscreen:!0,removeAlphaInOutput:s});this.originalInit(t,i,n,a),this.glrenderer=t;const l=this.glrenderer.getPixelRatio();this.setSize(i/l,n/l)},this.renderToCanvas=function(){this.ctx2D&&(this.getOffscreenTarget()||0!=this.widthWithPixelRatio&&0!=this.heightWithPixelRatio&&(this.ctx2D.clearRect(0,0,this.widthWithPixelRatio,this.heightWithPixelRatio),this.ctx2D.drawImage(this.glrenderer.domElement,0,this.glrenderer.domElement.height-this.heightWithPixelRatio,this.widthWithPixelRatio,this.heightWithPixelRatio,0,0,this.widthWithPixelRatio,this.heightWithPixelRatio)))},this.originalSetSize=this.setSize.bind(this),this.setSize=function(e,t,i,n){if(!n){const i=this.glrenderer.getPixelRatio();this.width=e,this.height=t,this.widthWithPixelRatio=e*i,this.heightWithPixelRatio=t*i,this.canvas.width=this.widthWithPixelRatio,this.canvas.height=this.heightWithPixelRatio,this.canvas.style.width=`${this.width}px`,this.canvas.style.height=`${this.height}px`}this.prepareViewport(i,n),this.restoreViewport()},this.prepareViewport=function(e,t){this.glrenderer.pushViewport();const i=this.glrenderer.getPixelRatio(),n=this.glrenderer.domElement.width/i,r=this.glrenderer.domElement.height/i;(n1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0;this.sharedResources=i,this.resizeObserver=null,n.call(this,e,t),Autodesk.Viewing.Private.IsUsingWebGPU()||(this.renderContext=new r(this.canvas),this.sharedResources.mrtFlags?this.renderContext.mrtFlags=this.sharedResources.mrtFlags:this.sharedResources.mrtFlags=this.renderContext.mrtFlags)}a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.prototype.initialize=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t={glrenderer:this.sharedResources.glrenderer,materialManager:this.sharedResources.materialManager,renderer:this.renderContext},i=Object.assign({},e,t),r=n.prototype.initialize.call(this,i);return this.overrideAPIs(),this.sharedResources.geomCache&&this.sharedResources.geomCache.initialized&&this.impl.setGeomCache(this.sharedResources.geomCache),this.resizeObserver=new ResizeObserver((e=>{const t=e[0].contentRect,i=Math.floor(t.width),n=Math.floor(t.height);i&&n&&(this.impl.resize(i,n,!0),this.dispatchEvent({type:Autodesk.Viewing.VIEWER_RESIZE_EVENT,width:i,height:n}),this.impl.tick(performance.now()))})),this.resizeObserver.observe(this.container),r},a.prototype.uninitialize=function(){this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),this.originalLoadDocumentNode=null,this.loadDocumentNode=n.prototype.loadDocumentNode,n.prototype.uninitialize.call(this)},a.prototype.overrideAPIs=function(){var e=this;if(!this.impl.isWebGPU()){const e=this.impl.tick.bind(this.impl);this.impl.tick=()=>{if(!this.impl||!this.impl.glrenderer())return;this.impl.renderer().prepareViewport(),this.restoreViewerState();const t=performance.now();e(t),this.impl.renderer().restoreViewport()},this.addEventListener(Autodesk.Viewing.RENDER_PRESENTED_EVENT,(()=>{this.renderContext.renderToCanvas()}),{priority:-1e3})}const t=this.impl.setLightPreset.bind(this.impl);this.impl.setLightPreset=(e,i,n)=>{if(this.impl.is2d){this.impl.initLights();const t=Autodesk.Viewing.Private.LightPresets[e].bgColorGradient;this.setBackgroundColor(...t),this.impl.setCurrentLightPreset(e);const i=this.impl.loadCubeMapFromColors(this.impl.clearColorTop,this.impl.clearColorBottom);this.impl.renderer().setCubeMap(i)}else t(e,i,n)};const i=this.toolController.__invokeStack.bind(this.toolController);this.toolController.__invokeStack=function(){return e.restoreViewerState(),i(...arguments)};const n=this.impl.unloadModel.bind(this.impl);this.impl.unloadModel=(e,t)=>{const i=e.leechViewerKey;let r=!1;const o=this.sharedResources.loadedModels[i];return o&&(o.usedByViewersCounter--,r=t||o.forceKeepResources||o.usedByViewersCounter>0,r||delete this.sharedResources.loadedModels[i]),n(e,t=t||r)},this.originalLoadDocumentNode=this.loadDocumentNode.bind(this),this.loadDocumentNode=function(t,i){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return new Promise(((r,o)=>{const s=function(e,t){let i=e.getModelKey();return i+=".ref:"+!!t.applyRefPoint,i+=".g:"+(t.globalOffset?[t.globalOffset.x,t.globalOffset.y,t.globalOffset.z]:[0,0,0]).toString(),t.placementTransform&&(i+=".p:"+t.placementTransform.toArray().toString()),t.customHash&&(i+=".h:"+t.customHash),i}(i,n),a=e.sharedResources.loadedModels[s];if(a){const t=e.onModelLoaded(a.model,n);r(t)}else e.originalLoadDocumentNode(t,i,n).then((t=>{t.leechViewerKey=s,e.sharedResources.loadedModels[s]={model:t,usedByViewersCounter:1,loadingViewer:e},r(t)})).catch(o)}))};const r=this.impl.geomCache.bind(this.impl);this.impl.geomCache=()=>(this.sharedResources.geomCache&&this.sharedResources.geomCache.initialized||(this.sharedResources.geomCache=r()),this.sharedResources.geomCache)},a.prototype.setViewerProfile=function(e,t){if(t.loadAsHidden)return;t.isAEC=e.isAEC();const i=this.chooseProfile(t);delete i.settings.lineRendering,delete i.settings.pointRendering,this.setProfile(i)},a.prototype.setViewerLight=function(e,t){if(!t.loadAsHidden)if(this.impl.is2d){this.impl.setLightPreset(o.DefaultLightPreset2d);const e=this.impl.clearColorTop.clone().multiplyScalar(255),i=this.impl.clearColorBottom.clone().multiplyScalar(255);t.isAEC?this.impl.setLightPresetForAec():this.impl.setLightPreset(o.DefaultLightPreset),this.impl.toggleEnvMapBackground(!1),this.setBackgroundColor(e.x,e.y,e.z,i.x,i.y,i.z)}else this.impl.toggleEnvMapBackground(this.profile.settings.envMapBackground)},a.prototype.cleanViewerBeforeLoadModel=function(e){if(!e.keepCurrentModels&&this.impl.hasModels()){let e=this.config;this.tearDown(),this.setUp(e)}!this.impl.hasModels()&&this._loadingSpinner&&this._loadingSpinner.show()};const l=new THREE.Vector4(0,0,-1,-1e20);function c(e){const t=!e,i=e&&!e.isLoadDone(),n=e&&e.getPropertyDb()&&!e.getPropertyDb().isLoadDone();return!(t||i||n)}return a.prototype.syncCutPlanes=function(){const e=this.impl.getAllCutPlanes()||[l],t=this.impl.matman(),i=Math.max(e.length,t._cutplanes.length);t._cutplanes.length=0;let n=0;for(;n{e.doNotCut||(e.cutplanes=t._cutplanes)}),!1,!0)},a.prototype.restoreViewerState=function(){this.sharedResources.lastRenderedViewer!==this&&(this.syncCutPlanes(),this.impl.is2d&&this.impl.updateCameraMatrices(),this.sharedResources.lastRenderedViewer=this)},a.prototype.onModelLoaded=function(e,t){const i=e.leechViewerKey;this.sharedResources.loadedModels[i].forceKeepResources=!0,this.cleanViewerBeforeLoadModel(t);const n=this.cloneModelToViewer(e);return this.addModelToViewer(n,t),delete this.sharedResources.loadedModels[i].forceKeepResources,n},a.prototype.addModelToViewer=function(e,t){this.impl.modelQueue().addHiddenModel(e),t.loadAsHidden||(this.setViewerProfile(e,t),this.showModel(e),this.setViewerLight(e,t),!t.headlessViewer&&this.createUI&&this.createUI(e)),this._loadingSpinner&&this._loadingSpinner.hide()},a.prototype.cloneModelToViewer=function(e){const t=e.clone(),i=e.leechViewerKey;t.leechViewerKey=i;const n=this.sharedResources.loadedModels[i];n.usedByViewersCounter++;const r=n.loadingViewer,o=()=>this.impl.invalidate(!1,!0,!1);return r.addEventListener(Autodesk.Viewing.LOADER_REPAINT_REQUEST_EVENT,o,{priority:-1e3}),function(e,t){return new Promise((i=>{c(t)&&i();const n=()=>{c(t)&&(e.removeEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT,n),e.removeEventListener(Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT,n),i())};e.addEventListener(Autodesk.Viewing.GEOMETRY_LOADED_EVENT,n),e.addEventListener(Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT,n)}))}(r,t).then((()=>{setTimeout((()=>{t.setInnerAttributes(e.getInnerAttributes()),this.impl.onLoadComplete(t)}),1),r.removeEventListener(Autodesk.Viewing.LOADER_REPAINT_REQUEST_EVENT,o)})),t},s.set(n,a),new a(e,t,i,n)}},82800:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MultiViewerFactory:()=>o});var n=i(14561),r=i(62612);class o{constructor(){if(this.sharedResources={loadedModels:{}},!Autodesk.Viewing.Private.IsUsingWebGPU()){const e=Autodesk.Viewing.Private.createRenderer(void 0,{alpha:!0}),t=new r.MaterialManager(e);this.sharedResources={...this.sharedResources,glrenderer:e,materialManager:t}}}createViewer(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Autodesk.Viewing.Viewer3D;return(0,n.createLeechViewer)(e,t,this.sharedResources,i)}destroy(){this.sharedResources=null}}},83081:(e,t,i)=>{"use strict";i.r(t),i.d(t,{LogLevels:()=>l,Logger:()=>c,logger:()=>f,setLogger:()=>p});var n=i(55280),r=i(8412),o=i(85403);const s=(0,n.getGlobal)(),a=s,l={DEBUG:5,LOG:4,INFO:3,WARNING:2,ERROR:1,NONE:0};function c(){this.runtimeStats={},this.level=-1,this.setLevel(l.ERROR),this._reportError=this._reportError.bind(this)}function h(e,t){let i;"string"==typeof t?i={message:t}:"object"==typeof t&&(i=t),o.analytics.track(e,i)}function u(){return"undefined"!=typeof window?encodeURI(a.location.href):""}function d(){}c.prototype.initialize=function(e){if(e.eventCallback&&(this.callback=e.eventCallback),this.sessionId=e.sessionId,!this.sessionId){var t=Date.now()+"";this.sessionId=parseFloat((1e4*Math.random()|0)+""+t.substring(4))}"number"==typeof e.logLevel&&this.setLevel(e.logLevel),this.environmentInfo={touch:(0,n.isTouchDevice)(),env:(0,r.getEnv)(),referer:u(),version:s.LMV_VIEWER_VERSION,build_type:s.LMV_BUILD_TYPE};var i={category:"viewer_start",touch:this.environmentInfo.touch,env:this.environmentInfo.env,referer:this.environmentInfo.referer,version:this.environmentInfo.version,build_type:this.environmentInfo.build_type};this.track(i);var o=this;this.interval=setInterval((function(){o.reportRuntimeStats()}),6e4)},c.prototype.shutdown=function(){clearInterval(this.interval),this.interval=void 0},c.prototype.track=function(e){this.updateRuntimeStats(e),!(0,r.isOffline)()&&this.sessionId&&(this.callback&&(e.timestamp=Date.now(),e.sessionId=this.sessionId,this.callback(e)),"error"===(null==e?void 0:e.category)&&h("viewer.error.tracked",e))},c.prototype.updateRuntimeStats=function(e){if(Object.prototype.hasOwnProperty.call(e,"aggregate"))switch(e.aggregate){case"count":this.runtimeStats[e.name]>0?this.runtimeStats[e.name]++:this.runtimeStats[e.name]=1,this.runtimeStats._nonempty=!0;break;case"last":this.runtimeStats[e.name]=e.value,this.runtimeStats._nonempty=!0;break;default:this.warn("unknown log aggregate type")}},c.prototype.reportRuntimeStats=function(){this.runtimeStats._nonempty&&(delete this.runtimeStats._nonempty,this.runtimeStats.category="misc_stats",this.track(this.runtimeStats),this.runtimeStats={})},c.prototype.setLevel=function(e){this.level!==e&&(this.level=e,this.debug=e>=l.DEBUG?console.log:d,this.log=e>=l.LOG?console.log:d,this.info=e>=l.INFO?console.info:d,this.warn=e>=l.WARNING?console.warn:d,this.error=e>=l.ERROR?this._reportError:d)},c.prototype._reportError=function(){console.error.apply(console,arguments);const e=Array.prototype.slice.call(arguments).join(" ");this.callback&&this.callback({category:"error",message:e}),h("viewer.error.logged",e)};let f=new c;function p(e){f=e}},13202:(e,t,i)=>{"use strict";i.r(t),i.d(t,{displayUnits:()=>s,displayUnitsEnum:()=>a,displayUnitsPrecision:()=>l,displayUnitsPrecisionEnum:()=>c,getUnitEnum:()=>u});var n=i(38842);const r=[{name:"File units",type:""},{name:"Millimeters",type:"mm",matches:["millimeter","millimeters"]},{name:"Centimeters",type:"cm",matches:["centimeter","centimeters"]},{name:"Meters",type:"m"},{name:"Inches",type:"in",matches:["inch","inches"]},{name:"Feet",type:"ft",matches:["foot"]},{name:"Feet and fractional inches",type:"ft-and-fractional-in"},{name:"Feet and decimal inches",type:"ft-and-decimal-in"},{name:"Decimal inches",type:"decimal-in"},{name:"Decimal feet",type:"decimal-ft"},{name:"Fractional inches",type:"fractional-in"},{name:"Meters and centimeters",type:"m-and-cm"},{name:"Points",type:"pt",matches:["point","points"]}],o=[{name:"File precision",value:""},{name:"0 (1)",value:0},{name:"0.1 (1/2)",value:1},{name:"0.01 (1/4)",value:2},{name:"0.001 (1/8)",value:3},{name:"0.0001 (1/16)",value:4},{name:"0.00001 (1/32)",value:5},{name:"0.000001 (1/64)",value:6}],s=r.map((e=>e.name)),a=r.map((e=>e.type)),l=o.map((e=>e.name)),c=o.map((e=>e.value));r.forEach((e=>{if(e.matches){const t=e.matches.map((e=>n.A.t(e)));e.matches=e.matches.concat(t)}}));const h=new Set(a);function u(e){if(e=e&&e.toLocaleLowerCase(),h.has(e))return e;for(let t in r){const i=r[t],n=i.matches;if(n&&n.indexOf(e)>-1)return i.type}return null}},97010:(e,t,i)=>{"use strict";i.r(t),i.d(t,{EPSILON:()=>a,angleVectorToVector:()=>w,calculateDistance:()=>h,computeResult:()=>g,correctPerpendicularPicks:()=>c,createCommonOverlay:()=>D,getCircularArcRadius:()=>y,getEndPointsInEdge:()=>A,getFaceArea:()=>v,getSnapResultPosition:()=>l,inverseProject:()=>x,isEqualVectors:()=>S,isParallel:()=>M,isPerpendicular:()=>C,nearestPointInPointToLine:()=>_,nearestPointInPointToSegment:()=>E,nearestVertexInVertexToEdge:()=>P,project:()=>b,safeToggle:()=>L});var n=i(72091),r=i(17070),o=i(65918),s=i(27623);const a=1e-4;function l(e,t){if(!e)return null;if(e.isPerpendicular)return e.intersectPoint;switch(e.geomType){case r.h.SNAP_VERTEX:case r.h.RASTER_PIXEL:case r.h.SNAP_MIDPOINT:case r.h.SNAP_CIRCLE_CENTER:return e.getGeometry();case r.h.SNAP_EDGE:var i=A(e.getGeometry()),n=i[0].clone(),o=i[1].clone();return _(e.intersectPoint,n,o);case r.h.SNAP_FACE:return T(e.intersectPoint,e.getGeometry().vertices[0],e.faceNormal);case r.h.SNAP_CIRCULARARC:if(t&&t.model&&t.model.is2d()){var s=e.snapPoint;return e.geomType=r.h.SNAP_VERTEX,e.geomVertex=s,s}return e.circularArcCenter;case r.h.SNAP_CURVEDEDGE:return P(e.intersectPoint,e.getGeometry());case r.h.SNAP_CURVEDFACE:return e.intersectPoint;case r.h.SNAP_INTERSECTION:return e.snapPoint;default:return null}}function c(e,t,i,o){if(!(e&&t&&e.getGeometry()&&t.getGeometry()))return!1;var s=l(e,i);if(o&&i)if(t.geomType===r.h.SNAP_EDGE){var a=new n.Vector3,c=new n.Vector3,h=t.getGeometry();if(a.subVectors(t.intersectPoint,s).normalize(),c.subVectors(h.vertices[0],h.vertices[1]).normalize(),C(a,c,.05))if(f=E(s,h.vertices[0],h.vertices[1],!0))return o.onMouseMove(b(f,i))&&o.setPerpendicular(!0),t.geomVertex=f,t.intersectPoint=f,!0}else if(t.geomType===r.h.SNAP_FACE){var u=new n.Vector3,d=t.getGeometry();if(u.subVectors(t.intersectPoint,s).normalize(),M(t.faceNormal,u,.05)){var f=T(s,d.vertices[0],t.faceNormal);return o.onMouseMove(b(f,i))&&o.setPerpendicular(!0),t.geomVertex=f,t.intersectPoint=f,!0}}}function h(e,t,i,n){var r;if(!(e&&t&&e.getGeometry()&&t.getGeometry()))return null;var s=l(e,n),c=l(t,n);if(!s||!c)return null;if(S(s,c,a))return null;let h;n.model.is2d()&&(s=s.clone(),c=c.clone(),e.viewportIndex2d=n.model.isPdf?e.viewportIndex2d:e.viewportIndex2d||e.id,n.model.pageToModel(s,c,e.viewportIndex2d));const u=e.viewportIndex2d,d=null==n||null===(r=n.model)||void 0===r||null===(r=r.getData())||void 0===r?void 0:r.viewports;var f;d&&void 0!==u&&(h=null===(f=d[u])||void 0===f?void 0:f.units);if(i){i=p(i);var g=s.distanceTo(c);return{distanceXYZ:m(g,i),distanceX:m(g=Math.abs(s.x-c.x),i),distanceY:m(g=Math.abs(s.y-c.y),i),distanceZ:0,type:o.S.MEASUREMENT_DISTANCE,units:h}}return{distanceXYZ:s.distanceTo(c),distanceX:Math.abs(s.x-c.x),distanceY:Math.abs(s.y-c.y),distanceZ:Math.abs(s.z-c.z),type:o.S.MEASUREMENT_DISTANCE,units:h}}function u(e,t){if(e.is3d())return 0;if(e.isPdf())return 0;var i=e.getMetadata("page_dimensions","page_width",null),r=e.getMetadata("page_dimensions","logical_width",null),o=e.getMetadata("page_dimensions","page_height",null),s=e.getMetadata("page_dimensions","logical_height",null);if(!(i&&r&&o&&s))return 0;var a=i/r,l=o/s,c=new n.Vector3(0,0,0),h=new n.Vector3(a,l,0);return e.pageToModel(c,h,t),c.distanceTo(h)}function d(e,t){var i=[];for(var r in e)if(e.hasOwnProperty(r)){var o=l(e[r],t);o&&i.push(o)}if(3!==i.length||function(e){for(var t=0;t1?o=r?null:i:(a.subVectors(i,t),a.multiplyScalar(s),o=a.add(t)),o}function S(e,t,i){return!(!e||!t)&&(Math.abs(e.x-t.x)<=i&&Math.abs(e.y-t.y)<=i&&Math.abs(e.z-t.z)<=i)}function A(e){var t=[];const i=e.vertices,n=i.length;for(var r=0;ro&&(i=s,n=o)}return i}function D(e,t){e.impl.overlayScenes[t]||e.impl.createOverlayScene(t)}function L(e,t,i){(e.classList.contains(t)&&!i||!e.classList.contains(t)&&i)&&e.classList.toggle(t,i)}},23482:(e,t,i)=>{"use strict";i.d(t,{G:()=>n});var n={MEASUREMENT_CHANGED_EVENT:"measurement-changed",MEASUREMENT_COMPLETED_EVENT:"measurement-completed",UNITS_CALIBRATION_STARTS_EVENT:"units_calibration_starts_event",FINISHED_CALIBRATION_FOR_DIMENSION_EVENT:"finished_calibration_for_dimension_event",CALIBRATION_REQUIRED_EVENT:"calibration-required",OPEN_CALIBRATION_PANEL_EVENT:"open-calibration-panel",CLOSE_CALIBRATION_PANEL_EVENT:"close-calibration-panel",CLEAR_CALIBRATION_SIZE_EVENT:"clear-calibration-size",FINISHED_CALIBRATION:"finished-calibration",DISPLAY_UNITS_CHANGED:"display-units-changed",PRECISION_CHANGED:"precision-changed",MEASUREMENT_MODE_ENTER:"measure-mode-enter",MEASUREMENT_MODE_LEAVE:"measure-mode-leave",DELETE_MEASUREMENT:"delete-measurement",SELECT_MEASUREMENT:"select-measurement",MEASURE_TOOL_ACTIVE:"measure-tool-active"}},63795:(e,t,i)=>{"use strict";i.d(t,{D:()=>s});var n=i(12182),r=i(65918),o=i(97010);function s(e,t,i){this.measurementType=e,this.id=t,this.picks=[],this.closedArea=!1,this.isRestored=!1,this.options=i,this.resetMeasureValues()}s.prototype.clone=function(){var e;const t=new s(this.measurementType,this.id,this.options);return t.closedArea=this.closedArea,t.isRestored=this.isRestored,t.picks=this.clonePicks(),t.angle=this.angle,t.distanceX=this.distanceX,t.distanceY=this.distanceY,t.distanceZ=this.distanceZ,t.distanceXYZ=this.distanceXYZ,t.arc=this.arc,t.location=null===(e=this.location)||void 0===e?void 0:e.clone(),t.result=Object.assign({},this.result),t},s.prototype.resetMeasureValues=function(){this.angle=0,this.distanceX=0,this.distanceY=0,this.distanceZ=0,this.distanceXYZ=0,this.arc=0,this.location=null,this.result=null},s.prototype.setPick=function(e,t){var i=this.picks[e]=t;return i.id=parseInt(e),i},s.prototype.getPick=function(e){var t=this.picks[e];return t||(t=this.setPick(e,new n.e)),t},s.prototype.clonePicks=function(e){var t=[];for(var i in this.picks)if(Object.prototype.hasOwnProperty.call(this.picks,i)){var n=this.picks[i];t.push(n.clone())}return t},s.prototype.countPicks=function(){return Object.keys(this.picks).length},s.prototype.getMaxNumberOfPicks=function(){switch(this.measurementType){case r.S.MEASUREMENT_DISTANCE:case r.S.MEASUREMENT_LOCATION:case r.S.MEASUREMENT_CALLOUT:case r.S.MEASUREMENT_ARC:return 2;case r.S.MEASUREMENT_ANGLE:return 3;case r.S.MEASUREMENT_AREA:return this.closedArea?this.countPicks():Number.MAX_VALUE-1}},s.prototype.hasPick=function(e){return this.picks[e]&&!this.picks[e].isEmpty()||this.isRestored},s.prototype.isComplete=function(){var e=this.countPicks()===this.getMaxNumberOfPicks();for(var t in this.picks)if(Object.prototype.hasOwnProperty.call(this.picks,t)&&!(e=e&&this.hasPick(t)))break;return e},s.prototype.isEmpty=function(){var e=!0;for(var t in this.picks)if(Object.prototype.hasOwnProperty.call(this.picks,t)&&!(e=e&&!this.hasPick(t)))break;return e},s.prototype.clearPick=function(e){this.picks[e]&&this.picks[e].clear(),this.resetMeasureValues()},s.prototype.clearAllPicks=function(){for(var e in this.picks)Object.prototype.hasOwnProperty.call(this.picks,e)&&this.clearPick(e)},s.prototype.hasEqualPicks=function(e,t){if(!e||!t)return!1;if(e.geomType===t.geomType){var i=(0,o.getSnapResultPosition)(e),n=(0,o.getSnapResultPosition)(t);return(0,o.isEqualVectors)(i,n,o.EPSILON)}return!1},s.prototype.computeResult=function(e,t){if(this.resetMeasureValues(),!t.model)return this.result=null,!1;var i=this.result=(0,o.computeResult)(e,this.measurementType,t,this.options);if(null===i)return!this.isComplete();switch(i.type){case r.S.MEASUREMENT_DISTANCE:return this.distanceXYZ=i.distanceXYZ,this.distanceX=i.distanceX,this.distanceY=i.distanceY,this.distanceZ=i.distanceZ,!0;case r.S.MEASUREMENT_ANGLE:return this.angle=isNaN(i.angle)?0:i.angle,!0;case r.S.MEASUREMENT_AREA:return this.area=i.area,!0;case r.S.MEASUREMENT_ARC:return this.arc=i.arc,!0;case r.S.MEASUREMENT_LOCATION:return this.location=i.location,!0;case r.S.MEASUREMENT_CALLOUT:return!0;default:return!1}},s.prototype.getGeometry=function(e){return{type:this.picks[e].geomType,geometry:this.picks[e].getGeometry()}},s.prototype.attachIndicator=function(e,t,i){this.indicator=new i(e,this,t),this.indicator.init()}},65918:(e,t,i)=>{"use strict";i.d(t,{S:()=>n,z:()=>r});var n={MEASUREMENT_DISTANCE:1,MEASUREMENT_ANGLE:2,MEASUREMENT_AREA:3,CALIBRATION:4,MEASUREMENT_CALLOUT:5,MEASUREMENT_LOCATION:6,MEASUREMENT_ARC:7},r={[n.MEASUREMENT_DISTANCE]:"Distance",[n.MEASUREMENT_ANGLE]:"Angle",[n.MEASUREMENT_AREA]:"Area",[n.CALIBRATION]:"Calibration",[n.MEASUREMENT_CALLOUT]:"Callout",[n.MEASUREMENT_LOCATION]:"Location",[n.MEASUREMENT_ARC]:"Arc"}},80152:(e,t,i)=>{"use strict";i.r(t),i.d(t,{PDFUtils:()=>a});var n=i(12153);function r(e){var t,i;const n=null===(t=e.impl)||void 0===t||null===(t=t.model)||void 0===t?void 0:t.getDocumentNode(),r=null==n||null===(i=n.search(Autodesk.Viewing.BubbleNode.LEAFLET_NODE)[0])||void 0===i?void 0:i._raw();if(!r)return null;const o={};return new Autodesk.Viewing.Document(n.getRootNode()._raw(),"").getLeafletParams(o,n,r),o}function o(e){const t=new Autodesk.Viewing.Private.TexQuadConfig,i=r(e);if(!i)return null;t.initFromLoadOptions(null,i);return t.getBBox()}function s(e){const t=o(e);if(!t)return null;return n.SceneMath.getNormalizingMatrix(null,t)}var a={leafletToPdfWorld:function(e,t){const i=s(e);if(!i)return null;let r;if(t.applyMatrix4(i),e.model.isLeaflet()){const t=e.model.getMetadata("page_dimensions"),i=new THREE.Box3(new THREE.Vector3,new THREE.Vector3(t.page_width,t.page_height,0));r=n.SceneMath.getNormalizingMatrix(void 0,i)}else r=n.SceneMath.getNormalizingMatrix(e.model);return t.applyMatrix4(r.invert()),t},pdfToLeafletWorld:function(e,t){const i=n.SceneMath.getNormalizingMatrix(e.model);t.applyMatrix4(i);let r=s(e);return r?(t.applyMatrix4(r.invert()),t):null},getLeafletLoadOptions:r,getLeafletBoundingBox:o,getLeafletNormalizingMatrix:s}},12182:(e,t,i)=>{"use strict";i.d(t,{e:()=>r});var n=i(17070);function r(){this.clear()}r.prototype.clear=function(){this.geomType=null,this.modelId=null,this.fragId=null,this.fragPos=null,this.snapNode=null,this.geomVertex=null,this.geomEdge=null,this.geomFace=null,this.radius=null,this.intersectPoint=null,this.faceNormal=null,this.viewportIndex2d=null,this.circularArcCenter=null,this.circularArcRadius=null,this.fromTopology=!1,this.isPerpendicular=!1,this.snapPoint=null},r.prototype.copyTo=function(e){e.modelId=this.modelId,e.fragId=this.fragId,e.fragPos=this.fragPos,e.snapNode=this.snapNode,e.geomVertex=this.geomVertex,e.geomFace=this.geomFace,e.geomEdge=this.geomEdge,e.radius=this.radius,e.geomType=this.geomType,e.intersectPoint=this.intersectPoint,e.faceNormal=this.faceNormal,e.viewportIndex2d=this.viewportIndex2d,e.circularArcCenter=this.circularArcCenter,e.circularArcRadius=this.circularArcRadius,e.fromTopology=this.fromTopology,e.isPerpendicular=this.isPerpendicular,e.snapPoint=this.snapPoint},r.prototype.clone=function(){var e=new r;return this.copyTo(e),e},r.prototype.isEmpty=function(){return!this.getGeometry()};let o=null,s=null,a=null;const l=(e,t)=>(s=s||new THREE.Vector3,a=a||new THREE.Vector3,s.set(0,0,0),a.set(e,0,0),s.applyMatrix4(t),a.applyMatrix4(t),s.distanceTo(a));r.prototype.applyMatrix4=function(e){if(this.geomEdge&&this.geomEdge.applyMatrix4(e),this.geomFace&&this.geomFace.applyMatrix4(e),this.geomVertex&&this.geomVertex.applyMatrix4(e),this.intersectPoint&&this.intersectPoint.applyMatrix4(e),this.circularArcCenter&&this.circularArcCenter.applyMatrix4(e),this.snapPoint&&this.snapPoint.applyMatrix4(e),this.faceNormal){o=o||new THREE.Matrix4;const t=o.getNormalMatrix(e);this.faceNormal.applyMatrix4(t)}this.radius=l(this.radius,e),this.circularArcRadius=l(this.circularArcRadius,e)},r.prototype.getFace=function(){return this.geomFace},r.prototype.getEdge=function(){return this.geomEdge},r.prototype.getVertex=function(){return this.geomVertex},r.prototype.getGeometry=function(){switch(this.geomType){case n.h.SNAP_VERTEX:case n.h.SNAP_MIDPOINT:case n.h.SNAP_INTERSECTION:case n.h.SNAP_CIRCLE_CENTER:case n.h.RASTER_PIXEL:return this.geomVertex;case n.h.SNAP_EDGE:return this.geomEdge;case n.h.SNAP_FACE:return this.geomFace;case n.h.SNAP_CIRCULARARC:case n.h.SNAP_CURVEDEDGE:return this.geomEdge;case n.h.SNAP_CURVEDFACE:return this.geomFace}return null},r.prototype.setGeometry=function(e,t){switch(e){case n.h.SNAP_VERTEX:case n.h.SNAP_MIDPOINT:case n.h.SNAP_INTERSECTION:case n.h.SNAP_CIRCLE_CENTER:case n.h.RASTER_PIXEL:this.geomVertex=t;break;case n.h.SNAP_EDGE:this.geomEdge=t;break;case n.h.SNAP_FACE:this.geomFace=t;break;case n.h.SNAP_CIRCULARARC:case n.h.SNAP_CURVEDEDGE:this.geomEdge=t;break;case n.h.SNAP_CURVEDFACE:this.geomFace=t;break;default:return}this.geomType=e}},17070:(e,t,i)=>{"use strict";i.d(t,{h:()=>n});var n={SNAP_VERTEX:0,SNAP_MIDPOINT:1,SNAP_CIRCLE_CENTER:2,SNAP_EDGE:3,SNAP_FACE:4,SNAP_CIRCULARARC:5,SNAP_CURVEDEDGE:6,SNAP_CURVEDFACE:7,RASTER_PIXEL:8,SNAP_INTERSECTION:9}},27623:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ModelUnits:()=>s,calculatePrecision:()=>x,convertToDisplayUnits:()=>_,convertUnits:()=>b,fixUnitString:()=>v,formatValueWithUnits:()=>g,getMainUnit:()=>E,getUnitData:()=>y});var n=i(38842),r=i(13202);const o=i(92467);var s={METER:"m",CENTIMETER:"cm",MILLIMETER:"mm",FOOT:"ft",INCH:"in",POINT:"pt"};const a={[s.METER]:1,[s.CENTIMETER]:.01,[s.MILLIMETER]:.001,[s.FOOT]:.3048,[s.INCH]:.0254,[s.POINT]:.0254/72};function l(e){let t="";return 2===e?t=String.fromCharCode(178):3===e&&(t=String.fromCharCode(179)),t}function c(e){var t=0<=e?Math.floor(e):Math.ceil(e);return{intPart:t,fracPart:e-t}}function h(e,t,i){var n="";return i&&0===e&&(n+="-"),n+=00?e+=.5/a:e-=.5/a,i?o=e:(s+=h(r=c(e/12).intPart,0,l)+n.feet+" ",(o=e-12*r)<0&&(o=-o));var d=c(o).intPart,f=c((o-d)*a).intPart;if(0!==f&&0===d||(s+=h(d,0)),0!==f){for(d<0&&f<0&&(f=-f);f%2==0;)f/=2,a/=2;0!==d&&(s+="-"),s+=h(f,0)+"/"+h(a,0)}return s+=n.inches}function d(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;var n="";e<0&&(n="-",e=Math.abs(e));var r=c(e),o=r.intPart,s=r.fracPart*Math.pow(100,i);const a=l(i);let u=h(o,0),d=h(s,t);return d.startsWith(Math.pow(100,i).toString())&&(u=h(o+1,0),d=h(0,t)),n+u+` m${a} `+d+` cm${a}`}function f(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;var r="";e<0&&(r="-",e=Math.abs(e));var o=c(e),s=o.intPart,a=o.fracPart*Math.pow(12,n);const u=l(n);let d=h(s,0),f=h(a,t);return f.startsWith(Math.pow(12,n).toString())&&(d=h(s+1,0),f=h(0,t)),r+d+i.feet+u+" "+f+i.inches+u}const p={feetFractionalInches:"ft-and-fractional-in",fractionalInches:"fractional-in",feet:"feet",inches:"inches",stationingFeet:"feet"};function m(e){if(!e||!e.startsWith("autodesk.unit.unit:"))return e;let t=e.split(":")[1].split("-")[0],i=o.unit[t];if(!i)return console.warn("Failed to find Forge unit schema for",e),e;{let e=p[t];if(e)return e;if(!i.symbols)return console.warn("Unit without symbols.",i),"";if(i.defaultSymbol&&i.symbols[i.defaultSymbol])return i.symbols[i.defaultSymbol];for(let e in i.symbols)return i.symbols[e]}}function g(e,t,i,r,o){var s;null==r&&(r=3);const a=(o=o||{}).preferLetters?{feet:" ft",inches:" in"}:{feet:"'",inches:'"'};t=m(t);try{if(1===i)s=n.A.t(e?"Yes":"No");else if(24===i){var c=e.split(" ");s=[];for(var p=0;pb(o,n,1,e,l,null))).join(" "),displayUnits:s}}return{displayValue:e,displayUnits:i}}function E(e){switch(e){case"decimal-ft":case"ft-and-fractional-in":case"ft-and-decimal-in":return"ft";case"decimal-in":case"fractional-in":return"in";case"m-and-cm":return"m"}return e}},54386:(e,t,i)=>{"use strict";i.r(t),i.d(t,{UnitParser:()=>n});var n={};function r(e,t,i,n){if(!e)return NaN;var r,o=(e=e.toString()).trim();if(0==o.length)return NaN;var s=i.join("| *"),a=n.join("| *");if(r=o.match(new RegExp("^([+-]?\\d+)(?: *)/(?: *)(\\d+)(?: *)(?:"+a+") *$")))return parseFloat(r[1])/parseFloat(r[2])/t;if(r=o.match(new RegExp("^([+-]?\\d+)(?: *)/(?: *)(\\d+)(?: *)(?:"+s+")? *$")))return parseFloat(r[1])/parseFloat(r[2]);var l;if(!(r=o.match(/^[+-]? *(?:\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?/i)))return NaN;if(l=parseFloat(r[0].replace(/ */g,"")),0==(o=(o=o.slice(r[0].length)).replace("-"," ")).length||isNaN(l))return l;var c=Math.sign(l);return 0===c&&(c=1),o.match(new RegExp("^(?: *)(?:"+a+") *$","i"))?l/t:(r=o.match(new RegExp("^ +(\\d+)(?: *)/(?: *)(\\d+)(?: *)(?:"+a+") *$","i")))?(l+c*parseFloat(r[1])/parseFloat(r[2]))/t:(r=o.match(new RegExp("^(?: *)(?:"+s+"|-| +-?) *","i")))?0==(o=o.slice(r[0].length).trim()).length?r[0].match(/-/)?NaN:l:(r=o.match(new RegExp("^(\\d+(?:\\.\\d*)?)(?: *)(?:"+a+")? *$")))?l+c*parseFloat(r[1])/t:(r=o.match(new RegExp("^(\\d+)(?: *)/(?: *)(\\d+)(?: *)(?:"+a+")? *$")))?l+c*(parseFloat(r[1])/parseFloat(r[2]))/t:(r=o.match(new RegExp("^(\\d+) +(\\d+)(?: *)/(?: *)(\\d+)(?: *)(?:"+a+")? *$")))?l+c*(parseFloat(r[1])+parseFloat(r[2])/parseFloat(r[3]))/t:NaN:NaN}n.parseFeet=function(e){return r(e,12,["ft","feet","'","`","‘","’"],["in","inch",'\\"',"''","``","‘‘","’’"])},n.parseMeter=function(e){return r(e,100,["m","meter"],["cm","centimeter"])},n.parseNumber=function(e,t){switch(t){case"ft":case"decimal-ft":case"ft-and-fractional-in":case"ft-and-decimal-in":case"decimal-in":case"fractional-in":return n.parseFeet(e);default:return n.parseMeter(e)}},n.parsePositiveNumber=function(e,t){var i=n.parseNumber(e,t);return i>=0?i:NaN}},32937:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MobileCallbacks:()=>r});const n=(0,i(55280).getGlobal)();function r(){this.ios=n.webkit,this.android=n.JSINTERFACE,this.iosSend=function(e,t){return n.webkit.messageHandlers.callbackHandler.postMessage({command:e,data:t})},this.androidSend=n.JSINTERFACE}var o=r.prototype;o.animationReady=function(){this.ios?this.iosSend("animationReady"):this.android&&this.androidSend.animationReady()},o.onSelectionChanged=function(e){this.ios?this.iosSend("selectionChanged",e):this.android&&this.androidSend.onSelectionChanged(e)},o.onLongTap=function(e,t){this.ios?this.iosSend("onLongTap",[e,t]):this.android&&this.androidSend.onLongTap(e,t)},o.onSingleTap=function(e,t){this.ios?this.iosSend("onSingleTap",[e,t]):this.android&&this.androidSend.onSingleTap(e,t)},o.onDoubleTap=function(e,t){this.ios?this.iosSend("onDoubleTap",[e,t]):this.android&&this.androidSend.onDoubleTap(e,t)},o.setRTCSession=function(e){this.ios?this.iosSend("setRTCSession",{id:e}):this.android&&this.androidSend.setRTCSessionID(e)},o.putProperties=function(e,t){this.ios?this.iosSend("putProperties",{name:e,value:t}):this.android&&this.androidSend.putProperties(e,t)},o.onPropertyRetrievedSuccess=function(){this.ios?this.iosSend("onPropertyRetrievedSuccess"):this.android&&this.androidSend.onPropertyRetrievedSuccess()},o.onPropertyRetrievedFailOrEmptyProperties=function(){this.ios?this.iosSend("onPropertyRetrievedFailOrEmptyProperties"):this.android&&this.androidSend.onPropertyRetrievedFailOrEmptyProperties()},o.resetAnimationStatus=function(){this.ios?this.iosSend("resetAnimationStatus"):this.android&&this.androidSend.resetAnimationStatus()},o.setPauseUI=function(){this.ios?this.iosSend("setPauseUI"):this.android&&this.androidSend.setToPaused()},o.getDeviceAvailableMemory=function(){return this.ios?this.iosSend("getDeviceAvailableMemory"):this.android?this.androidSend.getDeviceAvailableMemory():void 0},o.onDeviceMemoryInsufficient=function(){return this.ios?this.iosSend("onDeviceMemoryInsufficient"):this.android?this.androidSend.onDeviceMemoryInsufficient():void 0},o.updateAnimationTime=function(e){this.ios?this.iosSend("updateAnimationTime",e):this.android&&this.androidSend.updateAnimationTime(e)},o.setLoadingProgress=function(e,t){this.ios?this.iosSend("setLoadingProgress",{state:e,progress:t}):this.android&&this.androidSend.setLoadingProgress(e,t)},o.objectTreeCreated=function(){this.ios?this.iosSend("objectTreeCreated"):this.android&&this.androidSend.objectTreeCreated()},o.geometryLoaded=function(){this.ios?this.iosSend("geometryLoaded"):this.android&&this.androidSend.geometryLoaded()},o.putSheets=function(e,t){this.ios?this.iosSend("putSheets",[e,t]):this.android&&this.androidSend.putSheets(e,t)},o.putAllSheets=function(e){this.ios?this.iosSend("putAllSheets",e):this.android&&this.androidSend.putAllSheets(e)},o.hideLoadingView=function(){this.android&&this.androidSend.hideLoadingView()},o.instanceTree=function(e){this.ios?this.iosSend("instanceTree",e):this.android&&this.androidSend.instanceTree(e)},o.loadSheetFailed=function(){this.ios?this.iosSend("loadSheetFailed"):this.android&&this.androidSend.loadSheetFailed()},o.sheetSelected=function(e){this.ios?this.iosSend("sheetSelected",e):this.android&&this.androidSend.sheetSelected(e)},"undefined"!=typeof window&&(n.MobileCallbacks=r)},54679:(e,t,i)=>{const{getGlobal:n}=i(38685);function r(e){for(var t=n(),i=e.split("."),r=0;r{"use strict";function n(e){var t=Autodesk.Viewing,i=t.Private,n=t.UI,r=t.Extensions;for(let i in e.av)t[i]=e.av[i];for(let t in e.avp)i[t]=e.avp[t];for(let t in e.avu)n[t]=e.avu[t];for(let t in e.ave)r[t]=e.ave[t];t.getGlobal().THREE=e.THREE,t.getGlobal().LMV=e,i.isRightClick=t.isRightClick,i.isMiddleClick=t.isMiddleClick}i.d(t,{E:()=>n})},20268:(e,t,i)=>{"use strict";i.r(t),i.d(t,{loadDependency:()=>a,theResourceLoader:()=>s});var n=i(8600);const r=(0,i(55280).getGlobal)(),o=r.document;const s=new class{constructor(){this.loadPromises={}}getResourceUrl(e){return e.indexOf("://")>0?e:(0,n.getResourceUrl)(e)}loadScriptIntoDom(e,t,i){const n=o.createElement("SCRIPT");n.src=e;const r=function(){n.onerror=null,n.onload=null};n.onload=function(){r(),t()},n.onerror=function(t){r(),i&&i(new Error(`Error loading script ${e}, with error ${t}`))},o.head.appendChild(n)}loadScript(e,t){if(t&&void 0!==r[t])return Promise.resolve();const i=(e=this.getResourceUrl(e)).toLowerCase();if(i in this.loadPromises)return this.loadPromises[i];const o=(0,n.getScript)(e);return this.loadPromises[i]=o?Promise.resolve():new Promise(((t,i)=>{this.loadScriptIntoDom(e,t,i)})),this.loadPromises[i]}_getLink(e){const t=o.getElementsByTagName("link");for(let i=0,n=t.length;i{i&&i()})).catch((e=>{n&&n(e)}))}Object.freeze(s)},97705:(e,t,i)=>{"use strict";i.r(t),i.d(t,{SearchManager:()=>r});class n{constructor(e){this.viewer=e}search(e){return new Promise(((e,t)=>{}))}getProviderId(){return"Search Provider Id"}}class r{constructor(e){this.viewer=e,this.searchProviders=new Map}addSearchProvider(e){this.searchProviders.has(e)||this.searchProviders.set(e,new e(this.viewer))}search(e){return new Promise(((t,i)=>{const n=this.prepareSearchInput(e),r=[];this.searchProviders.forEach((e=>{const t=e.search(n),i=e.getProviderId();t.id=i,r.push(t)})),Promise.all(r).then((e=>{const i={};e.forEach(((e,t)=>{const n=r[t].id;i[n]=e})),t(i)})).catch(i)}))}removeAllProviders(){this.searchProviders.clear()}removeProvider(e){this.searchProviders.delete(e)}prepareSearchInput(e){return e.toLowerCase()}}const o=AutodeskNamespace("Autodesk.Viewing.Search");o.SearchManager=r,o.ModelPartsSearchProvider=class extends n{constructor(e){super(e)}search(e){return new Promise(((t,i)=>{const n=this.viewer.getVisibleModels(),r=[];0===n.length&&t(r);for(let t=0;t{t.enumNodeChildren(t.getRootId(),(t=>{const i=s&&s.getNodeName(t);i&&-1!==i.toLowerCase().indexOf(e)&&o.push(t)}),!0)})),r.push({ids:o,model:i})}t(r)}))}getProviderId(){return"ModelPartsSearchProvider"}},o.PropertiesSearchProvider=class extends n{constructor(e){super(e)}search(e){return new Promise(((t,i)=>{const n=this.viewer.getVisibleModels(),r=[];0===n.length&&t(r);for(let o=0;o{r.push({ids:e,model:s}),r.length===n.length&&t(r)}),i)}}))}getProviderId(){return"PropertiesSearchProvider"}},o.TextSearchProvider=class extends n{constructor(e){super(e),e.loadExtension("Autodesk.StringExtractor")}search(e){return new Promise((t=>{this.viewer.getExtensionAsync("Autodesk.StringExtractor").then((i=>i.getDocumentStrings().then((i=>{const n=[],r=this.viewer.impl.get2DModels();for(let t=0;t0){const o=this.splitOccurrences(e[n],s,t,i);r=r.concat(o)}}else for(let i=0;ie+t))}if(r){const n=a.metadata.page_dimensions.page_units;s*=Autodesk.Viewing.Private.convertUnits(Autodesk.Viewing.Private.ModelUnits.INCH,n,1,1);const c=a.scaleX,h=(r.getData().scaleY||s)*e.stringHeight;for(let n=0;n{"use strict";i.r(t),i.d(t,{DefaultHandler:()=>r});i(72091);var n=i(55280);function r(e,t,i){this.clickConfig=null,this.getNames=function(){return["default"]},this.getName=function(){return this.getNames()[0]},this.setClickBehavior=function(e){this.clickConfig=e},this.getClickBehavior=function(){return this.clickConfig},this.activate=function(e){},this.deactivate=function(e){},this.handleAction=function(t,n,r){for(var o=0;o{"use strict";i.r(t),i.d(t,{FovTool:()=>r});var n=i(72091);function r(e){var t=.001,i=e.navigation,r=i.getCamera(),o=["fov"],s=!1,a=0,l=null,c=null,h=!1,u=0,d=-5,f=-1,p=d,m=new n.Vector3,g=new n.Vector3,v=new n.Vector3,y=null;function b(e){return e<0&&e>-3?-3:e>0&&e<3?3:e}this.getNames=function(){return o},this.getName=function(){return o[0]},this.activate=function(e){u=0},this.deactivate=function(e){p=d},this.getCursor=function(){return 0!==u&&p===d?null:"url(data:image/x-icon;base64,AAACAAEAGBgAAAAAAACICQAAFgAAACgAAAAYAAAAMAAAAAEAIAAAAAAAYAkAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlgAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnAwMD/yEhIf8AAABmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAGknJyf/goKC/8/Pz/8aGhr/AAAALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAABTFBQU/2lpaf/MzMz///////////+Wlpb/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAlgAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAOAAAAKFTU1P/t7e3////////////8PDw////////////AQEB/wAAAAEAAAAAAAAAFAAAAH0KCgr/AAAAYwAAAAAAAAAAAAAAlgAAAP8AAAD/AAAAlgAAAAAAAAAjCwsL/6Ghof/t7e3///////Dw8P9MTEz/LS0t//Pz8///////Ghoa/wAAABoAAAANDQ0N/319ff+rq6v/Y2Nj/wAAAK8AAABGAAAA////////////AAAA/wAAAF0hISH/jIyM////////////sLCw/xEREf8AAACHAAAArKysrP//////V1dX/wAAAFcAAABSUlJS//f39///////8PDw/6+vr/86Ojr/LS0t////////////FRUV/1xcXP/Gxsb/+Pj4//Hx8f9MTEz/AAAAsAAAAEcAAAAAAAAAZ2dnZ///////pKSk/wAAAKQAAACtra2t///////////////////////m5ub/kZGR/wAAAP8AAAD/q6ur//Hx8f//////vb29/x0dHf8AAACIAAAAAAAAAAAAAAAAAAAAOjo6Ov//////5+fn/wAAAOcAAADd3d3d////////////////////////////+/v7/9bW1v/i4uL//v7+//Pz8/9hYWH/AAAAvQAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAJycnJ//6+vr//////wMDA/8AAADv7+/v/////////////////////////////////////////////////7y8vP8ODg7/AAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJiYmJv/6+vr//////wkJCf8AAADv7+/v//////////////////////////////////f39//9/f3//////+np6f+UlJT/GBgY/wAAAH0AAAACAAAAAAAAAAAAAAAAAAAAKSkpKf///////v7+/w0NDf8AAADd3d3d////////////////////////////29vb/39/f/+Xl5f/5+fn////////////5ubm/1RUVP8CAgL/AAAAPwAAAAAAAAAAAAAAOTk5Of//////8PDw/wgICP8AAAChoaGh/////////////////+np6f+YmJj/QkJC/wAAAP8AAAD/UFBQ/7e3t//39/f///////////+oqKj/EBAQ/wAAAIgAAAAAAAAAZ2dnZ///////29vb/wEBAf8AAAA4NTU1/9zc3P/t7e3/tbW1/01NTf8AAACYAAAA////////////AwMD/wsLC/9oaGj/y8vL////////////8fHx/zg4OP8AAACWAAAApaWlpf//////n5+f/wAAAJ8AAAAAAAAAczg4OP9LS0v/EhIS/wAAAE0AAAAAAAAA////////////FRUV/wAAABUAAABoJSUl/4GBgf/i4uL///////////9+fn7/Pz8///b29v//////SkpK/wAAAEoAAAAAAAAAAAAAADgAAABLAAAAEgAAAAAAAAAAAAAAlgAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAJQAAAIE8PDz/np6e//z8/P/////////////////8/Pz/CQkJ/wAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlgAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAA8DAwM/09PT/+7u7v///////////+QkJD/AAAAkwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////Dw8P/wAAAA8AAAAAAAAAAAAAAAAAAAAAAAAADAAAAFIYGBj/aGho/729vf8WFhb/AAAAJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////FRUV/wAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAQEB/w8PD/8AAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////DAwM/wAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlgAAAP8AAAD/AAAAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8x/h/nO/4fw1D+HwFy/h4BRu4YAHOGEABkAAAAXAAAIFwAAOBnAAHgIAAD4GUAAOB4AABgXAAAIGMAAABtggAAVMYYAHT+HgE7/g8BcP4Pw2/+D+dc/h//XP///2c=), auto"},this.getMotionDelta=function(e){var i=g.x-m.x,n=g.y-m.y,r=g.z-m.z;Math.abs(i)100?(t=b(a),a=0,l=null,c=null,h=!1):l&&e-l>100&&(h?Math.abs(a)>=3&&(t=a,a=0):(t=b(a),h=!0,a=0)),t},this.update=function(){var e=!1,t=p>d;if(p>d){this.controller.setIsLocked(!0),this.getMotionDelta(v);var n=v.x,o=v.y,a=v.z;if(0!==n||0!==o||0!==a)if(t=!0,p>=0)o=-o,0!==(a=Math.abs(n)>Math.abs(o)?n:o)&&(a*=-1,i.setVerticalFov(i.getVerticalFov()*(1+a),!0));else{var l=this.getAccumulatedWheelDelta()/3;0!==l&&i.setFocalLength(i.getFocalLength()+l,!0)}this.stepMotionDelta(v,!0),p===f&&Math.abs(a)<1e-5&&(this.interactionEnd(f),e=!0)}return t?this.utilities.pivotActive(i.getPivotSetFlag(),!0):this.utilities.pivotUpdate(),!s&&(e||p>d)&&(p>f&&m.copy(g),p=d,this.controller.setIsLocked(!1)),r.dirty},this.interactionStart=function(e,t){(t||e>p)&&(p=e,s=!0),i.toPerspective()},this.interactionEnd=function(e){e===p&&(e!==f&&this.utilities.pivotActive(!1),s=!1)},this.handleWheelInput=function(e){if(p>f)return!1;i.getReverseZoomDirection()&&(e*=-1),g.z+=e,a+=e;var t=Date.now();return l||(l=t),c=t,0!=e&&this.interactionStart(f),!0},this.handleGesture=function(e){switch(e.type){case"dragstart":return this.handleButtonDown(e,0);case"dragmove":return this.handleMouseMove(e);case"dragend":return this.handleButtonUp(e,0);case"drag3start":return y="drag",this.handleButtonDown(e,0);case"drag3move":return"drag"===y&&this.handleMouseMove(e);case"drag3end":return"drag"===y&&this.handleButtonUp(e,0),y=null,!1}return!1},this.handleButtonDown=function(e,t){return u+=1<f},this.handleBlur=function(e){return this.interactionEnd(p),!1}}},55855:(e,t,i)=>{"use strict";i.r(t),i.d(t,{GestureHandler:()=>s,GestureRecognizers:()=>o});var n=i(55280);let r;(0,n.isNodeJS)()||(r=i(41944));const o={};function s(e){var t=e.navigation,i=["gestures"],s=this,a=!0,l=!1,c=!0,h=null,u=!1,d=(0,n.isTouchDevice)();t.setIsTouchDevice(d),d&&((h=new r.Manager(e.canvasWrap,{recognizers:[o.drag,o.doubletap,o.doubletap2,o.singletap,o.singletap2,o.press,o.drag3,o.swipe,o.pan,o.pinch,o.rotate],handlePointerEventMouse:!1,inputClass:r.TouchInput})).get("pinch").recognizeWith([h.get("drag")]),e.canvasWrap.addEventListener("touchstart",this.onTouchStart,!1)),this.onTouchStart=function(e){e.preventDefault()},this.getNames=function(){return i},this.getName=function(){return i[0]},this.isActive=function(){return u},this.__clientToCanvasCoords=function(t){var i,n,r=e.impl.getCanvasBoundingClientRect(),o=r.width,s=r.height;t.hasOwnProperty("center")?(i=t.center.x-r.left,n=t.center.y-r.top):(i=t.pointers[0].clientX-r.left,n=t.pointers[0].clientY-r.top),t.canvasX=i,t.canvasY=n,t.normalizedX=i/o*2-1,t.normalizedY=(s-n)/s*2-1},this.distributeGesture=function(e){s.__clientToCanvasCoords(e),s.controller.distributeEvent("handleGesture",e)&&e.preventDefault()},this.onSingleTap=function(e){s.__clientToCanvasCoords(e),s.controller.distributeEvent("handleSingleTap",e)&&e.preventDefault()},this.onDoubleTap=function(e){s.__clientToCanvasCoords(e),s.controller.distributeEvent("handleDoubleTap",e)&&e.preventDefault()},this.onPressHold=function(e){s.__clientToCanvasCoords(e),s.controller.distributeEvent("handlePressHold",e)&&e.preventDefault()},this.onHammerInput=function(e){s.setMouseDisabledWhenTouching(e)},this.setMouseDisabledWhenTouching=function(e){e.isFirst&&!l?(a=s.controller.enableMouseButtons(!1),l=!0):e.isFinal&&setTimeout((function(){s.controller.enableMouseButtons(a),l=!1}),10)},this.activate=function(e){h&&!u&&(h.on("dragstart dragmove dragend",this.distributeGesture),h.on("singletap",this.onSingleTap),h.on("singletap2",this.onSingleTap),h.on("doubletap",this.onDoubleTap),h.on("doubletap2",this.onDoubleTap),h.on("press pressup",this.onPressHold),h.on("drag3start drag3move drag3end",this.distributeGesture),h.on("swipeleft swiperight swipeup swipedown",this.distributeGesture),c&&(h.on("panstart panmove panend",this.distributeGesture),h.on("pinchstart pinchmove pinchend",this.distributeGesture),h.on("rotatestart rotatemove rotateend",this.distributeGesture)),h.on("hammer.input",this.onHammerInput),h.get("doubletap2").recognizeWith("doubletap"),h.get("singletap2").recognizeWith("singletap"),h.get("singletap").requireFailure("doubletap"),h.get("swipe").recognizeWith("drag")),u=!0},this.deactivate=function(e){h&&u&&(h.off("dragstart dragmove dragend",this.distributeGesture),h.off("singletap",this.onSingleTap),h.off("singletap2",this.onSingleTap),h.off("doubletap",this.onDoubleTap),h.off("doubletap2",this.onDoubleTap),h.off("press pressup",this.onPressHold),h.off("drag3start drag3move drag3end",this.distributeGesture),h.off("swipeleft swiperight swipeup swipedown",this.distributeGesture),c&&(h.off("panstart panmove panend",this.distributeGesture),h.off("pinchstart pinchmove pinchend",this.distributeGesture),h.off("rotatestart rotatemove rotateend",this.distributeGesture)),h.off("hammer.input",this.onHammerInput)),u=!1},this.update=function(){return!1},this.handleBlur=function(e){return!1},this.disableTwoFingerSwipe=function(){c=!1,h&&(h.remove(r.Pan),h.remove(r.Pinch),h.remove(r.Rotate),h.off("panstart panmove panend",this.distributeGesture),h.off("pinchstart pinchmove pinchend",this.distributeGesture),h.off("rotatestart rotatemove rotateend",this.distributeGesture))},this.setGestureParameter=function(e,t,i){const n=h&&h.get(e);return!!n&&(n.options[t]=i,!0)},this.restoreGestureParameterDefault=function(e,t){const i=h&&h.get(e);if(!i)return!1;const n=o[e][1];return i.options[t]=n.hasOwnProperty(t)?n[t]:i.defaults[t],!0}}r&&function(){if(!o.singletap){var e=o;e.singletap=[r.Tap,{event:"singletap",threshold:7,time:400}],e.singletap2=[r.Tap,{event:"singletap2",pointers:2,threshold:7,time:400}],e.press=[r.Press,{event:"press",time:500,threshold:50}],e.doubletap=[r.Tap,{event:"doubletap",taps:2,interval:300,threshold:6,posThreshold:30}],e.doubletap2=[r.Tap,{event:"doubletap2",pointers:2,taps:2,interval:300,threshold:6,posThreshold:40}],e.swipe=[r.Swipe,{event:"swipe",pointers:1,threshold:200,velocity:1.7}],e.drag=[r.Pan,{event:"drag",pointers:1}],e.drag3=[r.Pan,{event:"drag3",pointers:3,threshold:15}],e.pan=[r.Pan,{event:"pan",pointers:2,threshold:20}],e.pinch=[r.Pinch,{event:"pinch",pointers:2,enable:!0,threshold:.05}],e.rotate=[r.Rotate,{event:"rotate",pointers:2,enable:!0,threshold:7}]}}()},4746:(e,t,i)=>{"use strict";function n(e){var t=["hottouch"],i={SHIFT:0,ALT:0,CONTROL:0},n=null,r=null,o=!1,s=!1,a=null,l=16,c=17,h=18;this.active=!1,this.getNames=function(){return t},this.getName=function(){return t[0]},this.activate=function(e){this.active=!0},this.deactivate=function(e){this.active=!1},this.isActive=function(){return this.active},this.__checkStart=function(){a&&(this.controller.distributeEvent("handleGesture",a),a=null)},this.update=function(){if(this.controller.getIsLocked())return!1;var t=e.getActiveNavigationTool(),i=!1===o&&!0===s;if(i||!0===o&&!1===s){var a=i?"worldup":"fov";if(t===a)return!1;if(t===n)return e.setActiveNavigationTool(a),n=a,this.__checkStart(),!1;r=t,e.setActiveNavigationTool(a),n=a,this.__checkStart()}else n&&(e.setActiveNavigationTool(r),n=null,r=null);return!1},this.resetKeys=function(){i.SHIFT=0,i.CONTROL=0,i.ALT=0},this.updateModifierState=function(e){i.CONTROL=e.ctrlKey?1:0,i.SHIFT=e.shiftKey?1:0,i.ALT=e.altKey?1:0},this.handleGesture=function(t){if(t===a)return!1;switch(t.type){case"drag3start":e.navigation.isActionEnabled("fov")&&(a=t,o=!0);break;case"drag3move":case"rotatemove":break;case"drag3end":o=!1;break;case"rotatestart":e.navigation.isActionEnabled("roll")&&(a=t,s=!0);break;case"rotateend":s=!1}return!1},this.handleKeyDown=function(e,t){switch(this.updateModifierState(e),t){case l:i.SHIFT=1;break;case c:i.CONTROL=1;break;case h:i.ALT=1}return!1},this.handleKeyUp=function(e,t){switch(this.updateModifierState(e),t){case l:i.SHIFT=0;break;case c:i.CONTROL=0;break;case h:i.ALT=0}return!1},this.handleButtonDown=function(e,t){return this.updateModifierState(e),!1},this.handleButtonUp=function(e,t){return this.updateModifierState(e),!1},this.handleMouseMove=function(e){return this.updateModifierState(e),!1},this.handleBlur=function(e){return this.resetKeys(),!1}}i.r(t),i.d(t,{HotGestureTool:()=>n})},75109:(e,t,i)=>{"use strict";i.r(t),i.d(t,{HotkeyManager:()=>r});const n=function(e,t){return e-t};function r(){var e=[],t=[],i=[],r=[],o=["hotkeys"];this.getNames=function(){return o},this.getName=function(){return o[0]},this.pushHotkeys=function(t,i,r){if(e.some((function(e){return e.id===t})))return!1;for(var o=0;o=0;n--)e[n].id===t&&(e.splice(n,1),i=!0);return i};const s=function(){var e,n=t.join();for(e=0;e=0;c--)(d=e[c]).keys===a&&d.onRelease?f.unshift(d):d.keys===h&&d.onPress&&p.unshift(d);for(c=f.length-1;c>=0&&!(d=f[c]).onRelease(l);c--)d.options.tryUntilSuccess&&r.unshift(d);for(c=p.length-1;c>=0&&!(d=p[c]).onPress(u);c--)d.options.tryUntilSuccess&&i.unshift(d)}},this.handleKeyUp=function(n,o){var a=t.join(),l=t.slice(0),c=t.indexOf(o);c>-1&&t.splice(c,1);var h=t.join(),u=t.slice(0);s();var d,f=[],p=[];for(c=e.length-1;c>=0;c--)(d=e[c]).keys===a&&d.onRelease?f.unshift(d):d.keys===h&&d.onPress&&p.unshift(d);for(c=f.length-1;c>=0&&!(d=f[c]).onRelease(l);c--)d.options.tryUntilSuccess&&r.unshift(d);for(c=p.length-1;c>=0&&!(d=p[c]).onPress(u);c--)d.options.tryUntilSuccess&&i.unshift(d)},this.update=function(){var e,t;for(t=0;t=0;e--)this.handleKeyUp(null,t[e])},this.activate=function(){},this.deactivate=function(){}}},49930:(e,t,i)=>{"use strict";i.r(t),i.d(t,{KeyCode:()=>n});const n={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CONTROL:17,ALT:18,ESCAPE:27,SPACE:32,PAGEUP:33,PAGEDOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,INSERT:45,DELETE:46,ZERO:48,SEMICOLONMOZ:59,EQUALSMOZ:61,a:65,b:66,c:67,d:68,e:69,f:70,g:71,h:72,i:73,j:74,k:75,l:76,m:77,n:78,o:79,p:80,q:81,r:82,s:83,t:84,u:85,v:86,w:87,x:88,y:89,z:90,LCOMMAND:91,RCOMMAND:93,PLUS:107,PLUSMOZ:171,DASHMOZ:109,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,DASHMOZNEW:173,SEMICOLON:186,EQUALS:187,COMMA:188,DASH:189,PERIOD:190,SLASH:191,LBRACKET:219,RBRACKET:221,SINGLEQUOTE:222,COMMANDMOZ:224}},17016:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Navigation:()=>a});var n=i(72091),r=i(83081),o=i(25004);const s={TRANSITION_ACTIVE_FLAG_CHANGED:"transitionActiveFlagChanged"};function a(e){var t=6.88,i=1e-6;this.__options={dollyToPivot:!1,orbitPastPoles:!0,reverseDolly:!1,reverseHorizontalLook:!1,reverseVerticalLook:!1,useLeftHandedInput:!1,usePivotAlways:!1,lockNavigation:!1},this.__lockSettings={orbit:!1,pan:!1,zoom:!1,roll:!1,fov:!1,gotoview:!1,walk:!1},this.FIT_TO_VIEW_VERTICAL_MARGIN=.05,this.FIT_TO_VIEW_VERTICAL_OFFSET=0,this.FIT_TO_VIEW_HORIZONTAL_MARGIN=.05,this.FIT_TO_VIEW_HORIZONTAL_OFFSET=0,this.__pivotIsSetFlag=!1,this.__fitToViewRequested=!1,this.__homeViewRequested=!1,this.__transitionActive=!1,this.__destinationView=null,this.__is2D=!1,this.__isTouchDevice=!1,this.__kEpsilon=i,this.__minDistance=1e-5;var r=void 0,o=void 0,s=2,a=200,l=null,c={left:0,top:0,width:1,height:1},h=Number.MAX_VALUE;this.uninitialize=function(){this.setCamera(null)},this.setMinimumLineWidth=function(e){h=e||Number.MAX_VALUE},this.setCamera=function(e){e!==l&&(l=e,e&&(Object.prototype.hasOwnProperty.call(e,"target")||(e.target=new n.Vector3(0,0,0)),Object.prototype.hasOwnProperty.call(e,"pivot")||(e.pivot=new n.Vector3(0,0,0)),e.worldup=e.up.clone(),e.dirty=!0))},this.getCamera=function(){return l},this.setScreenViewport=function(e){c=e},this.getScreenViewport=function(){return c},this.__setUp=function(e){if(e&&l&&0!==e.clone().normalize().sub(l.worldup).lengthSq())return l.worldup.copy(e).normalize(),l.dirty=!0,!0;return!1},this.__getUp=function(){return l?l.worldup:new n.Vector3(0,1,0)},this.setView=function(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;if(!l)return;e&&t&&(l.position.copy(e),l.target.copy(t),null!=i&&l.up.copy(i),l.dirty=!0)},this.orientCameraUp=function(e){l&&(this.isActionEnabled("roll")||e)&&(l.up.copy(this.getAlignedUpVector()),l.dirty=!0)},this.getPivotPoint=function(){return l?l.pivot.clone():new n.Vector3(0,0,0)},this.setPivotPoint=function(e){l&&e&&l.pivot.copy(e)},this.getPosition=function(){return l?l.position.clone():new n.Vector3(0,0,1)},this.setPosition=function(e){l&&e&&(l.position.copy(e),l.dirty=!0)},this.setTarget=function(e){l&&e&&(l.target.copy(e),l.dirty=!0)},this.getTarget=function(){return l?l.target.clone():new n.Vector3(0,0,0)},this.getEyeVector=function(){return l?l.target.clone().sub(l.position):new n.Vector3(0,0,-1)},this.getEyeToCenterOfBoundsVec=function(e){return l?e.getCenter(new n.Vector3).sub(l.position):new n.Vector3(0,0,-1)},this.getFovMin=function(){return t},this.getFovMax=function(){return 100},this.setZoomInLimitFactor=function(e){a=e},this.getZoomInLimitFactor=function(){return a},this.setZoomOutLimitFactor=function(e){s=e},this.getZoomOutLimitFactor=function(){return s},this.isPointVisible=function(e){return(new n.Frustum).setFromProjectionMatrix(l.projectionMatrix.clone().multiply(l.matrixWorldInverse)).containsPoint(e)},this.setVerticalFov=function(e,r){if((!l||l.isPerspective)&&(e100&&(e=100),l&&this.isActionEnabled("fov"))){if(Math.abs(l.fov-e)<=i)return;if(r){var o=this.__pivotIsSetFlag&&this.isPointVisible(this.getPivotPoint()),s=this.getPosition(),a=this.getEyeVector(),c=n.Math.degToRad(l.fov),h=n.Math.degToRad(e),u=o?this.getPivotPlaneDistance():a.length(),d=u*Math.tan(.5*c)/Math.tan(.5*h),f=a.normalize().multiplyScalar(u-d);this.setPosition(s.add(f)),o&&this.setTarget(this.getTarget().add(f))}l.setFov(e),l.dirty=!0}},this.applyRotation=(e,t,i,n)=>{e.sub(i),e.applyAxisAngle(n,t),e.add(i)},this.getSignedAngle=(e,t,i)=>{var n=e.angleTo(t),r=e.clone().cross(t).normalize();return n*(i.dot(r)>0?1:-1)},this.computeFit=function(t,i,r,o,s){if(!o||o.isEmpty())return{position:t,target:i};s=void 0===s?1:s;for(var a=o.getCenter(new n.Vector3),l=o.getSize(new n.Vector3),c=t.clone().sub(i).normalize(),h=Math.tan(n.Math.degToRad(.5*r)),u=0,d=this.computeOrthogonalUp(t,i),f=c.clone().cross(d).normalize(),p=new n.Vector3,m=0===l.z?4:8,g=0;gi.y?n.y-=1e-4:n.z-=1e-4,r.crossVectors(n,i)),r.cross(n).normalize()},this.fitBounds=function(e,t,i,n){const r=this.getTarget(),o=this.getPosition();if(!this.isActionEnabled("gotoview")&&!n||!t||t.isEmpty())return{position:o,target:r};const s=this.getVerticalFov();i||(t=this.rotateBoundsToCamera(t,o,r));const a=this.computeFit(o,r,s,t,l.aspect),c=i?this.computeOrthogonalUp(o,r):l.up;return e?(l.up.copy(c),this.setView(a.position,a.target)):this.setRequestTransitionWithUp(!0,a.position,a.target,s,c),this.setPivotPoint(a.target),this.setPivotSetFlag(!0),a},this.rotateBoundsToCamera=function(e,t,i){const r=(e=e.clone()).getCenter(new n.Vector3),o=t.clone().sub(i).normalize(),s=this.getSignedAngle(this.getCameraUpVector(),this.getAlignedUpVector(),o);return this.applyRotation(e.min,s,r,o),this.applyRotation(e.max,s,r,o),e.setFromPoints([e.min.clone(),e.max.clone()]),e},this.computeOverviewDistance=function(e){var t=e.getSize(new n.Vector3);if(this.__is2D){var i=l.aspect,r=t.x/i,o=t.y;return Math.max(r,o)}var s=this.getVerticalFov(),a=t.length();return 0===a&&(a=2),l.isPerspective?.5*a/Math.tan(n.Math.degToRad(.5*s)):a},this.applyDollyConstraint=function(e,t){if(!(r||o||s)||!this.__is2D)return e;var i=e;if(r&&s&&t&&e>1){var n,c=l.isPerspective?this.getEyeToCenterOfBoundsVec(t):this.getEyeVector();n=r?s*this.computeOverviewDistance(r):s*this.computeOverviewDistance(t);var u=Math.abs(n/c.length());u=Math.max(u,1),i=Math.min(i,u)}if(o||a&&t){var d=(o?l.clientHeight/o:Math.min(h,this.computeOverviewDistance(t)/a))/-this.getEyeVector().z;d=Math.min(d,1),i=Math.max(i,d)}return i},this.applyPanningConstraint2D=function(e){if(this.__is2D&&r){var t=l.position.x+e.x,i=l.position.y+e.y;t=n.Math.clamp(t,r.min.x,r.max.x),i=n.Math.clamp(i,r.min.y,r.max.y);var o=t-l.position.x,s=i-l.position.y,a=Math.min(e.x,0),c=Math.min(e.y,0),h=Math.max(e.x,0),u=Math.max(e.y,0);o=n.Math.clamp(o,a,h),s=n.Math.clamp(s,c,u),e.x=o,e.y=s}},this.updateCamera=function(){l&&(l.updateProjectionMatrix(),this.orient(l,l.target,l.position,l.up),l.dirty=!1)},this.setCamera(e),this.setConstraints2D=function(e,t){r=e,o=t},this.getConstrains2D=function(){return{maxViewRegion:r,maxPixelPerUnit:o}}}a.prototype.constructor=a,a.prototype.setIs2D=function(e){this.__is2D=!!e},a.prototype.getIs2D=function(){return this.__is2D},a.prototype.setIsTouchDevice=function(e){this.__isTouchDevice=!!e},a.prototype.getIsTouchDevice=function(){return this.__isTouchDevice},a.prototype.orient=function(){var e,t,i,r;return function(o,s,a,l){e||(e=new n.Matrix4,t=new n.Vector3,i=new n.Vector3,r=new n.Vector3);var c=e.elements;r.subVectors(a,s).normalize(),0===r.lengthSq()&&(r.z=1),t.crossVectors(l,r).normalize(),0===t.lengthSq()&&(l.z>l.y?r.y-=1e-4:r.z+=1e-4,t.crossVectors(l,r).normalize()),i.crossVectors(r,t),c[0]=t.x,c[4]=i.x,c[8]=r.x,c[1]=t.y,c[5]=i.y,c[9]=r.y,c[2]=t.z,c[6]=i.z,c[10]=r.z,o.setRotationFromMatrix(e)}}(),a.prototype.fov2fl=function(e){var t=n.Math.degToRad(e);return t<=0&&(t=1e-4),Math.round(12/Math.tan(.5*t))},a.prototype.fl2fov=function(e){e<=0&&(e=1e-4);var t=2*Math.atan(12/e);return n.Math.radToDeg(t)},a.prototype.setCameraUpVector=function(e,t){if(this.isActionEnabled("roll")||t){var i=this.getCamera();i.up.copy(e),i.dirty=!0}},a.prototype.getCameraUpVector=function(){var e=this.getCameraRightVector(!1),t=this.getEyeVector();return e.cross(t).normalize()},a.prototype.getAlignedUpVector=function(){var e=this.getCameraRightVector(!0),t=this.getEyeVector();return e.cross(t).normalize()},a.prototype.getCameraRightVector=function(e){var t=new n.Vector3,i=e?this.getWorldUpVector():this.getCamera().up,r=this.getEyeVector();return t.crossVectors(r,i),0===t.lengthSq()&&(Math.abs(r.z)>=Math.abs(r.y)?i.set(0,1,0):i.set(0,0,1),t.crossVectors(r,i)),t.normalize()},a.prototype.setWorldUpVector=function(e,t,i){(this.isActionEnabled("roll")||i)&&(this.__setUp(e),t&&this.orientCameraUp(i))},a.prototype.getWorldUpVector=function(){return this.__getUp().clone()},a.prototype.getWorldRightVector=function(){var e=new n.Vector3;return e.copy(this.__getUp()),Math.abs(e.z)<=Math.abs(e.y)?e.set(e.y,-e.x,0):e.z>=0?e.set(e.z,0,-e.x):e.set(-e.z,0,e.x),e.normalize()},a.prototype.getVerticalFov=function(){return this.getCamera().fov},a.prototype.getHorizontalFov=function(){var e=this.getScreenViewport();return this.getCamera().fov*(e.width/e.height)},a.prototype.getFocalLength=function(){return this.fov2fl(this.getVerticalFov())},a.prototype.setFocalLength=function(e,t){this.setVerticalFov(this.fl2fov(e),t)},a.prototype.setReverseZoomDirection=function(e){this.__options.reverseDolly=!!e},a.prototype.setReverseHorizontalLookDirection=function(e){this.getIs2D()?r.logger.warn("Autodesk.Viewing.Navigation.setReverseHorizontalLookDirection is not applicable to 2D"):this.__options.reverseHorizontalLookDirection=!!e},a.prototype.setReverseVerticalLookDirection=function(e){this.getIs2D()?r.logger.warn("Autodesk.Viewing.Navigation.setReverseVerticalLookDirection is not applicable to 2D"):this.__options.reverseVerticalLookDirection=!!e},a.prototype.getReverseZoomDirection=function(){return this.__options.reverseDolly},a.prototype.getReverseHorizontalLookDirection=function(){return this.getIs2D()?(r.logger.warn("Autodesk.Viewing.Navigation.getReverseHorizontalLookDirection is not applicable to 2D"),!1):this.__options.reverseHorizontalLookDirection},a.prototype.getReverseVerticalLookDirection=function(){return this.getIs2D()?(r.logger.warn("Autodesk.Viewing.Navigation.getReverseVerticalLookDirection is not applicable to 2D"),!1):this.__options.reverseVerticalLookDirection},a.prototype.setZoomTowardsPivot=function(e){this.__options.dollyToPivot=!!e},a.prototype.getZoomTowardsPivot=function(){return this.__options.dollyToPivot},a.prototype.setOrbitPastWorldPoles=function(e){this.getIs2D()?r.logger.warn("Autodesk.Viewing.Navigation.setOrbitPastWorldPoles is not applicable to 2D"):this.__options.orbitPastPoles=!!e},a.prototype.getOrbitPastWorldPoles=function(){return this.getIs2D()?(r.logger.warn("Autodesk.Viewing.Navigation.orbitPastWorldPoles is not applicable to 2D"),!1):this.__options.orbitPastPoles},a.prototype.setUsePivotAlways=function(e){this.__options.usePivotAlways=!!e},a.prototype.getUsePivotAlways=function(){return this.__options.usePivotAlways},a.prototype.setUseLeftHandedInput=function(e){this.__options.useLeftHandedInput=!!e},a.prototype.getUseLeftHandedInput=function(){return this.__options.useLeftHandedInput},a.prototype.setWheelSetsPivot=function(e){this.__options.wheelSetsPivot=!!e},a.prototype.getWheelSetsPivot=function(){return this.__options.wheelSetsPivot},a.prototype.setSelectionSetsPivot=function(e){this.__options.SelectionSetsPivot=!!e},a.prototype.getSelectionSetsPivot=function(){return this.__options.SelectionSetsPivot},a.prototype.setIsLocked=function(e){this.__options.lockNavigation=!!e},a.prototype.getIsLocked=function(){return this.__options.lockNavigation},a.prototype.setLockSettings=function(e){for(var t in this.__lockSettings)Object.prototype.hasOwnProperty.call(e,t)&&(this.__lockSettings[t]=e[t])},a.prototype.getLockSettings=function(){var e={};for(var t in this.__lockSettings)e[t]=this.__lockSettings[t];return e},a.prototype.isActionEnabled=function(e){return!this.__options.lockNavigation||!0===this.__lockSettings[e]},a.prototype.setPivotSetFlag=function(e){this.__pivotIsSetFlag=!!e},a.prototype.getPivotSetFlag=function(){return this.__pivotIsSetFlag},a.prototype.setRequestFitToView=function(e){this.isActionEnabled("gotoview")&&(this.__fitToViewRequested=!!e)},a.prototype.getRequestFitToView=function(){return this.__fitToViewRequested},a.prototype.setRequestHomeView=function(e){this.isActionEnabled("gotoview")&&(this.__homeViewRequested=!!e)},a.prototype.getRequestHomeView=function(){return this.__homeViewRequested},a.prototype.setRequestTransition=function(e,t,i,n,r,o){this.__destinationView=e?{position:t.clone(),coi:i.clone(),fov:n,up:this.getCamera().up.clone(),worldUp:this.getWorldUpVector(),reorient:r,pivot:o?o.clone():i.clone()}:null},a.prototype.setRequestTransitionWithUp=function(e,t,i,n,r,o,s){this.__destinationView=e?{position:t.clone(),coi:i.clone(),fov:n,up:r.clone(),worldUp:o||this.getWorldUpVector(),reorient:!1,pivot:s?s.clone():i.clone()}:null},a.prototype.getRequestTransition=function(){return this.__destinationView},a.prototype.setTransitionActive=function(e){const t=this.__transitionActive!=e;this.__transitionActive=!!e,t&&this.fireEvent({type:s.TRANSITION_ACTIVE_FLAG_CHANGED,transitionActive:!!e})},a.prototype.getTransitionActive=function(){return this.__transitionActive},a.prototype.getWorldSize=function(e){var t=this.getCamera(),i=t.aspect,r=2*e*Math.tan(n.Math.degToRad(.5*t.fov)),o=r*i;return new n.Vector2(o,r)},a.prototype.screenToViewport=function(e,t){return e=2*e-1,t=2*(t=1-t)-1,new n.Vector3(e,t,1)},a.prototype.viewportToScreen=function(e,t){return e=(e+1)/2,t=1-(t=(t+1)/2),new n.Vector2(e,t)},a.prototype.getWorldPoint=function(e,t){var i=this.screenToViewport(e,t);e=i.x,t=i.y;var r,o=this.getCamera();o.isPerspective&&(r=(r=new n.Vector3(e,t,1)).unproject(o));var s,a,l=this.getEyeVector(),c=this.getPosition();if(!o.isPerspective||isNaN(r.x)){var h=this.getWorldSize(l.length()),u=this.getCameraRightVector(!1).multiplyScalar(.5*e*h.x),d=this.getCameraUpVector().multiplyScalar(.5*t*h.y);s=l.clone().add(u).add(d).normalize()}else s=r.sub(c).normalize();var f=this.getPivotPoint(),p=s.dot(l);return a=this.__pivotIsSetFlag&&(this.getIs2D()||o.isPerspective&&p>0)?0!==p?Math.abs(f.sub(c).dot(l))/p:f.sub(c).length():o.isPerspective?.5*(o.near+o.far):o.orthoScale,s.multiplyScalar(a).add(c)},a.prototype.getPivotPlaneDistance=function(){var e=this.getPivotPoint(),t=this.getEyeVector(),i=this.getPosition();return e.sub(i).dot(t.normalize())},a.prototype.panRelative=function(e,t,i){if(this.isActionEnabled("pan")){var n=this.getScreenViewport(),r=this.getCamera(),o=this.getWorldSize(i),s=e*o.x*n.width/r.clientWidth,a=t*o.y*n.height/r.clientHeight,l=this.getCameraRightVector(!1).multiplyScalar(s),c=this.getCameraUpVector().multiplyScalar(a),h=l.add(c);this.applyPanningConstraint2D(h),this.setView(this.getPosition().add(h),this.getTarget().add(h))}},a.prototype.dollyFromPoint=function(e,t,i){if(this.isActionEnabled("zoom")&&!(Math.abs(e)<=this.__kEpsilon)){var n=this.getPosition(),r=this.getEyeVector();if(!this.getCamera().isPerspective){var o=r.lengthSq(),s=r.dot(this.getTarget().sub(t));t=r.clone().multiplyScalar(s/o).add(t)}var a=t.clone().sub(n),l=a.length(),c=l+e;cthis.__kEpsilon){a.multiplyScalar(h),a.set(-a.x,-a.y,-a.z);var u=a.add(t);r=this.getEyeVector(),this.getCamera().isPerspective||r.multiplyScalar(h),this.setView(u,r.add(u))}}},a.prototype.toPerspective=function(){if(this.getIs2D())r.logger.warn("Autodesk.Viewing.Navigation.toPerspective is not applicable to 2D");else{var e=this.getCamera();e.isPerspective||(e.toPerspective(),e.dirty=!0)}},a.prototype.toOrthographic=function(){var e=this.getCamera();e.isPerspective&&(e.toOrthographic(),e.dirty=!0)},a.snapToAxis=function(e){var t=new n.Vector3(Math.abs(e.x),Math.abs(e.y),Math.abs(e.z));return t.x>t.y&&t.x>t.z?e.set(e.x>0?1:-1,0,0):t.y>t.x&&t.y>t.z?e.set(0,e.y>0?1:-1,0):e.set(0,0,e.z>0?1:-1),e},o.EventDispatcher.prototype.apply(a.prototype),a.Events=s},23261:(e,t,i)=>{"use strict";i.r(t),i.d(t,{OrbitDollyPanTool:()=>s});var n=i(19556),r=i(26206),o=i(35922);function s(e,t,i){this.setGlobalManager(t.globalManager);var r,s,a=this,l=.001,c=.01,h=i&&i.hasOwnProperty("dollyDragScale")?i.dollyDragScale:100,u=-1!=navigator.userAgent.search("Mac OS"),d=i&&i.disablePinchRotation,f=t.navigation,p=f.getCamera(),m=["orbit","freeorbit","dolly","pan"],g=m[0],v=[g],y=g,b=null,x=1,_=0,E=0,S=0,A=0,w=!0,T=!1,M=null,C=!1,P=33,D=34,L=37,I=38,R=39,O=40,N=48,F=187,U=189,B=-4,k=-1,V=-5,G=new THREE.Vector3,z=new THREE.Vector3,H=new THREE.Vector2,W=new THREE.Vector2,j=new THREE.Vector2,q=new THREE.Vector2,X=new THREE.Vector3,Y=new THREE.Vector3,K=new THREE.Vector3,Q=new THREE.Vector3,Z=new THREE.Vector3,$=new THREE.Vector3,J=new THREE.Vector3,ee=new THREE.Vector3,te=new THREE.Vector3,ie=new THREE.Quaternion,ne=new THREE.Plane,re=[!1,!1,!1,!1,!1,!1],oe={SHIFT:0,ALT:0,CONTROL:0,SPACE:0};this.active=!1;var se,ae=function(t){e.renderer().rolloverObjectId(0,null,0)},le=.01,ce=i&&i.hasOwnProperty("dollyScrollScale")?i.dollyScrollScale:.6,he=1,ue=5,de=.025;function fe(e,t){var i=a.getWindow(),n=0,r=0,o=i.innerWidth,s=i.innerHeight;ee.set((e-.5*o-n)/(.5*o),(.5*s+r-t)/(.5*s),0);var l=ee.length();return l>1?ee.normalize():ee.z=Math.sqrt(1-l*l),Q.copy(p.position).sub(p.pivot),$.copy(p.up).setLength(ee.y),$.add(J.copy(p.up).cross(Q).setLength(ee.x)),$.add(Q.setLength(ee.z)),$}this.getNames=function(){return m},this.getName=function(){return m[0]},this.activate=function(i){this.active=!0,v.push(i),y=i,w=t.prefs.get(o.Prefs3D.ENABLE_CUSTOM_ORBIT_TOOL_CURSOR),t.prefs.addListeners(o.Prefs3D.ENABLE_CUSTOM_ORBIT_TOOL_CURSOR,this._onPrefCursor),e.canvas.addEventListener("mouseout",ae),t.addEventListener(n.ESCAPE_EVENT,this.handleBlur)},this.deactivate=function(i){this.active=!1,t.prefs.removeListeners(o.Prefs3D.ENABLE_CUSTOM_ORBIT_TOOL_CURSOR,this._onPrefCursor);var r=v.length-1;r>0&&v[r]===i&&(v.pop(),y=v[r-1]),e.canvas.removeEventListener("mouseout",ae),t.removeEventListener(n.ESCAPE_EVENT,this.handleBlur)},this.isActive=function(){return this.active},this.adjustDollyLookSpeed=function(e){0===e?(de=.025,ue=5):((de*=e>0?1.1:.9)<1e-6&&(de=1e-6),(ue*=e>0?1.1:.9)<1e-6&&(ue=1e-6))},this.getDollySpeed=function(e,t){var i;if(!f.getZoomTowardsPivot()&&!f.getWheelSetsPivot()||p.isPerspective||f.getIs2D()){var n=f.getEyeVector(),r=f.getPosition();o=e.clone().sub(r).dot(n.normalize())*de;i=Math.abs(o).01&&(i=a)}}}else i=f.getEyeVector().length();he=i},this.initOrbit=function(){this.utilities.setTemporaryPivot(p.isPerspective&&f.getPivotPoint().sub(f.getPosition()).dot(f.getEyeVector())<=0?f.getTarget():null)},this.getActiveMode=function(){return g},this.getCursor=function(){if(!w)return null;switch(g){case"freeorbit":case"orbit":return"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAt1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAzMzP6+vri4uISEhKKioqtra2dnZ2EhIR9fX10dHRkZGQdHR3t7e3Hx8e5ubm1tbWoqKhWVlZKSko4ODgICAjv7+/o6OjMzMyxsbFOTk4pKSkXFxcEBAT29vbW1tZ6enpISEgLCwvhzeX+AAAAGXRSTlMANRO0nHRJHfnskIxQRKh89syDVwTWZjEJxPFEswAAAOFJREFUKM+1j+lygkAQhIflEAJe0Rw9u4CCeKKoSTTX+z9XoMJWWeX+ssrvZ3f19DQ5zOw/0DUMQPlmQ72bE2adBp8/Rp3CQUi3ILx+bxj4fjDs9T1Bmo6bbPPN8aDU4bjJt4nb+de789kSFyxn826jW3ICLNZZKU8nWWbrBTCRVm04U8TpjquRFf1Go0d7l8aYOrUR7FGEFr1S9LGymwthgX2gE/Kl0cHPOtF2xOWZ5QpIC93RflW4InkDoPRXesd5LJIMQPzV7tCMa7f6BvhJL79AVDmYTNQ1NhnxbI/uwB8H5Bjd4zQPBAAAAABJRU5ErkJggg==), auto";case"dolly":return"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAgVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8mJiYAAADNzc2/v7+fn59paWlPT08MDAwICAj6+vqpqak7Ozv29vby8vLp6em2traAgIBkZGRZWVlAQEAaGhpISEgkS7tbAAAAFHRSTlMAOvhpZD8mkQWegMy9qY1YVE01EYiqlE0AAADZSURBVCjPbY9ZloMgEAAbEbfsmRZZXbJn7n/AAX2RQVN/VD26AXLOeZLDGo6IbfI9tHq8cdxuj1HwvgCoaiHqKoRk+M3hB9jueUW8PnfsE/bJ3vms7nCkq7NoE3s99AXxoh8vFoXCpknrn5faAuJCenT0xPkYqnxQFJaU0gdZrsKm8aHZrAIffBj40mc1jsTfIJRWegq6opTMvlfqLqYg7kr1ZB7jFgeaMC59N//8O4WZ1IiPF8b5wMHcJn8zB4g4mc77zpxgAbMSUVoGK4iV0hL4wrksz+H0Bw5+E+HrniDQAAAAAElFTkSuQmCC), auto";case"pan":return"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAABHVBMVEUAAABPTk4AAAAAAAAJCQkRERE0MzQQEBAODg4QEBB4d3dbWlo9PDw/Pj4vLy8sLCwZGBgWFhYcHBwKCgoSEhIAAAAKCgoICAgKCgoQEBAODg4EBAQICAgPDw8REREMDAx2dnY0NDQvLy9QUFAaGhomJSYjIyM7OjokJCQNDA0mJiYNDQ0AAAAUFBQJCQkQEBAEBAQNDQ0PDw8VFRX///+amJkAAAD5+fnz8/PKycn9/f339vbi4eLR0dDNzMyAgIB8e3xycHH7+/vw7+/o6OjX1ta7urq4t7iwsLCnp6eioqKbmppva21OTk74+Pjl5eXc3Nzb29vLy8vDw8PDwsKrqqqdnZ2WlpaSkpKTkZKMiouEg4NkZGRISEgxLzBpgbsEAAAANHRSTlMA+fiQXgngKSYG/vX17uvBuqackpCNg3BpUkpAPBwTDvj18+vl0s/NwrOwoZZ+TDg4NBkBGrzX8QAAAP5JREFUKM99j9Vuw0AQRdeuKZyGkyZNmbnXDLHDVGb8/8/oy7paK1bO0+oc7WiGnGiaxq+QRTQAOh8f9Jv4H/Ge8PZPrCdlvkxfYluUT2WyyCq3mZ7unwlKVLcqOzA/Mf71j0TWJ/Ym6rPeca05Ni4iIevYc7yoUD2zQFhq71BdI9nvBeBabFDSPe8DswlUc1Riw3VxbH0NHBUPQ0jrbDnPYDjALQBMq9E7nkC5y7VDKTZlUg8Q0lmjvl74zlYErgvKa42GPKf3/a0kQmYCDY1SYMDosqMoiWrGwz/uAbNvc/fNon4kXRKGq+PUo2Mb96afV0iUxqGU2s4VBbKUP65NL/LKF+7ZAAAAAElFTkSuQmCC), auto"}return null},this.getMotionDelta=function(e,t){var i=f&&f.getReverseZoomDirection()?-1.5:1.5;u&&(i*=-1),re[0]&&(z.x+=c,j.x+=20),re[1]&&(z.x-=c,j.x-=20),re[2]&&(z.y+=c,j.y+=20),re[3]&&(z.y-=c,j.y-=20),re[4]&&(z.z+=i),re[5]&&(z.z-=i);var n=z.x-G.x,r=z.y-G.y,o=z.z-G.z;Math.abs(n)k)&&this.controller.setIsLocked(!0),0!==o||0!==a||0!==l){switch(g){case"orbit":this.utilities.autocam&&this.utilities.autocam.startState&&(q.x=-q.x,M&&this.utilities.autocam.orbit(j,M,q.multiplyScalar(2),this.utilities.autocam.startState));break;case"freeorbit":!function(){if(f.isActionEnabled("orbit")){Q.subVectors(p.position,p.pivot),Z.subVectors(p.position,p.target);var e=Z.length();Z.normalize();var t=Math.acos(Y.dot(K)/Y.length()/K.length());t&&(t*=2,te.crossVectors(Y,K).normalize(),ie.setFromAxisAngle(te,-t),Q.applyQuaternion(ie),p.up.applyQuaternion(ie),K.applyQuaternion(ie),Z.applyQuaternion(ie),Y.copy(K)),p.position.addVectors(p.pivot,Q),p.target.subVectors(p.position,Z.multiplyScalar(e)),p.dirty=!0}}();break;case"dolly":var c,u=new THREE.Vector2;l*=ce,V>=0?(a=-a,l=Math.abs(o)>Math.abs(a)?o:a,f.getReverseZoomDirection()&&(l*=-1),l*=h,o=0,a=0,u=f.viewportToScreen(0,0)):(e=f.getScreenViewport(),r&&s?(u.x=r/e.width,u.y=s/e.height):u=f.viewportToScreen(0,0)),!f.getIs2D()&&f.getZoomTowardsPivot()?this.coiIsActive()?c=f.getPivotPoint():(u=f.viewportToScreen(0,0),c=f.getWorldPoint(u.x,u.y)):c=f.getWorldPoint(u.x,u.y),f.dollyFromPoint(l*this.getDollySpeed(c,l<0),c,this.getFitBounds());break;case"pan":f.panRelative(-o,a,he);break;case"dollypan":0===o&&0===a||f.panRelative(-o,a,he),e=f.getScreenViewport(),c=f.getWorldPoint(r/e.width,s/e.height);var v=f.getPosition(),y=f.getIs2D()?v.sub(c).length():he,A=(_/E-1)*y;f.dollyFromPoint(A,c,this.getFitBounds());var w=new THREE.Vector3,P=new THREE.Quaternion,D=f.getCameraUpVector(),L=w.copy(p.position).sub(p.target).normalize();P.setFromAxisAngle(L,1.2*S),D.applyQuaternion(P),f.getIs2D()||d&&("pinch"===b||"pan"===b)||f.setCameraUpVector(D),_=E,x,he=y+A}n=!0}return this.stepMotionDelta(X,"pan"!==g&&"dollypan"!==g),V===k&&Math.abs(l)<.01&&(this.interactionEnd(k),z.z=0,G.z=0,i=!0,n=!0),(oe.SHIFT||oe.ALT)&&-1!==m.indexOf(t.getActiveNavigationTool())&&(n=!0),!C&&(i||V>-5)&&(V>k&&(G.copy(z),this.utilities.removeTemporaryPivot()),this.utilities.autocam.endInteraction(),V=-5,T&&this.controller.setIsLocked(!1),T=!1,M=null,b=null),n?this.utilities.pivotActive(f.getPivotSetFlag(),V<=k):this.utilities.pivotUpdate(),p.dirty},this.checkInteractionMode=function(){var e=this.getTriggeredMode();e!==g&&("pan"===(g=e)&&V>k||"dollypan"===g)&&this.initTracking(G.x,G.y)},this.interactionStart=function(e,t){(t||e>V)&&(V=e,C=!0,e>k&&("pan"===g&&this.initTracking(G.x,G.y),"orbit"===g&&this.initOrbit()),!f.getSelectionSetsPivot()&&this.utilities.pivotActive(f.getPivotSetFlag(),e===k),this.utilities.autocam&&(this.utilities.autocam.sync(p),this.utilities.autocam.startInteraction(W.x,W.y),M=W.clone()))},this.interactionCheck=function(){(re[0]||re[1]||re[2]||re[3]||re[4]||re[5]||oe.SHIFT||oe.CONTROL||oe.ALT||oe.SPACE)&&this.interactionStart(B,!0)},this.interactionEnd=function(e){e===V&&(e!==k&&this.utilities.pivotActive(!1),C=!1)},this.isInteractionActive=function(){return C},this.handleWheelInput=function(t,i){if(r=i.canvasX,s=i.canvasY,this.isDragging)return!1;if(f.getIs2D()){var n=f.getScreenViewport(),o=e.intersectGround(r+n.width,s+n.height);this.utilities.setPivotPoint(o,!0,!0)}else this.setPivotPointFromInput(r,s);return f.getReverseZoomDirection()&&(t*=-1),z.z+=t,0!=t&&this.interactionStart(k),!0},this.resetKeys=function(){this.autoMove(-1,!1),oe.SHIFT=0,oe.CONTROL=0,oe.ALT=0,oe.SPACE=0},this.autoMove=function(e,t){t&&this.isDragging||(e<0?re[0]=re[1]=re[2]=re[3]=re[4]=re[5]=t:re[e]=t,t||this.interactionEnd(B),this.interactionCheck())},this.updateModifierState=function(e){oe.CONTROL=u&&e.metaKey||e.ctrlKey?1:0,oe.SHIFT=e.shiftKey?1:0,oe.ALT=e.altKey?1:0},this.handleKeyDown=function(e,t){this.updateModifierState(e);var i=!1;if(u&&oe.CONTROL)return this.autoMove(-1,!1),this.interactionEnd(B),!1;switch(t){case F:this.adjustSpeed(1),i=!0;break;case U:this.adjustSpeed(-1),i=!0;break;case N:this.adjustSpeed(0),i=!0;break;case L:this.autoMove(0,!0),i=!0;break;case R:this.autoMove(1,!0),i=!0;break;case P:this.autoMove(2,!0),i=!0;break;case D:this.autoMove(3,!0),i=!0;break;case I:this.autoMove(4,!0),i=!0;break;case O:this.autoMove(5,!0),i=!0;break;default:return!1}return this.isDragging||this.interactionStart(B),i},this.handleKeyUp=function(e,t){this.updateModifierState(e);var i=!1;if(u&&oe.CONTROL)return this.autoMove(-1,!1),this.interactionEnd(B),!1;switch(t){case L:this.autoMove(0,!1),i=!0;break;case R:this.autoMove(1,!1),i=!0;break;case P:this.autoMove(2,!1),i=!0;break;case D:this.autoMove(3,!1),i=!0;break;case I:this.autoMove(4,!1),i=!0;break;case O:this.autoMove(5,!1),i=!0;break;default:return!1}return i&&(this.interactionEnd(B),C||this.interactionCheck()),i},this.handleDollyPan=function(e){r=e.canvasX,s=e.canvasY;var t=f.getScreenViewport();j.x=r,j.y=s,z.x=j.x/t.width,z.y=j.y/t.height,E=function(e){var t=e.pointers[1].clientX-e.pointers[0].clientX,i=e.pointers[1].clientY-e.pointers[0].clientY;return Math.sqrt(t*t+i*i)}(e);var i,n,o=THREE.Math.degToRad(e.rotation);S=o-A,Math.abs(S)>1&&(S=0),A=o,i=e.type,n="start",-1!==i.indexOf(n,i.length-n.length)&&(_=E,1,S=0,A=o),x=e.scale},this.handleGesture=function(e){switch(e.type){case"dragstart":return b="drag",this.handleButtonDown(e,0);case"dragmove":return"drag"!==b&&(this.handleButtonDown(e,0),b="drag"),this.handleMouseMove(e);case"dragend":return"drag"===b&&(this.handleButtonUp(e,0),b=null,!0);case"panstart":return b="pan",this.handlePanStart(e),this.handleDollyPan(e),!0;case"panmove":return"pan"!==b&&(b="pan",this.handlePanStart(e)),this.handleDollyPan(e);case"panend":return"pan"===b&&(this.isDragging=!1,this.handleDollyPan(e),this.interactionEnd(3),!0);case"pinchstart":return this.setPivotPointFromInput(e.center.x,e.center.y),this.isDragging=!0,b="pinch",G.x=.5*(e.normalizedX+1),G.y=1-.5*(e.normalizedY+1),H.set(e.canvasX,e.canvasY),W.set(e.canvasX,e.canvasY),T=!1,this.interactionStart(3),this.handleDollyPan(e),!0;case"pinchmove":return"pinch"===b&&this.handleDollyPan(e);case"pinchend":return"pinch"===b&&(this.isDragging=!1,this.handleDollyPan(e),this.interactionEnd(3),!0)}return!1},this.handleButtonDown=function(e,t){return this.updateModifierState(e),G.x=.5*(e.normalizedX+1),G.y=1-.5*(e.normalizedY+1),W.set(e.canvasX,e.canvasY),z.copy(G),j.copy(W),Y.copy(fe(e.canvasX,e.canvasY)),K.copy(Y),r=e.canvasX,s=e.canvasY,this.isDragging=!0,this.interactionStart(t),!0},this.handlePanStart=function(e){return this.isDragging=!0,G.x=.5*(e.normalizedX+1),G.y=1-.5*(e.normalizedY+1),H.set(e.canvasX,e.canvasY),W.set(e.canvasX,e.canvasY),this.interactionStart(3),!0},this.handleButtonUp=function(e,t){return this.updateModifierState(e),z.x=.5*(e.normalizedX+1),z.y=1-.5*(e.normalizedY+1),j.set(e.canvasX,e.canvasY),K.copy(fe(e.canvasX,e.canvasY)),Y.copy(K),r=e.canvasX,s=e.canvasY,this.interactionEnd(t),this.isDragging=!1,!0},this.handleMouseMove=function(t){return this.updateModifierState(t),this.isDragging?(z.x=.5*(t.normalizedX+1),z.y=1-.5*(t.normalizedY+1),j.set(t.canvasX,t.canvasY),K.copy(fe(t.canvasX,t.canvasY)),r=t.canvasX,s=t.canvasY,!0):(G.x=.5*(t.normalizedX+1),G.y=1-.5*(t.normalizedY+1),W.set(t.canvasX,t.canvasY),z.x=G.x,z.y=G.y,j.copy(W),r=t.canvasX,s=t.canvasY,t.target===e.canvas&&e.rolloverObject(r,s),!1)},this.handleBlur=e=>{this.resetKeys(),this.interactionEnd(V)},this._onPrefCursor=function(e){w=e}.bind(this)}r.GlobalManagerMixin.call(s.prototype)},18310:(e,t,i)=>{"use strict";i.r(t),i.d(t,{SelectionType:()=>n});var n={MIXED:1,REGULAR:2,OVERLAYED:3}},27579:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MultiModelSelector:()=>h,Selector:()=>c});var n=i(63430),r=i(18310),o=i(57480),s=i(83081),a=i(19556),l=i(72091);function c(e,t){var i=this;this.selectedObjectIds={},this.selectionCount=0,this.selectionMode=n.SelectionMode.LEAF_OBJECT,this.lockedNodes=[];var a={};function c(){return t.getData().instanceTree}function h(i){var n=c();if(a[i]>0)a[i]--,0==a[i]&&e.highlightObjectNode(t,i,!1);else if(a[i]<0)throw"Selection State machine broken. Negatively selected object!";n&&n.enumNodeChildren(i,(function(e){h(e)}),!1)}function u(i,n,o){var s=c();if(a[i])a[i]++;else{switch(o){default:case r.SelectionType.MIXED:e.highlightObjectNode(t,i,!0,n);break;case r.SelectionType.REGULAR:e.highlightObjectNode(t,i,!0,!0);break;case r.SelectionType.OVERLAYED:e.highlightObjectNode(t,i,!0,!1)}a[i]=1}s&&s.enumNodeChildren(i,(function(e){u(e,!0,o)}),!1)}function d(e){if(void 0!==e&&i.selectedObjectIds[e])return!0}function f(n,o){if(!i.isNodeSelectionLocked(n)){var s=c();if(o=o||r.SelectionType.MIXED,s){const r=function(){var n;const r="ifc"===(null===(n=t.getData())||void 0===n||null===(n=n.loadOptions)||void 0===n?void 0:n.fileExt),o=void 0!==e.api.prefs.getPrefFromLocalStorage(Autodesk.Viewing.Private.Prefs3D.SELECTION_MODE);return r&&!o?Autodesk.Viewing.SelectionMode.FIRST_OBJECT:i.selectionMode}();if(n=s.findNodeForSelection(n,r),!s.isNodeSelectable(n))return}d(n)||(i.selectedObjectIds[n]=o,i.selectionCount++,u(n,!1,o))}}function p(e){d(e)&&(h(e),i.selectedObjectIds[e]=0,i.selectionCount--)}this.getInstanceTree=c,this.hasSelection=function(){return i.selectionCount>0},this.getSelectionLength=function(){return i.selectionCount},this.getSelection=function(){var e=[],t=i.selectedObjectIds;for(var n in t)if(t[n]){var r=parseInt(n);e.push(r)}return e},this.isSelected=function(e){return d(e)},this.clearNodeSelection=function(e){return void 0!==e&&0!==this.selectionCount&&(h(e),delete i.selectedObjectIds[e],!0)},this.clearSelection=function(e){if(this.selectionCount>0){var t=i.selectedObjectIds;for(var n in t){var r=parseInt(n);void 0!==r&&h(r)}return i.selectedObjectIds={},i.selectionCount=0,!0}},this.deselectInvisible=function(){var n=!1,r=i.selectedObjectIds,o=e.visibilityManager;for(var s in r){var a=parseInt(s);a&&!o.isNodeVisible(t,a)&&(p(a),n=!0)}return n},this.toggleSelection=function(e,i){e||t.isLeaflet()?d(e)?p(e):f(e,i):s.logger.error("Attempting to select node 0.",(0,o.errorCodeString)(o.ErrorCodes.VIEWER_INTERNAL_ERROR))},this.setSelectionMode=function(e){this.clearSelection(!0),this.selectionMode=e},this.isNodeSelectionLocked=function(e){if(-1===e)return!1;var t=c();return t?t.isNodeSelectionLocked(e):-1!==i.lockedNodes.indexOf(e)},this.lockSelection=function(e,t){var n=c();function r(e,t){if(e&&-1!==e)if(t)-1===i.lockedNodes.indexOf(e)&&(i.lockedNodes.push(e),i.clearNodeSelection(e));else{const t=i.lockedNodes.indexOf(e);i.lockedNodes.splice(t,1)}}e=Array.isArray(e)?e:[e],n?e.forEach((function(e){n.enumNodeChildren(e,(function(e){n.lockNodeSelection(e,!1),r(e,t),t&&n.lockNodeSelection(e,t)}),!0)})):e.forEach((e=>{r(e,t)}))},this.setSelection=function(e,t){if(!function(e){if(i.selectionCount!==e.length)return!1;for(var t=0;t{s[t.remapDbId(e)]=i.selectedObjectIds[e]})),i.selectedObjectIds=s;for(o=0;o1&&s.logger.warn("This selection call does not yet support multiple models.")}function n(i){for(var n,r=[],o=0;o1&&s.logger.warn("Use getAggregateSelection instead of getSelection when there are multiple models in the scene."),t[0]?t[0].selector.getSelection():[]},this.getAggregateSelection=function(){for(var e=[],i=0;i{const t=e.selector.lockedNodes.slice();this.lockSelection(t,!1,e)}))},this.setSelection=function(e,r,o,s){if(!this.selectionDisabled){if(e&&0!==e.length){if(r)for(var a=0;a1&&void 0!==arguments[1])||arguments[1];if(!this.selectionDisabled){if(e&&0!==e.length)for(var i=0;i{"use strict";i.r(t),i.d(t,{ToolController:()=>a});var n=i(83081),r=i(19556),o=i(49930),s=i(26206);function a(e,t,i,s,l){this.setGlobalManager(t.globalManager),this.domElement=t.canvasWrap,this.selector=e.selector,this.autocam=i,this.lastClickX=-1,this.lastClickY=-1,this.scrollInputEnabled=!0,this.keyMapCmd=!0,this.propagateInputEventTypes=[];var c=-1!==navigator.userAgent.search("Mac OS"),h=-1!==navigator.userAgent.search("Firefox"),u=-1!==navigator.userAgent.search("Chrome"),d=-1!==navigator.userAgent.search("Safari")&&!u,f={},p={},m={},g=[],v=!1,y=-1,b=-1,x=!1,_=null,E=!1,S={},A=this;function w(e){return e.getPriority instanceof Function&&e.getPriority()||0}function T(e,i){return t.navigation.getUseLeftHandedInput()&&0===e||h&&1===e||c&&!d&&0===e&&i.ctrlKey}this.__registerToolByName=function(e,t){f[t]=e},this.registerTool=function(e,t){var i=e.getNames();if(!i||0===i.length)return n.logger.warn("Cannot register tool with no name."),!1;for(var r=!1,o=0;o{const i=e.getName();t?this.activateTool(i):this.deactivateTool(i)};m[i[o]]=t&&t instanceof Function?t:n,r=!0}return e.utilities=s,e.controller=this,e.register&&e.register(),r},this.deregisterTool=function(e){this.deactivateTool(e.getName());var t=e.getNames();if(!t||0===t.length)return!1;for(var i=t.length;--i>=0;)this.__deregisterToolName(t[i]);return e.deregister&&e.deregister(),e.utilities=null,e.controller=null,!0},this.__deregisterToolName=function(e){e in f&&(!function(e){for(var t=g.length;--t>=0;)g[t].activeName===e&&(f[e].deactivate(e),g.splice(t,1))}(e),delete f[e])},this.getTool=function(e){return f[e]},this.getActiveToolName=function(){var e=g.length;return e>0?g[e-1].activeName:"default"},this.getActiveTool=function(){var e=g.length;return e>0?g[e-1]:f.default},this.getActiveTools=function(){return g.slice()},this.isToolActivated=function(e){for(var t=0;t=0;)if(g[i].activeName===e){const n=f[e];return(!n.count||n.count<=1)&&(1!=n.count&&console.warn("Deactivating tool without activation: "+e),g.splice(i,1)),n.count--,n.deactivate(e),t.dispatchEvent({type:r.TOOL_CHANGE_EVENT,toolName:e,tool:n,active:!1}),!0}return n.logger.warn("deactivateTool not found: "+e),!1},this.getToolNames=function(){return Object.keys(f)},this.setDefaultTool=function(e){var t=this.getDefaultTool();return!(!e||e===t)&&(this.__registerToolByName(e,"default"),t&&t.deactivate("default"),e.activate("default"),!0)},this.getDefaultTool=function(){return f.default},this.setDefaultTool(l),this.setIsLocked=function(e){var t=v;return v=!!e,t},this.getIsLocked=function(){return v},this.__checkCursor=function(){for(var e=null,i=g.length;--i>=0;){var n=g[i];if(n.getCursor&&(e=n.getCursor()))break}e||(e="auto"),_!=e&&(t.canvas.style.cursor=e,_=e)},this.update=function(e){this.__checkCursor();var i=!1;s&&s.update()&&(i=!0);for(var n=g.length;--n>=0;){var r=g[n];r.update&&r.update(e)&&(i=!0)}if(t.navigation.getCamera().dirty?(t.navigation.updateCamera(),i=!0,this.cameraUpdated=!0):this.cameraUpdated=!1,i)t.navigation.updateCamera(),this.moveDelay=Date.now()+150;else if(0!==this.moveDelay){this.moveDelay-Date.now()>0?i=!0:this.moveDelay=0}return i},this.__clientToCanvasCoords=function(t,i,n){var r=e.getCanvasBoundingClientRect(),o=r.width,s=r.height,a=t.clientX-r.left,l=t.clientY-r.top;t.canvasX=a,t.canvasY=l,t.normalizedX=a/o*2-1,t.normalizedY=(s-l)/s*2-1,i&&i.set(a/o,l/s,0),n&&n.set(a,l)},this.__invokeStack=function(e,t,i){for(var n=g.length;--n>=0;){var r=g[n];if(r&&r[e]&&r[e](t,i))return!0}var o=this.getDefaultTool();return!(!o[e]||!o[e](t,i))},this.distributeEvent=function(e,t,i){return this.__invokeStack(e,t,i)},this.handleResize=function(){t.navigation.setScreenViewport(t.container.getBoundingClientRect());for(var e=g.length;--e>=0;){var i=g[e];i.handleResize&&i.handleResize()}},this.handleSingleClick=function(e){var t=this.applyButtonMappings(e);this.lastClickX=e.clientX,this.lastClickY=e.clientY,this.__invokeStack("handleSingleClick",e,t)&&this.__onEventHandled(e)},this.handleDoubleClick=function(e){var t=this.applyButtonMappings(e);this.__invokeStack("handleDoubleClick",e,t)&&this.__onEventHandled(e)},this.handleSingleTap=function(e){this.lastClickX=e.canvasX,this.lastClickY=e.canvasY,this.__invokeStack("handleSingleTap",e)&&this.__onEventHandled(e)},this.handleDoubleTap=function(e){this.lastClickX=e.canvasX,this.lastClickY=e.canvasY,this.__invokeStack("handleDoubleTap",e)&&this.__onEventHandled(e)},this.handleWheelInput=function(e,t){this.__invokeStack("handleWheelInput",e,t)&&this.__onEventHandled(t)},this.applyButtonMappings=function(e){var i=e.button;return"buttons"in e&&(e.firefoxSpoof?i=0:!x||1&e.buttons?2===i&&1&e.buttons&&(i=0,e.firefoxSpoof=x=!0):(e.firefoxSpoof=!0,x=!1,i=0)),t.navigation.getUseLeftHandedInput()&&(i=0===i?2:2===i?0:i),i},this.applyKeyMappings=function(e){switch(e.keyCode){case o.KeyCode.EQUALSMOZ:return o.KeyCode.EQUALS;case o.KeyCode.DASHMOZNEW:case o.KeyCode.DASHMOZ:return o.KeyCode.DASH}return e.keyCode},this.handleKeyDown=function(e){let t;!this.keyMapCmd||!c||"MetaLeft"!=e.code&&"MetaRight"!=e.code?(t=this.applyKeyMappings(e),t&&this.__invokeStack("handleKeyDown",e,t)&&this.__onEventHandled(e)):this.handleCmdKeyEvent(e,"keydown")},this.handleKeyUp=function(e){let t;!this.keyMapCmd||!c||"MetaLeft"!=e.code&&"MetaRight"!=e.code?(t=this.applyKeyMappings(e),t&&this.__invokeStack("handleKeyUp",e,t)&&this.__onEventHandled(e)):this.handleCmdKeyEvent(e,"keyup")},this.handleCmdKeyEvent=function(e,t){this.__onEventHandled(e);var i=new KeyboardEvent(t,{key:"Control",code:"MetaLeft"==e.code?"ControlLeft":"ControlRight",location:e.location,ctrlKey:!0,metaKey:!1,repeat:e.repeat,isComposing:e.isComposing,charCode:0,keyCode:17,which:17});window.dispatchEvent(i)},this.handleButtonDown=function(e,t){this.__invokeStack("handleButtonDown",e,t)&&this.__onEventHandled(e)},this.handleButtonUp=function(e,t){this.__invokeStack("handleButtonUp",e,t)&&this.__onEventHandled(e)},this.handleMouseMove=function(e){this.__invokeStack("handleMouseMove",e)&&this.__onEventHandled(e)},this.handleBlur=function(e){this.__invokeStack("handleBlur",e)&&this.__onEventHandled(e)},this.keydown=function(e){if(!a._lastTouchedElement||A.domElement.contains(a._lastTouchedElement)){var t=A.getDocument();if(!(t.activeElement instanceof HTMLInputElement||t.activeElement instanceof HTMLTextAreaElement||t.activeElement instanceof HTMLSelectElement)){if(t.activeElement){var i=t.activeElement.getAttribute("contenteditable");if("true"===i||""===i)return}A.handleKeyDown(e)}}},this.keyup=function(e){A.handleKeyUp(e)},this.mousedown=function(e){var t=A.getDocument();t.activeElement&&t.activeElement.blur&&t.activeElement.blur(),A.__clientToCanvasCoords(e);var i=A.applyButtonMappings(e);if(A.handleButtonDown(e,i),y=e.canvasX,b=e.canvasY,T(i,e)){var n=S,r=void 0!==n.time&&e.timeStamp-n.time<500,o=void 0!==n.x&&void 0!==n.y&&Math.abs(n.x-e.canvasX)<=2&&Math.abs(n.y-e.canvasY)<=2;(!r||!o||n.clickCount&&2<=n.clickCount)&&(n.clickCount=0),n.clickCount?1===n.clickCount&&(n.clickCount=2):(n.clickCount=1,n.x=e.canvasX,n.y=e.canvasY,n.time=e.timeStamp)}A.addDocumentEventListener("mouseup",(function e(t){A.applyButtonMappings(t)===i&&(A.removeDocumentEventListener("mouseup",e),A.mouseup(t))}),!1),A.registerWindowMouseMove()},this.mousemove=function(e){A.__clientToCanvasCoords(e);var t=y-e.canvasX,i=b-e.canvasY;(Math.abs(t)>2||Math.abs(i)>2)&&(y=-1,b=-1),A.handleMouseMove(e)},this.mouseup=function(e){A.__clientToCanvasCoords(e);var t=A.applyButtonMappings(e);A.handleButtonUp(e,t);var i=y-e.canvasX,n=b-e.canvasY;if(y=-1,b=-1,Math.abs(i)<=2&&Math.abs(n)<=2&&A.handleSingleClick(e),T(t,e)){var r=S;2===r.clickCount&&(A.handleDoubleClick(e),r.clickCount=0,r.x=void 0,r.y=void 0,r.time=void 0)}A.unregisterWindowMouseMove()},this.doubleclick=function(e){A.__clientToCanvasCoords(e),y=e.canvasX,b=e.canvasY,A.handleDoubleClick(e)},this.mousewheel=function(e){if(A.scrollInputEnabled){A.__clientToCanvasCoords(e);var t=0;if(e.wheelDelta)t=e.wheelDelta/40;else if(e.detail)t=-e.detail;else if(e.deltaY){var i=h?1:40;t=-e.deltaY/i}A.handleWheelInput(t,e)}},this.blur=function(e){A.handleBlur(e)},this.mouseover=function(e){a._lastTouchedElement=e.target},this.registerWindowMouseMove=function(){A.addWindowEventListener("mousemove",A.mousemove),A.addWindowEventListener("mouseover",A.mouseover),A.domElement.removeEventListener("mousemove",A.mousemove),A.domElement.removeEventListener("mouseover",A.mouseover)},this.unregisterWindowMouseMove=function(){A.removeWindowEventListener("mousemove",A.mousemove),A.removeWindowEventListener("mouseover",A.mouseover),A.domElement.addEventListener("mousemove",A.mousemove),A.domElement.addEventListener("mouseover",A.mouseover)},this.enableMouseButtons=function(e){e&&!E?(this.domElement.addEventListener("mousedown",this.mousedown),this.domElement.addEventListener("dblclick",this.doubleclick),this.domElement.addEventListener("mousemove",this.mousemove),this.domElement.addEventListener("mouseover",this.mouseover)):!e&&E&&(this.domElement.removeEventListener("mousedown",this.mousedown),this.domElement.removeEventListener("dblclick",this.doubleclick),this.domElement.removeEventListener("mousemove",this.mousemove),this.domElement.removeEventListener("mouseover",this.mouseover));var t=E;return E=e,t},this.domElement.addEventListener("mousewheel",this.mousewheel,!1),this.domElement.addEventListener("DOMMouseScroll",this.mousewheel,!1),A.addWindowEventListener("keydown",this.keydown,!1),A.addWindowEventListener("keyup",this.keyup,!1),A.addWindowEventListener("blur",this.blur,!1),this.uninitialize=function(){for(this.domElement.removeEventListener("mousemove",this.mousemove),this.domElement.removeEventListener("mouseover",this.mouseover),this.removeWindowEventListener("mousemove",this.mousemove),this.removeWindowEventListener("mouseover",this.mouseover),this.removeWindowEventListener("keydown",this.keydown),this.removeWindowEventListener("keyup",this.keyup),this.removeWindowEventListener("blur",this.blur),this.domElement=null,this.selector=null,this.autocam=null,v=!1;g.length>0;)this.deactivateTool(g[g.length-1].activeName);f=null,g=null,A=null,s=null,t=null,e=null,a._lastTouchedElement=null},this.set2DMode=function(){},this.setAutocam=function(){},this.syncCamera=function(){},this.recordHomeView=function(){var e=t.navigation.getCamera();i.sync(e),i.setHomeViewFrom(e)},this.setMouseWheelInputEnabled=function(e){this.scrollInputEnabled=e},this.setModalityMap=function(e){p={};for(let t in e)this.setToolModality(t,e[t])},this.getModalityMap=function(){return Object.assign({},p)},this.getToolModality=function(e){return p[e]},this.setToolModality=function(e,t){e?t?p[e]=t:n.logger.warn("Cannot add tool modality. Missing tool map."):n.logger.warn("Cannot add tool modality. Missing tool name.")},this.__onEventHandled=function(e){this.propagateInputEventTypes.includes(e.type)||(e.preventDefault(),e.stopPropagation())}}Object.defineProperty(a,"_lastTouchedElement",{value:null,writable:!0}),s.GlobalManagerMixin.call(a.prototype)},74481:(e,t,i)=>{"use strict";function n(){this.names=["unnamed"],this.getNames=function(){return this.names},this.getName=function(){return this.names[0]},this.getPriority=function(){return 0},this.register=function(){},this.deregister=function(){},this.activate=function(e,t){},this.deactivate=function(e){},this.update=function(e){return!1},this.handleSingleClick=function(e,t){return!1},this.handleDoubleClick=function(e,t){return!1},this.handleSingleTap=function(e){return!1},this.handleDoubleTap=function(e){return!1},this.handleKeyDown=function(e,t){return!1},this.handleKeyUp=function(e,t){return!1},this.handleWheelInput=function(e){return!1},this.handleButtonDown=function(e,t){return!1},this.handleButtonUp=function(e,t){return!1},this.handleMouseMove=function(e){return!1},this.handleGesture=function(e){return!1},this.handleBlur=function(e){return!1},this.handleResize=function(){}}i.r(t),i.d(t,{ToolInterface:()=>n})},63841:(e,t,i)=>{"use strict";i.r(t),i.d(t,{UnifiedCamera:()=>o});var n=i(72091),r=i(83081);class o extends n.Camera{constructor(e,t){super(),this.fov=45,this.near=.1,this.far=1e5,this.aspect=e/t,this.left=-e/2,this.right=e/2,this.top=t/2,this.bottom=-t/2,this.clientWidth=e,this.clientHeight=t,this.target=new n.Vector3(0,0,-1),this.worldup=new n.Vector3(0,1,0),this.viewInverseEnv=new n.Matrix4,this.projScreenMatrix=new n.Matrix4,this.orthographicCamera=new n.OrthographicCamera(this.left,this.right,this.top,this.bottom,this.near,this.far),this.perspectiveCamera=new n.PerspectiveCamera(this.fov,this.aspect,this.near,this.far),this.zoom=1,this.globalOffset=new n.Vector3,this.toPerspective()}get isOrthographicCamera(){return!this.isPerspective}clone(e){return e=e||new o(2*this.right,2*this.top),n.Camera.prototype.clone.call(this,e),e.position.copy(this.position),e.up.copy(this.up),this.target&&(e.target=this.target.clone()),this.worldup&&(e.worldup=this.worldup.clone()),this.worldUpTransform&&(e.worldUpTransform=this.worldUpTransform.clone()),e.left=this.left,e.right=this.right,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e.fov=this.fov,e.aspect=this.aspect,e.zoom=this.zoom,e.clientWidth=this.clientWidth,e.clientHeight=this.clientHeight,e.isPerspective=this.isPerspective,e.globalOffset=this.globalOffset.clone(),e.orthoScale=this.orthoScale,e.updateProjectionMatrix(),e}__computeFovPosition(e){if(Math.abs(this.fov-e)<=1e-4)return this.position.clone();var t,i,r=this.target.clone().sub(this.position),o=r.clone().normalize(),s=n.Math.degToRad(this.fov),a=n.Math.degToRad(e),l=Math.tan(.5*s)/Math.tan(.5*a);this.pivot?(t=(new n.Plane).setFromNormalAndCoplanarPoint(o.clone().negate(),this.pivot).distanceToPoint(this.position),i=o.clone().multiplyScalar(t).add(this.position)):(t=r.length(),i=this.target);t*=l;var c=o.multiplyScalar(-t);return i.clone().add(c)}toPerspective(){!this.isPerspective&&this.saveFov&&(this.position.copy(this.__computeFovPosition(this.saveFov)),this.fov=this.saveFov),this.perspectiveCamera.aspect=this.aspect,this.perspectiveCamera.near=this.near,this.perspectiveCamera.far=this.far,this.perspectiveCamera.fov=this.fov/this.zoom,this.perspectiveCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspectiveCamera.projectionMatrix,this.isPerspective=!0}toOrthographic(){if(this.isPerspective){this.saveFov=this.fov;var e=o.ORTHO_FOV;this.position.copy(this.__computeFovPosition(e)),this.fov=e}this.orthoScale=this.target.clone().sub(this.position).length();var t=.5*this.orthoScale,i=t*this.aspect;this.left=this.orthographicCamera.left=-i,this.right=this.orthographicCamera.right=i,this.top=this.orthographicCamera.top=t,this.bottom=this.orthographicCamera.bottom=-t,this.orthographicCamera.near=this.near,this.orthographicCamera.far=this.far,this.orthographicCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthographicCamera.projectionMatrix,this.isPerspective=!1}updateProjectionMatrix(){this.isPerspective?this.toPerspective():this.toOrthographic()}setSize(e,t){this.aspect=e/t,this.left=-e/2,this.right=e/2,this.top=t/2,this.bottom=-t/2}setFov(e){this.fov=e,this.updateProjectionMatrix()}setLens(e,t){void 0===t&&(t=24);var i=2*n.Math.radToDeg(Math.atan(t/(2*e)));return this.setFov(i),i}setViewFromBox(e,t){o.getViewParamsFromBox(e,t,this.aspect,this.up,this.fov,this),this.updateCameraMatrices()}updateCameraMatrices(){this.lookAt(this.target),this.updateProjectionMatrix(),this.updateMatrixWorld()}setView(e){if(e.position&&this.position.copy(e.position),e.target&&this.target.copy(e.target),e.up&&this.up.copy(e.up),void 0!==e.isPerspective&&(this.isPerspective=e.isPerspective),void 0!==e.orthoScale){this.orthoScale=e.orthoScale;const t=this.target.clone().sub(this.position);this.isPerspective||t.length()===this.orthoScale||(t.normalize().multiplyScalar(this.orthoScale),this.target.copy(t.add(this.position)))}this.updateCameraMatrices()}pixelsPerUnitAtDistance(e){if(!this.isPerspective)return this.clientHeight/this.orthoScale;const t=2*e*Math.tan(n.Math.degToRad(.5*this.fov));return this.clientHeight/t}UnifpixelsPerUnitAtPoint(e){const t=this.position.distanceTo(e);return this.pixelsPerUnitAtDistance(t)}setGlobalOffset(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];var i;(e!==this.position&&e!==this.target&&e!==this.pivot||(e=e.clone()),t)&&(this.position.add(this.globalOffset).sub(e),this.target.add(this.globalOffset).sub(e),null===(i=this.pivot)||void 0===i||i.add(this.globalOffset).sub(e));this.globalOffset.copy(e)}getGlobalPosition(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:new n.Vector3).copy(this.position).add(this.globalOffset)}viewportToRay(e,t){e.z=-1;var i=new n.Vector3(e.x,e.y,1);return e=e.unproject(this),(i=i.unproject(this)).sub(e).normalize(),t||(t=new n.Ray),t.set(this.isPerspective?this.position:e,i),t}transformCurrentView(e){o.transformViewParams(this,e)}}o.ORTHO_FOV=2*Math.atan(.5)*180/Math.PI,o.getViewParamsFromBox=function(e,t,i,r,o,s){var a=s||{},l=e.getSize(new n.Vector3);if(a.target=e.getCenter(new n.Vector3),a.position||(a.position=new n.Vector3),a.up||(a.up=new n.Vector3),t){a.isPerspective=!1;var c=l.x/l.y,h=i;a.orthoScale=h>c?l.y:l.x/h,a.up.set(0,1,0),a.position.copy(a.target),a.position.z+=a.orthoScale,a.target.y+=1e-6*l.y}else a.isPerspective=!0,a.fov=o,a.up.copy(r),a.position.copy(a.target),a.position.z+=1.5*Math.max(l.x,l.y,l.z);return a},o.copyViewParams=function(e,t){return(t=t||{}).position=(t.position||new n.Vector3).copy(e.position),t.target=(t.target||new n.Vector3).copy(e.target),t.up=(t.up||new n.Vector3).copy(e.up),t.aspect=e.aspect,t.fov=e.fov,t.isPerspective=e.isPerspective,t.orthoScale=e.orthoScale,t},o.transformViewParams=function(e,t){var i;e.position.applyMatrix4(t),e.target.applyMatrix4(t),null===(i=e.pivot)||void 0===i||i.applyMatrix4(t),e.up.transformDirection(t)},o.adjustOrthoCamera=function(e,t){if(!e.isPerspective){var i=t.getSize(new n.Vector3),o=e.target.clone().sub(e.position),s=o.length();if(i>0&&s>1e3*i.length()){var a=e.position.distanceTo(t.getCenter(new n.Vector3));e.target.copy(e.position).add(o.normalize().multiplyScalar(a))}else{if(Math.abs(s-e.orthoScale)/s>1e-5)r.logger.warn("Ortho scale does not match eye-target distance. One of them is likely wrong, but which one?"),!(0===e.fov&&1===e.orthoScale)&&e.position.copy(e.target).add(o.normalize().multiplyScalar(-e.orthoScale))}}},o.prototype.isUnifiedCamera=!0},40723:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ViewingUtilities:()=>r});var n=i(72091);function r(e,t,i){this.autocam=t,this.viewerImpl=e,this.setGlobalManager(this.viewerImpl.globalManager);var r=i.getCamera(),o={},s={};var a=new function(e){var t=.6,i=0,r=new n.SphereGeometry(1),o=new n.MeshPhongMaterial({color:32512,opacity:t,transparent:!0}),s=new n.Mesh(r,o),a=e,l=1;a.createOverlayScene("pivot"),s.visible=!1,this.shown=function(){return s.visible},this.show=function(e,n,r){s.scale.x=n*l,s.scale.y=n*l,s.scale.z=n*l,s.position.set(e.x,e.y,e.z),o.opacity=t,s.visible=!0,a.addOverlay("pivot",s),a.invalidate(!1,!1,!0),i=r?Date.now()+500:0},this.hide=function(){s.visible&&(s.visible=!1,a.removeOverlay("pivot",s),a.invalidate(!1,!1,!0),i=0)},this.fade=function(){if(i>0){var e=i-Date.now();if(e<=0)return this.hide(),!0;var n=e/500*t;return o.opacity=n,!0}return!1},this.fading=function(){return i>0},this.setSize=function(e){l=e},this.setColor=function(e,i){o.color=new n.Color(e),void 0!==i&&(t=i,o.opacity=t)}}(this.viewerImpl);this.transitionView=function(e,n,o,s,a,l,c){a=a||i.getWorldUpVector();var h=l?function(e,t,i){var n=t.clone().sub(e);if(0===n.lengthSq())return n.copy(i);var r=n.clone().cross(i);return 0===r.lengthSq()&&(i.z>i.y?n.y-=1e-4:n.z-=1e-4,r.crossVectors(n,i)),r.cross(n).normalize()}(e,n,a):s;h||(h=r.up);var u={position:e,center:n,pivot:c=c||n,fov:o,up:h,worldUp:a,isOrtho:!1===r.isPerspective};t.goToView(u)},this.goHome=function(){this.viewerImpl.track({name:"navigation/home",aggregate:"count"}),t.goHome()},this.getHitPoint=function(e,t){var n=this.viewerImpl.hitTestViewport(i.screenToViewport(e,t),!1);return n?n.intersectPoint:null},this.activatePivot=function(e){if(this.viewerImpl.model&&!this.viewerImpl.model.is2d()){var t=r.isPerspective?i.getPivotPlaneDistance():i.getEyeVector().length(),o=i.getVerticalFov(),s=2*t*Math.tan(n.Math.degToRad(.5*o)),l=i.getScreenViewport(),c=this.getWindow().devicePixelRatio||1,h=5*s/(l.height*c);a.show(i.getPivotPoint(),h,e)}},this.pivotActive=function(e,t){t=t||!1,(e=e&&!i.getIs2D())||!a.shown()?e&&this.activatePivot(t):a.hide()},this.pivotUpdate=function(){a.shown()&&a.fade()&&this.viewerImpl.invalidate(!1,!1,!0)},this.setPivotPoint=function(e,t,n){i.setPivotPoint(e),t||i.setTarget(e),n&&i.setPivotSetFlag(!0),this.setTemporaryPivot(null),i.getIs2D()||a.shown()&&this.activatePivot(a.fading())},this.savePivot=function(e){e||(e="default"),o[e]=i.getPivotPoint(),s[e]=i.getPivotSetFlag()},this.restorePivot=function(e){if(e||(e="default"),o[e]){var t=s[e];this.setPivotPoint(o[e],!0,t),t||i.setPivotSetFlag(!1),delete o[e],delete s[e]}},this.setTemporaryPivot=function(e){if(e){var t=i.getPivotPoint(),n=i.getPivotSetFlag();this.setPivotPoint(e,!0,n),o.TEMP=t,s.TEMP=n}else delete o.TEMP,delete s.TEMP},this.removeTemporaryPivot=function(){this.restorePivot("TEMP")},this.setPivotSize=function(e){a.setSize(e)},this.setPivotColor=function(e,t){a.setColor(e,t)},this.getBoundingBox=function(e){return this.viewerImpl.getFitBounds(e)},this.fitToView=function(e){this.viewerImpl.track({name:"navigation/fit",aggregate:"count"}),this.viewerImpl.fitToView(this.viewerImpl.selector.getAggregateSelection(),e),this.activatePivot(!0)},this.update=function(){i.getRequestFitToView()&&!i.getTransitionActive()&&(i.setRequestFitToView(!1),this.fitToView()),i.getRequestHomeView()&&!i.getTransitionActive()&&(i.setRequestHomeView(!1),this.goHome());var e=i.getRequestTransition();return e&&!i.getTransitionActive()&&(i.setRequestTransition(!1),this.transitionView(e.position,e.coi,e.fov,e.up,e.worldUp,e.reorient,e.pivot)),!1}}i(26206).GlobalManagerMixin.call(r.prototype)},13843:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MultiModelVisibilityManager:()=>s,VisibilityManager:()=>o});var n=i(83081),r=i(19556);function o(e,t){this.viewerImpl=e,this.model=t,this.isolatedNodes=new Set,this.hiddenNodes=new Set}function s(e){this.viewerImpl=e,this.models=[]}o.prototype.getInstanceTree=function(){return this.model?this.model.getData().instanceTree:null},o.prototype.getIsolatedNodes=function(){return Array.from(this.isolatedNodes)},o.prototype.getHiddenNodes=function(){return Array.from(this.hiddenNodes)},o.prototype.setAllVisibility=function(e){var t=this.model?this.model.getRootId():null;t&&this.setVisibilityOnNode(t,e),this.model.getData().is2d&&this.model.setAllVisibility(e)},o.prototype.isNodeVisible=function(e){var t=this.getInstanceTree();return t?!t.isNodeHidden(e):!this.hiddenNodes.has(e)&&(this.isolatedNodes.size||!this.isolatedNodes.has(e))},o.prototype.isolate=function(e){var t=this.getInstanceTree(),i=t?t.getRootId():null,n="number"==typeof e&&e===i||"object"==typeof e&&e.dbId===i;e&&!n?this.isolateMultiple(Array.isArray(e)?e:[e]):this.isolateNone()},o.prototype.isolateNone=function(){this.model.setAllVisibility(!0),this.viewerImpl.sceneUpdated(!0),this.setAllVisibility(!0),this.hiddenNodes=new Set,this.isolatedNodes=new Set,this.viewerImpl.invalidate(!0)},o.prototype.isolateMultiple=function(e){if(e&&0!=e.length){this.model.getData().is2d||(this.model.setAllVisibility(!1),this.viewerImpl.sceneUpdated(!0)),this.setAllVisibility(!1),this.isolatedNodes=new Set(e),this.hiddenNodes=new Set;const i=e.length-1;for(var t=0;t1&&void 0!==arguments[1])||arguments[1];var i;if(Array.isArray(e)){const t=e.length-1;for(var n=0;n0&&(i={type:r.HIDE_EVENT,nodeIdArray:e,model:this.model})}else this.setVisibilityOnNode(e,!1),i={type:r.HIDE_EVENT,nodeIdArray:[e],model:this.model};i&&t&&this.viewerImpl.api.dispatchEvent(i)},o.prototype.show=function(e){var t;if(Array.isArray(e)){const n=e.length-1;for(var i=0;i0&&(t={type:r.SHOW_EVENT,nodeIdArray:e,model:this.model})}else this.setVisibilityOnNode(e,!0),t={type:r.SHOW_EVENT,nodeIdArray:[e],model:this.model};t&&this.viewerImpl.api.dispatchEvent(t)},o.prototype.toggleVisibility=function(e){var t=this.getInstanceTree();if(t){var i=t.isNodeHidden(e);this.setVisibilityOnNode(e,i);var n={type:i?r.SHOW_EVENT:r.HIDE_EVENT,nodeIdArray:[e],model:this.model};this.viewerImpl.api.dispatchEvent(n)}},o.prototype.setVisibilityOnNode=function(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];var r,o=this.viewerImpl,s=this.model,a=this.getInstanceTree(),l=!t,c=s.getData().is2d;a?a.enumNodeChildren(e,(function(e){var i=a.isNodeVisibleLocked(e);if(a.setNodeHidden(e,l&&!i),c){var n=s.reverseMapDbIdFor2D(e);s.getFragmentList().setObject2DGhosted(n,!t&&!i)}else a.enumNodeFragments(e,(function(e){s.setVisibility(e,t||i)}),!1)}),n):c?s.isLeaflet()?s.setVisibility(null,t):null===(r=s.getFragmentList())||void 0===r||r.setObject2DGhosted(e,!t):s.setVisibility(e,t);o.sceneUpdated(!0,!1,i),this.updateNodeVisibilityTracking(e,t)},o.prototype.updateNodeVisibilityTracking=function(e,t){this.isolatedNodes.size>0?t?this.isolatedNodes.add(e):t||(this.isolatedNodes.delete(e),0===this.isolatedNodes.size&&(this.hiddenNodes=new Set([this.model.getRootId()]))):t?t&&this.hiddenNodes.delete(e):this.hiddenNodes.add(e);var i=this.getInstanceTree();i&&i.root&&i.root.dbId===e&&(t?(this.isolatedNodes=new Set,this.hiddenNodes=new Set):(this.isolatedNodes=new Set,this.hiddenNodes=new Set([e])))},o.prototype.toggleNodeVisibleLocked=function(e){var t=this.getInstanceTree().isNodeVisbileLocked(e);this.lockNodeVisible(e,!t)},o.prototype.lockNodeVisible=function(e,t){var i=this.viewerImpl,n=this.model,r=this.getInstanceTree(),o=n.getData().is2d;if(r){var s=e=>{r.enumNodeChildren(e,(function(e){if(r.lockNodeVisible(e,t),t)if(r.setNodeHidden(e,!1),o){var i=n.reverseMapDbIdFor2D(e);n.getFragmentList().setObject2DGhosted(i,!1)}else r.enumNodeFragments(e,(function(e){n.setVisibility(e,!0)}),!1)}),!0),t&&(i.sceneUpdated(!0),this.updateNodeVisibilityTracking(e,t))};Array.isArray(e)?e.forEach(s):s(e)}},o.prototype.isNodeVisibleLocked=function(e){var t=this.getInstanceTree();return t&&t.isNodeVisibleLocked(e)},o.prototype.setNodeOff=function(e,t,i,n){var r=this.viewerImpl,o=this.model,s=this.getInstanceTree(),a=o.getData().is2d;if(!s)return a?o.getFragmentList().setObject2DVisible(e,!t):o.getFragmentList().setFragOff(e,t),void r.sceneUpdated(!0);if(i&&n){let e,r;if(a)for(let n=0;n1&&n.logger.warn("This selection call does not yet support multiple models.")},s.prototype.getAggregateIsolatedNodes=function(){for(var e=[],t=this.models,i=0;ie.model==t));if(n){let e=n.ids||n.selection;"number"==typeof e&&(e=[e]),t.visibilityManager.isolate(e)}else i&&t.visibilityManager.setAllVisibility(!1)}}else for(let e of this.models)e.visibilityManager.isolateNone();!function(e){var t=e.getAggregateIsolatedNodes();if(1===e.models.length){var i={type:r.ISOLATE_EVENT,nodeIdArray:t.length?t[0].ids:[],model:e.models[0]};e.viewerImpl.api.dispatchEvent(i)}i={type:r.AGGREGATE_ISOLATION_CHANGED_EVENT,isolation:t};e.viewerImpl.api.dispatchEvent(i)}(this)},s.prototype.hide=function(e,t){t||(this.warn(),t=this.models[0]),t.visibilityManager.hide(e)},s.prototype.aggregateHide=function(e){if(e&&0!==e.length){for(var t=0;t3&&void 0!==arguments[3]&&arguments[3],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];i||(this.warn(),i=this.models[0]),i.visibilityManager.setVisibilityOnNode(e,t,n,r)},s.prototype.toggleVisibleLocked=function(e,t){t||(this.warn(),t=this.models[0]),t.visibilityManager.toggleVisibleLocked(e)},s.prototype.lockNodeVisible=function(e,t,i){i||(this.warn(),i=this.models[0]),i.visibilityManager.lockNodeVisible(e,t)},s.prototype.isNodeVisibleLocked=function(e,t){return t||(this.warn(),t=this.models[0]),t.visibilityManager.isNodeVisibleLocked(e,t)},s.prototype.setNodeOff=function(e,t,i,n,r){i||(this.warn(),i=this.models[0]),i.visibilityManager.setNodeOff(e,t,n,r)}},60687:(e,t,i)=>{"use strict";i.r(t),i.d(t,{WorldUpTool:()=>o});var n=i(72091),r=i(19556);function o(e,t){var i,o=t.navigation,s=o.getCamera(),a=["worldup"],l=this,c=(i=new n.Vector3,function(e,t,r,o){var s=new n.Vector3(e,t,r),a=o.dot(s);return i.copy(o),i.multiplyScalar(a),s.sub(i)});var h=2*Math.PI,u=.001,d=1e-5,f=!1,p=!1,m=!1,g=new function(e,t){var i=2*Math.tan(n.Math.degToRad(15)),r=new n.MeshPhongMaterial({color:12303291,opacity:.5,transparent:!0,depthTest:!1,depthWrite:!1}),s=new n.Vector3,a=new n.Vector3,l=new n.Quaternion,u=new n.PerspectiveCamera(30,t.aspect,t.near,t.far),f=t,p=1,m=1,g=null,v=null,y=null,b=null,x=null,_=null,E=null,S=null,A=null,w=new Array(6),T=0,M=!1,C=!0,P=0,D=5*Math.PI/180,L=7*Math.PI/180,I=1,R=1e3,O=.1;function N(e,t){var i=Math.abs(e-t);return i>h?i:Math.min(h-i,i)}function F(e,t){var i=V(e);return i.distanceToSquared(t)h?e:e<=0?e+Math.PI:e-Math.PI}function B(e,t,i){var n,r=e.clone().normalize(),o=new Array(3),s=new Array(6);o[0]=c(1,0,0,r),o[1]=c(0,1,0,r),o[2]=c(0,0,1,r);var h=t.clone().cross(r).normalize();for(n=0;n<3;++n){var u=o[n];s[n]=u.length(),s[n]=0){var t=e>=3?-1:1;0===(e%=3)&&(s.x=t),1===e&&(s.y=t),2===e&&(s.z=t)}return M&&s.multiplyScalar(-1),s}function G(e,t){for(var i=N(w[0],e),n=0,r=1;r<6;++r){var o=N(w[r],e);oMath.PI?T-=h:T<=-Math.PI&&(T=h+T);var t=function(){if(!C){var e=G(T,D);if(e>=0)return 0,C=!0,T=w[e],V(e)}return!1}();if(t)P=T,z(t);else if(function(){if(C){if(G(T,L)<0)return C=!1,!0;0}return!1}()){H(T-P),P=0}else{if(C)return!1;H(e)}return!0}e.createOverlayScene("roll",null,null,u),this.updateRollCamera=function(e,t){u.position.copy(f.position),u.quaternion.copy(f.quaternion),u.up.copy(f.up),u.aspect=f.aspect,e&&t&&(u.near=t-e,u.far=t+e),u.updateProjectionMatrix()},this.isSnapped=function(){return C},this.resize=function(){var e=I*i,t=e*f.aspect,n=(f.aspect<1?t:e)*m;_.scale.x=n,_.scale.y=n,_.scale.z=n},this.start=function(t,i){this.updateHUD(t,i),e.addOverlay("roll",_)},this.updateHUD=function(e,t){g=e,t<.35?t=.35:t>.8&&(t=.8),m=t,p=.8/t;var n=s.copy(e).sub(f.position),r=(I=n.length())*i,a=r*f.aspect,l=(f.aspect<1?a:r)*t;this.updateRollCamera(l,I);var c=o.getWorldUpVector(),h=o.getCameraUpVector();k(l,e,n,c,h),T=0,P=0;var u=c.dot(h);M=u<0,C=j(c,h)},this.handleRoll=function(e,t,i){if(this.updateRollCamera(),j(o.getWorldUpVector(),o.getCameraUpVector()),0!==e||0!==t){var n=i.x-e-.5,r=i.y-t-.5,s=i.x-.5,a=i.y-.5;return q(Math.atan2(a,s)-Math.atan2(r,n))}return!1},this.handleRollTouch=function(e){this.updateRollCamera(),j(o.getWorldUpVector(),o.getCameraUpVector());var t=e-T;return Math.abs(t)>.001&&q(t)},this.end=function(){e.removeOverlay("roll",_)}}(e,s),v=new n.Vector3,y=new n.Vector3,b=new n.Vector3,x=null,_=0;this.getNames=function(){return a},this.getName=function(){return a[0]},this.activate=function(e){t.addEventListener(r.CAMERA_CHANGE_EVENT,this.handleCameraChange),m=!1},this.deactivate=function(e){g.end(),t.removeEventListener(r.CAMERA_CHANGE_EVENT,this.handleCameraChange),this.utilities.restorePivot(),x=null,f=!1,m=!1},this.getCursor=function(){return"auto"},this.getMotionDelta=function(e){var t=y.x-v.x,i=y.y-v.y,n=y.z-v.z;Math.abs(t){"use strict";i.r(t),i.d(t,{Autocam:()=>h});var n=i(72091),r=i(38842),o=i(26206),s=i(35922);const a=Number.MIN_VALUE||3e-308,l=1e-5;function c(e){const t=1e-12;Math.abs(e.x)0?1:-1):Math.abs(e.y)0?1:-1,0,0):Math.abs(e.z)0?1:-1,0)}function h(e,t,i){var o=this,h=null,u=!1;this.cube=null,this.camera=e,this.renderer="WEBGL",this.startState={},this.navApi=t,this.orthographicFaces=!1,this.canvas=i,this.cameraChangedCallback=function(){},this.pivotDisplayCallback=function(){},this.transitionCompletedCallback=function(){};var d,f=Date.now(),p=!1;function m(t){u=!0,e.target.copy(o.center),e.pivot.copy(o.pivot),e.worldup?e.worldup.copy(o.sceneUpDirection):e.up.copy(o.sceneUpDirection),o.cameraChangedCallback(t),u=!1}function g(e,t){e.position.copy(e.globalPosition).sub(t),e.center.copy(e.globalCenter).sub(t),e.pivot.copy(e.globalPivot).sub(t)}this.recordTime=!0,this.dtor=function(){this.cube=null,this.cameraChangedCallback=null,this.pivotDisplayCallback=null,this.transitionCompletedCallback=null,this.canvas=null,this.recordTime=!1,this.afAnimateTransition&&cancelAnimationFrame(this.afAnimateTransition)},this.registerCallbackCameraChanged=function(e){this.cameraChangedCallback=e},this.registerCallbackPivotDisplay=function(e){this.pivotDisplayCallback=e},this.registerCallbackTransitionCompleted=function(e){this.transitionCompletedCallback=e},this.showPivot=function(e){this.pivotDisplayCallback(e)},this.setWorldUpVector=function(e){u||e&&e.lengthSq()>0&&!e.normalize().equals(this.sceneUpDirection)&&(this.sceneUpDirection.copy(e),this.sceneFrontDirection.copy(this.getWorldFrontVector()),this.cubeFront.copy(this.sceneFrontDirection).cross(this.sceneUpDirection).normalize(),this.cube&&requestAnimationFrame(this.cube.render))},this.getWorldUpVector=function(){return this.sceneUpDirection.clone()},this.getWorldRightVector=function(){var e=this.sceneUpDirection.clone();return Math.abs(e.z)<=Math.abs(e.y)?e.set(e.y,-e.x,0):e.z>=0?e.set(e.z,0,-e.x):e.set(-e.z,0,e.x),e.normalize()},this.getWorldFrontVector=function(){return this.getWorldUpVector().cross(this.getWorldRightVector()).normalize()},this.goToView=function(e){if(this.navApi.isActionEnabled("gotoview")){var t={position:e.position.clone(),up:e.up.clone(),center:e.center.clone(),pivot:e.pivot.clone(),fov:e.fov,worldUp:e.worldUp.clone(),isOrtho:e.isOrtho};this.addGlobalPositions(t),o.elapsedTime=0,this.animateTransition(t)}},this.getCurrentView=function(){return{position:e.position.clone(),up:e.up.clone(),center:this.center.clone(),pivot:this.pivot.clone(),fov:e.fov,worldUp:this.sceneUpDirection.clone(),isOrtho:!1===e.isPerspective}},this.setCurrentViewAsHome=function(e){e?(this.navApi.setRequestFitToView(!0),p=!0):this.homeVector=this.getCurrentView()},this.setHomeViewFrom=function(e){var t=e.pivot?e.pivot:this.center,i=e.target?e.target:this.pivot,n=e.worldup?e.worldup:this.sceneUpDirection;this.homeVector={position:e.position.clone(),up:e.up.clone(),center:i.clone(),pivot:t.clone(),fov:e.fov,worldUp:n.clone(),isOrtho:!1===e.isPerspective},this.originalHomeVector={position:e.position.clone(),up:e.up.clone(),center:i.clone(),pivot:t.clone(),fov:e.fov,worldUp:n.clone(),worldFront:this.sceneFrontDirection.clone(),isOrtho:!1===e.isPerspective},this.addGlobalPositions(this.homeVector),this.addGlobalPositions(this.originalHomeVector)},this.toPerspective=function(){e.isPerspective||(e.toPerspective(),m(!1))},this.toOrthographic=function(){e.isPerspective&&(e.toOrthographic(),m(!1))},this.setOrthographicFaces=function(e){this.orthographicFaces=e},this.getViewType=function(){return this.orthographicFaces?s.VIEW_TYPES.PERSPECTIVE_ORTHO_FACES:e.isPerspective?s.VIEW_TYPES.PERSPECTIVE:s.VIEW_TYPES.ORTHOGRAPHIC},this.setViewType=function(e,t){switch(e){case s.VIEW_TYPES.ORTHOGRAPHIC:return this.setOrthographicFaces(!1),this.toOrthographic(),!0;case s.VIEW_TYPES.PERSPECTIVE:return this.setOrthographicFaces(!1),this.toPerspective(),!0;case s.VIEW_TYPES.PERSPECTIVE_ORTHO_FACES:return this.setOrthographicFaces(!0),void 0===t&&(t=this.isFaceView()),t?this.toOrthographic():this.toPerspective(),!0;default:return!1}},this.goHome=function(){this.navApi.isActionEnabled("gotoview")&&(this.navApi.setPivotSetFlag(!1),this.goToView(this.homeVector))},this.resetHome=function(){this.homeVector.position.copy(this.originalHomeVector.position),this.homeVector.up.copy(this.originalHomeVector.up),this.homeVector.center.copy(this.originalHomeVector.center),this.homeVector.pivot.copy(this.originalHomeVector.pivot),this.homeVector.fov=this.originalHomeVector.fov,this.homeVector.worldUp.copy(this.originalHomeVector.worldUp),this.homeVector.isOrtho=this.originalHomeVector.isOrtho,this.goHome()},this.getView=function(){return this.center.clone().sub(e.position)},this.setCameraUp=function(t){var i=this.dir.clone(),n=i.cross(t).normalize();0===n.lengthSq()&&(i.copy(this.dir),t.z>t.y?i.y+=1e-4:i.z+=1e-4,n=i.cross(t).normalize()),e.up.copy(n).cross(this.dir).normalize()},this.addGlobalPositions=function(e){var t=this.camera.globalOffset;e.globalPosition=e.position.clone().add(t),e.globalCenter=e.center.clone().add(t),e.globalPivot=e.pivot.clone().add(t)},this.onGlobalOffsetChanged=function(e){g(this.homeVector,e),g(this.originalHomeVector,e),this.camera.setGlobalOffset(e)};var v,b,_,E,S=this;!function e(){S.recordTime&&requestAnimationFrame(e);var t=Date.now();d=t-f,f=t}(),this.ortho=!1,this.center=e.target?e.target.clone():new n.Vector3(0,0,0),this.pivot=e.pivot?e.pivot.clone():this.center.clone(),this.sceneUpDirection=e.worldup?e.worldup.clone():e.up.clone(),this.sceneFrontDirection=this.getWorldFrontVector(),this.dir=this.getView(),this.setCameraUp(e.up),this.saveCenter=this.center.clone(),this.savePivot=this.pivot.clone(),this.saveEye=e.position.clone(),this.saveUp=e.up.clone(),this.cubeFront=this.sceneFrontDirection.clone().cross(this.sceneUpDirection).normalize(),this.setHomeViewFrom(e);var A,w,T=new n.Quaternion,M=new n.Quaternion,C=new n.Quaternion,P=new n.Quaternion;this.userPanSpeed=.5,this.userLookSpeed=2,this.userHeightSpeed=5,this.walkMultiplier=1,this.userZoomSpeed=1.015,this.orbitMultiplier=5,this.currentlyAnimating=!1,e.keepSceneUpright=!0,this.preserveOrbitUpDirection=!0,this.alignOrbitUpDirection=!0,this.constrainOrbitHorizontal=!1,this.constrainOrbitVertical=!1,this.doCustomOrbit=!1,this.snapOrbitDeadZone=.045,this.snapOrbitThresholdH=this.snapOrbitThresholdV=n.Math.degToRad(15),this.snapOrbitAccelerationAX=this.snapOrbitAccelerationAY=1.5,this.snapOrbitAccelerationBX=this.snapOrbitAccelerationBY=2,this.snapOrbitAccelerationPointX=this.snapOrbitAccelerationPointY=.5,this.combined=!1,this.useSnap=!1,this.lockDeltaX=0,this.lockedX=!1,this.lastSnapRotateX=0,this.lockDeltaY=0,this.lockedY=!1,this.lastSnapRotateY=0,this.lastSnapDir=new n.Vector3(0,0,0),this.topLimit=!1,this.bottomLimit=!1,this.minSceneBound=0,this.maxSceneBound=0;var D,L,I={destinationPercent:1,duration:1,zoomToFitScene:!0,useOffAxis:!1};this.shotParams=I,this.zoomDelta=new n.Vector2;var R;function O(e,t,i){if(e<=t)return 0;if(e>=i)return 1;var n=(e-t)/(i-t);return.5*(Math.sin((n-.5)*Math.PI)+1)}function N(e){return Math.round(10*e)/10}function F(e,t){var i=new n.Vector2(0,0),r=o.getWindow();return i.x=e/r.innerWidth,i.y=t/r.innerHeight,i}function U(e,t,i){var n,r,s,a;n=r=s=a=0;var l=0,c=null,h=null,u=o.snapOrbitDeadZone,d=o.orbitMultiplier;return"h"==e?(n=o.snapOrbitThresholdH,r=o.snapOrbitAccelerationAX,s=o.snapOrbitAccelerationBX,a=1-o.snapOrbitAccelerationPointX,h=o.lockDeltaX,c=o.lockedX):(n=o.snapOrbitThresholdV,r=o.snapOrbitAccelerationAY,s=o.snapOrbitAccelerationBY,a=1-o.snapOrbitAccelerationPointY,h=o.lockDeltaY,c=o.lockedY),c?(h+=i)<-u?(l=(h+u)*d*1/s,c=!1):h>u&&(l=(h-u)*d*1/s,c=!1):(l=Math.abs(t)>n?i*d:Math.abs(t)>a*n?i*t>0?i*d*r:i*d*1/r:i*t>0?i*d*s:i*d*1/s)*t>0&&Math.abs(l)>Math.abs(t)&&(this.lockDeltaX=this.lockDeltaY=0,c=!0,l=t),l}function B(){return o.combined}function k(e,t){var i=!1,n=o.getWindow(),r=n.innerWidth,s=e.x%r,a=n.innerHeight,l=e.y%a,c=s>0?s-t.x:r+s-t.x,h=l>0?l-t.y:a+l-t.y;return Math.abs(c)<30&&Math.abs(h)<30&&(i=!0),i}function V(e,t,i){var r=o.getWindow();if(!R||!e){if(e){var s=new n.Vector2,a=t.x,l=t.y;!function(e,t,i){var n=o.getWindow();i.x=(e.x-t.x)/n.innerWidth,e.x=t.x+(e.x-t.x)%n.innerWidth,i.y=(e.y-t.y)/n.innerHeight,e.y=t.y+(e.y-t.y)%n.innerHeight}(t,i,s),r.innerWidth*s.x,r.innerHeight*s.y,a0?(a=o.maxSceneBound-l,o.topLimit=!1):o.bottomLimit&&t<0?(a=o.minSceneBound+l,o.bottomLimit=!1):a=r.dot(worldUp);var c=s.dot(worldUp);return ao.maxSceneBound&&c>o.maxSceneBound&&(o.topLimit=!0,n=0),n}(r,e,o.m_amount),r}function z(e){var t=o.sceneFrontDirection.clone().cross(o.sceneUpDirection),i=Math.abs(Math.abs(e.dot(o.sceneUpDirection))-1),n=Math.abs(Math.abs(e.dot(o.sceneFrontDirection))-1),r=Math.abs(Math.abs(e.dot(t))-1);return i1e-4&&this.setWorldUpVector(i),p&&!this.navApi.getTransitionActive()&&(p=!1,this.setCurrentViewAsHome(!1)),this.cube&&requestAnimationFrame(this.cube.render)},this.refresh=function(){this.cube&&this.cube.refreshCube()},n.Matrix3.prototype.makeRotationFromQuaternion=function(e){var t=this.elements,i=e.x,n=e.y,r=e.z,o=e.w,s=i+i,a=n+n,l=r+r,c=i*s,h=i*a,u=i*l,d=n*a,f=n*l,p=r*l,m=o*s,g=o*a,v=o*l;return t[0]=1-(d+p),t[3]=h-v,t[6]=u+g,t[1]=h+v,t[4]=1-(c+p),t[7]=f-m,t[2]=u-g,t[5]=f+m,t[8]=1-(c+d),this},n.Quaternion.prototype.setFromRotationMatrix3=function(e){var t,i=e.elements,n=i[0],r=i[3],o=i[6],s=i[1],a=i[4],l=i[7],c=i[2],h=i[5],u=i[8],d=n+a+u;return d>0?(t=.5/Math.sqrt(d+1),this.w=.25/t,this.x=(h-l)*t,this.y=(o-c)*t,this.z=(s-r)*t):n>a&&n>u?(t=2*Math.sqrt(1+n-a-u),this.w=(h-l)/t,this.x=.25*t,this.y=(r+s)/t,this.z=(o+c)/t):a>u?(t=2*Math.sqrt(1+a-n-u),this.w=(o-c)/t,this.x=(r+s)/t,this.y=.25*t,this.z=(l+h)/t):(t=2*Math.sqrt(1+u-n-a),this.w=(s-r)/t,this.x=(o+c)/t,this.y=(l+h)/t,this.z=.25*t),this},n.Quaternion.prototype.rotate=function(e){var t=(new n.Matrix4).makeRotationFromQuaternion(this).elements,i=(new n.Matrix3).set(t[0],t[1],t[2],t[4],t[5],t[6],t[8],t[9],t[10]);return e.applyMatrix3(i)},this.animateTransition=function(t){if(g(t,e.globalOffset),t){var i=!1,n=0;if(this.setCameraOrtho(t.isOrtho),o.elapsedTime>=I.duration)return n=1,o.center.copy(t.center),o.pivot.copy(t.pivot),e.position.copy(t.position),e.up.copy(t.up),e.target.copy(t.center),t.isOrtho||(e.fov=t.fov),e.dirty=!0,(i=!t.worldUp.equals(this.sceneUpDirection))&&this.setWorldUpVector(t.worldUp),this.currentlyAnimating=!1,m(i),this.showPivot(!1),this.cube&&requestAnimationFrame(this.cube.render),this.navApi.setTransitionActive(!1),void this.transitionCompletedCallback();this.currentlyAnimating=!0,this.showPivot(!0),this.navApi.setTransitionActive(!0);var r=I.destinationPercent,s=1-(n=O(o.elapsedTime/I.duration,0,r));o.elapsedTime+=d/500;var a=o.center.clone().multiplyScalar(s).add(t.center.clone().multiplyScalar(n)),l=e.position.clone().multiplyScalar(s).add(t.position.clone().multiplyScalar(n)),c=e.up.clone().multiplyScalar(s).add(t.up.clone().multiplyScalar(n)),h=e.pivot.clone().multiplyScalar(s).add(t.pivot.clone().multiplyScalar(n)),u=this.sceneUpDirection.clone().multiplyScalar(s).add(t.worldUp.clone().multiplyScalar(n)),f=e.fov*s+t.fov*n;o.center.copy(a),o.pivot.copy(h),e.position.copy(l),e.up.copy(c),e.target.copy(a),t.isOrtho||(e.fov=f),e.dirty=!0,(i=u.distanceToSquared(this.sceneUpDirection)>1e-4)&&this.setWorldUpVector(u),e.lookAt(o.center),m(i),this.cube&&requestAnimationFrame(this.cube.render),o.afAnimateTransition=requestAnimationFrame((function(){o.animateTransition(t)}))}},this.sphericallyInterpolateTransition=function(t){var i,r,s,a,l=0;if(this.currentlyAnimating=!0,this.navApi.setTransitionActive(!0),o.elapsedTime>=I.duration)l=1,this.currentlyAnimating=!1;else{var c=I.destinationPercent;l=O(o.elapsedTime/I.duration,0,c),o.elapsedTime+=d/500}if(1===l)r=L.position,i=L.center,s=L.up;else{var h=new n.Matrix3,u=T.clone();u.slerp(M,l),h.makeRotationFromQuaternion(u);var f=A*(1-(a=l))+w*a,p=h.elements;r=(i=D.center.clone().multiplyScalar(1-l).add(L.center.clone().multiplyScalar(l))).clone().sub(new n.Vector3(p[0],p[1],p[2]).multiplyScalar(f)),s=new n.Vector3(p[3],p[4],p[5])}o.center.copy(i),e.position.copy(r),e.up.copy(s),o.navApi.getUsePivotAlways()||o.pivot.copy(i),e.lookAt(o.center),!0===this.currentlyAnimating?(this.showPivot(!0),requestAnimationFrame((function(){o.sphericallyInterpolateTransition(t)}))):(this.navApi.setTransitionActive(!1),this.showPivot(!1),this.orthographicFaces&&this.isFaceView()&&this.setCameraOrtho(!0),t&&t()),m(!1),this.cube&&requestAnimationFrame(this.cube.render)},this.getOrientation=function(){if(this.cube){var t=N(e.up.x),i=N(e.up.y),n=N(e.up.z),r=this.sceneFrontDirection.clone(),o=this.sceneUpDirection.clone(),s=this.sceneFrontDirection.clone().cross(this.sceneUpDirection).normalize();r.x=N(r.x),r.y=N(r.y),r.z=N(r.z),o.x=N(o.x),o.y=N(o.y),o.z=N(o.z),s.x=N(s.x),s.y=N(s.y),s.z=N(s.z);var a=s.clone().multiplyScalar(-1),l=o.clone().multiplyScalar(-1),c=r.clone().multiplyScalar(-1);switch(this.cube.currentFace){case"front":if(o.x==t&&o.y==i&&o.z==n)return"up";if(l.x==t&&l.y==i&&l.z==n)return"down";if(s.x==t&&s.y==i&&s.z==n)return"right";if(a.x==t&&a.y==i&&a.z==n)return"left";break;case"right":if(o.x==t&&o.y==i&&o.z==n)return"up";if(l.x==t&&l.y==i&&l.z==n)return"down";if(c.x==t&&c.y==i&&c.z==n)return"left";if(r.x==t&&r.y==i&&r.z==n)return"right";break;case"left":if(o.x==t&&o.y==i&&o.z==n)return"up";if(l.x==t&&l.y==i&&l.z==n)return"down";if(r.x==t&&r.y==i&&r.z==n)return"left";if(c.x==t&&c.y==i&&c.z==n)return"right";break;case"back":if(o.x==t&&o.y==i&&o.z==n)return"up";if(l.x==t&&l.y==i&&l.z==n)return"down";if(a.x==t&&a.y==i&&a.z==n)return"right";if(s.x==t&&s.y==i&&s.z==n)return"left";break;case"top":if(c.x==t&&c.y==i&&c.z==n)return"down";if(r.x==t&&r.y==i&&r.z==n)return"up";if(s.x==t&&s.y==i&&s.z==n)return"right";if(a.x==t&&a.y==i&&a.z==n)return"left";break;case"bottom":if(r.x==t&&r.y==i&&r.z==n)return"down";if(c.x==t&&c.y==i&&c.z==n)return"up";if(s.x==t&&s.y==i&&s.z==n)return"right";if(a.x==t&&a.y==i&&a.z==n)return"left"}}},this.setCameraOrtho=function(t){t&&e.isPerspective&&e.toOrthographic(),t||e.isPerspective||e.toPerspective()},this.resetOrientation=function(){this.cube&&this.cube.showCompass(this.cube.prevRenderCompass),this.setCameraOrtho(this.originalHomeVector.isOrtho),this.sceneUpDirection.copy(this.originalHomeVector.worldUp),this.sceneFrontDirection.copy(this.originalHomeVector.worldFront),this.cubeFront.copy(this.sceneFrontDirection).cross(this.sceneUpDirection).normalize(),this.setCameraUp(this.sceneUpDirection),m(!0)},this.setCurrentViewAsFront=function(){this.cube&&(this.cube.currentFace="front",this.cube.showCompass(!1)),this.sceneUpDirection.copy(e.up.clone()),c(this.sceneUpDirection),this.sceneFrontDirection.copy(this.getView()).normalize(),c(this.sceneFrontDirection),this.cubeFront.copy(this.sceneFrontDirection).cross(this.sceneUpDirection).normalize(),c(this.cubeFront),this.orthographicFaces&&this.setCameraOrtho(!0),m(!0)},this.setCurrentViewAsTop=function(){this.cube&&(this.cube.currentFace="top",this.cube.showCompass(!1)),this.sceneUpDirection.copy(this.getView()).multiplyScalar(-1).normalize(),c(this.sceneUpDirection),this.sceneFrontDirection.copy(e.up),c(this.sceneFrontDirection),this.cubeFront.copy(this.sceneFrontDirection).cross(this.sceneUpDirection).normalize(),c(this.cubeFront),m(!0)},this.calculateCubeTransform=function(t){var i=this.sceneUpDirection.clone(),r=this.sceneFrontDirection.clone(),s=this.sceneFrontDirection.clone().cross(this.sceneUpDirection).normalize();(D=e.clone()).center=o.center.clone(),D.pivot=o.pivot.clone(),(L=e.clone()).center=o.center.clone(),L.pivot=o.pivot.clone();var l=new n.Vector3(0,0,0);t.indexOf("back")>=0&&(l=l.add(r)),t.indexOf("front")>=0&&(l=l.sub(r)),t.indexOf("top")>=0&&(l=l.add(i)),t.indexOf("bottom")>=0&&(l=l.sub(i)),t.indexOf("right")>=0&&(l=l.add(s)),t.indexOf("left")>=0&&(l=l.sub(s));var c=i,h=l.clone().normalize();if(1-Math.abs(h.dot(i))0?1:-1,p=u.clone().add(e.up.clone().multiplyScalar(f)).normalize(),m=-2,g=0;g<4;g++){var v=p.dot(d[g]);v>m&&(m=v,c=d[g].multiplyScalar(f))}w=A=this.getView().length(),L.position.copy(L.center.clone().add(l.multiplyScalar(w/l.length()))),L.up.copy(c);var y=D.center.clone().sub(D.position).normalize(),b=y.clone().cross(D.up).normalize(),x=b.clone().cross(y).normalize(),_=new n.Matrix3;_.set(y.x,x.x,b.x,y.y,x.y,b.y,y.z,x.z,b.z),T.setFromRotationMatrix3(_),x=(b=(y=L.center.clone().sub(L.position).normalize()).clone().cross(L.up).normalize()).clone().cross(y).normalize(),_.set(y.x,x.x,b.x,y.y,x.y,b.y,y.z,x.z,b.z),C.setFromAxisAngle(y,0),P.setFromAxisAngle(x,0),M.setFromRotationMatrix3(_),M.multiply(C).multiply(P).normalize()},this.drawDropdownMenu=function(e,t,i,n,o,s,a){var l=0,c=this.getDocument();if(h)s.appendChild(h);else{(h=c.createElement("div")).className="dropDownMenu",h.style.top="100px",h.style.left="-400px";for(var u=0,d=0,f=0;fd?m.length:d,i[f]){p=c.createElement("div");var g=c.createElement("input"),v=c.createElement("label");g.type="radio",g.className="dropDownMenuCheck",v.innerHTML=m,v.className="dropDownMenuCheckText",p.appendChild(g),p.appendChild(v),p.className="dropDownMenuCheckbox"}else(p=c.createElement("li")).textContent=m,p.className=t[f]?"dropDownMenuItem":"dropDownMenuItemDisabled";p.id="menuItem"+l,l++,u+=25,p.setAttribute("data-i18n",e[f])}h.appendChild(p)}s.appendChild(h),h.style.minWidth=Math.max(256,7.4*d)+"px";var y=h.getBoundingClientRect().width;this.menuSize.x=y,this.menuSize.y=u}l=0;for(f=0;fS.right&&(E=n-this.menuSize.x-1),_+this.menuSize.y>S.bottom&&(_=S.bottom-this.menuSize.y),_-=a.y,E-=a.x,h.style.top=_+"px",h.style.left=E+"px",this.menuOrigin.x=E,this.menuOrigin.y=_},this.removeDropdownMenu=function(e){e.removeChild(h)},this.isFaceView=function(){return z(this.center.clone().sub(e.position).normalize())&&z(e.up)},this.startInteraction=function(e,t){this.startCursor=new n.Vector2(e,t),this.startState={saveCenter:this.center.clone(),saveEye:this.camera.position.clone(),savePivot:this.pivot.clone(),saveUp:this.camera.up.clone()},this.lockDeltaX=0,this.lockedX=!1,this.lastSnapRotateX=0,this.lockDeltaY=0,this.lockedY=!1,this.lastSnapRotateY=0,this.lastSnapDir=new n.Vector3(0,0,0),this.navApi.setTransitionActive(!0)},this.orbit=function(t,i,r,s){if(this.navApi.isActionEnabled("orbit")&&!0!==this.currentlyAnimating){var a="wheel";if(o.orthographicFaces&&!e.isPerspective&&(e.toPerspective(),s&&s.saveEye.copy(this.camera.position)),s&&(a="cube"),"cube"==a?(this.saveCenter.copy(s.saveCenter),this.saveEye.copy(s.saveEye),this.savePivot.copy(s.savePivot),this.saveUp.copy(s.saveUp),this.useSnap=!0,this.doCustomOrbit=!0):(this.saveCenter.copy(this.center),this.savePivot.copy(this.pivot),this.saveEye.copy(e.position),this.saveUp.copy(e.up),this.useSnap=!1,this.doCustomOrbit=!1),B()&&null==b&&(b=this.saveCenter.clone(),v=this.saveEye.clone(),E=this.savePivot.clone(),_=this.saveUp.clone()),this.preserveOrbitUpDirection){var l=F(t.x-i.x,t.y-i.y),c=F(r.x,r.y),h=this.sceneUpDirection.clone(),u=this.sceneFrontDirection.clone(),d=this.sceneFrontDirection.clone().cross(this.sceneUpDirection).normalize(),f=B()?E:this.savePivot,p=B()?v:this.saveEye,g=B()?b:this.saveCenter,y=B()?_:this.saveUp,x=f.clone().sub(p).normalize(),S=g.clone().sub(p).normalize(),A=S.clone().cross(y),w=p.clone().sub(f).length(),T=p.clone().sub(g).length(),M=x.clone().multiplyScalar(-1),C=S.clone().multiplyScalar(-1),P=A,D=y.clone();if(!this.constrainOrbitHorizontal){h.dot(this.saveUp)<-.009&&(l.x=-l.x,c.x=-c.x);var L=0;L=B()?c.x*this.orbitMultiplier:this.useSnap?this.lastSnapRotateX+U("h",0,-c.x):l.x*this.orbitMultiplier,this.lastSnapRotateX=L;var I=(new n.Quaternion).setFromAxisAngle(h,-L);M.applyQuaternion(I),C.applyQuaternion(I),P.applyQuaternion(I),D.applyQuaternion(I)}if(!this.constrainOrbitVertical){var R=u.clone().multiplyScalar(u.dot(P)),O=d.clone().multiplyScalar(d.dot(P)),N=R.clone().add(O);N.clone().normalize();var k=0;if(B())k=c.y*this.orbitMultiplier;else{var V=U("v",0,c.y);k=this.useSnap?this.lastSnapRotateY+V:l.y*this.orbitMultiplier}var G=(new n.Quaternion).setFromAxisAngle(N,-k);if(this.navApi.getOrbitPastWorldPoles())M.applyQuaternion(G).normalize(),C.applyQuaternion(G).normalize(),D.applyQuaternion(G).normalize();else{var z=D.clone();if(z.applyQuaternion(G).normalize(),h.dot(z)<0){var H=C.clone();H.applyQuaternion(G).normalize();var W=H.angleTo(h);Math.abs(W)>.5*Math.PI&&(W-=W>0?Math.PI:-Math.PI),k-=W,G.setFromAxisAngle(N,-k),M.applyQuaternion(G).normalize(),C.applyQuaternion(G).normalize(),D.applyQuaternion(G).normalize()}else M.applyQuaternion(G).normalize(),C.applyQuaternion(G).normalize(),D.applyQuaternion(G).normalize()}this.lastSnapRotateY=k}var j=M.multiplyScalar(w).add(f);e.position.copy(j),e.up.copy(D),this.center.copy(j),this.center.sub(C.multiplyScalar(T)),B()&&(b.copy(this.center),v.copy(e.position),E.copy(this.pivot),_.copy(e.up))}e.lookAt(this.center),m(!1)}},this.endInteraction=function(){this.navApi.setTransitionActive(!1)},this.look=function(t){if(this.navApi.isActionEnabled("walk")){var i=F(t.x,t.y),r=this.userLookSpeed,o=this.getView(),s=e.up,a=o.clone().cross(s).normalize(),l=this.sceneUpDirection.clone(),c=i.clone();c.x*=Math.PI,c.y*=Math.PI/e.aspect,c.multiplyScalar(r);var h=(new n.Quaternion).setFromAxisAngle(a,-c.y);if(e.keepSceneUpright&&!this.navApi.getOrbitPastWorldPoles()){var u=s.clone();if(u.applyQuaternion(h).normalize(),u.dot(l)<0){var d=o.clone();d.applyQuaternion(h);var f=d.angleTo(l);Math.abs(f)>.5*Math.PI&&(f-=f>0?Math.PI:-Math.PI),c.y-=f,h.setFromAxisAngle(a,-c.y)}}o=h.clone().rotate(o),(s=h.clone().rotate(s)).normalize();var p=e.keepSceneUpright?l:s,g=(new n.Quaternion).setFromAxisAngle(p,-c.x);o=g.clone().rotate(o),s=g.clone().rotate(s),this.center.copy(o.add(e.position)),e.up.copy(s),e.lookAt(this.center),m(!1)}},this.pan=function(t){if(this.navApi.isActionEnabled("pan")){t=F(t.x,t.y);var i=this.getView(),r=e.up.clone().cross(i),o=i.clone().cross(r);r.normalize(),o.normalize(),i.normalize();var s=this.pivot.clone().sub(e.position),a=i.clone().dot(s),l=a*(Math.tan(n.Math.degToRad(e.leftFov))+Math.tan(n.Math.degToRad(e.rightFov))),c=a*(Math.tan(n.Math.degToRad(e.topFov))+Math.tan(n.Math.degToRad(e.bottomFov))),h=t.x*Math.abs(l),u=t.y*Math.abs(c),d=new n.Vector3,f=r.clone().multiplyScalar(h),p=o.clone().multiplyScalar(u);d=f.clone().add(p).clone().multiplyScalar(this.userPanSpeed),e.position.add(d),this.center.add(d),e.lookAt(this.center),m(!1)}},this.zoom=function(t){if(this.navApi.isActionEnabled("zoom")){var i=this.userZoomSpeed,n=Number.MAX_VALUE,r=t.x+t.y,s=Math.pow(i,r),a=this.pivot.clone().sub(this.pivot.clone().sub(this.saveEye).clone().multiplyScalar(s)),l=a.clone().add(o.D.clone().multiplyScalar(o.D.clone().dot(this.pivot.clone().sub(a).clone())));if(!(s>=n)){if(r>0){Math.pow(i,r-0);if(r<0)return void 0;e.position.copy(a),this.center.copy(l);var c=a.clone().sub(this.saveEye).dot(o.D);c>n?(e.position.copy(this.saveEye.sub(o.D).clone().multiplyScalar(n)),n>0?-1:0):-c/n}else e.position.copy(a),this.center.copy(l);e.lookAt(this.center),m(!1)}}},this.walk=function(t,i,r,o,s){if(this.navApi.isActionEnabled("walk")){var l=this.sceneUpDirection.clone(),c=this.sceneFrontDirection.clone(),h=this.sceneFrontDirection.clone().cross(this.sceneUpDirection);k(t,i)?(wheel.cursorImage("SWWalk"),V(!0,t,i),x=i.x,y=i.y):V(!1,t,i),x=t.x,y=t.y;var u=F(x-i.x,y-i.y),d=-u.x,f=-u.y,p=d<0?-1:1,g=f<0?-1:1,v=Math.abs(d),b=Math.abs(f),_=new n.Vector2(30,30);_=F(_.x,_.y),v=k(t,i)?0:Math.abs(d)-_.x,b=k(t,i)?0:Math.abs(f)-_.y;b/=.25;var E=(v=(v/=.25)<1?O(v,0,1):Math.pow(v,1))>0?v*p:0,S=(b=b<1?O(b,0,1):Math.pow(b,1))>0?b*g:0,A=this.getView(),w=A.length();A.normalize(),A.clone().cross(e.up).normalize();var T=h.clone().multiplyScalar(h.clone().dot(A)),M=c.clone().multiplyScalar(c.clone().dot(A)).clone().add(T);M=M.clone().length()>a?M.normalize():e.up;var C=S*(1*this.walkMultiplier),P=M,D=Math.cos(.65);1!=D&&(l.clone().dot(e.up)<-a&&l.clone().dot(A)<-D||l.clone().dot(e.up)>a&&l.clone().dot(A)>D)&&(P=-P);var L=-E*this.walkMultiplier*.05,I=e.up;(l.clone().dot(e.up)<-a||Math.abs(l.clone().dot(e.up))a)&&(L=-L),I=l;var R=(new n.Quaternion).setFromAxisAngle(I,L);R.normalize(),(A=R.clone().rotate(A)).normalize(),e.up.copy(R.clone().rotate(e.up)),e.up.normalize(),e.position.add(P.clone().multiplyScalar(C)),this.center.copy(e.position.clone().add(A.clone().multiplyScalar(w))),(P=l).normalize(),0===C&&(C=.01),e.lookAt(this.center),m(!1)}},this.updown=function(t){if(!this.navApi.getIsLocked()){var i=G(t);o.m_amount+=i;var r=new n.Vector3(0,1,0),s=o.saveEye.clone().sub(r.clone().multiplyScalar(o.m_amount)),a=s.clone().dot(r);e.position.copy(s),ao.maxSceneBound&&e.position.add(r.clone().multiplyScalar(o.maxSceneBound-a)),this.center.copy(e.position.clone().add(o.saveCenter.clone().sub(o.saveEye))),e.lookAt(this.center),m(!1)}}}o.GlobalManagerMixin.call(h.prototype)},2312:(e,t,i)=>{"use strict";const{getGlobal:n}=i(55280),r=n();function o(){this.stop=null,this.isRunning=!0}function s(e,t,i,n,s){var a=performance.now(),l=1e3*i,c=0,h=new o;h.stop=function(){c&&r.cancelAnimationFrame(c),h.isRunning=!1},h.skip=function(){h.isRunning&&(n(t),h.stop(),s&&s())};var u=function(i){var o=(i-a)/l;o=Math.max(o,0),o=Math.min(o,1),n(e+o*(t-e)),o<1?c=r.requestAnimationFrame(u):(h.isRunning=!1,s&&s())};return u(a),h}function a(e,t,i){return(1-i)*e+i*t}function l(e){return THREE.Math.smootherstep(e,0,1)}function c(e){var t=new THREE.Vector3,i=new THREE.Vector3,n=new THREE.Vector3,r=new THREE.Vector3,o=new THREE.Vector3,s=new THREE.Vector3,c=0,h=0,u=new THREE.Quaternion,d=new THREE.Quaternion,f=new THREE.Vector3,p=new THREE.Quaternion,m=new THREE.Object3D;new THREE.Matrix4;function g(e,t,i,n){Autodesk.Viewing.Navigation.prototype.orient(m,i,t,n),e.copy(m.quaternion)}this.init=function(e,a,l,f){let p=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];t.copy(e.position),i.copy(e.target),n.copy(p?e.worldup:e.up),r.copy(a),o.copy(l),s.copy(p?e.worldup:f),c=t.distanceTo(i),h=r.distanceTo(o),g(u,t,i,n),g(d,r,o,s)},this.updateCamera=function(e,i){var n=l(e);i.position.lerpVectors(t,r,n),p.slerpQuaternions(u,d,n),p.normalize();var o=a(c,h,n);!function(e,t,i){f.set(0,0,-i).applyQuaternion(t),e.target.addVectors(e.position,f),f.set(0,1,0).applyQuaternion(t),e.up.copy(f)}(i,p,o),i.dirty=!0},this.updateViewerCamera=function(e,t){this.updateCamera(e,t.impl.camera),t.impl.syncCamera(),t.impl.invalidate(!0,!0)}}var h;e.exports={flyToView:function(e,t,i,n){let r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];h||(h=new c),i=i||2;var o=e.impl.camera;return h.init(o,t.position,t.target,t.up,r),s(0,1,i,(function(t){h.updateViewerCamera(t,e)}),n)},ShadowFader:function(e,t,i){var n=1,r=null,o=t,a=void 0,l=i;function c(t){n=t,e.impl.setGroundShadowAlpha(t)}function h(){r=null,l&&l(a)}this.shadowOn=function(){r&&a||(r&&!a&&(r.stop(),r=null),n>=1||(r=s(n,1,o*(1-n),c,h),a=!0))},this.shadowOff=function(){r&&!a||(r&&a&&(r.stop(),r=null),n<=0||(r=s(n,0,o*n,c,h),a=!1))},this.isFading=function(){return r&&r.isRunning}},lerp:a,smootherStep:l,fadeValue:s,AnimatedParam:class{constructor(e,t,i){this.setValueCb=t,this.animTime=i,this.fadeAnim=null,this.targetValue=e,this.curValue=e,t(e),this.pendingFinishedCallbacks=[]}stopAnim(){this.fadeAnim&&(this.fadeAnim.stop(),this.fadeAnim=null)}_onAnimEnded(){this.pendingFinishedCallbacks.forEach((e=>e())),this.pendingFinishedCallbacks.length=0}fadeTo(e,t){const i=this.fadeAnim&&this.fadeAnim.isRunning;if(!i&&this.curValue==e)return void(t&&t());if(t&&this.pendingFinishedCallbacks.push(t),i&&e===this.targetValue)return;this.stopAnim();this.targetValue=e,this.fadeAnim=s(this.curValue,this.targetValue,this.animTime,(e=>{e=l(e),this.curValue=e,this.setValueCb(e)}),(()=>this._onAnimEnded()))}skipAnim(){this.fadeAnim&&this.fadeAnim.skip()}setValue(e){this.stopAnim(),this.curValue=e,this.setValueCb(e)}}}},16613:(e,t,i)=>{"use strict";function n(e,t){try{WebAssembly.instantiateStreaming||(WebAssembly.instantiateStreaming=async(e,t)=>{const i=await(await e).arrayBuffer();return await WebAssembly.instantiate(i,t)})}catch(e){throw new Error("WebAssembly is not supported for the current browser.")}if(!e)throw new Error("Expecting a wasm file path.");let i=256,n=256;t&&t.memory&&(i=t.memory.initial,n=t.memory.maximum),this._wasmPath=e,this._memory=new WebAssembly.Memory({initial:i,maximum:n})}i.r(t),i.d(t,{Wasm:()=>n}),n.prototype.constructor=n,n.prototype.instantiate=function(){const e={env:{abortStackOverflow:e=>{throw new Error("overflow")},table:new WebAssembly.Table({initial:0,maximum:0,element:"anyfunc"}),__table_base:0,memory:this._memory,__memory_base:1024,STACKTOP:0,STACK_MAX:this.getBuffer().byteLength}};return new Promise(((t,i)=>{try{WebAssembly.instantiateStreaming(fetch(this._wasmPath),e).then((e=>{const i=e.instance.exports;this.proxy=i,t(i)}))}catch(e){i(e)}}))},n.prototype.getBuffer=function(){return this._memory.buffer}},57872:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CONSOLIDATION_MEMORY_LIMIT:()=>a,DEPTH_EPSILON:()=>M,ENABLE_PIXEL_CULLING:()=>f,GEOMETRY_OVERHEAD:()=>u,GPU_MEMORY_LIMIT:()=>o,GPU_OBJECT_LIMIT:()=>s,INDEX_BUFFER_REGION_SIZE:()=>x,IsUsingWebGPU:()=>T,MODEL_MEMORY_LIMIT:()=>l,PER_FRAME_CONSOLIDATION_TIME_BUDGET:()=>p,PIXEL_CULLING_THRESHOLD:()=>d,USE_BUFFER_MANAGER:()=>v,USE_DEFERRED_CONSOLIDATION:()=>g,USE_HLOD:()=>y,USE_OUT_OF_CORE_TILE_MANAGER:()=>m,USE_VAO:()=>h,VERTEX_BUFFER_REGION_SIZE:()=>b,disableGpuObjectLimit:()=>c,enableOutOfCoreTileManager:()=>A,useBufferManager:()=>_,useHLOD:()=>S,useWebGPU:()=>w});var n=i(55280),r=i(40508);let o=1024*((0,n.isMobileDevice)()?64:256)*1024,s=(0,n.isMobileDevice)()?2500:1e4,a=o/2,l=1048576e3;const c=function(){s=4294967295};let h=!(0,n.isMobileDevice)();const u=336,d=.75;let f=!0;const p=10;let m=!1,g=!1,v=!1,y=!1;const b=1048576,x=1048576;function _(){v=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],h=!v}const E={gpu_memory:2147483648,gpu_objects:512e3,model_memory:4294967296,consolidation_memory:1073741824};function S(){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:E;(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&e&&((0,n.isMobileDevice)()?console.warn("HLOD is not supported on mobile devices"):(y=!0,_(!0),g=!0,f=!1,o=e.gpu_memory,s=e.gpu_objects,l=e.model_memory,a=e.consolidation_memory,console.log(`Using HLOD settings. Memory: ${o}, Object Limit: ${s}, Consolidation Memory: ${a}`)))}function A(){y&&(m=!0,console.log("Using dynamic GPU Memory Management"))}async function w(e){await(0,r.f6)(e)}function T(){return null!==(0,r.cS)()}const M=2*Math.pow(2,-24)},21968:(e,t,i)=>{"use strict";i.d(t,{_:()=>l});var n=i(72091),r=i(8071),o=i.n(r),s=i(70984),a=i.n(s);let l={uniforms:{color1:{type:"v3",value:new n.Vector3(41/255,76/255,120/255)},color2:{type:"v3",value:new n.Vector3(1/255,2/255,3/255)},opacity:{type:"f",value:1},envMap:{type:"t",value:null},envRotationSin:{type:"f",value:0},envRotationCos:{type:"f",value:1},exposureBias:{type:"f",value:1},envMapExposure:{type:"f",value:1},uCamDir:{type:"v3",value:new n.Vector3},uCamUp:{type:"v3",value:new n.Vector3},uResolution:{type:"v2",value:new n.Vector2(600,400)},uHalfFovTan:{type:"f",value:.5},envMapBackground:{type:"i",value:0},backgroundTexture:{type:"t",value:null}},vertexShader:o(),fragmentShader:a()}},25618:(e,t,i)=>{"use strict";i.r(t),i.d(t,{BasicShader:()=>c});var n=i(72091),r=i(30130),o=i(21175),s=i.n(o),a=i(27608),l=i.n(a);let c={uniforms:n.UniformsUtils.merge([n.UniformsLib.common,n.UniformsLib.fog,n.UniformsLib.shadowmap,r.ShaderChunks.CutPlanesUniforms,r.ShaderChunks.IdUniforms,r.ShaderChunks.ThemingUniform,r.ShaderChunks.PointSizeUniforms,r.ShaderChunks.WideLinesUniforms,r.ShaderChunks.DepthTextureTestUniforms]),vertexShader:s(),fragmentShader:l()};n.ShaderLib.firefly_basic=c},31320:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CelShader:()=>c});var n=i(72091),r=i(30130),o=i(44203),s=i.n(o),a=i(91342),l=i.n(a);let c={uniforms:n.UniformsUtils.merge([r.ShaderChunks.DepthTextureUniforms,{tDiffuse:{type:"t",value:null},tID:{type:"t",value:null},resolution:{type:"v2",value:new n.Vector2(1/1024,1/512)},cameraNear:{type:"f",value:1},cameraFar:{type:"f",value:100},tFill:{type:"t",value:null},tPaper:{type:"t",value:null},style:{type:"i",value:0},idEdges:{type:"i",value:1},normalEdges:{type:"i",value:1},depthEdges:{type:"i",value:1},brightness:{type:"f",value:0},contrast:{type:"f",value:0},grayscale:{type:"i",value:0},preserveColor:{type:"i",value:0},levels:{type:"f",value:6},repeats:{type:"f",value:3},rotation:{type:"f",value:0},outlineRadius:{type:"f",value:1},outlineNoise:{type:"i",value:0},tGraphite1:{type:"t",value:null},tGraphite2:{type:"t",value:null},tGraphite3:{type:"t",value:null},tGraphite4:{type:"t",value:null},tGraphite5:{type:"t",value:null},tGraphite6:{type:"t",value:null},tGraphite7:{type:"t",value:null},tGraphite8:{type:"t",value:null}}]),vertexShader:s(),fragmentShader:l()}},48717:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CopyShader:()=>a});var n=i(44203),r=i.n(n),o=i(78551),s=i.n(o);let a={uniforms:{tDiffuse:{type:"t",value:null}},vertexShader:r(),fragmentShader:s()}},12360:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CreateCubeMapFromColors:()=>s,DecodeEnvMap:()=>f});var n=i(72091),r=i(89024),o=i(83081);function s(e,t){for(var i=255*e.x,r=255*e.y,o=255*e.z,s=255*t.x,a=255*t.y,l=255*t.z,c=new Uint8Array(16),h=new Uint8Array(16),u=new Uint8Array(16),d=0;d<4;d++)c[4*d]=i,c[4*d+1]=r,c[4*d+2]=o,c[4*d+3]=255,h[4*d]=s,h[4*d+1]=a,h[4*d+2]=l,h[4*d+3]=255,d>1?(u[4*d]=i,u[4*d+1]=r,u[4*d+2]=o,u[4*d+3]=255):(u[4*d]=s,u[4*d+1]=a,u[4*d+2]=l,u[4*d+3]=255);var f=new n.DataTexture(u,2,2,n.RGBAFormat),p=new n.DataTexture(u,2,2,n.RGBAFormat),m=new n.DataTexture(h,2,2,n.RGBAFormat),g=new n.DataTexture(c,2,2,n.RGBAFormat),v=new n.DataTexture(u,2,2,n.RGBAFormat),y=new n.DataTexture(u,2,2,n.RGBAFormat),b=new n.Texture(null,n.CubeReflectionMapping,n.RepeatWrapping,n.RepeatWrapping,n.LinearFilter,n.LinearFilter,n.RGBAFormat);return b.image=[p,f,g,m,y,v],b.needsUpdate=!0,b}var a=[6.0014,-2.7008,-1.7996,-1.332,3.1029,-5.7721,.3008,-1.0882,5.6268];function l(e,t){var i=255*t[2]+t[3],n=Math.pow(2,(i-127)/2),r=n/t[1],o=t[0]*r,s=a[0]*o+a[3]*n+a[6]*r,l=a[1]*o+a[4]*n+a[7]*r,c=a[2]*o+a[5]*n+a[8]*r;s<0&&(s=0),l<0&&(l=0),c<0&&(c=0),e[0]=s,e[1]=l,e[2]=c}function c(e,t,i){var n=.0625*Math.sqrt(t[0]*i),r=.0625*Math.sqrt(t[1]*i),o=.0625*Math.sqrt(t[2]*i),s=Math.max(Math.max(n,r),Math.max(o,1e-6));s>1&&(s=1);var a=Math.ceil(255*s)/255;n>1&&(n=1),r>1&&(r=1),o>1&&(o=1),e[3]=a;var l=1/a;e[0]=n*l,e[1]=r*l,e[2]=o*l}function h(e,t,i){var n=Math.sqrt(t[0]*i),r=Math.sqrt(t[1]*i),o=Math.sqrt(t[2]*i),s=65504;n>s&&(n=s),r>s&&(r=s),o>s&&(o=s),e[0]=n,e[1]=r,e[2]=o}var u=new Float32Array(4),d=new Float32Array(4);function f(e,t,i,s){if(e.LogLuv){for(var a=Math.pow(2,t),f=Array.isArray(e.image)?e.image:[e.image],p=0;p{"use strict";i.d(t,{b:()=>h});var n=i(72091),r=i(8102),o=i.n(r),s=i(15201),a=i.n(s),l=i(68449),c={uniforms:{tDiffuse:{type:"t",value:null},uColor:{type:"v4",value:new n.Vector4(1,1,1,1)}},vertexShader:o(),fragmentShader:a()};let h=function(e,t,i,r,o){var s,a,h,u=e,d=t,f=i||3,p=r||1,m=o.hasAlpha||!1,g=o.blending||!1,v=o.flipUV||!1;this.render=function(e,t,i){s.render(e,h,i),a.render(e,t,h)},this.setSize=function(e,t){this.cleanup(),u=e,d=t,(h=new n.WebGLRenderTarget(e,t,{minFilter:n.LinearFilter,magFilter:n.LinearFilter,format:void 0!==o.format?o.format:n.RGBAFormat,type:void 0!==o.type?o.type:n.UnsignedByteType,stencilBuffer:!1})).texture.generateMipmaps=!1,s.material.defines.KERNEL_SCALE_H=a.material.defines.KERNEL_SCALE_H=(p/u).toFixed(4),s.material.defines.KERNEL_SCALE_V=a.material.defines.KERNEL_SCALE_V=(p/d).toFixed(4),s.material.needsUpdate=a.material.needsUpdate=!0},this.cleanup=function(){h&&h.dispose()},this.setColor=function(e){a.material.uniforms.uColor.value.x=e.r,a.material.uniforms.uColor.value.y=e.g,a.material.uniforms.uColor.value.z=e.b},this.setAlpha=function(e){a.material.uniforms.uColor.value.w=e},s=new l.ShaderPass(c),a=new l.ShaderPass(c),this.setSize(e,t),s.material.blending=a.material.blending=n.NoBlending,s.material.depthWrite=a.material.depthWrite=!1,s.material.depthTest=a.material.depthTest=!1,s.material.defines.HORIZONTAL=1,s.material.defines.KERNEL_RADIUS=a.material.defines.KERNEL_RADIUS=f.toFixed(1),g&&(a.material.transparent=!0,a.material.blending=n.NormalBlending),m&&(s.material.defines.HAS_ALPHA=a.material.defines.HAS_ALPHA=""),v&&(s.material.defines.FLIP_UV="")}},74139:(e,t,i)=>{"use strict";i.d(t,{r:()=>n});class n{needsClear(e,t){if(e.length!==t.length)return!0;for(let i=0;i{"use strict";i.r(t),i.d(t,{GroundFlags:()=>n});var n={GROUND_UNFINISHED:0,GROUND_FINISHED:1,GROUND_RENDERED:2}},14859:(e,t,i)=>{"use strict";i.r(t),i.d(t,{GroundReflection:()=>m});var n=i(68449),r=i(39147),o=i(21968),s=i(44203),a=i.n(s),l=i(99885),c=i.n(l),h=i(74139),u=i(15371),d=i(57872),f=i(72091),p={uniforms:{tDiffuse:{type:"t",value:null}},vertexShader:a(),fragmentShader:c()};let m=function(e,t,i,s){var a,l,c,h,m,g,v=e,y=v.getContext(),b=t||512,x=i||512,_=!1,E=new f.Color(0,0,0),S=!1,A=!1;this.inTarget=void 0,this.outTarget=void 0;var w,T,M,C,P,D=!0,L=u.GroundFlags.GROUND_UNFINISHED,I={color:new f.Color(1,1,1),alpha:.3,texScale:.5,blurRadius:2,blurTexScale:.5,fadeAngle:Math.PI/18};if(this.setTransform=function(e,t,i){h=e,c.normal=t,c.constant=-e.dot(t)},this.cleanup=function(){a&&a.cleanup(),this.inTarget&&this.inTarget.dispose(),this.outTarget&&this.outTarget.dispose()},this.setSize=function(e,t){b=e,x=t,this.cleanup(),this.inTarget=new f.WebGLRenderTarget(b*I.texScale,x*I.texScale,{magFilter:f.LinearFilter,minFilter:f.LinearFilter,format:f.RGBAFormat,stencilBuffer:!1}),this.inTarget.texture.generateMipmaps=!1,this.inTarget.name="GroundReflection inTarget",this.outTarget=new f.WebGLRenderTarget(b*I.texScale,x*I.texScale,{magFilter:f.LinearFilter,minFilter:f.LinearFilter,format:f.RGBAFormat,stencilBuffer:!1}),this.outTarget.texture.generateMipmaps=!1,this.outTarget.name="GroundReflection outTarget",a?a.setSize(b*I.texScale*I.blurTexScale,x*I.texScale*I.blurTexScale):a=new r.b(b*I.texScale*I.blurTexScale,x*I.texScale*I.blurTexScale,I.blurRadius,1,{hasAlpha:!0,blending:!0,flipUV:!0})},this.updateCamera=function(e){var t;t=e.isPerspective?h.clone():e.target.clone();var i=e.position.clone().sub(t).normalize(),n=Math.PI/2-i.angleTo(c.normal);if(!(_=n<0)){if(I.fadeAngle>0){var r=Math.min(I.fadeAngle,n)/I.fadeAngle;a.setAlpha(r*I.alpha)}var o,s,l,u=(s=(o=c).normal,l=o.constant,(new f.Matrix4).set(1-2*s.x*s.x,-2*s.y*s.x,-2*s.x*s.z,-2*l*s.x,-2*s.x*s.y,1-2*s.y*s.y,-2*s.y*s.z,-2*l*s.y,-2*s.x*s.z,-2*s.y*s.z,1-2*s.z*s.z,-2*l*s.z,0,0,0,1));(m=e.clone()).applyMatrix4(u),m.projectionMatrix.elements[5]*=-1,m.matrixWorldNeedsUpdate=!0,e.worldUpTransform?m.worldUpTransform=e.worldUpTransform.clone():m.worldUpTransform=new f.Matrix4}},this.renderIntoReflection=function(e){_||(v.setRenderTarget(this.inTarget),v.render(e,m))},this.prepareGroundReflection=(T=[],M=0,C=0,P=0,function(e,t,i,n,r,o){var s=t.modelQueue();if(L!==u.GroundFlags.GROUND_UNFINISHED||s.isEmpty())return L=u.GroundFlags.GROUND_FINISHED,r;const a=s.getGeomScenesPerModel();if(D=this.needsClear(T,a)||D){if(D=!1,this.updateCamera(t.camera),this.isGroundCulled())return L=u.GroundFlags.GROUND_FINISHED,r;this.clear(),T=a,w=s.getGeomScenes(),M=w.length,C=0,P=n?Math.max(Math.ceil(M/100),n):M,L=u.GroundFlags.GROUND_UNFINISHED}else{if(L!==u.GroundFlags.GROUND_UNFINISHED)return L=u.GroundFlags.GROUND_FINISHED,r;0===n&&(P=M)}var l,c,h;r&&(l=performance.now(),c=(o=void 0===o?1:o)*r);for(var d=0;d{"use strict";i.r(t),i.d(t,{GroundShadow:()=>N,createGroundShape:()=>R,setGroundShapeTransform:()=>O});var n=i(2179),r=i(68449),o=i(67312),s=i.n(o),a=i(2647),l=i.n(a),c=i(44203),h=i.n(c),u=i(63694),d=i.n(u),f=i(12065),p=i.n(f),m=i(17797),g=i.n(m),v=i(74139),y=i(15371),b=i(57872),x=i(4897),_=i(21706),E=i(68747),S=i(72091);const A=2;var w={uniforms:{cutplanes:{type:"v4v",value:[]}},vertexShader:s(),fragmentShader:l()},T={uniforms:{tDepth:{type:"t",value:null},worldSize:{type:"v3",value:new S.Vector3(1,1,1)}},defines:{},vertexShader:h(),fragmentShader:d()},M={uniforms:{tDepth:{type:"t",value:null}},defines:{},vertexShader:h(),fragmentShader:p()},C={uniforms:{tDepth:{type:"t",value:null},uShadowColor:{type:"v4",value:new S.Vector4(0,0,0,1)}},vertexShader:h(),fragmentShader:g()};let P,D,L,I=new _.LmvBox3;function R(e){var t=new S.PlaneBufferGeometry(1,1);return t.index.array.reverse(),new S.Mesh(t,e)}function O(e,t,i,n,r){P||(P=new S.Matrix4),D||(D=new S.Vector3),L||(L=new S.Vector3),D.subVectors(t,n),P.lookAt(D,t,r),L.copy(n).multiplyScalar(-.5*i.y).add(t),e.position.copy(L),e.rotation.setFromRotationMatrix(P),e.scale.set(i.z,i.x,i.y)}function N(e,t){var i,o=e;const s=new x.FrustumIntersector;var a,l,c,h,u,d,f,p,m,g,v,_,P,D,L,N,F,U,B,k=!1,V=!0,G=y.GroundFlags.GROUND_FINISHED,z={texSize:64,pixScale:1,blurRadius:7,debug:!1};if(this.setTransform=(v=new S.Vector3(0,0,0),_=new S.Vector3(0,0,0),P=new S.Vector3(0,0,0),D=new S.Vector3(0,0,0),function(e,t,n,r){e.equals(v)&&t.equals(_)&&n.equals(P)&&r.equals(D)||(v.copy(e),_.copy(t),P.copy(n),D.copy(r),this.setDirty(),i.left=-t.z/2,i.right=t.z/2,i.top=t.x/2,i.bottom=-t.x/2,i.near=1,i.far=t.y+i.near,i.updateProjectionMatrix(),O(l,e,t,n,r),i.position.addVectors(e,n.clone().multiplyScalar(-t.y/2-i.near)),r&&i.up.set(r.x,r.y,r.z),i.lookAt(e),z.debug&&(g.position.set(e.x,e.y,e.z),g.rotation.set(i.rotation.x,i.rotation.y,i.rotation.z),g.scale.set(t.z,t.x,t.y)),m.uniforms.worldSize.value.copy(t),i.orthoScale=t.x,i.clientHeight=z.texSize,s.reset(i),s.areaCullThreshold=A)}),this.renderIntoShadow=function(e){if(!e.overrideMaterial||!e.overrideMaterial.transparent){e.forEachNoMesh&&(b.ENABLE_PIXEL_CULLING||b.USE_HLOD)&&(e.forEachNoMesh((t=>{e.frags.getWorldBounds(t,I);const i=e.frags.vizflags[t]&E.MeshFlags.MESH_VISIBLE,n=s.estimateProjectedDiameter(I){"use strict";i.r(t),i.d(t,{FloatToHalf:()=>a,HALF_INT_MAX:()=>c,HalfTest:()=>d,HalfToFloat:()=>l,HalfToInt:()=>u,IntToHalf:()=>h});var n=new Float32Array(1),r=new Uint32Array(n.buffer),o=new Uint16Array(1),s=new Uint16Array(1);let a=function(e){n[0]=e;var t=r[0],i=0;if(2147483647&t){var a=2147483648&t,l=2139095040&t,c=8388607&t;if(0===l)s[i++]=a>>16;else if(2139095040==l)s[i++]=0===c?a>>16|31744:65024;else{var h,u,d=a>>16,f=(l>>23)-127+15;f>=31?s[i++]=a>>16|31744:f<=0?(14-f>24?h=0:(h=(c|=8388608)>>14-f,o[0]=h,h=o[0],c>>13-f&1&&(h+=1)),s[i++]=d|h):(u=f<<10,o[0]=u,u=o[0],h=c>>13,o[0]=h,h=o[0],s[i++]=4096&c?1+(d|u|h):d|u|h)}}else s[i++]=t>>16;return s[0]},l=function(e){var t,i=65535&e;if(32767&i){var o=32768&i,s=31744&i,a=1023&i;if(0===s){var l=-1;do{l++,a<<=1}while(!(1024&a));var c=o<<16,h=(s<<16>>26)-15+127-l,u=h<<23,d=(1023&a)<<13;t=c|u|d}else t=31744==s?0===a?o<<16|2139095040:4290772992:(c=o<<16)|(u=(h=(s<<16>>26)-15+127)<<23)|(d=a<<13)}else t=i<<16;return r[0]=t,n[0]},c=59390,h=function(e){if(e>c-1||e<0)return console.log("out of range"),a(NaN);if(0===e)return 0;var t=!1;e>c/2-1&&(t=!0,e-=c/2-1);var i=0|Math.abs(e/1024),n=Math.pow(2,i-13),r=n+(e-1024*i)*n/1024;return t&&(r=-r),a(r)},u=function(e){if(0===e)return 0;var t=l(e),i=!1;t<0&&(i=!0,t=-t);var n=0|Math.floor(Math.log(t)/Math.log(2)),r=Math.pow(2,n),o=(t-r)/r*1024+1024*(n+13);return i&&(o+=c/2-1),o},d=function(){for(var e=[-1/255,-.17,-75,-1789,-.005],t=0;t{"use strict";i.r(t),i.d(t,{LineStyleDefs:()=>r,createLinePatternForDef:()=>l,createLinePatternTexture:()=>a,createLinePatternTextureData:()=>o,createLinePatternTextureFromDefs:()=>s});var n=i(72091);let r=[{id:"SOLID",name:"Solid",ascii_art:"_______________________________________",def:[1]},{id:"BORDER",name:"Border",ascii_art:"__ __ . __ __ . __ __ . __ __ . __ __ .",def:[.5,-.25,.5,-.25,0,-.25]},{id:"BORDER2",name:"Border (.5x)",ascii_art:"__ __ . __ __ . __ __ . __ __ . __ __ .",def:[.25,-.125,.25,-.125,0,-.125]},{id:"BORDERX2",name:"Border (2x)",ascii_art:"____ ____ . ____ ____ . ___",def:[1,-.5,1,-.5,0,-.5]},{id:"CENTER",name:"Center",ascii_art:"____ _ ____ _ ____ _ ____ _ ____ _ ____",def:[1.25,-.25,.25,-.25]},{id:"CENTER2",name:"Center (.5x)",ascii_art:"___ _ ___ _ ___ _ ___ _ ___ _ ___",def:[.75,-.125,.125,-.125]},{id:"CENTERX2",name:"Center (2x)",ascii_art:"________ __ ________ __ _____",def:[2.5,-.5,.5,-.5]},{id:"DASHDOT",name:"Dash dot",ascii_art:"__ . __ . __ . __ . __ . __ . __ . __",def:[.5,-.25,0,-.25]},{id:"DASHDOT2",name:"Dash dot (.5x)",ascii_art:"_._._._._._._._._._._._._._._.",def:[.25,-.125,0,-.125]},{id:"DASHDOTX2",name:"Dash dot (2x)",ascii_art:"____ . ____ . ____ . ___",def:[1,-.5,0,-.5]},{id:"DASHED",name:"Dashed",ascii_art:"__ __ __ __ __ __ __ __ __ __ __ __ __ _",def:[.5,-.25]},{id:"DASHED2",name:"Dashed (.5x)",ascii_art:"_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _",def:[.25,-.125]},{id:"DASHEDX2",name:"Dashed (2x)",ascii_art:"____ ____ ____ ____ ____ ___",def:[1,-.5]},{id:"DIVIDE",name:"Divide",ascii_art:"____ . . ____ . . ____ . . ____ . . ____",def:[.5,-.25,0,-.25,0,-.25]},{id:"DIVIDE2",name:"Divide (.5x)",ascii_art:"__..__..__..__..__..__..__..__.._",def:[.25,-.125,0,-.125,0,-.125]},{id:"DIVIDEX2",name:"Divide (2x)",ascii_art:"________ . . ________ . . _",def:[1,-.5,0,-.5,0,-.5]},{id:"DOT",name:"Dot",ascii_art:". . . . . . . . . . . . . . . . . . . . . . . .",def:[0,-.25]},{id:"DOT2",name:"Dot (.5x)",ascii_art:"........................................",def:[0,-.125]},{id:"DOTX2",name:"Dot (2x)",ascii_art:". . . . . . . . . . . . . .",def:[0,-.5]},{id:"HIDDEN",name:"Hidden",ascii_art:"__ __ __ __ __ __ __ __ __ __ __ __ __ __",def:[.25,-.125]},{id:"HIDDEN2",name:"Hidden (.5x)",ascii_art:"_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _",def:[.125,-.0625]},{id:"HIDDENX2",name:"Hidden (2x)",ascii_art:"____ ____ ____ ____ ____ ____ ____",def:[.5,-.25]},{id:"PHANTOM",name:"Phantom",ascii_art:"______ __ __ ______ __ __ ______",def:[1.25,-.25,.25,-.25,.25,-.25]},{id:"PHANTOM2",name:"Phantom (.5x)",ascii_art:"___ _ _ ___ _ _ ___ _ _ ___ _ _",def:[.625,-.125,.125,-.125,.125,-.125]},{id:"PHANTOMX2",name:"Phantom (2x)",ascii_art:"____________ ____ ____ _",def:[2.5,-.5,.5,-.5,.5,-.5]},{id:"ACAD_ISO02W100",name:"ISO dash",ascii_art:"__ __ __ __ __ __ __ __ __ __ __ __ __",def:[12,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO03W100",name:"ISO dash space",ascii_art:"__ __ __ __ __ __",def:[12,-18],pen_width:1,unit:"mm"},{id:"ACAD_ISO04W100",name:"ISO long-dash dot",ascii_art:"____ . ____ . ____ . ____ . _",def:[24,-3,.5,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO05W100",name:"ISO long-dash double-dot",ascii_art:"____ .. ____ .. ____ .",def:[24,-3,.5,-3,.5,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO06W100",name:"ISO long-dash triple-dot",ascii_art:"____ ... ____ ... ____",def:[24,-3,.5,-3,.5,-3,.5,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO07W100",name:"ISO dot",ascii_art:". . . . . . . . . . . . . . . . . . . .",def:[.5,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO08W100",name:"ISO long-dash short-dash",ascii_art:"____ __ ____ __ ____ _",def:[24,-3,6,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO09W100",name:"ISO long-dash double-short-dash",ascii_art:"____ __ __ ____",def:[24,-3,6,-3,6,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO10W100",name:"ISO dash dot",ascii_art:"__ . __ . __ . __ . __ . __ . __ . ",def:[12,-3,.5,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO11W100",name:"ISO double-dash dot",ascii_art:"__ __ . __ __ . __ __ . __ _",def:[12,-3,12,-3,.5,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO12W100",name:"ISO dash double-dot",ascii_art:"__ . . __ . . __ . . __ . .",def:[12,-3,.5,-3,.5,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO13W100",name:"ISO double-dash double-dot",ascii_art:"__ __ . . __ __ . . _",def:[12,-3,12,-3,.5,-3,.5,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO14W100",name:"ISO dash triple-dot",ascii_art:"__ . . . __ . . . __ . . . _",def:[12,-3,.5,-3,.5,-3,.5,-3],pen_width:1,unit:"mm"},{id:"ACAD_ISO15W100",name:"ISO double-dash triple-dot",ascii_art:"__ __ . . . __ __ . .",def:[12,-3,12,-3,.5,-3,.5,-3,.5,-3],pen_width:1,unit:"mm"},{id:"FENCELINE1",name:"Fenceline circle",ascii_art:"----0-----0----0-----0----0-----0--",def:[.25,-.1,["CIRC1","ltypeshp.shx","x=-.1","s=.1"],-.1,1]},{id:"FENCELINE2",name:"Fenceline square",ascii_art:"----[]-----[]----[]-----[]----[]---",def:[.25,-.1,["BOX","ltypeshp.shx","x=-.1","s=.1"],-.1,1]},{id:"TRACKS",name:"Tracks",ascii_art:"-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-",def:[.15,["TRACK1","ltypeshp.shx","s=.25"],.15]},{id:"BATTING",name:"Batting",ascii_art:"SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS",def:[1e-4,-.1,["BAT","ltypeshp.shx","x=-.1","s=.1"],-.2,["BAT","ltypeshp.shx","r=180","x=.1","s=.1"],-.1]},{id:"HOT_WATER_SUPPLY",name:"Hot water supply",ascii_art:"---- HW ---- HW ---- HW ----",def:[.5,-.2,["HW","STANDARD","S=.1","R=0.0","X=-0.1","Y=-.05"],-.2]},{id:"GAS_LINE",name:"Gas line",ascii_art:"----GAS----GAS----GAS----GAS----GAS----GAS--",def:[.5,-.2,["GAS","STANDARD","S=.1","R=0.0","X=-0.1","Y=-.05"],-.25]},{id:"ZIGZAG",name:"Zig zag",ascii_art:"/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/\\/",def:[1e-4,-.2,["ZIG","ltypeshp.shx","x=-.2","s=.2"],-.4,["ZIG","ltypeshp.shx","r=180","x=.2","s=.2"],-.2]}],o=function(e,t){for(var i=e+3,r=t,o=1;oi&&(i=r.def.length)}let{tex:s,pw:a,lineStyleTex:c}=o(i,t);for(var h=0;h4&&void 0!==arguments[4]?arguments[4]:96;for(var o=i*n,s=e.unit&&"mm"==e.unit?1/25.4:1,a=e.pen_width||0,l=e.def,c=0,h=0;h{"use strict";i.d(t,{Ay:()=>r,fX:()=>o,v8:()=>s});var n=i(33472);class r{constructor(){this.webglContextId=1}onContextRestored(){this.webglContextId++}refreshTargetIfNeeded(e){this.refreshIfNeeded(e);const t=null==e?void 0:e.shareDepthFrom;this.refreshIfNeeded(t)}refreshTargetsIfNeeded(e){if(Array.isArray(e))for(var t=0;t{const t={};return e.getAllModels().forEach((e=>{e.isConsolidated()&&(e.unconsolidate(),t[e.id]=!0)})),t},s=async(e,t)=>{for(const i of e.getAllModels())t[i.id]&&await e.impl.consolidateModel(i)}},68630:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MaterialConverter:()=>s});var n=i(72091),r=i(36771);const o=Autodesk.Viewing;let s={convertMaterial:async function(e,t,i,o){if(c(e))return await a(),i=s.convertPrismMaterial(e,t,i,o),e.transparent=i.transparent,i;o=o||e.userassets;var h,u,d=e.materials,f=d[o],p=f.properties;if(i){if(!(i instanceof n.MeshPhongMaterial))return null;i.needsUpdate=!0}else i=new n.MeshPhongMaterial;if(i.proteinMat=e,i.proteinCategories=f.categories,i.packedNormals=!0,f&&"SimplePhong"===f.definition){i.tag=f.tag,i.proteinType=f.proteinType,void 0===i.proteinType&&(i.proteinType=null);var m=(0,r.parseMaterialBoolean)(p,"generic_baked_lighting",!1);i.disableEnvMap=m;var g=i.ambient=(0,r.parseMaterialColor)(p,"generic_ambient"),v=i.color=(0,r.parseMaterialColor)(p,"generic_diffuse"),y=i.specular=(0,r.parseMaterialColor)(p,"generic_specular"),b=i.emissive=(0,r.parseMaterialColor)(p,"generic_emissive");i.shininess=(0,r.parseMaterialScalar)(p,"generic_glossiness",30),i.opacity=1-(0,r.parseMaterialScalar)(p,"generic_transparency",0),i.reflectivity=(0,r.parseMaterialScalar)(p,"generic_reflectivity_at_0deg",0);var x=(0,r.parseMaterialBoolean)(p,"generic_bump_is_normal"),_=(0,r.parseMaterialScalar)(p,"generic_bump_amount",0);null==_&&(_=1),x?(_>1&&(_=1),i.normalScale=new n.Vector2(_,_)):(_>=1&&(_=.03),i.bumpScale=_);var E=(0,r.parseMaterialBoolean)(p,"generic_is_metal");void 0!==E&&(i.metal=E);var S=(0,r.parseMaterialBoolean)(p,"generic_backface_cull");void 0===S||S||(i.side=n.DoubleSide),i.transparent=f.transparent,i.textureMaps={};var A=f.textures;for(var w in A)if((h={}).textureObj=d[A[w].connections[0]],u=h.textureObj.properties,h.textureObj.matrix=l(h.textureObj),h.uriPointer=u.uris.unifiedbitmap_Bitmap.values,h.uri=h.uriPointer[0],h.uri){if("generic_diffuse"==w)h.mapName="map",(!i.color||0===i.color.r&&0===i.color.g&&0===i.color.b)&&i.color.setRGB(1,1,1);else if("generic_bump"==w)h.mapName=x?"normalMap":"bumpMap";else if("generic_specular"==w)h.mapName="specularMap";else{if("generic_alpha"!=w)continue;h.mapName="alphaMap",i.side=n.DoubleSide,i.transparent=!0}i.textureMaps[h.mapName]=h}0===v.r&&0===v.g&&0===v.b&&0===y.r&&0===y.g&&0===y.b&&0===g.r&&0===g.g&&0===g.b&&0===b.r&&0===b.g&&0===b.b&&(v.r=v.g=v.b=.4),i.extraDepthOffset=(0,r.parseMaterialScalar)(p,"generic_depth_offset"),i.extraDepthOffset&&(i.polygonOffset=!0,i.polygonOffsetFactor=i.extraDepthOffset,i.polygonOffsetUnits=0)}else i.ambient=new n.Color(197379),i.color=new n.Color(7829367),i.specular=new n.Color(3355443),i.shininess=30,i.shading=n.SmoothShading;return e.transparent=i.transparent,i},convertTexture:function(e,t,i,o){"bumpMap"==e.mapName||"normalMap"==e.mapName?t.anisotropy=0:t.anisotropy=o||0;t.flipY=void 0===e.flipY||e.flipY,t.invert=!1,t.wrapS=n.RepeatWrapping,t.wrapT=n.RepeatWrapping,t.offset=e.offset??t.offset,t.rotation=e.rotation??t.rotation??0,t.repeat=e.repeat??t.repeat,e.isPrism?s.convertPrismTexture(e.textureObj,t,i):function(e,t){if(!e)return;var i=e.properties;t.invert=(0,r.parseMaterialBoolean)(i,"unifiedbitmap_Invert"),t.clampS=!(0,r.parseMaterialBoolean)(i,"texture_URepeat",!0),t.clampT=!(0,r.parseMaterialBoolean)(i,"texture_VRepeat",!0),t.wrapS=t.clampS?n.ClampToEdgeWrapping:n.RepeatWrapping,t.wrapT=t.clampT?n.ClampToEdgeWrapping:n.RepeatWrapping,t.matrix=e.matrix||(e.matrix=(0,r.Get2DSimpleMapTransform)(i))}(e.textureObj,t)},isPrismMaterial:c,convertMaterialGltf:function(e,t){var i=new n.MeshPhongMaterial({name:e.name??""});i.packedNormals=!0,i.textureMaps={},i.reflectivity=0;var r=e.pbrMetallicRoughness||{},o=r.baseColorTexture||r.baseColorFactor;if(o)if(Array.isArray(o))i.color=new n.Color(o[0],o[1],o[2]),i.opacity=o[3];else if("object"==typeof o){i.color=new n.Color(1,1,1);var s={mapName:"map"},a=t.gltf.textures[o.index];s.uri=t.gltf.images[a.source].uri,s.flipY=!1,i.textureMaps[s.mapName]=s,u(o,s)}var l=r.metallicRoughnessTexture;if(l){s={mapName:"metallicRoughnessTexture"},a=t.gltf.textures[l.index];s.uri=t.gltf.images[a.source].uri,s.flipY=!1,i.textureMaps[s.mapName]=s,u(l,s)}else i.metalness=void 0!==r.metallicFactor?r.metallicFactor:1,i.roughness=void 0!==r.roughnessFactor?r.roughnessFactor:1;!0===e.doubleSided&&(i.side=n.DoubleSide);var c=e.alphaMode||h.OPAQUE;c===h.BLEND?(i.transparent=!0,i.depthWrite=!1):(i.transparent=!1,c===h.MASK&&(i.alphaTest=void 0!==e.alphaCutoff?e.alphaCutoff:.5));if(void 0!==e.normalTexture){s={mapName:"normalTexture"},a=t.gltf.textures[e.normalTexture.index];s.uri=a.source,s.flipY=!1,s.uri=t.gltf.images[a.source].uri,u(e.normalTexture,s),i.normalScale=s.repeat,void 0!==e.normalTexture.scale&&i.normalScale.set(e.normalTexture.scale,e.normalTexture.scale)}if(void 0!==e.occlusionTexture){s={mapName:"occlusionTexture"},a=t.gltf.textures[e.occlusionTexture.index];s.uri=t.gltf.images[a.source].uri,s.flipY=!1,i.textureMaps[s.mapName]=s,void 0!==e.occlusionTexture.strength&&(i.aoMapIntensity=e.occlusionTexture.strength),u(e.occlusionTexture,s)}void 0!==e.emissiveFactor&&(i.emissive=(new n.Color).fromArray(e.emissiveFactor));if(void 0!==e.emissiveTexture){s={mapName:"emissiveTexture"},a=t.gltf.textures[e.emissiveTexture.index];s.uri=t.gltf.images[a.source].uri,s.flipY=!1,i.textureMaps[s.mapName]=s,u(e.emissiveTexture,s)}return i},applyAppearanceHeuristics:function(e,t,i){var r=e.proteinMat?e.proteinMat:null,o=e.prismType&&-1!==e.prismType.indexOf("Prism");o&&e.transparent&&(e.side===n.FrontSide&&"PrismGlazing"!==e.prismType&&(e.side=n.DoubleSide),e.side===n.DoubleSide&&e.depthTest&&(e.twoPassTransparency=!0));var s=e.textureMaps||{};if(!t){var a,l=e.proteinType&&-1!==e.proteinType.indexOf("Prism");if(e.metal)e.reflectivity||(e.reflectivity=d(e.specular)),r&&(1===e.reflectivity&&(e.reflectivity=d(e.specular)),0===e.color.r&&0===e.color.g&&0===e.color.b||(e.color.r*=.1,e.color.g*=.1,e.color.b*=.1));else if(l){var c=!1;if("PrismLayered"===e.proteinType){e.clearcoat=!0,e.reflectivity=.06;var h=e.proteinCategories;h&&h.length&&-1!=h[0].indexOf("Metal")&&(c=!0)}e.reflectivity=Math.sqrt(e.reflectivity),c?e.specular.copy(e.color):(e.specular.r=e.reflectivity,e.specular.g=e.reflectivity,e.specular.b=e.reflectivity)}else e.reflectivity?e.reflectivity>.3?(e.metal=!0,e.specular.r=e.color.r,e.specular.g=e.color.g,e.specular.b=e.color.b,e.color.r*=.1,e.color.g*=.1,e.color.b*=.1):(e.specular.r*=e.reflectivity,e.specular.g*=e.reflectivity,e.specular.b*=e.reflectivity):1!==e.color.r||1!==e.color.g||1!==e.color.b||1!==e.specular.r||1!==e.specular.g||1!==e.specular.b||s.map||s.specularMap?(e.reflectivity=.01+.06*d(e.specular),e.specular.r*=e.reflectivity,e.specular.g*=e.reflectivity,e.specular.b*=e.reflectivity):(e.metal=!0,e.reflectivity=.7,e.color.r*=.1,e.color.g*=.1,e.color.b*=.1),e.opacity<1&&(e.reflectivity=1);(e.transparent||-1!==(null===(a=s.map)||void 0===a||null===(a=a.uri)||void 0===a?void 0:a.toLowerCase().indexOf(".png"))||s.alphaMap)&&(e.alphaTest=.01)}if(s.normalMap){var u=e.bumpScale;(void 0===u||u>=1)&&(u=1),e.normalScale=new n.Vector2(u,u)}else(void 0===e.bumpScale&&(s.map||s.bumpMap)||e.bumpScale>=1)&&(e.bumpScale=.03);if((!t||o)&&e.transparent){if(o)e.lmv_depthWriteTransparent=!0,e.depthWrite=!!i;else if(e.opacity>=1)s.alphaMap||(e.transparency=!1);else e.lmv_depthWriteTransparent=!0,e.depthWrite=!!i}void 0!==e.shininess&&(e.shininess*=.25)},applyGeometryFlagsToMaterial:function(e,t){t.attributes.color&&(e.vertexColors=n.VertexColors,e.needsUpdate=!0);if(!e.proteinType&&t.attributes.uv&&t.attributes.uv.isPattern){var i=!1;e.map&&!e.bumpMap&&(e.bumpMap=e.map,e.needsUpdate=!0,i=!0),e.textureMaps&&e.textureMaps.map&&!e.textureMaps.bumpMap&&(e.textureMaps.bumpMap=e.textureMaps.map,e.needsUpdate=!0,i=!0),i&&void 0===e.bumpScale&&(e.bumpScale=.03)}},hasTiling:function(e){var t=e.materials[e.userassets[0]];if(t){if("TilingPattern"===t.definition)return!0}return!1},loadMaterialConverterPrismLibrary:a};async function a(){if(o.MaterialConverterPrism&&o.MaterialConverterPrism.convertPrismMaterial||await o.theExtensionManager.downloadExtension("Autodesk.Viewing.MaterialConverterPrism"),!s.convertPrismMaterial)for(let e in o.MaterialConverterPrism)s[e]=o.MaterialConverterPrism[e]}function l(e){return e.matrix||(e.matrix=(0,r.Get2DSimpleMapTransform)(e.properties)),e.matrix}function c(e){var t=e.materials,i=t[e.userassets[0]];if(i){var n=i.definition;if("TilingPattern"===n)(i=t[i.properties.references.grout_material.connections[0]])&&(n=i.definition);return"PrismLayered"===n||"PrismMetal"===n||"PrismOpaque"===n||"PrismTransparent"===n||"PrismGlazing"===n||"PrismWood"===n}return!1}var h={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function u(e,t){var i;t.offset=new n.Vector2(0,0),t.repeat=new n.Vector2(1,1),t.rotation=0;const r=null===(i=e.extensions)||void 0===i?void 0:i.KHR_texture_transform;if(r&&"object"==typeof r){const{scale:e,offset:i,rotation:o}=r;i&&(t.offset=new n.Vector2(i[0],i[1])),e&&(t.repeat=new n.Vector2(e[0],e[1])),o&&(t.rotation=o)}}function d(e){return.299*e.r+.587*e.g+.114*e.b}},36771:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Get2DSimpleMapTransform:()=>h,MaterialConverterCommon:()=>u,SRGBToLinear:()=>c,SRGBToLinearFloat:()=>l,parseMaterialBoolean:()=>s,parseMaterialColor:()=>r,parseMaterialGeneric:()=>a,parseMaterialScalar:()=>o});var n=i(72091);function r(e,t,i){if(!e||!e.colors)return new n.Color(1,0,0);var r=e.colors[t];if(!r)return new n.Color(0,0,0);var o=r.values;if(!o||!o.length)return new n.Color(1,0,0);var s=o[0];return new n.Color(s.r,s.g,s.b)}function o(e,t,i){if(!e||!e.scalars)return i;var n=e.scalars[t];return n?n.values[0]:i}function s(e,t,i){if(!e||!e.booleans)return i;var n=e.booleans[t];return void 0===n?i:n}function a(e,t,i,n){if(!e||!e[t])return n;var r=e[t][i];return r?r.values[0]:n}function l(e){var t=e;return t<=.04045?t/=12.92:t=Math.pow((t+.055)/1.055,2.4),t}function c(e){var t,i,r;return t=l(e.r),i=l(e.g),r=l(e.b),new n.Color(t,i,r)}function h(e){var t=o(e,"texture_UScale",1),i=o(e,"texture_VScale",1),n=o(e,"texture_UOffset",0),r=o(e,"texture_VOffset",0),s=o(e,"texture_WAngle",0);return{elements:[Math.cos(s)*t,Math.sin(s)*i,0,-Math.sin(s)*t,Math.cos(s)*i,0,n,r,1]}}let u={parseMaterialColor:r,parseMaterialScalar:o,parseMaterialBoolean:s,parseMaterialGeneric:a,SRGBToLinearFloat:l,SRGBToLinear:c,Get2DSimpleMapTransform:h}},62612:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MATERIAL_VARIANT:()=>A,MaterialManager:()=>T});var n=i(72091),r=i(90255),o=i(83081),s=i(49965),a=i.n(s),l=i(24314),c=i.n(l),h=i(30130);let u={uniforms:n.UniformsUtils.merge([h.ShaderChunks.CutPlanesUniforms,{pixelsPerUnit:{type:"f",value:1},aaRange:{type:"f",value:.5},tLayerMask:{type:"t",value:null},tLineStyle:{type:"t",value:null},vLineStyleTexSize:{type:"v2",value:new n.Vector2(13,70)},tRaster:{type:"t",value:null},tSelectionTexture:{type:"t",value:null},vSelTexSize:{type:"v2",value:new n.Vector2(4096,1)},displayPixelRatio:{type:"f",value:1},opacity:{type:"f",value:1},selectionColor:{type:"v4",value:new n.Vector4(0,0,1,1)},modelId:{type:"v3",value:new n.Vector3(0,0,0)},viewportId:{type:"f",value:0},swap:{type:"f",value:0},grayscale:{type:"f",value:0},viewportBounds:{type:"v4",value:new n.Vector4(0,0,1,1)},unpackXform:{type:"v4",value:new n.Vector4(1,1,0,0),perObject:!0},tIdColor:{type:"t",value:null,perObject:!0},vIdColorTexSize:{type:"v2",value:new n.Vector2(256,1),perObject:!0},meshAnimTime:{type:"f",value:0,perObject:!0}}]),vertexShader:a(),fragmentShader:c()};var d=i(97431),f=i.n(d),p=i(65144),m=i.n(p),g=i(30514);let v={uniforms:n.UniformsUtils.merge([u.uniforms,{aaRange:{type:"f",value:1},size:{type:"v2",value:new n.Vector2(1024,768)},cameraPos:{type:"v3",value:new n.Vector3},tanHalfFov:{type:"f",value:0},miterLimit:{type:"f",value:g.VBB_MITER_SEGMENT_LIMIT},miterScaleFactor:{type:"f",value:g.VBB_MITER_SEGMENT_SCALE_FACTOR},miterCP:{type:"f",value:g.VBB_MITER_SEGMENT_CP}}]),vertexShader:f(),fragmentShader:m()};class y extends n.ShaderMaterial{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(e.isScreenSpace?{uniforms:n.UniformsUtils.clone(v.uniforms),vertexShader:v.vertexShader,fragmentShader:v.fragmentShader}:{uniforms:n.UniformsUtils.clone(u.uniforms),vertexShader:u.vertexShader,fragmentShader:u.fragmentShader}),this.isScreenSpace=!!e.isScreenSpace,e.hasLineStyles&&(this.hasLineStyles=!0),this.is2d=!0,this.supportsViewportBounds=!0,this.depthWrite=!1,this.depthTest=!1,this.side=n.DoubleSide,this.transparent=!0,this.blending=n.NormalBlending,this.type="LMVLineMaterial"+(this.isScreenSpace?"SS":""),"multiply"==e.compositeOperation?this.blending=n.MultiplyBlending:"min"==e.compositeOperation||"darken"==e.compositeOperation?(this.blending=n.CustomBlending,this.blendEquation=n.MinEquation,this.blendEquationAlpha=n.AddEquation,this.blendSrcAlpha=n.SrcAlphaFactor,this.blendDstAlpha=n.DstAlphaFactor):"max"!=e.compositeOperation&&"lighten"!=e.compositeOperation||(this.blending=n.CustomBlending,this.blendEquation=n.MaxEquation,this.blendEquationAlpha=n.AddEquation,this.blendSrcAlpha=n.SrcAlphaFactor,this.blendDstAlpha=n.DstAlphaFactor)}}var b=i(97011),x=i(68630);function _(e,t,i){e.x=t.r,e.y=t.g,e.z=t.b,e.w=i}var E=new n.Color("#0000FF"),S=.6;const A={INSTANCED:0,VERTEX_IDS:1},w=(e,t,i)=>{e[t]=i,e.needsUpdate=!0};function T(e){this._renderer=e,this._textures={},this._texturesToUpdate=[],this._materials={},this._materialsNonHDR={},this._exposureBias=0,this._tonemapMethod=0,this._envMapExposure=1,this._envRotationSin=0,this._envRotationCos=1,this._reflectionMap=null,this._irradianceMap=null,this._cutplanes=[],this.cutplanesHideInterior=0,this._mrtNormals=!1,this._mrtIdBuffer=void 0,this._polygonOffsetOn=!1,this._pixelsPerUnit=1,this._lineStyleTex=null,this._swapBlackAndWhite=0,this._grayscaleLines=0,this._depthWriteTransparent=!0,this._needsTwoSided=!1,this._hasTransparentMaterial=!1,this.hasPrism=!1,this._forceDoubleSided=!1,this._layerMaskTextures={},this._layerMaps={},this._selectionTextures={},this._prismWoodTextures=void 0,this.defaultMaterial=new n.MeshPhongMaterial({color:7829367,specular:3355443,shininess:30,reflectivity:0}),this.addMaterial("__defaultMaterial__",this.defaultMaterial),this.initLineStyleTexture(),this.refCount=0}T.prototype.dtor=function(){this.cleanup(),n.Cache.clear(),this._renderer=null},T.prototype._getModelHash=function(e){const t=e&&("number"==typeof e?e:e.id);return"model:"+(t||"")+"|"},T.prototype._getMaterialHash=function(e,t){return e&&e.isOTG()?t:this._getModelHash(e)+"mat:"+t},T.prototype._getTextureHash=function(e,t,i,n){return`${this._getModelHash(e)}mat:${n}|tex:${t}|map:${i}`},T.prototype.addNonHDRMaterial=function(e,t){t.doNotCut||(t.cutplanes=this._cutplanes),this._applyMRTFlags(t),this._materialsNonHDR[e]=t},T.prototype.removeNonHDRMaterial=function(e){delete this._materialsNonHDR[e]},T.prototype.addMaterialNonHDR=function(e,t){this.addNonHDRMaterial(e,t)},T.prototype.addHDRMaterial=function(e,t){this._reflectionMap&&!t.disableEnvMap&&(t.envMap=this._reflectionMap),this._irradianceMap&&(t.irradianceMap=this._irradianceMap),t.exposureBias=Math.pow(2,this._exposureBias),t.tonemapOutput=this._tonemapMethod,t.envMapExposure=this._envMapExposure,t.envRotationSin=this._envRotationSin,t.envRotationCos=this._envRotationCos,this._applyCutPlanes(t),this._applyMRTFlags(t),this._applyPolygonOffset(t,this._polygonOffsetOn),this._materials[e]=t},T.prototype._applyCutPlanes=function(e){e.doNotCut?e.cutplanes=null:(e.cutplanes=this._cutplanes,e.cutplanesHideInterior=this.cutplanesHideInterior,e.needsUpdate=!0,this._cutplanes&&this._cutplanes.length>0?e.side=n.DoubleSide:this._needsTwoSided||e.is2d||this._forceDoubleSided||(e.side=n.FrontSide))},T.prototype.addMaterial=function(e,t,i){var r=t.prismType&&-1!==t.prismType.indexOf("Prism");this.hasPrism=r||this.hasPrism,x.MaterialConverter.applyAppearanceHeuristics(t,r||i,this.isDepthWriteTransparentEnabled()),t.side===n.DoubleSide&&(this._needsTwoSided=!0),this.addHDRMaterial(e,t)},T.prototype.addLineMaterial=function(e,t,i){var n=i&&this._layerMaskTextures[i];n&&(t.defines.HAS_LAYERS=1,t.uniforms.tLayerMask.value=n),t.hasLineStyles&&(t.defines.HAS_LINESTYLES=1,t.defines.MAX_LINESTYLE_LENGTH=this._lineStyleTex.image.width,t.uniforms.tLineStyle.value=this._lineStyleTex,t.uniforms.vLineStyleTexSize.value.set(this._lineStyleTex.image.width,this._lineStyleTex.image.height)),t.uniforms.swap.value=this._swapBlackAndWhite,t.uniforms.grayscale.value=this._grayscaleLines,t.doNotCut||(t.cutplanes=this._cutplanes),this._updatePixelScaleForMaterial(t),this._materials[e]=t,this._applyMRTFlags(t)},T.prototype.addOverrideMaterial=function(e,t){if(this.addNonHDRMaterial(e,t),t.variants)for(var i=0;i0)return this.variants[t-1]}return null}},T.prototype.removeMaterial=function(e){delete this._materials[e]},T.prototype.findMaterial=function(e,t){var i=this._getMaterialHash(e,t);return this._materials[i]},T.prototype.convertSharedMaterial=async function(e,t,i){var n=this.findMaterial(e,i);return n||((n=await this.convertOneMaterial(e,t,i)).hash=i),this._addMaterialRef(n,e.id),n},T.prototype.convertOneMaterial=async function(e,t,i){var r=x.MaterialConverter.isPrismMaterial(t);r&&await x.MaterialConverter.loadMaterialConverterPrismLibrary();var s=e.getData(),a=s&&s.materials?s.materials.scene.SceneUnit:"inch",l=r&&x.MaterialConverter.swapPrismWoodTextures(this._prismWoodTextures);l&&o.logger.warn("Unexpected wood textures converting a material");var c=await x.MaterialConverter.convertMaterial(t,a);if(s.doubleSided&&(c.side=n.DoubleSide),this.addMaterial(i,c),this._hasTransparentMaterial=this._hasTransparentMaterial||c.transparent,x.MaterialConverter.hasTiling(t)){c.decals=[];var h=t.materials,u=h[t.userassets[0]];let e=u.properties.references.base_materials.connections,n=u.properties.references.tiles.connections,r=[];for(let o=0;o{-1!==t.indexOf(n)&&i(e)};this.forEach(r,!1,t),this.forEach(r,!1,t,this._materialsNonHDR)};var M={needsClear:!1,needsRender:!1,overlayDirty:!1};function C(e,t,i){let n=e.slots[i];n?-1==n.indexOf(t)&&n.push(t):e.slots[i]=[t]}T.prototype.updateMaterials=function(){for(M.needsRender=!1;this._texturesToUpdate.length;){var e=this._texturesToUpdate.pop();for(let i in e.slots){let n=e.slots[i];for(var t=0;t{const i=t.indexOf(e);if(-1!==i)return{hash:e,idx:i};const n=e+"|"+A.INSTANCED,r=t.indexOf(n);if(-1!==r)return{hash:n,idx:r};const o=e+"|"+A.VERTEX_IDS,s=t.indexOf(o);return-1!==s?{hash:o,idx:s}:void 0};let i={};const n=e.getData(),r=n.fragments.materials,o=Object.keys(this._materials);for(let e=0;e{var i=this._selectionTextures[e];i&&(i.dispose(),i.needsUpdate=!0,t&&delete this._selectionTextures[e])},p=(e,t)=>{const i=this._layerMaskTextures[e];void 0!==i&&(i.dispose(),i.needsUpdate=!0,t&&delete this._layerMaskTextures[e])};if(this._prismWoodTextures&&x.MaterialConverter.disposePrismWoodTextures(this._prismWoodTextures),this._prismWoodTextures=void 0,e)f(e.id,!0),p(e.id,!0),delete this._layerMaps[e.id];else{for(var m in this._selectionTextures)this._selectionTextures.hasOwnProperty(m)&&f(m,!1);for(var m in this._selectionTextures={},this._layerMaskTextures)this._layerMaskTextures.hasOwnProperty(m)&&p(m,!1);this._layerMaskTextures={},this._layerMaps={},this._reflectionMap=null,this._irradianceMap=null}},T.prototype.toggleDepthWriteTransparent=function(e){this._depthWriteTransparent!=e&&(this._depthWriteTransparent=e,this.forEach((function(t){t.lmv_depthWriteTransparent&&(t.depthWrite=e)}),!1,!0))},T.prototype.isDepthWriteTransparentEnabled=function(){return this._depthWriteTransparent},T.prototype.hasTwoSidedMaterials=function(){return this._needsTwoSided},T.prototype.hasTransparentMaterial=function(){return this._hasTransparentMaterial},T.prototype.texturesLoaded=function(){return 0===this._texturesToUpdate.length},T.prototype.renderer=function(){return this._renderer},T.prototype.setTonemapExposureBias=function(e){this._exposureBias=e;var t=Math.pow(2,e);this.forEach((function(e){w(e,"exposureBias",t)}),!0,!0)},T.prototype.setTonemapMethod=function(e){this._tonemapMethod=e,this.forEach((function(t){t.tonemapOutput=e,t.needsUpdate=!0}),!0,!0)},T.prototype.setEnvExposure=function(e){var t=Math.pow(2,e);this._envMapExposure=t,this.forEach((function(e){w(e,"envMapExposure",t)}),!0,!0)},T.prototype.setEnvRotation=function(e){var t=this._envRotationSin=Math.sin(e),i=this._envRotationCos=Math.cos(e);this.forEach((function(e){e.envRotationSin=t,e.envRotationCos=i,e.needsUpdate=!0}),!0,!0)},T.prototype.setReflectionMap=function(e){this._reflectionMap=e,this.forEach((function(t){t.disableEnvMap||w(t,"envMap",e)}),!0,!0)},T.prototype.setIrradianceMap=function(e){this._irradianceMap=e,this.forEach((function(t){w(t,"irradianceMap",e)}),!0,!0)},T.prototype.setDoubleSided=function(e,t){this._forceDoubleSided=e;let i={};i=t?this.getModelMaterials(t,!0).mats:this._materials,this.forEach((function(t){t.side=e?n.DoubleSide:n.FrontSide,t.needsUpdate=!0}),!0,!0,i)},T.prototype.setCutPlanes=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;var i=!1;const r=this._cutplanes.length!==(e&&e.length||0),o=t!==this.cutplanesHideInterior,s=r||o;for(;this._cutplanes.length>0;)this._cutplanes.pop();if(this.cutplanesHideInterior=t,e)for(var a=0;a{this._applyCutPlanes(e),i=i||e.side==n.DoubleSide}),!1,!0),this._materialsNonHDR)this._materialsNonHDR[l].doNotCut||(this._materialsNonHDR[l].needsUpdate=!0);return i||this._needsTwoSided},T.prototype.getCutPlanes=function(){return this._cutplanes.slice()},T.prototype.getCutPlanesRaw=function(){return this._cutplanes},T.prototype._applyPolygonOffset=function(e){(e instanceof n.MeshPhongMaterial||e.isPrismMaterial)&&(e.polygonOffset=this._polygonOffsetOn,e.polygonOffsetFactor=this._polygonOffsetFactor,e.polygonOffsetUnits=this._polygonOffsetUnits,e.extraDepthOffset&&(e.polygonOffsetFactor+=e.extraDepthOffset),e.needsUpdate=!0)},T.prototype.getPolygonOffsetOn=function(){return this._polygonOffsetOn},T.prototype.getPolygonOffsetFactor=function(){return this._polygonOffsetFactor},T.prototype.getPolygonOffsetUnits=function(){return this._polygonOffsetUnits},T.prototype.togglePolygonOffset=function(e,t,i){this._polygonOffsetOn=e,this._polygonOffsetFactor=e?t||1:0,this._polygonOffsetUnits=e?i||.1:0;var n=this;this.forEach((function(e){n._applyPolygonOffset(e)}),!1,!0)},T.prototype._applyMRTFlags=function(e){var t=e.supportsMrtNormals||e instanceof n.MeshPhongMaterial||e.isPrismMaterial||e instanceof n.MeshBasicMaterial||e instanceof n.LineBasicMaterial||e instanceof n.PointCloudMaterial||e instanceof n.PointsMaterial,i=e.mrtNormals,r=e.mrtIdBuffer;e.skipMrtNormals||(e.mrtNormals=t&&this._mrtNormals),e.mrtIdBuffer=this._mrtIdBuffer,e.mrtNormals===i&&e.mrtIdBuffer===r||(e.needsUpdate=!0)},T.prototype.toggleMRTSetting=function(e){this._mrtNormals=e.mrtNormals,this._mrtIdBuffer=e.mrtIdBuffer;var t=this;function i(e){t._applyMRTFlags(e)}this.forEach(i,!1,!0),this.forEach(i,!1,!0,this._materialsNonHDR)},T.prototype.adjustMaterialMRTSetting=function(e){this._applyMRTFlags(e)},T.prototype.initLineStyleTexture=function(){this._lineStyleTex=(0,b.createLinePatternTexture)()},T.prototype.setLineStyleTexture=function(e){this._lineStyleTex=e},T.prototype.initLayersTexture=function(e,t,i){for(var r=this._layerMaskTextures[i],o=r?r.image.data:new Uint8Array(65536),s=0,a=e;s1&&void 0!==arguments[1]?arguments[1]:this._camera,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this._deviceWidth,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this._deviceHeight,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:this._pixelsPerUnit,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1;if(e.is2d){if(e.isScreenSpace)if(e.uniforms.size.value.set(i,n),e.uniforms.aaRange.value=.5,null!=t&&t.isPerspective){e.uniforms.cameraPos.value.copy(t.position);const i=t.fov*Math.PI/180;e.uniforms.tanHalfFov.value=Math.tan(.5*i)}else e.uniforms.tanHalfFov.value=0;else e.uniforms.aaRange.value=.5/(r*e.modelScale*o);e.uniforms.pixelsPerUnit.value=r*e.modelScale*o}},T.prototype.updatePixelScale=function(e,t,i,n){this._pixelsPerUnit=e,this._deviceWidth=t,this._deviceHeight=i,this._camera=n,this.forEach((r=>this._updatePixelScaleForMaterial(r,n,t,i,e)))},T.prototype.updatePixelScaleForModel=function(e,t,i,n,r,o){const s=this.getModelMaterials(e),a=e=>this._updatePixelScaleForMaterial(e,o,i,n,t,r);Object.values(s.mats).forEach(a),Object.values(s.matsNonHDR).forEach(a),Object.values(s.selectionMats).forEach(a)},T.prototype.updateSwapBlackAndWhite=function(e){var t=this._swapBlackAndWhite=e?1:0;this.forEach((function(e){e.is2d&&(e.uniforms.swap.value=t)}))},T.prototype.setGrayscale=function(e){var t=this._grayscaleLines=e?1:0;this.forEach((function(e){e.is2d&&(e.uniforms.grayscale.value=t)}))},T.prototype.updateViewportId=function(e){this.forEach((function(t){t.is2d&&(t.uniforms.viewportId.value=e,t.needsUpdate=!0)}))},T.prototype.create2DMaterial=function(e,t,i,o,s){var a=e?e.getData():null,l="__lineMaterial__";t.image&&(l+="|image:"+t.image.name),t.clip&&(l+="|clip:"+JSON.stringify(t.clip)),i&&(l+="|id"),o&&(l+="|selection"),t.skipEllipticals&&(l+="|skipEllipticals"),t.skipCircles&&(l+="|skipCircles"),t.skipTriangleGeoms&&(l+="|skipTriangleGeoms"),t.skipMiterLines&&(l+="|skipMiterLines"),t.useInstancing&&(l+="|useInstancing"),t.isScreenSpace&&(l+="|isScreenSpace"),t.unpackPositions&&(l+="|unpackPositions"),t.hasLineStyles&&(l+="|hasLineStyles"),t.compositeOperation&&(l+="|"+t.compositeOperation),t.hasOpacity&&(l+="|hasOpacity"),t.noIdOutput&&(l+="|noIdOutput");var c=this._getMaterialHash(e,l);if(!this._materials.hasOwnProperty(c)){var h=new y(t);if(i?(h.defines.ID_COLOR=1,h.blending=n.NoBlending):o?(h.uniforms.tSelectionTexture.value=o,h.uniforms.vSelTexSize.value.set(o.image.width,o.image.height),h.defines.SELECTION_RENDERER=1,this.get2dSelectionColor(h.uniforms.selectionColor)):(this.get2dSelectionColor(h.uniforms.selectionColor),h.mrtIdBuffer=this._mrtIdBuffer),t.skipEllipticals||(h.defines.HAS_ELLIPTICALS=1),t.skipCircles||(h.defines.HAS_CIRCLES=1),t.skipTriangleGeoms||(h.defines.HAS_TRIANGLE_GEOMS=1),t.skipMiterLines||(h.defines.HAS_MITER_LINES=1),t.noIdOutput&&(h.defines.NO_ID_OUTPUT=1),t.useInstancing&&(h.defines.USE_INSTANCING=1),t.unpackPositions&&!i&&(h.defines.UNPACK_POSITIONS=1),t.msdfFontTexture&&(h.defines.MSDF_TEXTURE_FONT=1),t.imageUVTexture&&(h.defines.IMAGE_UV_TEXTURE=1),t.viewportBounds&&(h.uniforms.viewportBounds.value=t.viewportBounds.clone(),h.defines.VIEWPORT_CLIPPING=1),"number"==typeof t.opacity&&(h.uniforms.opacity.value=t.opacity),t.image){var u=function(i,r){i?(i.wrapS=n.ClampToEdgeWrapping,i.wrapT=n.ClampToEdgeWrapping,i.minFilter=r?n.LinearFilter:n.LinearMipMapLinearFilter,i.magFilter=n.LinearFilter,i.anisotropy=1,i.flipY=!0,i.generateMipmaps=!0,i.needsUpdate=!0,t.msdfFontTexture||t.imageUVTexture||(h.defines.HAS_RASTER_QUADS=1),h.uniforms.tRaster.value=i,h.needsUpdate=!0,s&&s(i,e)):s&&s(i,e,t)};if("undefined"!=typeof HTMLCanvasElement&&t.image instanceof HTMLCanvasElement||"undefined"!=typeof HTMLImageElement&&t.image instanceof HTMLImageElement)u(new n.Texture(r.TextureLoader.imageToCanvas(t.image,"multiply"==t.compositeOperation,t.compositeCanvasColor),n.UVMapping),!0);else r.TextureLoader.loadTextureWithSecurity(t.image.dataURI,n.UVMapping,u,null,a.acmSessionId)}h.modelScale=t.modelScale||1,t.doNotCut&&(h.doNotCut=!0),h.textureMaps={},this.addLineMaterial(c,h,e&&e.id),(i||o)&&this.addCompactLayoutSupport(h)}return l},T.prototype.set2dSelectionColor=function(e,t){E=new n.Color(e),S=null==t?S:t,this.forEach((function(e){if(e.is2d&&e.uniforms){var t=e.uniforms.selectionColor;t&&(_(t.value,E,S),e.needsUpdate=!0)}}))},T.prototype.get2dSelectionColor=function(e){return e&&_(e.value,E,S),E},T.prototype.get2dSelectionOpacity=function(){return S},T.prototype.setMaterialViewportBounds=function(e,t){e.supportsViewportBounds&&(t?e.defines.VIEWPORT_CLIPPING?e.uniforms.viewportBounds.value.set(t.min.x,t.min.y,t.max.x,t.max.y):(e.uniforms.viewportBounds.value=new n.Vector4(t.min.x,t.min.y,t.max.x,t.max.y),e.defines.VIEWPORT_CLIPPING=1,e.needsUpdate=!0):e.defines.VIEWPORT_CLIPPING&&(delete e.defines.VIEWPORT_CLIPPING,e.needsUpdate=!0))},T.prototype.setViewportBoundsForModel=function(e,t){this.forEachInModel(e,!1,(e=>{this.setMaterialViewportBounds(e,t)}))}},94998:(e,t,i)=>{"use strict";i.r(t),i.d(t,{PhongShader:()=>c});var n=i(72091),r=i(30130),o=i(77431),s=i.n(o),a=i(73560),l=i.n(a);let c={uniforms:n.UniformsUtils.merge([n.UniformsLib.common,n.UniformsLib.bump,n.UniformsLib.normalmap,n.UniformsLib.lights,n.UniformsLib.fog,r.ShaderChunks.CutPlanesUniforms,r.ShaderChunks.IdUniforms,r.ShaderChunks.ThemingUniform,r.ShaderChunks.ShadowMapUniforms,r.ShaderChunks.WideLinesUniforms,{emissive:{type:"c",value:new n.Color(0)},specular:{type:"c",value:new n.Color(1118481)},shininess:{type:"f",value:30},reflMipIndex:{type:"f",value:0},texMatrix:{type:"m3",value:new n.Matrix3},texMatrixBump:{type:"m3",value:new n.Matrix3},texMatrixAlpha:{type:"m3",value:new n.Matrix3},irradianceMap:{type:"t",value:null},exposureBias:{type:"f",value:1},envMapExposure:{type:"f",value:1},envRotationSin:{type:"f",value:0},envRotationCos:{type:"f",value:1}}]),vertexShader:s(),fragmentShader:l()};n.ShaderLib.firefly_phong=c},60012:(e,t,i)=>{"use strict";i.r(t),i.d(t,{GetPrismMapUniforms:()=>r,PrismUtil:()=>o});var n=i(72091);function r(e){var t=e+"_texMatrix",i=e+"_invert",r={};return r[e]={type:"t",value:null},r[t]={type:"m3",value:new n.Matrix3},r[i]={type:"i",value:0},r}let o={GetPrismMapUniforms:r}},88190:(e,t,i)=>{"use strict";i.r(t),i.d(t,{RenderContext:()=>te});var n=i(72091),r=i(55280),o=i(57480),s=i(83081),a=i(21968),l=i(30130),c=i(44203),h=i.n(c),u=i(66299),d=i.n(u);let f={uniforms:n.UniformsUtils.merge([l.ShaderChunks.DepthTextureUniforms,{tDiffuse:{type:"t",value:null},tAO:{type:"t",value:null},useAO:{type:"i",value:0},aoOpacity:{type:"f",value:.625},tOverlay:{type:"t",value:null},useOverlay:{type:"i",value:0},useOverlayAlpha:{type:"i",value:1},tID:{type:"t",value:null},tID2:{type:"t",value:null},objIDv4:{type:"v4",value:new n.Vector4(0,0,0,0)},modelIDv2:{type:"v2",value:new n.Vector2(0,0)},modelIDsv2v:{type:"v2v",value:[]},edgeObjIDv4:{type:"v4",value:new n.Vector4(0,0,0,0)},edgeModelIDv2:{type:"v2",value:new n.Vector2(0,0)},highlightIntensity:{type:"f",value:1},highlightColor:{type:"c",value:new n.Color(1,1,1)},resolution:{type:"v2",value:new n.Vector2(1/1024,1/512)},selectionColor:{type:"c",value:new n.Color(0,0,0)},expand2dSelection:{type:"f",value:.5},tCrossFadeTex0:{type:"t",value:null},tCrossFadeTex1:{type:"t",value:null},crossFadeOpacity0:{type:"f",value:0},crossFadeOpacity1:{type:"f",value:0},highlightFullModel:{type:"f",value:0}}]),vertexShader:h(),fragmentShader:d()};var p=i(48717),m=i(2303),g=i.n(m),v=i(49248),y=i.n(v);let b={uniforms:{tDiffuse:{type:"t",value:null},uResolution:{type:"v2",value:new n.Vector2(1/1024,1/512)}},vertexShader:g(),fragmentShader:y()};var x=i(9696),_=i.n(x),E=i(94727),S=i.n(E);let A={uniforms:{color:{type:"v4",value:new n.Vector4(0,0,0,.3)},cutplanes:{type:"v4v",value:[]}},vertexShader:_(),fragmentShader:S()};var w=i(47697),T=i.n(w),M=i(29126),C=i.n(M);let P={uniforms:{cutplanes:{type:"v4v",value:[]}},vertexShader:T(),fragmentShader:C()};var D=i(2179);const L={Color:1,Depth:2,ModelId:3,Overlay:4,Post1:5,Post2:6,SSAO:7,PostDisplay:8};function I(e,t,i,r,o){var s=new n.WebGLRenderTarget(e,t,{minFilter:n.NearestFilter,magFilter:n.NearestFilter,format:i,type:r,stencilBuffer:!1});return o&&(s.shareDepthFrom=o),s.name="depthTarget",s}const R=new n.Vector4(1,1,1,.5),O=new n.Vector4(1,1,1,1);function N(e,t){var i=new n.WebGLRenderTarget(e,t,{minFilter:n.NearestFilter,magFilter:n.NearestFilter,format:n.RGBAFormat,type:n.UnsignedByteType,stencilBuffer:!1});return i.texture.generateMipmaps=!1,i.canReadPixels=!0,i}function F(e){e.material.blending=n.NoBlending,e.material.depthWrite=!1,e.material.depthTest=!1}function U(e,t){if(e&&t){t.length=0;for(let i=0;i>8&255)/255),t}function Ve(e,t,i){t=t||0;const n=function(e){return e!==Te&&(Te=e,-1===e&&(e=0),_.uniforms.objIDv4.value.set((255&e)/255,(e>>8&255)/255,(e>>16&255)/255,(e>>24&255)/255),!0)}(e),r=function(e){if(Array.isArray(e)&&1==e.length&&(e=e[0]),e===Me)return!1;const t=Array.isArray(Me)?Me.length:1,i=Array.isArray(e)?e.length:1;return!(i>1&&(e.sort(),i==t&&!Me.some(((t,i)=>t!==e[i])))||(i!=t&&(1==i?delete _.material.defines.HIGHLIGHT_MODEL_ID_COUNT:_.material.defines.HIGHLIGHT_MODEL_ID_COUNT=i.toString(),_.material.needsUpdate=!0),Me=e,1==i?ke(e=Array.isArray(e)?e[0]:e,_.uniforms.modelIDv2.value):_.uniforms.modelIDsv2v.value=e.map((e=>ke(e))),0))}(t);if(n||r)return _.uniforms.highlightIntensity.value=0,we=performance.now(),_.uniforms.highlightFullModel.value=i?1:0,!0}this.settings=De,this.depthTargetSupported=function(){return Ae},this.isWeakDevice=function(){return xe},this.init=function(l,c,h){let u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const S=u.offscreen,w=void 0!==u.useIdBufferSelection&&u.useIdBufferSelection;var T;(t=function(){var e=P;const t=(0,D.createShaderMaterial)(e);t.blending=n.NoBlending,t.packedNormals=!0,t.depthWrite=!1;var i=1,r=2,o=4,s=8,a=[];a[0]=null;for(var l=1;le.needSeparateDepth==t.needSeparateDepth?0:1==e.needSeparateDepth?1:1==t.needSeparateDepth?-1:void 0));for(let t=0;t"lmvInternal"!==e.name)).length){let e=W;if(p.setRenderTarget(e),s||(s=1,o||(p.setClearColor(ee,0),p.clear(!0,!1,!1))),u.materialPre&&(d.overrideMaterial=u.materialPre),u.needSeparateDepth&&!l?(e=W,e.shareDepthFrom=null,p.setRenderTarget(e),p.clear(!1,!0,!1),l=!0):e.shareDepthFrom=H,u.needIdTarget&&Ue(L.ModelId)){re||((re=N(e.width,e.height)).shareDepthFrom=H,re.name="overlayId"),0==a&&(p.setRenderTarget(re),p.clear(!0,!1,!1),a=!0);var m=[e];u.needIdTarget&&m.push(re),this._render(p,m,d,f,r)}else this._render(p,e,d,f,r),u.needIdTarget&&(re||((re=N(e.width,e.height)).shareDepthFrom=H,re.name="overlayId"),p.setProgramPrefix(1,"#define ID_COLOR","#define ID_COLOR"),this._render(p,re,d,f,r),p.setProgramPrefix(0,"",""));u.materialPost&&(_e.isRenderingHidden=!0,p.getContext().depthFunc(p.getContext().GREATER),u.materialPost.depthFunc=n.GreaterDepth,De.renderEdges&&(i.depthWrite=!1,i.depthTest=!1,d.overrideMaterial=i,this._render(p,e,d,f)),d.overrideMaterial=u.materialPost,this._render(p,e,d,f,r),p.getContext().depthFunc(p.getContext().LEQUAL),u.materialPost.depthFunc=n.LessEqualDepth,_e.isRenderingHidden=!1),De.renderEdges&&u.materialPre&&(i.depthWrite=!1,i.depthTest=!0,d.overrideMaterial=i,this._render(p,e,d,f)),d.overrideMaterial=null}}_e.isRenderingOverlays=!1,i.depthWrite=!0,i.depthTest=!0,_.uniforms.useOverlay.value=s,s&&(_.uniforms.useOverlayAlpha.value=be)},this.computeSSAO=function(t){if(!t&&De.sao){if(!S){if(z&&z.length){var i=z[0];y.uniforms.resolution.value.set(1/i.width,1/i.height),y.render(e,i,M);for(var n=1;ne.dispose())),z=void 0);for(var t=0;t0,g.material.defines.MAX_MIP_LEVEL=i,g.material.needsUpdate=!0;for(let e=1;e<=i;++e){const t=d>>e,i=f>>e,r=new n.WebGLRenderTarget(t,i,{minFilter:n.NearestFilter,magFilter:n.NearestFilter,format:n.RGBAFormat,depthBuffer:!1,stencilBuffer:!1});r.texture.generateMipmaps=!1,r.name=`depthTarget_mipmap ${e}`,z[e-1]=r,g.uniforms[`tDepth_mip${e}`].value=r.texture}for(let t=i+1;t<=e;++t)g.uniforms[`tDepth_mip${t}`].value=null}g.uniforms.size.value.set(d,f),g.uniforms.resolution.value.set(b,E),g.uniforms.tDepth.value=M.texture,m.uniforms.size.value.set(d,f),m.uniforms.resolution.value.set(b,E),w.updateUniformValue("tDepth",M),_.uniforms.tDepth.value=M.texture}if(Ue(L.ModelId)){if(r||!ne[0]||ne[0].width!=d||ne[0].height!=f){for(p=0;p2||e<1)&&e!==De.numIdTargets&&(De.numIdTargets=e,0!==ne.length&&2===e&&1===ne.length)){var t=N(ne[0].width,ne[0].height);return t.shareDepthFrom=H,t.name="id "+ne.length,ne.push(t),_.uniforms.tID2.value=t,_.material.defines.USE_MODEL_ID="1",_.material.needsUpdate=!0,!0}},this.getAntialiasing=function(){return De.antialias},this.initPostPipeline=function(e,t){De.sao=e&&Ae,De.antialias=t,De.haveTwoSided&&Fe((function(e){e.side=n.DoubleSide})),Fe((function(e){e.needsUpdate=!0})),g.material.needsUpdate=!0,m.material.needsUpdate=!0,y.material.needsUpdate=!0,v.material.needsUpdate=!0,x.material.needsUpdate=!0,w.setMaterialNeedsUpdate(),_.material.needsUpdate=!0,d.material.needsUpdate=!0,E.material.needsUpdate=!0,this.setSize(C,k)},this.setClearColors=function(e,t){e instanceof n.Color?ve=e.clone():!t||e.equals(t)?ve=new n.Color(e.x,e.y,e.z):xe?ve=new n.Color(.5*(e.x+t.x),.5*(e.y+t.y),.5*(e.z+t.z)):(ve=void 0,d.uniforms.color1.value.copy(e),d.uniforms.color2.value.copy(t))},this.useOverlayAlpha=function(e){be=e},this.setClearAlpha=function(e){ye=e},this.setAOEnabled=function(e){De.sao=e&&Ae,Le.sao=De.sao,this.setSize(C,k,!1,!0)},this.setAOOptions=function(e,t,i){void 0!==e&&(g.uniforms.radius.value=e,g.uniforms.bias.value=(0,r.isMobileDevice)()?.1:.01,m.uniforms.radius.value=e),void 0!==t&&(g.uniforms.intensity.value=t),_.uniforms.aoOpacity.value=void 0!==i?i:1,S=!1},this.getAOEnabled=function(){return De.sao},this.getAORadius=function(){return g.uniforms.radius.value},this.getAOIntensity=function(){return g.uniforms.intensity.value},this.setCubeMap=function(e){d.material.envMap=e,e||this.toggleEnvMapBackground(!1),e&&De.envMapBg&&(d.uniforms.envMapBackground.value=!0)},this.setBackgroundTexture=function(e){const t=d.material.useBackgroundTexture;d.uniforms.backgroundTexture.value=e,d.material.useBackgroundTexture=!!e,!!e!==t&&(d.material.needsUpdate=!0)},this.getCubeMap=function(){return d.material.envMap},this.setEnvRotation=function(e){ae=e,d.material.envRotationSin=Math.sin(e),d.material.envRotationCos=Math.cos(e)},this.getEnvRotation=function(){return ae},this.setEnvExposure=function(e){const t=d.material.envMapExposure,i=Math.pow(2,e);d.uniforms.envMapExposure.value=i,d.material.envMapExposure=i,i!==t&&(d.material.needsUpdate=!0),oe=e},this.setTonemapExposureBias=function(e){se=e,d.uniforms.exposureBias.value=Math.pow(2,e)},this.getExposureBias=function(){return se},this.setCamera=function(e){c=e},this.setTonemapMethod=function(t){const i=le;le=t,e.gammaInput=0!==t,d.material.tonemapOutput=le,t!==i&&(d.material.needsUpdate=!0)},this.getToneMapMethod=function(){return le},this.toggleTwoSided=function(e){De.haveTwoSided!=e&&t&&Fe((function(t){t.side=e?n.DoubleSide:n.FrontSide,t.needsUpdate=!0})),De.haveTwoSided=e},this.toggleEdges=function(e){De.renderEdges=e,Le.renderEdges=e},this.getRenderEdges=function(){return De.renderEdges},this.toggleEnvMapBackground=function(e){De.envMapBg=e,d.uniforms.envMapBackground.value=e&&!!d.material.envMap},this.enter2DMode=function(e,t){l=e,Le.sao=De.sao,Le.antialias=De.antialias,Le.idbuffer=De.idbuffer,Le.renderEdges=De.renderEdges,Le.useIdBufferSelection=De.useIdBufferSelection,t&&(Le.selectionColor=De.selectionColor,this.setSelectionColor(t)),De.idbuffer=!0,De.renderEdges=!1,_.material.defines.IS_2D="",Ne(De.idbuffer),this.initPostPipeline(!1,!1)},this.exit2DMode=function(){l=null,De.idbuffer=Le.idbuffer,De.renderEdges=Le.renderEdges,Le.selectionColor&&this.setSelectionColor(Le.selectionColor),delete _.material.defines.IS_2D,Ne(Le.idbuffer),this.initPostPipeline(Le.sao,Le.antialias)},this.idAtPixel=function(e,t,i,n){return this.idAtPixels(e,t,1,i,n)},this.idAtPixels=function(t,i,n,r,o){if(o&&o[0]||(o=ne),!o[0])return 0;n%2==0&&(n+=1);const s=.5*(t+1)*o[0].width-.5*(n-1),a=.5*(i+1)*o[0].height-.5*(n-1);if(V[n]&&s===V[n][4]&&a===V[n][5]&&V[n][6]==o[0].name)return U(V[n],r),V[n][0];const l=4*n*n;fe[l]||(fe[l]=new Uint8Array(l));const c=fe[l];let h;return e.readRenderTargetPixels(o[0],s,a,n,n,c),o[1]&&(pe[l]||(pe[l]=new Uint8Array(l)),h=pe[l],e.readRenderTargetPixels(o[1],s,a,n,n,h)),function(e,t,i,n,r,o,s){let a;s=s||ne;let l=0,c=0,h=0,u=-1;V[i]=[-1,-1,null,null,e,t,s[0].name];for(let o=0;o=0&&o<=i&&f>=0&&f<=i){const l=o+f*i;if(a=n[4*l+2]<<16|n[4*l+1]<<8|n[4*l],a=a<<8>>8,V[i][0]=a,r){var d=r[4*l+1]<<8|r[4*l];V[i][1]=d<<16>>16}if(V[i][2]=2*(e+o)/s[0].width-1,V[i][3]=2*(t+f)/s[0].height-1,-1!==a)break}if(l==c||l<0&&l==-c||l>0&&l==1-c){const e=h;h=-u,u=e}l+=h,c+=u}return U(V[i],o),a}(s,a,n,c,h,r,o)},this.idsAtPixelsBox=function(t,i,n,r,o,s){if((s=s||ne)[0]){var a=n*s[0].width,l=r*s[0].height,c=0|.5*(t+1)*s[0].width,h=0|.5*(i+1)*s[0].height,u=new Uint8Array(4*a*l);e.readRenderTargetPixels(s[0],c,h,a,l,u);var d=void 0;o&&s[1]&&(d=new Uint8Array(4*a*l),e.readRenderTargetPixels(s[1],c,h,a,l,d));var f={};for(let e=0;e>8)>0){var m=0;d&&(m=(m=d[4*e+1]<<8|d[4*e])<<16>>16);var g=p+"-"+m;f[g]||(f[g]=!0,o.push([p,m]))}}}},this.readbackTargetId=function(){if(!ne[0])return null;var t=new Uint8Array(4*ne[0].width*ne[0].height);return e.readRenderTargetPixels(ne[0],0,0,ne[0].width,ne[0].height,t),{buffer:t,width:ne[0].width,height:ne[0].height}},this.rolloverObjectViewport=function(e,t){me[1]=0;var i=this.idAtPixel(e,t,me);return this.rolloverObjectId(i,null,me[1])},this.rolloverObjectId=function(e,t,i){return Ve(e,i,!1)},this.getRollOverDbId=function(){return Te},this.getRollOverModelId=function(){return Me},this.rollOverModelId=function(e){return Ve(1,e,!0)},this.setRollOverHighlightColor=function(e){e?_.uniforms.highlightColor.value.copy(e):_.uniforms.highlightColor.value.setRGB(1,1,1)},this.setDbIdForEdgeDetection=function(e,t){_.uniforms.edgeObjIDv4.value.set((255&e)/255,(e>>8&255)/255,(e>>16&255)/255,(e>>24&255)/255),_.uniforms.edgeModelIDv2.value.set((255&t)/255,(t>>8&255)/255)},this.setSpatialFilterForRollOver=function(e){if(!e||this.spatialFilterForRollOverSupported()){var t="SPATIAL_FILTER";_.material.defines[t]!==e&&(e&&""!==e?_.material.defines[t]=e:delete _.material.defines[t],_.material.needsUpdate=!0,_.uniforms.highlightIntensity.value=0,we=performance.now())}else s.logger.warn("Spatial filter for mouse-over can only be used with depth target")},this.spatialFilterForRollOverSupported=function(){return Ue(L.Depth)},this.setEdgeColor=function(e){ge.copy(e)},this.setSelectionColor=function(e){var t=new n.Color(e);t.r=Math.pow(t.r,2),t.g=Math.pow(t.g,2),t.b=Math.pow(t.b,2),_.uniforms.selectionColor.value.set(t),_.material.needsUpdate=!0,De.selectionColor=e},this.setUnitScale=function(e){ce=e},this.getUnitScale=function(){return ce},this.getBlendPass=function(){return _},this.getClearPass=function(){return d},this.getColorTarget=function(){return H},this.getIDTargets=function(){return ne},this.getDepthTarget=function(){return M},this.getIdTarget=function(){return ne[0]},this.getOverlayIdTarget=function(){return re},this.getDepthMaterial=function(){return t},this.getPostTarget=function(){return q},this.getEdgeMaterial=function(){return i},this.setCrossFade=function(e){Ie=e},this.getCrossFade=function(){return Ie},this.setOffscreenTarget=function(e){Re=e},this.getOffscreenTarget=function(){return Re},this.getNamedTarget=function(e){switch(e){case"color":return H;case"overlay":return W;case"id":return ne[0];case"post1":return q;case"post2":return ie;case"postdisplay":return X;case"ssao":return te;case"depth":return M}return null},this.getCurrentFramebuffer=function(){return e.getCurrentFramebuffer()},this.getConfig=function(){return{renderEdges:De.renderEdges,envMapBackground:De.envMapBg,envMap:d.material.envMap,envExposure:oe,toneMapExposureBias:se,envRotation:this.getEnvRotation(),tonemapMethod:le,clearColor:ve&&ve.clone(),clearColorTop:!ve&&d.uniforms.color1.value.clone(),clearColorBottom:!ve&&d.uniforms.color2.value.clone(),clearAlpha:ye,useOverlayAlpha:be,aoEnabled:this.getAOEnabled(),aoRadius:this.getAORadius(),aoIntensity:this.getAOIntensity(),twoSided:De.haveTwoSided,edgeColor:ge.clone(),unitScale:this.getUnitScale(),is2D:!!_.material.defines.IS_2D,antialias:this.getAntialiasing(),idMaterial:l,selectionColor:De.selectionColor}},this.applyConfig=function(e){this.toggleEdges(e.renderEdges),this.toggleEnvMapBackground(e.envMapBackground),this.setCubeMap(e.envMap),this.setEnvExposure(e.envExposure),this.setTonemapExposureBias(e.toneMapExposureBias),this.setEnvRotation(e.envRotation),this.setTonemapMethod(e.tonemapMethod),this.toggleTwoSided(e.twoSided),this.setEdgeColor(e.edgeColor),this.setUnitScale(e.unitScale),e.clearColor?this.setClearColors(e.clearColor):this.setClearColors(e.clearColorTop,e.clearColorBottom),this.setClearAlpha(e.clearAlpha),this.useOverlayAlpha(e.useOverlayAlpha);var t=!!_.material.defines.IS_2D;e.is2D&&!t?this.enter2DMode(e.idMaterial,e.selectionColor):!e.is2D&&t&&(this.setSelectionColor(e.selectionColor),this.exit2DMode());var i=e.aoEnabled!=this.getAOEnabled(),n=e.antialias!=this.getAntialiasing();(i||n)&&this.initPostPipeline(e.aoEnabled,e.antialias)},this.targetToCanvas=function(t){var i=t.width,n=t.height,r=new Uint8Array(i*n*4);e.readRenderTargetPixels(t,0,0,i,n,r);var o=$.createElement("canvas");o.width=i,o.height=n;var s,a=o.getContext("2d"),l=new Uint8ClampedArray(r);return s=new ImageData(l,i,n),a.putImageData(s,0,0),a.globalCompositeOperation="copy",a.translate(0,n),a.scale(1,-1),a.drawImage(o,0,0,i,n),a.globalCompositeOperation="source-over",{canvas:o,ctx:a}},this.resetRenderStats=function(){e.info.reset()},this.getRenderStats=function(){return Object.assign({},e.info.render)}}},34423:(e,t,i)=>{"use strict";i.r(t),i.d(t,{RenderContextPostProcessExtension:()=>n,RenderContextPostProcessManager:()=>r});class n{constructor(e,t){this.viewer=t,this.renderContext=e,this.postProcPass=null,this.postProcShaded=!1,this.setGlobalManager(t.globalManager)}load(){}unload(){this.viewer=null,this.renderContext=null,this.postProcPass=null}enable(){this.setPostProcShaded(!0);const e=this.renderContext.settings;this.renderContext.initPostPipeline(e.sao,e.antialias),this.viewer.impl.fireRenderOptionChanged(),this.viewer.impl.invalidate(!0,!0,!0)}disable(){this.setPostProcShaded(!1),this.viewer.impl.invalidate(!1,!1,!0)}shouldRenderAfterOverlays(){return!1}render(e,t,i,n){const r=void 0===n||n===this.shouldRenderAfterOverlays();return!(!this.isPostProcShaded()||!r)&&(this.postProcPass.render(e,t,i),!0)}updateUniformValue(e,t,i){this.postProcPass.uniforms[e]&&(i?this.postProcPass.uniforms[e].value.copy(t):this.postProcPass.uniforms[e].value=t,this.viewer.impl.invalidate(!1,!1,!0))}updateDefineValue(e,t){this.postProcPass.material.defines[e]!==t&&(null!==t?this.postProcPass.material.defines[e]=t:delete this.postProcPass.material.defines[e],this.setMaterialNeedsUpdate())}getUniformValue(e){return this.postProcPass.uniforms[e].value}getDefineValue(e){return this.postProcPass.material.defines[e]}changeResolution(e,t){this.postProcPass.uniforms.resolution.value.set(e,t)}setMaterialNeedsUpdate(){this.postProcPass.material.needsUpdate=!0,this.viewer.impl.invalidate(!1,!1,!0)}postProcessEdgesOn(){return!1}setPostProcShaded(e){this.postProcShaded=e}isPostProcShaded(){return this.postProcShaded}getOrder(){return 0}}class r{constructor(){this.rcExtensions=[]}registerPostProcessingExtension(e){this.rcExtensions.push(e),this.rcExtensions.sort(((e,t)=>t.getOrder()-e.getOrder()))}removePostProcessingExtension(e){const t=this.rcExtensions.indexOf(e);-1!==t&&(e.unload(),this.rcExtensions.splice(t,1))}render(e,t,i,n,r){for(let o=0;oe.postProcessEdgesOn()))}isPostProcShaded(){return this.rcExtensions.some((e=>e.isPostProcShaded()))}}},26217:(e,t,i)=>{"use strict";i.r(t),i.d(t,{SAOShader:()=>c});var n=i(72091),r=i(30130),o=i(44203),s=i.n(o),a=i(78101),l=i.n(a);let c={uniforms:n.UniformsUtils.merge([r.ShaderChunks.DepthTextureUniforms,{size:{type:"v2",value:new n.Vector2(512,512)},resolution:{type:"v2",value:new n.Vector2(1/512,1/512)},cameraNear:{type:"f",value:1},cameraFar:{type:"f",value:100},radius:{type:"f",value:12},bias:{type:"f",value:.1},projScale:{type:"f",value:500},intensity:{type:"f",value:1},tDepth_mip1:{type:"t",value:null},tDepth_mip2:{type:"t",value:null},tDepth_mip3:{type:"t",value:null},tDepth_mip4:{type:"t",value:null},tDepth_mip5:{type:"t",value:null}}]),vertexShader:s(),fragmentShader:l()}},30130:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CutPlanesShaderChunk:()=>ke,CutPlanesUniforms:()=>Ee,DepthTextureTestUniforms:()=>De,DepthTextureUniforms:()=>Pe,EnvSamplingShaderChunk:()=>ze,FinalOutputShaderChunk:()=>Xe,HatchPatternShaderChunk:()=>Ge,IdFragmentDeclaration:()=>je,IdOutputShaderChunk:()=>qe,IdUniforms:()=>Se,IdVertexDeclaration:()=>He,IdVertexShaderChunk:()=>We,InstancingVertexDeclaration:()=>Qe,OrderedDitheringShaderChunk:()=>Be,PackDepthShaderChunk:()=>Fe,PackNormalsShaderChunk:()=>Ve,PointSizeDeclaration:()=>tt,PointSizeShaderChunk:()=>it,PointSizeUniforms:()=>Me,ShaderChunks:()=>nt,ShadowMapCommonUniforms:()=>we,ShadowMapDeclareCommonUniforms:()=>Ze,ShadowMapFragmentDeclaration:()=>et,ShadowMapUniforms:()=>Te,ShadowMapVertexDeclaration:()=>$e,ShadowMapVertexShaderChunk:()=>Je,ThemingFragmentDeclaration:()=>Ye,ThemingFragmentShaderChunk:()=>Ke,ThemingUniform:()=>Ae,TonemapShaderChunk:()=>Ue,WideLinesUniforms:()=>Ce,resolve:()=>Ne});var n=i(72091),r=i(35496),o=i.n(r),s=i(96900),a=i.n(s),l=i(99607),c=i.n(l),h=i(1221),u=i.n(h),d=i(90002),f=i.n(d),p=i(9641),m=i.n(p),g=i(22826),v=i.n(g),y=i(1081),b=i.n(y),x=i(31371),_=i.n(x),E=i(91952),S=i.n(E),A=i(14804),w=i.n(A),T=i(11255),M=i.n(T),C=i(26750),P=i.n(C),D=i(15373),L=i.n(D),I=i(78148),R=i.n(I),O=i(74490),N=i.n(O),F=i(25424),U=i.n(F),B=i(30133),k=i.n(B),V=i(40947),G=i.n(V),z=i(79317),H=i.n(z),W=i(40304),j=i.n(W),q=i(53634),X=i.n(q),Y=i(76332),K=i.n(Y),Q=i(6147),Z=i.n(Q),$=i(77019),J=i.n($),ee=i(72373),te=i.n(ee),ie=i(92070),ne=i.n(ie),re=i(50433),oe=i.n(re),se=i(97713),ae=i.n(se),le=i(80862),ce=i.n(le),he=i(17028),ue=i.n(he),de=i(45631),fe=i.n(de),pe=i(1179),me=i.n(pe),ge=i(20990),ve=i.n(ge),ye=i(40444),be=i.n(ye),xe=i(13353),_e=i.n(xe);let Ee={cutplanes:{type:"v4v",value:[]},cutplanesHideInterior:{type:"i",value:0},hatchParams:{type:"v2",value:new n.Vector2(1,10)},hatchTintColor:{type:"c",value:new n.Color(16777215)},hatchTintIntensity:{type:"f",value:1}},Se={dbId:{type:"v3",value:new n.Vector3(0,0,0)},modelId:{type:"v3",value:new n.Vector3(0,0,0)}},Ae={themingColor:{type:"v4",value:new n.Vector4(0,0,0,0)}},we={shadowESMConstant:{type:"f",value:0}},Te=n.UniformsUtils.merge([{shadowMap:{type:"t",value:null},shadowMapSize:{type:"v2",value:new n.Vector2(0,0)},shadowBias:{type:"f",value:0},shadowDarkness:{type:"f",value:0},shadowMatrix:{type:"m4",value:new n.Matrix4},shadowLightDir:{type:"v3",value:new n.Vector3}},we]),Me={point_size:{type:"f",value:1}},Ce={view_size:{type:"v2",value:new n.Vector2(640,480)}},Pe={tDepth:{type:"t",value:null},projInfo:{type:"v4",value:new n.Vector4},isOrtho:{type:"f",value:0},worldMatrix_mainPass:{type:"m4",value:new n.Matrix4}},De={tDepthTest:{type:"t",value:null},tDepthResolution:{type:"v2",value:new n.Vector2(1/1024,1/1024)}};var Le={};for(var Ie in n.ShaderChunk)Le[Ie]=n.ShaderChunk[Ie];Le.pack_depth=o(),Le.depth_texture=a(),Le.tonemap=c(),Le.ordered_dither=u(),Le.cutplanes=f(),Le.pack_normals=m(),Le.hatch_pattern=v(),Le.env_sample=b(),Le.id_decl_vert=_(),Le.id_vert=S(),Le.id_decl_frag=w(),Le.id_frag=M(),Le.final_frag=P(),Le.theming_decl_frag=L(),Le.theming_frag=R(),Le.instancing_decl_vert=N(),Le.shadowmap_decl_common=U(),Le.shadowmap_decl_vert=k(),Le.shadowmap_vert=G(),Le.shadowmap_decl_frag=H(),Le.float3_average=j(),Le.line_decl_common=X(),Le.prism_wood=K(),Le.prism_glazing=Z(),Le.prism_transparency=J(),Le.normal_map=te(),Le.decl_point_size=ne(),Le.point_size=oe(),Le.wide_lines_decl=ae(),Le.wide_lines_vert=ce(),Le.hsv=ue(),Le.importance_sampling=fe(),Le.logdepthbuf_decl_frag=me(),Le.logdepthbuf_frag=ve(),Le.logdepthbuf_decl_vert=be(),Le.logdepthbuf_vert=_e();var Re={},Oe={};for(Ie in Re)Oe[Ie]=new RegExp("#"+Ie+" *<([\\w\\d., ]*)>","g");let Ne=function(e){for(var t in Re){var i=Oe[t];e=e.replace(i,(function(e,i){var n=i.split(",").map((function(e){return e.trim()}));return Re[t].apply(null,n)}))}return e.replace(/#include *<([\w\d.]+)>/g,(function(e,t){if(!Le[t])throw new Error("Cannot resolve #include<"+t+">");return Ne(Le[t])}))},Fe=Le.pack_depth,Ue=Le.tonemap,Be=Le.ordered_dither,ke=Le.cutplanes,Ve=Le.pack_normals,Ge=Le.hatch_pattern,ze=Le.env_sample,He=Le.id_decl_vert,We=Le.id_vert,je=Le.id_decl_frag,qe=Le.id_frag,Xe=Le.final_frag,Ye=Le.theming_decl_frag,Ke=Le.theming_frag,Qe=Le.instancing_decl_vert,Ze=Le.shadowmap_decl_common,$e=Le.shadowmap_decl_vert,Je=Le.shadowmap_vert,et=Le.shadowmap_decl_frag,tt=Le.decl_point_size,it=Le.point_size,nt={IdUniforms:Se,ThemingUniform:Ae,CutPlanesUniforms:Ee,ShadowMapCommonUniforms:we,ShadowMapUniforms:Te,PointSizeUniforms:Me,WideLinesUniforms:Ce,DepthTextureUniforms:Pe,DepthTextureTestUniforms:De,PackDepthShaderChunk:Fe,TonemapShaderChunk:Ue,OrderedDitheringShaderChunk:Be,CutPlanesShaderChunk:ke,PackNormalsShaderChunk:Ve,HatchPatternShaderChunk:Ge,EnvSamplingShaderChunk:ze,IdVertexDeclaration:He,IdVertexShaderChunk:We,IdFragmentDeclaration:je,IdOutputShaderChunk:qe,FinalOutputShaderChunk:Xe,ThemingFragmentDeclaration:Ye,ThemingFragmentShaderChunk:Ke,InstancingVertexDeclaration:Qe,ShadowMapDeclareCommonUniforms:Ze,ShadowMapVertexDeclaration:$e,ShadowMapVertexShaderChunk:Je,ShadowMapFragmentDeclaration:et,PointSizeDeclaration:tt,PointSizeShaderChunk:it,...Le,resolve:Ne}},68449:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ShaderPass:()=>o});var n=i(2179),r=i(72091);let o=function(e,t){this.textureID=void 0!==t?t:"tDiffuse",this.material=(0,n.createShaderMaterial)(e),this.uniforms=this.material.uniforms,this.renderToScreen=!1,this.enabled=!0,this.clear=!1,this.camera=new r.OrthographicCamera(-1,1,1,-1,0,1);var i=new r.BufferGeometry,o=new Float32Array(9);o[0]=-1,o[1]=-1,o[2]=0,o[3]=3,o[4]=-1,o[5]=0,o[6]=-1,o[7]=3,o[8]=0;var s=new Float32Array(6);s[0]=0,s[1]=0,s[2]=2,s[3]=0,s[4]=0,s[5]=2;var a=new Float32Array(9);a[0]=0,a[1]=0,a[2]=1,a[3]=0,a[4]=0,a[5]=1,a[6]=0,a[7]=0,a[8]=1,i.setAttribute("position",new r.BufferAttribute(o,3)),i.setAttribute("normal",new r.BufferAttribute(a,3)),i.setAttribute("uv",new r.BufferAttribute(s,2)),this.quad=new r.Mesh(i,this.material),this.scene=new r.Scene,this.scene.add(this.quad)};o.prototype={render:function(e,t,i,n){this.uniforms[this.textureID]&&(this.uniforms[this.textureID].value=i),e.setRenderTarget(t),!this.renderToScreen&&this.clear&&e.clear(),e.render(this.scene,this.camera)}}},2179:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ShaderUtils:()=>a,createShaderMaterial:()=>r,removeMacro:()=>s,setMacro:()=>o});var n=i(72091);let r=function(e){let t={vertexShader:e.vertexShader,fragmentShader:e.fragmentShader};return e.uniforms&&(t.uniforms=n.UniformsUtils.clone(e.uniforms)),e.defines&&(t.defines=Object.assign({},e.defines)),e.extensions&&(t.extensions=Object.assign({},e.extensions)),e.attributes&&(t.attributes=e.attributes),new n.ShaderMaterial(t)},o=function(e,t,i){i=i||"",e.defines||(e.defines={}),e.defines[t]!=i&&(e.defines[t]=i,e.needsUpdate=!0)},s=function(e,t){(e.defines||e.defines[t])&&(delete e.defines[t],e.needsUpdate=!0)};const a={createShaderMaterial:r,setMacro:o,removeMacro:s}},22267:(e,t,i)=>{"use strict";i.r(t),i.d(t,{GroundShadowShader:()=>x,SHADOWMAP_INCOMPLETE:()=>A,SHADOWMAP_NEEDS_UPDATE:()=>S,SHADOWMAP_VALID:()=>w,ShadowConfig:()=>E,ShadowMapOverrideMaterials:()=>_,ShadowMapShader:()=>b,ShadowMaps:()=>C,ShadowRender:()=>P});var n=i(30130),r=i(2179),o=i(60012),s=i(65802),a=i(39147),l=i(24528),c=i(72091),h=i(9063),u=i.n(h),d=i(32968),f=i.n(d),p=i(54707),m=i.n(p),g=i(77500),v=i.n(g);let y=function(e,t,i){var n="uv_"+e+"_map",r="";return t&&i?r="if ("+n+".x < 0.0 || "+n+".x > 1.0 || "+n+".y < 0.0 || "+n+".y > 1.0) { discard; }":t?r="if ("+n+".x < 0.0 || "+n+".x > 1.0) { discard; }":i&&(r="if ("+n+".y < 0.0 || "+n+".y > 1.0) { discard; }"),"#define "+e.toUpperCase()+"_CLAMP_TEST "+r},b={uniforms:c.UniformsUtils.merge([n.ShaderChunks.ShadowMapCommonUniforms,{shadowMapRangeMin:{type:"f",value:0},shadowMapRangeSize:{type:"f",value:0},shadowMinOpacity:{type:"f",value:0},map:{type:"t",value:null},alphaMap:{type:"t",value:null},texMatrix:{type:"m3",value:new c.Matrix3},texMatrixAlpha:{type:"m3",value:new c.Matrix3}},(0,o.GetPrismMapUniforms)("surface_cutout_map")]),vertexShader:u(),fragmentShader:f()},x={uniforms:n.ShaderChunks.ShadowMapUniforms,vertexShader:m(),fragmentShader:v()};function _(){var e=[],t=(0,r.createShaderMaterial)(b),i=new c.Material;i.visible=!1;var n=[];var o=new function(){this.init=function(){this.isPrism=!1,this.alphaMap=!1,this.alphaClampS=!1,this.alphaClampT=!1,this.alphaInvert=!1,this.rgbaMap=!1,this.rgbaClampS=!1,this.rgbaClampT=!1,this.rgbaInvert=!1,this.instanced=!1,this.decalIndex=-1},this.init(),this.getMaterialIndex=function(){return(this.isPrism?1:0)|(this.alphaMap?2:0)|(this.alphaClampS?4:0)|(this.alphaClampT?8:0)|(this.alphaInvert?16:0)|(this.rgbaMap?32:0)|(this.rgbaClampS?64:0)|(this.rgbaClampT?128:0)|(this.rgbaInvert?256:0)|(this.instanced?512:0)|1024*(this.decalIndex+1)}};function s(n,s){if((a=n)instanceof c.MeshPhongMaterial?a.opacity=s||V.expandByPoint(l))}e.union(V)}),this.getShadowParams=function(){return t},this.getShadowCamera=function(){return n}}const P=function(){};P.RefreshUniformsShadow=function(e,t){e.shadowMap&&(e.shadowMap.value=t.shadowMap),e.shadowMatrix&&(e.shadowMatrix.value=t.shadowMatrix),e.shadowLightDir&&(e.shadowLightDir.value=t.shadowLightDir),e.shadowESMConstant&&(e.shadowESMConstant.value=E.ShadowESMConstant),e.shadowBias&&(e.shadowBias.value=E.ShadowBias),e.shadowMapSize&&(e.shadowMapSize.value=E.ShadowMapSize),e.shadowDarkness&&(e.shadowDarkness.value=E.ShadowDarkness)}},71211:(e,t,i)=>{"use strict";i.d(t,{A:()=>a});var n=i(38383),r=i.n(n),o=i(88368),s=i.n(o);class a{constructor(e,t,i,n){this.viewerImpl=e,this.renderContext=t,this.glRenderer=i,this.materialManager=n,this.materialName="__material_2Don3D__",this.tmpVec=new THREE.Vector3,this.tmpBox=new THREE.Box3}createContext(){this.sheetContext=new Autodesk.Viewing.Private.RenderContext,this.sheetContext.init(this.glRenderer,this.renderContext.settings.logicalWidth,this.renderContext.settings.logicalHeight,{offscreen:!0});const e=this.renderContext.getConfig();e.antialias=!1,e.renderEdges=!1,e.clearAlpha=0,e.clearColor?e.clearColor.set(1,1,1):(e.clearColorBottom.set(1,1,1),e.clearColorTop.set(1,1,1)),this.sheetContext.applyConfig(e),this.prototypeScene=new THREE.Scene}setSize(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.renderContext;this.sheetContext&&(this.sheetContext.setSize(e.settings.logicalWidth,e.settings.logicalHeight),this.updateMaterial())}createScene(){this.setSize(),this.scene=new THREE.Scene,this.planeGeometry=new THREE.PlaneBufferGeometry(1,1),this.material=new THREE.ShaderMaterial({uniforms:{sheetMap:{type:"t",value:this.sheetContext.getColorTarget()},idMap:{type:"t",value:this.sheetContext.getIDTargets()[0]},modelIDv2:{type:"v3",value:new THREE.Vector3},resolution:{type:"v2",value:new THREE.Vector2},alphaTest:{type:"f",value:0}},vertexShader:r(),fragmentShader:s(),side:THREE.DoubleSide,transparent:!0}),this.scene.skipDepthTarget=!0,this.updateMaterial(),this.materialManager.addMaterialNonHDR(this.materialName,this.material),this.mesh=new THREE.Mesh(this.planeGeometry,this.material),this.mesh.matrixAutoUpdate=!1,this.scene.add(this.mesh)}updateMaterial(){if(this.material){const e=this.sheetContext.getColorTarget();this.material.uniforms.sheetMap.value=e,this.material.uniforms.idMap.value=this.sheetContext.getIDTargets()[0],this.material.uniforms.resolution.value.set(1/(e.width||1),1/(e.height||1))}}renderScenePart(e,t,i,n){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:this.renderContext;if(!e.frags||!e.frags.is2d)return;this.sheetContext||this.createContext(),this.scene||this.createScene(),this.material.uniforms.alphaTest.value=!e.needsTwoPasses||e.isSecondPass?0:.9;const o=e.modelId,s=this.viewerImpl.modelQueue().findModel(o),a=this.tmpBox.copy(s.getBoundingBox(!0)),l=s.getViewportBounds();l&&a.intersect(l);const c=s.getModelToViewerTransform();this.material.uniforms.modelIDv2.value.set((255&o)/255,(o>>8&255)/255,(o>>16&255)/255),r.getAOEnabled()!==this.sheetContext.getAOEnabled()&&this.sheetContext.initPostPipeline(r.getAOEnabled(),!1),n=n&&s.areAllVisible(),i=!1;this.lastRenderedModel===s&&e.isSecondPass||(this.sheetContext.beginScene(this.prototypeScene,this.viewerImpl.camera,this.viewerImpl.noLights,!0),this.sheetContext.renderScenePart(e,t,i,n,!1),this.sheetContext.presentBuffer());const h=a.getSize(new THREE.Vector3);this.mesh.matrix.makeScale(h.x,h.y,1),a.getCenter(this.tmpVec),this.mesh.matrix.setPosition(this.tmpVec),c&&this.mesh.matrix.multiplyMatrices(c,this.mesh.matrix),this.mesh.matrixWorld.copy(this.mesh.matrix),this.scene.modelId=o,r.renderScenePart(this.scene,t,i,n),this.lastRenderedModel=s}destroy(){this.material&&(this.material.dispose(),this.materialManager.removeNonHDRMaterial(this.materialName),this.material=null),this.planeGeometry&&(this.planeGeometry.dispose(),this.planeGeometry=null),this.sheetContext&&(this.sheetContext.cleanup(),this.context=null),this.renderContext=null,this.glRenderer=null}}},46890:(e,t,i)=>{"use strict";i.r(t),i.d(t,{WebGLProgram:()=>l});var n=i(61453),r=i(30130),o=i(72091);const s="#version 300 es\n #define texture2D texture\n #define textureCube texture\n #define attribute in\n #define varying out\n",a="#version 300 es\n #define texture2D texture\n #define textureCube texture\n #define textureCubeLodEXT textureLod\n #define gl_FragColor outFragColor\n #define varying in\n";let l=(c=0,h=function(e){return""!==e},u=function(e,t,i,n,r){var o=n?"1.0-":"",s="texture2D("+e+", (UV))",a="";return r=r||"vec4(0.0)",t&&i?a="((UV).x < 0.0 || (UV).x > 1.0 || (UV).y < 0.0 || (UV).y > 1.0) ? "+r+" : ":t?a="((UV).x < 0.0 || (UV).x > 1.0) ? "+r+" : ":i&&(a="((UV).y < 0.0 || (UV).y > 1.0) ? "+r+" : "),"#define GET_"+e.toUpperCase()+"(UV) ("+a+o+s+")"},function(e,t,i,l,d){var f=e,p=f.context,m=i.defines,g=i.__webglShader.uniforms;let v={};v={...i.attributes,...d.attributes};var y=(0,r.resolve)(l.vertexShader),b=(0,r.resolve)(l.fragmentShader),x=i.index0AttributeName;void 0===x&&!0===l.morphTargets&&(x="position");var _,E,S="ENVMAP_MODE_REFLECTION",A=e.gammaFactor>0?e.gammaFactor:1,w=function(e){var t,i,n=[];for(var r in e)!1!==(t=e[r])&&(i="#define "+r+" "+t,n.push(i));return n.join("\n")}(m),T=p.createProgram();i instanceof o.RawShaderMaterial?((_=[s,w].filter(h).join("\n")).length>0&&(_+="\n"),(E=[a,"precision "+l.precisionFragment+" float;",w,"out vec4 outFragColor;"].filter(h).join("\n")).length>0&&(E+="\n")):(_=[s,"precision "+l.precision+" float;","precision "+l.precision+" int;",w,l.vertexPrefix,l.supportsVertexTextures?"#define VERTEX_TEXTURES":"",f.gammaInput?"#define GAMMA_INPUT":"",f.gammaOutput?"#define GAMMA_OUTPUT":"","#define GAMMA_FACTOR "+A,l.mrtNormals?"#define MRT_NORMALS":"",l.mrtIdBuffer?"#define MRT_ID_BUFFER":"","#define MAX_DIR_LIGHTS "+l.maxDirLights,"#define MAX_POINT_LIGHTS "+l.maxPointLights,"#define MAX_SPOT_LIGHTS "+l.maxSpotLights,"#define MAX_HEMI_LIGHTS "+l.maxHemiLights,"#define MAX_BONES "+l.maxBones,"#define NUM_CUTPLANES "+l.numCutplanes,l.loadingAnimationDuration>0?"#define LOADING_ANIMATION":"",l.map?"#define USE_MAP":"",l.envMap?"#define USE_ENVMAP":"",l.envMap?"#define "+S:"",l.irradianceMap?"#define USE_IRRADIANCEMAP":"",l.lightMap?"#define USE_LIGHTMAP":"",l.bumpMap?"#define USE_BUMPMAP":"",l.normalMap?"#define USE_NORMALMAP":"",l.specularMap?"#define USE_SPECULARMAP":"",l.alphaMap?"#define USE_ALPHAMAP":"",l.vertexColors?"#define USE_COLOR":"",l.vertexIds?"#define USE_VERTEX_ID":"",l.useTiling?"#define USE_TILING":"",l.useInstancing?"#define USE_INSTANCING":"",l.wideLines?"#define WIDE_LINES":"",l.skinning?"#define USE_SKINNING":"",l.useVertexTexture?"#define BONE_TEXTURE":"",l.morphTargets?"#define USE_MORPHTARGETS":"",l.morphNormals?"#define USE_MORPHNORMALS":"",l.wrapAround?"#define WRAP_AROUND":"",l.doubleSided?"#define DOUBLE_SIDED":"",l.flipSided?"#define FLIP_SIDED":"",l.sizeAttenuation?"#define USE_SIZEATTENUATION":"",l.packedNormals?"#define UNPACK_NORMALS":"",l.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",l.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","attribute vec3 position;","#ifdef UNPACK_NORMALS","attribute vec2 normal;","#else","attribute vec3 normal;","#endif","attribute vec2 uv;","attribute vec2 uv2;","#ifdef USE_COLOR"," attribute vec3 color;","#endif",""].join("\n"),E=[a,w,l.fragmentPrefix,"#define MAX_DIR_LIGHTS "+l.maxDirLights,"#define MAX_POINT_LIGHTS "+l.maxPointLights,"#define MAX_SPOT_LIGHTS "+l.maxSpotLights,"#define MAX_HEMI_LIGHTS "+l.maxHemiLights,"#define NUM_CUTPLANES "+l.numCutplanes,l.loadingAnimationDuration>0?"#define LOADING_ANIMATION":"",l.alphaTest?"#define ALPHATEST "+l.alphaTest:"",f.gammaInput?"#define GAMMA_INPUT":"",f.gammaOutput?"#define GAMMA_OUTPUT":"","#define GAMMA_FACTOR "+A,l.mrtNormals?"#define MRT_NORMALS":"",l.mrtIdBuffer?"#define MRT_ID_BUFFER":"",l.mrtIdBuffer>1?"#define MODEL_COLOR":"","#define TONEMAP_OUTPUT "+(l.tonemapOutput||0),l.useBackgroundTexture?"#define USE_BACKGROUND_TEXTURE":"",l.useFog&&l.fog?"#define USE_FOG":"",l.useFog&&l.fogExp?"#define FOG_EXP2":"",l.map?"#define USE_MAP":"",l.envMap?"#define USE_ENVMAP":"",l.envMap?"#define ENVMAP_TYPE_CUBE":"",l.envMap?"#define "+S:"",l.envMap?"#define ENVMAP_BLENDING_MULTIPLY":"",l.irradianceMap?"#define USE_IRRADIANCEMAP":"",l.envGammaEncoded?"#define ENV_GAMMA":"",l.irrGammaEncoded?"#define IRR_GAMMA":"",l.envRGBM?"#define ENV_RGBM":"",l.irrRGBM?"#define IRR_RGBM":"",l.lightMap?"#define USE_LIGHTMAP":"",l.bumpMap?"#define USE_BUMPMAP":"",l.normalMap?"#define USE_NORMALMAP":"",l.specularMap?"#define USE_SPECULARMAP":"",l.alphaMap?"#define USE_ALPHAMAP":"",l.vertexColors?"#define USE_COLOR":"",l.vertexIds?"#define USE_VERTEX_ID":"",l.metal?"#define METAL":"",l.clearcoat?"#define CLEARCOAT":"",l.wrapAround?"#define WRAP_AROUND":"",l.doubleSided?"#define DOUBLE_SIDED":"",l.flipSided?"#define FLIP_SIDED":"",l.hatchPattern?"#define HATCH_PATTERN":"",l.useTheming?"#define USE_THEMING":"",l.mapInvert?"#define MAP_INVERT":"",l.useTiling?"#define USE_TILING":"",l.useTiling?"#define TILE_RANGE_X_MIN "+l.tilingRepeatRange[0]:"",l.useTiling?"#define TILE_RANGE_Y_MIN "+l.tilingRepeatRange[1]:"",l.useTiling?"#define TILE_RANGE_X_MAX "+l.tilingRepeatRange[2]:"",l.useTiling?"#define TILE_RANGE_Y_MAX "+l.tilingRepeatRange[3]:"",l.hasRoundCorner?"#define USE_TILING_NORMAL":"",l.useRandomOffset?"#define USE_TILING_RANDOM":"",u("map",l.mapClampS,l.mapClampT),u("bumpMap",l.bumpMapClampS,l.bumpMapClampT),u("normalMap",l.normalMapClampS,l.normalMapClampT),u("specularMap",l.specularMapClampS,l.specularMapClampT),u("alphaMap",l.alphaMapClampS,l.alphaMapClampT,l.alphaMapInvert),l.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",l.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF_EXT":"",l.logarithmicDepthBuffer&&l.polygonOffset?"#define POLYGON_OFFSET":"","precision "+l.precisionFragment+" float;","precision "+l.precisionFragment+" int;","layout(location = 0) out vec4 outFragColor;","uniform highp mat4 viewMatrix;","uniform highp mat4 projectionMatrix;","uniform highp vec3 cameraPosition;","#if defined(USE_ENVMAP) || defined(USE_IRRADIANCEMAP)","uniform mat4 viewMatrixInverse;","#endif",""].join("\n"));var M=new n.WebGLShader(p,p.VERTEX_SHADER,_+y),C=new n.WebGLShader(p,p.FRAGMENT_SHADER,E+b);p.attachShader(T,M),p.attachShader(T,C),void 0!==x&&p.bindAttribLocation(T,0,x),p.linkProgram(T),"undefined"!=typeof DEBUG_SHADERS&&DEBUG_SHADERS&&(!1===p.getProgramParameter(T,p.LINK_STATUS)&&(console.error("THREE.WebGLProgram: Could not initialise shader."),console.error("gl.VALIDATE_STATUS",p.getProgramParameter(T,p.VALIDATE_STATUS)),console.error("gl.getError()",p.getError())),""!==p.getProgramInfoLog(T)&&console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",p.getProgramInfoLog(T))),p.deleteShader(M),p.deleteShader(C);var P=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","modelMatrix","cameraPosition","viewMatrixInverse","mvpMatrix","dbId"];for(var D in g)P.push(D);for(var L in P.push("logDepthBufFC","polygonOffset"),this.uniforms=function(e,t,i){for(var n={},r=0,o=i.length;r{"use strict";i.r(t),i.d(t,{DEBUG_TEXTURE_LOAD:()=>p,WebGLRenderer:()=>v});var n=i(46890),r=i(22267),o=i(45383),s=i(8879),a=i(55280),l=i(72091),c=i(57872);class h{constructor(e,t,i){this.bufferRegion=e,this.offset=t,this.size=i}getGlBuffer(){return this.bufferRegion._buffer}getStride(){return this.bufferRegion._stride}}class u{constructor(e,t,i,n){this._buffer=e.createBuffer(),this._size=t,this._subsets=[],this._freeSpace=t,this._isVertexBuffer=i===e.ARRAY_BUFFER,this._stride=n,e.bindBuffer(i,this._buffer),e.bufferData(i,t,e.STATIC_DRAW)}tryAllocateBufferSubset(e){if(e>this._freeSpace)return null;let t=0;for(let i=0;i=e){const n=new h(this,t,e);return this._subsets.splice(i,0,n),this._freeSpace-=e,n}t=n.offset+n.size}if(t+e>this._size)return null;const i=new h(this,t,e);return this._subsets.push(i),this._freeSpace-=e,i}destroy(e){e.deleteBuffer(this._buffer),this._buffer=null}}class d{constructor(e){this._gl=e,this._indexBuffers=[],this._vertexBuffers=[]}allocateNewBufferRegion(e,t,i){const n=e===this._gl.ARRAY_BUFFER,r=n?this._vertexBuffers:this._indexBuffers,o=Math.max(t,n?c.VERTEX_BUFFER_REGION_SIZE:c.INDEX_BUFFER_REGION_SIZE);console.assert(o%4==0,"Buffer size must be a multiple of 4");const s=new u(this._gl,o,e,i);return r.push(s),s}allocateBufferSubset(e,t,i){const n=t===this._gl.ARRAY_BUFFER?this._vertexBuffers:this._indexBuffers;for(let t=0;t{this._gl.bindBuffer(this._gl.ARRAY_BUFFER,t._buffer);return e+this._gl.getBufferParameter(this._gl.ARRAY_BUFFER,this._gl.BUFFER_SIZE)}),0)/1024),console.log("Actually allocated memory in Vertex Buffers: ",this._vertexBuffers.reduce(((e,t)=>e+t._size-t._freeSpace),0)),console.log("Index Buffer Count: ",this._indexBuffers.length),console.log("Memory in Index Buffers: ",this._indexBuffers.reduce(((e,t)=>{this._gl.bindBuffer(this._gl.ELEMENT_ARRAY_BUFFER,t._buffer);return e+this._gl.getBufferParameter(this._gl.ELEMENT_ARRAY_BUFFER,this._gl.BUFFER_SIZE)}),0)/1024),console.log("Actually allocated memory in Index Buffers: ",this._indexBuffers.reduce(((e,t)=>e+t._size-t._freeSpace),0))}}var f=i(33472);let p=!1;const m=(0,a.getGlobal)(),g=m.document;let v=function(e){console.log("THREE.WebGLRenderer",l.REVISION);var t=void 0!==(e=e||{}).canvas?e.canvas:g.createElement("canvas"),i=null,a=void 0!==e.precision?e.precision:"highp",h=a,u=void 0!==e.alpha&&e.alpha,v=void 0===e.premultipliedAlpha||e.premultipliedAlpha,y=void 0!==e.antialias&&e.antialias,b=void 0===e.stencil||e.stencil,x=void 0===e.preserveDrawingBuffer||e.preserveDrawingBuffer,_=e.logarithmicDepthBuffer,E=new l.Color(0),S=0,A=[],w={},T=new l.Matrix4,M=new l.Matrix3;this.highResTimeStamp=0;var C=[],P=[];this.domElement=t,this.context=null,this.refCount=0,this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.gammaInput=!1,this.gammaOutput=!1,this.maxMorphTargets=8,this.maxMorphNormals=4,this.autoScaleCubemaps=!0,this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0},reset:function(){this.render.calls=0}};var D,L,I,R,O=this,N=[],F=null,U=null,B=null,k=null,V=-1,G=null,z="",H=0,W="",j="",q=new Set,X=0,Y=0,K=0,Q=t.width,Z=t.height,$={},J=new l.Frustum,ee=new l.Matrix4,te=new l.Matrix4,ie=new l.Vector3,ne=new l.Vector3,re=!0,oe={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}};O.capabilities={};try{var se={alpha:u,premultipliedAlpha:v,antialias:y,stencil:b,powerPreference:"high-performance",preserveDrawingBuffer:x};if(D=t.getContext("webgl2",se),O.capabilities.isWebGL2=!0,null===D)throw null!==t.getContext("webgl2",se)?"Error creating WebGL context with your selected attributes.":"Error creating WebGL context.";!function(e){let t=e.colorMask.bind(e),i=e.getParameter(e.COLOR_WRITEMASK);e.colorMask=function(e,n,r,o){e===i[0]&&n===i[1]&&r===i[2]&&o===i[3]||(i[0]=e,i[1]=n,i[2]=r,i[3]=o,t(e,n,r,o))},e.getColorMask=function(){return i.slice()}}(D);const e=D.getExtension("WEBGL_debug_renderer_info");if(e){const t=D.getParameter(e.UNMASKED_VENDOR_WEBGL),i=D.getParameter(e.UNMASKED_RENDERER_WEBGL);console.log("WebGL Renderer: "+i),console.log("WebGL Vendor: "+t)}L=new d(D),I=c.USE_BUFFER_MANAGER?L.freeBufferSubset.bind(L):D.deleteBuffer.bind(D),R=c.USE_BUFFER_MANAGER?function(e){void 0===e.__webglInit&&(e.__webglInit=!0,e.addEventListener("dispose",Fe));if(e.streamingDraw&&!q.has(e)){if(e.streamingDraw===f.O){if(e.streamingDraw=!1,e.streamingIndex=!1,e.discardAfterUpload){e.ib&&(e.ibLength=e.ib.length,e.ibByteSize=e.ib instanceof Uint32Array?4:2,e.ib=null),e.vb&&(e.vbLength=e.vb.length,e.vb=null),e.iblines&&(e.iblinesLength=e.iblines.length,e.iblinesByteSize=e.iblines instanceof Uint32Array?4:2,e.iblines=null);const t=e.attributes,i=Object.keys(e.attributes);for(let e=0,n=i.length;e0,xe=D.getShaderPrecisionFormat(D.VERTEX_SHADER,D.HIGH_FLOAT),_e=D.getShaderPrecisionFormat(D.VERTEX_SHADER,D.MEDIUM_FLOAT),Ee=D.getShaderPrecisionFormat(D.FRAGMENT_SHADER,D.HIGH_FLOAT),Se=D.getShaderPrecisionFormat(D.FRAGMENT_SHADER,D.MEDIUM_FLOAT),Ae=new Uint8Array(16),we=0;we<4;we++)p?1===we||2===we?(Ae[4*we]=246,Ae[4*we+1]=140,Ae[4*we+2]=220):(Ae[4*we]=48,Ae[4*we+1]=195,Ae[4*we+2]=3):Ae[4*we]=Ae[4*we+1]=Ae[4*we+2]=0,Ae[4*we+3]=255;function Te(){(pe=new l.DataTexture(Ae,2,2,l.RGBAFormat,l.UnsignedByteType,l.UVMapping,l.RepeatWrapping,l.RepeatWrapping,l.NearestFilter,l.NearestFilter)).needsUpdate=!0}Te();var Me,Ce,Pe=function(){if(void 0!==Me)return Me;if(Me=[],ae.get("WEBGL_compressed_texture_pvrtc")||ae.get("WEBGL_compressed_texture_s3tc"))for(var e=D.getParameter(D.COMPRESSED_TEXTURE_FORMATS),t=0;t0,Le=_e.precision>0;"highp"!==a||De||(Le?(a="mediump",console.warn("WebGLRenderer: highp not supported, using mediump")):(a="lowp",console.warn("WebGLRenderer: highp and mediump not supported, using lowp"))),"mediump"!==a||Le||(a="lowp",console.warn("WebGLRenderer: mediump not supported, using lowp")),De=Ee.precision>0,Le=Se.precision>0,"highp"!==h||De||(Le?(h="mediump",console.warn("WebGLRenderer: highp not supported, using mediump")):(h="lowp",console.warn("WebGLRenderer: highp and mediump not supported, using lowp"))),"mediump"!==h||Le||(h="lowp",console.warn("WebGLRenderer: mediump not supported, using lowp")),this.getContext=function(){return D},this.isWebGL2=function(){return!0},this.forceContextLoss=function(){ae.get("WEBGL_lose_context").loseContext()},this.forceContextRestore=function(){ae.get("WEBGL_lose_context").restoreContext()},this.getMaxAnisotropy=function(){if(void 0!==Ce)return Ce;var e=ae.get("EXT_texture_filter_anisotropic");return Ce=null!==e?D.getParameter(e.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0},this.getPixelRatio=function(){return i||m.devicePixelRatio||1},this.setPixelRatio=function(e){i=e},this.getCurrentFramebuffer=function(){return U},this.setSize=function(e,i,n){const r=this.getPixelRatio();t.width=e*r,t.height=i*r,!1!==n&&(t.style.width=e+"px",t.style.height=i+"px"),this.setViewport(0,0,e,i)},this.setViewport=function(e,t,i,n){const r=this.getPixelRatio();Y=e*r,K=t*r,Q=i*r,Z=n*r,D.viewport(Y,K,Q,Z)};var Ie=!1;this.enableViewportOnOffscreenTargets=function(e){Ie=e};var Re=[];function Oe(e){e.__webglVertexBuffer=D.createBuffer(),e.__webglNormalBuffer=D.createBuffer(),e.__webglTangentBuffer=D.createBuffer(),e.__webglColorBuffer=D.createBuffer(),e.__webglUVBuffer=D.createBuffer(),e.__webglUV2Buffer=D.createBuffer(),e.__webglSkinIndicesBuffer=D.createBuffer(),e.__webglSkinWeightsBuffer=D.createBuffer(),e.__webglFaceBuffer=D.createBuffer(),e.__webglLineBuffer=D.createBuffer(),O.info.memory.geometries++}this.pushViewport=function(){Re.push(Y),Re.push(K),Re.push(Q),Re.push(Z)},this.popViewport=function(){var e=Re.length-4;Y=Re[e],K=Re[e+1],Q=Re[e+2],Z=Re[e+3],D.viewport(Y,K,Q,Z),Re.length=e},this.setScissor=function(e,t,i,n){const r=this.getPixelRatio();D.scissor(e*r,t*r,i*r,n*r)},this.enableScissorTest=function(e){e?D.enable(D.SCISSOR_TEST):D.disable(D.SCISSOR_TEST)},this.getClearColor=function(e){return void 0===e&&(console.warn("WebGLRenderer: .getClearColor() now requires a Color as an argument"),e=new l.Color),e.copy(E)},this.setClearColor=function(e,t){E.set(e),S=void 0!==t?t:1,ue(E.r,E.g,E.b,S)},this.getClearAlpha=function(){return S},this.setClearAlpha=function(e){S=e,ue(E.r,E.g,E.b,S)},this.clear=function(e,t,i){var n=0;(void 0===e||e)&&(n|=D.COLOR_BUFFER_BIT),(void 0===t||t)&&(n|=D.DEPTH_BUFFER_BIT),(void 0===i||i)&&(n|=D.STENCIL_BUFFER_BIT),D.clear(n)},this.clearColor=function(){D.clear(D.COLOR_BUFFER_BIT)},this.clearDepth=function(){D.clear(D.DEPTH_BUFFER_BIT)},this.clearStencil=function(){D.clear(D.STENCIL_BUFFER_BIT)},this.clearTarget=function(e,t,i,n){this.setRenderTarget(e),this.clear(t,i,n)},this.resetGLState=fe;var Ne=function(e){e.target.traverse((function(e){e.removeEventListener("remove",Ne),function(e){(e instanceof l.Mesh||e instanceof l.PointCloud||e instanceof l.Line)&&delete w[e.id];delete e.__webglInit,delete e.__webglActive}(e)}))},Fe=function(e){var t=e.target;t.removeEventListener("dispose",Fe),Ge(t)},Ue=function(e){var t=e.target;t.removeEventListener("dispose",Ue),qe(t),O.info.memory.textures--},Be=function(e){var t=e.target;t.removeEventListener("dispose",Be),Xe(t),O.info.memory.textures--},ke=function(e){var t=e.target;t.removeEventListener("dispose",ke),Ye(t)},Ve=function(e){if(void 0!==e.__webglVertexBuffer&&(D.deleteBuffer(e.__webglVertexBuffer),e.__webglVertexBuffer=void 0),void 0!==e.__webglNormalBuffer&&(D.deleteBuffer(e.__webglNormalBuffer),e.__webglNormalBuffer=void 0),void 0!==e.__webglTangentBuffer&&(D.deleteBuffer(e.__webglTangentBuffer),e.__webglTangentBuffer=void 0),void 0!==e.__webglColorBuffer&&(D.deleteBuffer(e.__webglColorBuffer),e.__webglColorBuffer=void 0),void 0!==e.__webglUVBuffer&&(D.deleteBuffer(e.__webglUVBuffer),e.__webglUVBuffer=void 0),void 0!==e.__webglUV2Buffer&&(D.deleteBuffer(e.__webglUV2Buffer),e.__webglUV2Buffer=void 0),void 0!==e.__webglSkinIndicesBuffer&&(D.deleteBuffer(e.__webglSkinIndicesBuffer),e.__webglSkinIndicesBuffer=void 0),void 0!==e.__webglSkinWeightsBuffer&&(D.deleteBuffer(e.__webglSkinWeightsBuffer),e.__webglSkinWeightsBuffer=void 0),void 0!==e.__webglFaceBuffer&&(D.deleteBuffer(e.__webglFaceBuffer),e.__webglFaceBuffer=void 0),void 0!==e.__webglLineBuffer&&(D.deleteBuffer(e.__webglLineBuffer),e.__webglLineBuffer=void 0),void 0!==e.__webglLineDistanceBuffer&&(D.deleteBuffer(e.__webglLineDistanceBuffer),e.__webglLineDistanceBuffer=void 0),void 0!==e.__webglCustomAttributesList){for(var t in e.__webglCustomAttributesList)D.deleteBuffer(e.__webglCustomAttributesList[t].buffer);e.__webglCustomAttributesList=void 0}O.info.memory.geometries--},Ge=function(e){var t,i,n,r;if(e.__webglInit=void 0,e instanceof l.BufferGeometry){if(void 0!==e.vbbuffer&&(I(e.vbbuffer),e.vbbuffer=void 0),void 0!==e.ibbuffer&&(I(e.ibbuffer),e.ibbuffer=void 0),void 0!==e.iblinesbuffer&&(I(e.iblinesbuffer),e.iblinesbuffer=void 0),e.vaos){for(t=0;t0&&(e.__uvArray=new Float32Array(2*r)),i.faceVertexUvs.length>1&&(e.__uv2Array=new Float32Array(2*r))),t.geometry.skinWeights.length&&t.geometry.skinIndices.length&&(e.__skinIndexArray=new Float32Array(4*r),e.__skinWeightArray=new Float32Array(4*r));var u=o>21845?Uint32Array:Uint16Array;if(e.__typeArray=u,e.__faceArray=new u(3*o),e.__lineArray=new u(2*s),e.__webglFaceCount=3*o,e.__webglLineCount=2*s,a.attributes)for(var d in void 0===e.__webglCustomAttributesList&&(e.__webglCustomAttributesList=[]),a.attributes){var f=a.attributes[d],p={};for(var m in f)p[m]=f[m];if(!p.__webglInitialized||p.createUniqueBuffers){p.__webglInitialized=!0;var g=1;"v2"===p.type?g=2:"v3"===p.type?g=3:"v4"===p.type?g=4:"c"===p.type&&(g=3),p.size=g,p.array=new Float32Array(r*g),p.buffer=D.createBuffer(),p.buffer.belongsToAttribute=d,f.needsUpdate=!0,p.__original=f}e.__webglCustomAttributesList.push(p)}e.__inittedArrays=!0}function Ze(e,t){return e.material instanceof l.MeshFaceMaterial?e.material.materials[t.materialIndex]:e.material}function $e(e){return!(e instanceof l.MeshBasicMaterial&&!e.envMap||e instanceof l.MeshDepthMaterial)&&(function(e){return e&&(void 0!==e.shading&&e.shading===l.SmoothShading||void 0!==e.flatShading&&!1===e.flatShading)}(e)?l.SmoothShading:l.FlatShading)}function Je(e){return!!e.vertexColors&&e.vertexColors}function et(e){return!!(e.map||e.lightMap||e.bumpMap||e.normalMap||e.specularMap||e.alphaMap||e instanceof l.ShaderMaterial)}function tt(e){return!0===e.needsUpdate}function it(e){e.needsUpdate=!1}function nt(e,t,i,n,r){if(e.__inittedArrays){var o,s,a,c,h,u,d,f,p,m,g,v,y,b,x,_,E,S,A,w,T,M,C,P,L,I,R=$e(r),O=Je(r),N=et(r),F=R===l.SmoothShading,U=0,B=0,k=0,V=0,G=0,z=0,H=0,W=0,j=0,q=0,X=e.__vertexArray,Y=e.__uvArray,K=e.__uv2Array,Q=e.__normalArray,Z=e.__tangentArray,$=e.__colorArray,J=e.__webglCustomAttributesList,ee=e.__faceArray,te=e.__lineArray,ie=t.geometry,ne=ie.verticesNeedUpdate,re=ie.elementsNeedUpdate,oe=ie.uvsNeedUpdate,se=ie.normalsNeedUpdate,ae=ie.tangentsNeedUpdate,le=ie.colorsNeedUpdate,ce=ie.vertices,he=e.faces3,ue=ie.faces,de=ie.faceVertexUvs[0],fe=ie.faceVertexUvs[1];if(ne){for(o=0,s=he.length;o0&&(D.bindBuffer(D.ARRAY_BUFFER,e.__webglColorBuffer),D.bufferData(D.ARRAY_BUFFER,$,i))}if(ae&&ie.hasTangents){for(o=0,s=he.length;o0&&(D.bindBuffer(D.ARRAY_BUFFER,e.__webglUVBuffer),D.bufferData(D.ARRAY_BUFFER,Y,i))}if(oe&&fe&&N){for(o=0,s=he.length;o0&&(D.bindBuffer(D.ARRAY_BUFFER,e.__webglUV2Buffer),D.bufferData(D.ARRAY_BUFFER,K,i))}if(re){for(o=0,s=he.length;o=0){var b=i.attributes[v];if("uv"===v&&n&&(b=i.attributes["uv"+(n+1)]),!b){D.bindVertexArray(null);for(var x=0;x=0){var x=i.attributes[y];"uv"===y&&o&&(x=i.attributes["uv"+(o+1)]);var _=n;if(x){var E=D.FLOAT,S=x.bytesPerItem||4;1===S?E=D.UNSIGNED_BYTE:2===S&&(E=D.UNSIGNED_SHORT);var A,w,T=void 0!==x.itemOffset;T&&(S=4),T?(A=i.vbstride,w=x.itemOffset,u!==a&&(i.streamingDraw?u=ot("interleavedVB",i.vb):(u=i.vbbuffer.getGlBuffer?i.vbbuffer.getGlBuffer():i.vbbuffer,D.bindBuffer(D.ARRAY_BUFFER,u)),a=u)):(A=x.itemSize,w=0,i.streamingDraw?u=ot(y,x.array):x.buffer.getGlBuffer?(u=x.buffer.getGlBuffer(),D.bindBuffer(D.ARRAY_BUFFER,u),_+=x.buffer.offset/(A*S)):(u=x.buffer,D.bindBuffer(D.ARRAY_BUFFER,u))),ce.enableAttribute(b),T&&i.vbbuffer&&i.vbbuffer.getGlBuffer&&i.vbbuffer.getGlBuffer()===u&&(_+=i.vbbuffer.offset/(A*S)),x.divisor&&(_+=s),D.vertexAttribPointer(b,x.itemSize,E,x.normalized,A*S,(w+_*A)*S),D.vertexAttribDivisor(b,i.numInstances&&x.divisor||0)}else if(e.defaultAttributeValues){var M=e.defaultAttributeValues[y];M&&2===M.length?D.vertexAttrib2fv(b,e.defaultAttributeValues[y]):M&&3===M.length?D.vertexAttrib3fv(b,e.defaultAttributeValues[y]):M&&4===M.length&&D.vertexAttrib4fv(b,e.defaultAttributeValues[y])}}}ce.disableUnusedAttributes()}function at(e,t){return e.object.renderOrder!==t.object.renderOrder?e.object.renderOrder-t.object.renderOrder:e.z!==t.z?e.z-t.z:e.id-t.id}function lt(e,t){return e.object.renderOrder!==t.object.renderOrder?e.object.renderOrder-t.object.renderOrder:e.material.id!==t.material.id?e.material.id-t.material.id:e.z!==t.z?t.z-e.z:e.id-t.id}function ct(e){ut(e,!0)}function ht(e){ut(e,!1)}function ut(e,t,i){var n,r;if(i||!1!==e.visible){if(e instanceof l.Scene||e instanceof l.Group);else if(e instanceof s.RenderBatch)e.forEach(t?ct:ht);else if(function(e){O.lostContextRecovery&&O.lostContextRecovery.refreshIfNeeded(e),void 0===e.__webglInit&&(e.__webglInit=!0,e.addEventListener("removed",Ne));var t=e.geometry;void 0===t||void 0===t.__webglInit&&(t.__webglInit=!0,t.addEventListener("dispose",Fe),t instanceof l.BufferGeometry||(e instanceof l.Mesh?_t(e,t):e instanceof l.Line?void 0===t.__webglVertexBuffer&&(!function(e){e.__webglVertexBuffer=D.createBuffer(),e.__webglColorBuffer=D.createBuffer(),e.__webglLineDistanceBuffer=D.createBuffer(),O.info.memory.geometries++}(t),function(e,t){var i=e.vertices.length;e.__vertexArray=new Float32Array(3*i),e.__colorArray=new Float32Array(3*i),e.__lineDistanceArray=new Float32Array(1*i),e.__webglLineCount=i,Ke(e,t)}(t,e),t.verticesNeedUpdate=!0,t.colorsNeedUpdate=!0,t.lineDistancesNeedUpdate=!0):e instanceof l.PointCloud&&void 0===t.__webglVertexBuffer&&(!function(e){e.__webglVertexBuffer=D.createBuffer(),e.__webglColorBuffer=D.createBuffer(),O.info.memory.geometries++}(t),function(e,t){var i=e.vertices.length;e.__vertexArray=new Float32Array(3*i),e.__colorArray=new Float32Array(3*i),e.__webglPointCount=i,Ke(e,t)}(t,e),t.verticesNeedUpdate=!0,t.colorsNeedUpdate=!0)));if(void 0===e.__webglActive)if(e.__webglActive=!0,e instanceof l.Mesh){if(t instanceof l.BufferGeometry)Et(w,t,e);else if(t instanceof l.Geometry)for(var i=bt[t.id],n=0,r=i.length;n=0||e.instanceStart>=0}));g?u=!0:(p=rt(n,h,r,s||0),u=u&&!p),u&&ce.initAttributes();var v,y=r.index;if(y){var b,x=r.ibByteSize,_=y.array?y.array:r.ib;let e=r.ibLength;_&&(y.bytesPerItem=_.BYTES_PER_ELEMENT),n.isEdgeMaterial&&(y=r.attributes.indexlines,_=r.iblines,e=r.iblinesLength,x=r.iblinesByteSize),y.bytesPerItem?x=y.bytesPerItem:_&&(x=_ instanceof Uint32Array?4:_ instanceof Uint16Array?2:1),4===x?b=D.UNSIGNED_INT:2===x?b=D.UNSIGNED_SHORT:1===x&&(b=D.UNSIGNED_BYTE);var E=r.groups;m&&n.isEdgeMaterial&&!Object.prototype.hasOwnProperty.call(E[0],"edgeStart")&&(E=null);var S=0;do{var A,w,T,M,C;if(m){var P,L=E[S];A=L.index,w=n.isEdgeMaterial?L.edgeStart||0:L.start,T=n.isEdgeMaterial?L.edgeCount||(null===(P=_)||void 0===P?void 0:P.length)||e:L.count,M=L.instanceStart||0,C=L.numInstances||r.numInstances;var I=n.program.uniforms;if(I.themingColor&&"themingColor"in L){var N=L.themingColor;N instanceof l.Vector4?D.uniform4f(I.themingColor,N.x,N.y,N.z,N.w):D.uniform4f(I.themingColor,0,0,0,0)}}else{var F;A=0,w=0,T=(null===(F=_)||void 0===F?void 0:F.length)||e,M=0,C=r.numInstances}c.USE_BUFFER_MANAGER&&(n.isEdgeMaterial?w+=r.iblinesbuffer&&!r.streamingDraw?r.iblinesbuffer.offset/x:0:r.index.buffer?w+=r.streamingDraw?0:r.index.buffer.offset/x:w+=r.ibbuffer&&!r.streamingDraw?r.ibbuffer.offset/x:0),u&&(st(n,h,r,A,y,s,M),g||(u=!1)),v=D.TRIANGLES,r.isPoints||o instanceof l.PointCloud?v=D.POINTS:(r.isLines||n.isEdgeMaterial||o instanceof l.Line)&&(v=D.LINES),C?D.drawElementsInstanced(v,T,b,w*x,C):D.drawElements(v,T,b,w*x),++this.info.render.calls}while(E&&++S1&&console.error("Geometry with draw calls and no index buffer"),u&&st(n,h,r,0,void 0,s,0);var B=r.attributes.position;v=D.TRIANGLES,r.isPoints||o instanceof l.PointCloud?v=D.POINTS:(r.isLines||n.isEdgeMaterial||o instanceof l.Line)&&(v=D.LINES),r.numInstances?D.drawArraysInstanced(v,0,B.array.length/3,r.numInstances):D.drawArrays(v,0,B.array.length/B.itemSize),++this.info.render.calls}p&&D.bindVertexArray(null)}},this.renderBuffer=function(e,t,i,n,r,o){if(!1!==n.visible&&!n.isEdgeMaterial){!function(e){var t,i,n=e.geometry;if(n instanceof l.BufferGeometry)R(n);else if(e instanceof l.Mesh){!0===n.groupsNeedUpdate&&_t(e,n);for(var r=bt[n.id],o=0,s=r.length;o=0&&c&&(D.bindBuffer(D.ARRAY_BUFFER,r.__webglVertexBuffer),ce.enableAttribute(a.position),v(a.position,3,D.FLOAT,!1,0,0)),c){if(r.__webglCustomAttributesList)for(var d=0,f=r.__webglCustomAttributesList.length;d=0&&(D.bindBuffer(D.ARRAY_BUFFER,p.buffer),ce.enableAttribute(a[p.buffer.belongsToAttribute]),v(a[p.buffer.belongsToAttribute],p.size,D.FLOAT,!1,0,0))}a.color>=0&&(o.geometry.colors.length>0||o.geometry.faces.length>0?(D.bindBuffer(D.ARRAY_BUFFER,r.__webglColorBuffer),ce.enableAttribute(a.color),v(a.color,3,D.FLOAT,!1,0,0)):n.defaultAttributeValues&&D.vertexAttrib3fv(a.color,n.defaultAttributeValues.color)),a.normal>=0&&(D.bindBuffer(D.ARRAY_BUFFER,r.__webglNormalBuffer),ce.enableAttribute(a.normal),v(a.normal,3,D.FLOAT,!1,0,0)),a.tangent>=0&&(D.bindBuffer(D.ARRAY_BUFFER,r.__webglTangentBuffer),ce.enableAttribute(a.tangent),v(a.tangent,4,D.FLOAT,!1,0,0)),a.uv>=0&&(o.geometry.faceVertexUvs[0]?(D.bindBuffer(D.ARRAY_BUFFER,r.__webglUVBuffer),ce.enableAttribute(a.uv),v(a.uv,2,D.FLOAT,!1,0,0)):n.defaultAttributeValues&&D.vertexAttrib2fv(a.uv,n.defaultAttributeValues.uv)),a.uv2>=0&&(o.geometry.faceVertexUvs[1]?(D.bindBuffer(D.ARRAY_BUFFER,r.__webglUV2Buffer),ce.enableAttribute(a.uv2),v(a.uv2,2,D.FLOAT,!1,0,0)):n.defaultAttributeValues&&D.vertexAttrib2fv(a.uv2,n.defaultAttributeValues.uv2)),a.lineDistance>=0&&(D.bindBuffer(D.ARRAY_BUFFER,r.__webglLineDistanceBuffer),ce.enableAttribute(a.lineDistance),v(a.lineDistance,1,D.FLOAT,!1,0,0))}if(ce.disableUnusedAttributes(),o instanceof l.Mesh){var m=r.__typeArray===Uint32Array?D.UNSIGNED_INT:D.UNSIGNED_SHORT;n.wireframe?(le.setLineWidth(n.wireframeLinewidth*this.getPixelRatio()),c&&D.bindBuffer(D.ELEMENT_ARRAY_BUFFER,r.__webglLineBuffer),D.drawElements(D.LINES,r.__webglLineCount,m,0)):(c&&D.bindBuffer(D.ELEMENT_ARRAY_BUFFER,r.__webglFaceBuffer),D.drawElements(D.TRIANGLES,r.__webglFaceCount,m,0)),++this.info.render.calls}else if(o instanceof l.Line){var g=o.mode===l.LineStrip?D.LINE_STRIP:D.LINES;le.setLineWidth(n.linewidth*this.getPixelRatio()),D.drawArrays(g,0,r.__webglLineCount),++this.info.render.calls}else o instanceof l.PointCloud&&(D.drawArrays(D.POINTS,0,r.__webglPointCount),++this.info.render.calls)}function v(e,t,i,n,r,o){D.vertexAttribPointer(e,t,i,n,r,o),D.vertexAttribDivisor(e,0)}},this.render=function(e,t,i,n){var r,o,a;let c,h=i,u=n;if(arguments.length>2&&(i instanceof l.WebGLRenderTarget||Array.isArray(i))&&(console.warn("THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead."),c=i,h=n,u=arguments[4]),t instanceof l.Camera!=!1){if(!D.isContextLost()){z="",V=-1,G=null,q.clear(),void 0!==u&&(A.length=0,re=!0);var d=e.fog;!0===e.autoUpdate&&e.updateMatrixWorld(),void 0===t.parent&&t.updateMatrixWorld(),t.worldUpTransform?te.multiplyMatrices(t.worldUpTransform,t.matrixWorld):te.copy(t.matrixWorld),ee.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),J.setFromProjectionMatrix(ee);var f=e instanceof s.RenderBatch&&e.renderImmediate;if(f||(C.length=0,P.length=0,ut(e,!0===O.sortObjects,!0===e.forceVisible),!0===O.sortObjects&&(C.sort(lt),P.sort(at))),re&&(u&&u.length&&(A=u.slice()),Nt(A)),void 0!==c&&this.setRenderTarget(c),this.resetGLState(),(this.autoClear||h)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil),e.overrideMaterial){let i=e.overrideMaterial;Mt(i),f?vt(e,"",t,A,d,i):(ft(C,t,A,d,i),ft(P,t,A,d,i))}else f?vt(e,"",t,A,d,null):(le.setBlending(l.NoBlending),ft(C,t,A,d,null),ft(P,t,A,d,null));if(e.edgeMaterial){D.depthFunc(D.LESS);let i=e.edgeMaterial;Mt(i),f?vt(e,"",t,A,d,i):(ft(C,t,A,d,i),ft(P,t,A,d,i)),D.depthFunc(D.LEQUAL)}!k&&null!==(r=B)&&void 0!==r&&null!==(r=r.texture)&&void 0!==r&&r.generateMipmaps&&(null===(o=B)||void 0===o?void 0:o.texture.minFilter)!==l.NearestFilter&&(null===(a=B)||void 0===a?void 0:a.texture.minFilter)!==l.LinearFilter&&function(e){D.bindTexture(D.TEXTURE_2D,e.__webglTexture),D.generateMipmap(D.TEXTURE_2D),D.bindTexture(D.TEXTURE_2D,null)}(B),this.resetGLState(),le.setDepthTest(!0),le.setDepthWrite(!0)}}else console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.")},this.setProgramPrefix=function(e,t,i){H=e,W=t,j=i},this.getProgramPrefix=function(){return{programPrefix:H,vertexPrefix:W,fragmentPrefix:j}};var bt={},xt=0;function _t(e,t){var i=e.material,n=!1;void 0!==bt[t.id]&&!0!==t.groupsNeedUpdate||(delete w[e.id],bt[t.id]=function(e,t){for(var i,n,r={},o=e.morphTargets?e.morphTargets.length:0,s=e.morphNormals?e.morphNormals.length:0,a={},l=[],c=0,h=e.faces.length;c4294967296&&(r[d].counter+=1,(i=r[d].hash+"_"+r[d].counter)in a||(n={id:xt++,faces3:[],materialIndex:d,vertices:0,numMorphTargets:o,numMorphNormals:s},a[i]=n,l.push(n))),a[i].faces3.push(c),a[i].vertices+=3}return l}(t,i instanceof l.MeshFaceMaterial),t.groupsNeedUpdate=!1);for(var r=bt[t.id],o=0,s=r.length;o0&&(m=Math.min((O.highResTimeStamp-s.geometry.creationTime)/O.loadingAnimationDuration,1)),D.uniform1f(f.meshAnimTime,m)}if((a||e!==G)&&(D.uniformMatrix4fv(f.projectionMatrix,!1,e.projectionMatrix.elements),_&&(D.uniform1f(f.logDepthBufFC,2/(Math.log(e.far+1)/Math.LN2)),o.polygonOffset&&D.uniform2f(f.polygonOffset,o.polygonOffsetFactor,o.polygonOffsetUnits)),e!==G&&(G=e),(o instanceof l.ShaderMaterial||o instanceof l.MeshPhongMaterial||o.envMap)&&null!==f.cameraPosition&&(ie.setFromMatrixPosition(e.matrixWorld),D.uniform3f(f.cameraPosition,ie.x,ie.y,ie.z)),(o instanceof l.MeshPhongMaterial||o instanceof l.MeshLambertMaterial||o instanceof l.ShaderMaterial||o.skinning)&&(null!==f.viewMatrix&&D.uniformMatrix4fv(f.viewMatrix,!1,e.matrixWorldInverse.elements),null!==f.viewMatrixInverse&&D.uniformMatrix4fv(f.viewMatrixInverse,!1,te.elements),f.mvpMatrix&&D.uniformMatrix4fv(f.mvpMatrix,!1,ee.elements),h?(Dt(p,o),Lt(p,!0)):Lt(p,!1))),f.unpackXform){var g=s.geometry,v=g.unpackXform;if(v?D.uniform4f(f.unpackXform,v.x,v.y,v.z,v.w):D.uniform4f(f.unpackXform,1,1,0,0),f.tIdColor){D.uniform2f(f.vIdColorTexSize,g.vIdColorTexSize.x,g.vIdColorTexSize.y);var y=Rt();D.uniform1i(f.tIdColor,y),O.setTexture(g.tIdColor,y)}}if(c){if((o instanceof l.MeshPhongMaterial||o instanceof l.MeshLambertMaterial||o.lights)&&(re&&(h=!0,Nt(i),re=!1),h?(!function(e,t){e.ambientLightColor.value=t.ambient,e.directionalLightColor.value=t.directional.colors,e.directionalLightDirection.value=t.directional.positions,e.pointLightColor.value=t.point.colors,e.pointLightPosition.value=t.point.positions,e.pointLightDistance.value=t.point.distances,e.spotLightColor.value=t.spot.colors,e.spotLightPosition.value=t.spot.positions,e.spotLightDistance.value=t.spot.distances,e.spotLightDirection.value=t.spot.directions,e.spotLightAngleCos.value=t.spot.anglesCos,e.spotLightExponent.value=t.spot.exponents,e.hemisphereLightSkyColor.value=t.hemi.skyColors,e.hemisphereLightGroundColor.value=t.hemi.groundColors,e.hemisphereLightDirection.value=t.hemi.positions}(p,oe),It(p,!0)):It(p,!1)),(o instanceof l.MeshBasicMaterial||o instanceof l.MeshLambertMaterial||o instanceof l.MeshPhongMaterial)&&(!function(e,t){e.opacity.value=t.opacity,e.diffuse.value.copy(t.color),e.map.value=t.map,e.lightMap.value=t.lightMap,e.specularMap.value=t.specularMap,e.alphaMap.value=t.alphaMap,t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale);t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale));function i(e,t,i,n){const{x:r,y:o}=i,{x:s,y:a}=t,l=r*Math.cos(n),c=r*Math.sin(n),h=o*Math.cos(n),u=o*Math.sin(n),d=e.elements,f=d[0],p=d[3],m=d[6],g=d[1],v=d[4],y=d[7],b=d[2],x=d[5],_=d[8];d[0]=f*l+g*c+b*s,d[3]=p*l+v*c+x*s,d[6]=m*l+y*c+_*s,d[1]=f*-u+g*h+b*a,d[4]=p*-u+v*h+x*a,d[7]=m*-u+y*h+_*a}function n(e,t,n){const{offset:r,repeat:o,rotation:s}=n;if(t){var a=t.value;n.matrix?a.copy(n.matrix):a.identity(),i(a,r,o,s??0)}else e.offsetRepeat.value.set(r.x,r.y,o.x,o.y)}t.alphaMap&&n(e,e.texMatrixAlpha,t.alphaMap);var r,o;t.normalMap?r=t.normalMap:t.bumpMap&&(r=t.bumpMap);void 0!==r&&n(e,e.texMatrixBump,r);t.map?o=t.map:t.specularMap&&(o=t.specularMap);void 0!==o&&n(e,e.texMatrix,o);e.envMap.value=t.envMap,e.irradianceMap&&(e.irradianceMap.value=t.irradianceMap);e.reflectivity.value=t.reflectivity,e.refractionRatio.value=t.refractionRatio}(p,o),Dt(p,o)),o instanceof l.PointCloudMaterial||o instanceof l.PointsMaterial?function(e,t){Pt(e,t),e.point_size.value=t.size,e.map.value=t.map}(p,o):o instanceof l.LineBasicMaterial?Pt(p,o):o instanceof l.LineDashedMaterial?(Pt(p,o),function(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}(p,o)):o instanceof l.MeshPhongMaterial?function(e,t){if(e.shininess.value=t.shininess,e.reflMipIndex){var i=Math.log(Math.max(1+1e-10,t.shininess));e.reflMipIndex.value=Math.max(0,-.72134752*i+5.5)}e.emissive&&e.emissive.value.copy(t.emissive);e.specular.value.copy(t.specular),e.exposureBias&&(e.exposureBias.value=t.exposureBias)}(p,o):o instanceof l.MeshLambertMaterial?function(e,t){e.emissive.value.copy(t.emissive),t.wrapAround&&e.wrapRGB.value.copy(t.wrapRGB)}(p,o):o instanceof l.MeshDepthMaterial?(p.mNear.value=e.near,p.mFar.value=e.far,p.opacity.value=o.opacity):o instanceof l.MeshNormalMaterial?p.opacity.value=o.opacity:"function"==typeof o.refreshUniforms&&o.refreshUniforms(p),o.wideLines){var b=s.geometry.lineWidth;void 0!==o.linewidth&&(b=o.linewidth);const e=1/Math.max(Number.EPSILON,b);p.view_size.value=new l.Vector2(t.width*e,t.height*e)}r.ShadowRender&&o.shadowMap&&r.ShadowRender.RefreshUniformsShadow(p,o);var x=p.cutplanes;o.cutplanes&&o.cutplanes.length>0&&x&&(x.value=o.cutplanes,null!=p&&p.cutplanesHideInterior&&(p.cutplanesHideInterior.value=o.cutplanesHideInterior),x._array&&x._array.length!=4*o.cutplanes&&(x._array=void 0)),o.hatchParams&&p.hatchParams&&(p.hatchParams.value.copy(o.hatchParams),p.hatchTintColor.value.copy(o.hatchTintColor),p.hatchTintIntensity.value=o.hatchTintIntensity),function(e){for(var t,i,n,r=0,o=e.length;r>8&255)/255,(u>>16&255)/255));var E=s.modelId;D.uniform3f(f.modelId,(255&E)/255,(E>>8&255)/255,(u>>24&255)/255)}else null!==f.dbId&&(u=s.dbId||s.fragId||0,D.uniform3f(f.dbId,(255&u)/255,(u>>8&255)/255,(u>>16&255)/255));if(f.themingColor){var S=s.themingColor;S instanceof l.Vector4?D.uniform4f(f.themingColor,S.x,S.y,S.z,S.w):D.uniform4f(f.themingColor,0,0,0,0)}return d}function Pt(e,t){e.diffuse.value=t.color,e.opacity.value=t.opacity}function Dt(e,t){e.envMap&&(e.envMap.value=t.envMap),e.irradianceMap&&(e.irradianceMap.value=t.irradianceMap),e.envMapExposure&&(e.envMapExposure.value=t.envMapExposure),e.envRotationSin&&e.envRotationCos&&(e.envRotationSin.value=t.envRotationSin,e.envRotationCos.value=t.envRotationCos)}function Lt(e,t){e.envMap&&(e.envMap.needsUpdate=t),e.irradianceMap&&(e.irradianceMap.needsUpdate=t),e.envMapExposure&&(e.envMapExposure.needsUpdate=t)}function It(e,t){e.ambientLightColor.needsUpdate=t,e.directionalLightColor.needsUpdate=t,e.directionalLightDirection.needsUpdate=t,e.pointLightColor.needsUpdate=t,e.pointLightPosition.needsUpdate=t,e.pointLightDistance.needsUpdate=t,e.spotLightColor.needsUpdate=t,e.spotLightPosition.needsUpdate=t,e.spotLightDistance.needsUpdate=t,e.spotLightDirection.needsUpdate=t,e.spotLightAngleCos.needsUpdate=t,e.spotLightExponent.needsUpdate=t,e.hemisphereLightSkyColor.needsUpdate=t,e.hemisphereLightGroundColor.needsUpdate=t,e.hemisphereLightDirection.needsUpdate=t}function Rt(){var e=X;return e>=me&&console.warn("WebGLRenderer: trying to use "+e+" texture units while this GPU supports only "+me),X+=1,e}function Ot(e,t,i,n){e[t]=i.r*n,e[t+1]=i.g*n,e[t+2]=i.b*n}function Nt(e){var t,i,n,r,o,s,a,c,h=0,u=0,d=0,f=oe,p=f.directional.colors,m=f.directional.positions,g=f.point.colors,v=f.point.positions,y=f.point.distances,b=f.spot.colors,x=f.spot.positions,_=f.spot.distances,E=f.spot.directions,S=f.spot.anglesCos,A=f.spot.exponents,w=f.hemi.skyColors,T=f.hemi.groundColors,M=f.hemi.positions,C=0,P=0,D=0,L=0,I=0,R=0,O=0,N=0,F=0,U=0,B=0,k=0;for(t=0,i=e.length;t1||t.__oldAnisotropy)&&(D.texParameterf(e,n.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(t.anisotropy,O.getMaxAnisotropy())),t.__oldAnisotropy=t.anisotropy)}function Ut(e,t){if(e.width<=t&&e.height<=t)return e;if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){var i=t/Math.max(e.width,e.height),n=Math.max(Math.floor(e.width*i),1),r=Math.max(Math.floor(e.height*i),1),o=g.createElement("canvas");return o.width=n,o.height=r,o.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,n,r),o}return"data"in e&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+e.width+"x"+e.height+")."),e}function Bt(e,t){if(6===e.image.length)if(tt(e)){e.__webglTextureCube||(e.addEventListener("dispose",Ue),e.__webglTextureCube=D.createTexture(),O.info.memory.textures++),D.activeTexture(D.TEXTURE0+t),D.bindTexture(D.TEXTURE_CUBE_MAP,e.__webglTextureCube),D.pixelStorei(D.UNPACK_FLIP_Y_WEBGL,e.flipY);var i,n=e instanceof l.CompressedTexture,r=e.image[0]instanceof l.DataTexture,o=[];for(i=0;i<6;i++)!O.autoScaleCubemaps||n||r?o[i]=r?e.image[i].image:e.image[i]:o[i]=Ut(e.image[i],ye);var s=o[0],a=l.Math.isPowerOfTwo(s.width)&&l.Math.isPowerOfTwo(s.height),c=Wt(e.format),h=Wt(e.type);for(Ft(D.TEXTURE_CUBE_MAP,e,a),i=0;i<6;i++)if(n)for(var u,d=o[i].mipmaps,f=0,p=d.length;f-1?D.compressedTexImage2D(D.TEXTURE_CUBE_MAP_POSITIVE_X+i,f,c,u.width,u.height,0,u.data):console.warn("Attempt to load unsupported compressed texture format"):D.texImage2D(D.TEXTURE_CUBE_MAP_POSITIVE_X+i,f,c,u.width,u.height,0,c,h,u.data);else r?D.texImage2D(D.TEXTURE_CUBE_MAP_POSITIVE_X+i,0,c,o[i].width,o[i].height,0,c,h,o[i].data):D.texImage2D(D.TEXTURE_CUBE_MAP_POSITIVE_X+i,0,c,c,h,o[i]);e.generateMipmaps&&a&&D.generateMipmap(D.TEXTURE_CUBE_MAP),it(e),e.onUpdate&&e.onUpdate()}else D.activeTexture(D.TEXTURE0+t),D.bindTexture(D.TEXTURE_CUBE_MAP,e.__webglTextureCube)}function kt(e,t){D.activeTexture(D.TEXTURE0+t),D.bindTexture(D.TEXTURE_CUBE_MAP,e.__webglTexture)}function Vt(e){var t=D.COLOR_ATTACHMENT0,i=[t];for(we=1;we0&&i){for(a=0,c=h.length;a-1?D.compressedTexImage2D(D.TEXTURE_2D,a,o,s.width,s.height,0,s.data):console.warn("Attempt to load unsupported compressed texture format"):D.texImage2D(D.TEXTURE_2D,a,o,s.width,s.height,0,n,r,s.data);if(h.length>1&&Pe().indexOf(n)>-1)for(var u,d=s.width>>1,f=s.height>>1,p=h.length;d>=1||f>=1;)u=4==s.width&&4==s.height?s.data:new DataView(s.data.buffer,s.data.byteOffset,s.data.byteLength*(Math.max(d,4)*Math.max(f,4))/(s.width*s.height)),D.compressedTexImage2D(D.TEXTURE_2D,p,o,Math.max(d,1),Math.max(f,1),0,u),d>>=1,f>>=1,++p}else if(h.length>0&&i){for(a=0,c=h.length;a0?(B=e[0],k=!0):(B=e,k=!1),O.lostContextRecovery&&O.lostContextRecovery.refreshTargetsIfNeeded(e),Array.isArray(e))this.initFrameBufferMRT(e),(t=e[0]).initForMRT=!0;else if(e){var a=e.__webglFramebuffer;a&&U===a&&!e.initForMRT&&null!=e.shareDepthFrom==!!e.__isUsingShared||this.initFrameBufferMRT([e]),(t=e).initForMRT=!1}!t||Ie?(n=Q,r=Z,o=Y,s=K):(n=t.width,r=t.height,o=0,s=0),(i=t?t.__webglFramebuffer:null)!==U&&(D.bindFramebuffer(D.FRAMEBUFFER,i),U=i),D.viewport(o,s,n,r)},this.readRenderTargetPixels=function(e,t,i,n,r,o){if(e instanceof l.WebGLRenderTarget){if(O.lostContextRecovery&&O.lostContextRecovery.refreshTargetsIfNeeded(e),e.__webglFramebuffer){if(e.texture.format!==l.RGBAFormat&&e.texture.format!==l.RGBFormat||e.texture.type!==l.UnsignedByteType)return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not a readable format.");var s=!1;e.__webglFramebuffer!==U&&(D.bindFramebuffer(D.FRAMEBUFFER,e.__webglFramebuffer),s=!0),e.canReadPixels||D.checkFramebufferStatus(D.FRAMEBUFFER)===D.FRAMEBUFFER_COMPLETE?D.readPixels(t,i,n,r,D.RGBA,D.UNSIGNED_BYTE,o):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete."),s&&D.bindFramebuffer(D.FRAMEBUFFER,U)}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")}}},61453:(e,t,i)=>{"use strict";i.r(t),i.d(t,{WebGLShader:()=>r});var n=function(e){for(var t=e.split("\n"),i=0;i{"use strict";i.d(t,{O:()=>n});const n={}},75468:(e,t,i)=>{"use strict";function n(e,t){var i,n;this.bytes_per_node=t?32:36,e instanceof ArrayBuffer?(i=e.byteLength/this.bytes_per_node,n=e,this.nodeCount=i):(i=0|e,n=new ArrayBuffer(this.bytes_per_node*i),this.nodeCount=0),this.nodeCapacity=i,this.nodesRaw=n,this.is_lean_node=t,this.node_stride=this.bytes_per_node/4,this.node_stride_short=this.bytes_per_node/2,this.nodesF=new Float32Array(this.nodesRaw),this.nodesI=new Int32Array(this.nodesRaw),this.nodesS=new Uint16Array(this.nodesRaw)}i.r(t),i.d(t,{BVHBuilder:()=>h,BVHModule:()=>s,BVHSortFuncType:()=>c,FragInfoFlags:()=>l,NodeArray:()=>n}),n.prototype.setLeftChild=function(e,t){this.nodesI[e*this.node_stride+6]=t},n.prototype.getLeftChild=function(e){return this.nodesI[e*this.node_stride+6]},n.prototype.setPrimStart=function(e,t){this.is_lean_node?this.nodesI[e*this.node_stride+6]=t:this.nodesI[e*this.node_stride+8]=t},n.prototype.getPrimStart=function(e){return this.is_lean_node?this.nodesI[e*this.node_stride+6]:this.nodesI[e*this.node_stride+8]},n.prototype.setPrimCount=function(e,t){this.nodesS[e*this.node_stride_short+14]=t},n.prototype.getPrimCount=function(e){return this.nodesS[e*this.node_stride_short+14]},n.prototype.setFlags=function(e,t,i,n){this.nodesS[e*this.node_stride_short+15]=n<<3|i<<2|3&t},n.prototype.getFlags=function(e){return this.nodesS[e*this.node_stride_short+15]},n.prototype.setBox0=function(e,t){var i=e*this.node_stride,n=this.nodesF;n[i]=t[0],n[i+1]=t[1],n[i+2]=t[2],n[i+3]=t[3],n[i+4]=t[4],n[i+5]=t[5]},n.prototype.getBoxThree=function(e,t){var i=e*this.node_stride,n=this.nodesF;t.min.x=n[i],t.min.y=n[i+1],t.min.z=n[i+2],t.max.x=n[i+3],t.max.y=n[i+4],t.max.z=n[i+5]},n.prototype.getBoxArray=function(e,t,i){var n=e*this.node_stride,r=this.nodesF;t[0+(i=i||0)]=r[n],t[1+i]=r[n+1],t[2+i]=r[n+2],t[3+i]=r[n+3],t[4+i]=r[n+4],t[5+i]=r[n+5]},n.prototype.setBoxThree=function(e,t){var i=e*this.node_stride,n=this.nodesF;n[i]=t.min.x,n[i+1]=t.min.y,n[i+2]=t.min.z,n[i+3]=t.max.x,n[i+4]=t.max.y,n[i+5]=t.max.z},n.prototype.makeEmpty=function(e){var t=e*this.node_stride,i=this.nodesI;i[t+6]=-1,i[t+7]=0,this.is_lean_node||(i[t+8]=-1)},n.prototype.realloc=function(e){if(this.nodeCount+e>this.nodeCapacity){var t=0|3*this.nodeCapacity/2;tt[i]&&(e[0]=t[i]),e[3]t[i+1]&&(e[1]=t[i+1]),e[4]t[i+2]&&(e[2]=t[i+2]),e[5]t[i]&&(e[0]=t[i]),e[1]>t[i+1]&&(e[1]=t[i+1]),e[2]>t[i+2]&&(e[2]=t[i+2]),e[3]t[0]&&(e[0]=t[0]),e[1]>t[1]&&(e[1]=t[1]),e[2]>t[2]&&(e[2]=t[2]),e[3]s-o+1&&(y=s-o+1),d=0;d=l&&(b=l-1),g[v]=b,p[b].num_prims++,t(p[b].box_bbox,u,y*d),e(p[b].box_centroid,c,3*y)}}(n,o,s,a,l,h,y),r(m[0].BL,p[0].box_bbox),r(m[0].CL,p[0].box_centroid),m[0].AL=c(m[0].BL),m[0].NL=p[0].num_prims,d=1;d=1;d--){f=p[d],i(g,f.box_bbox),i(v,f.box_centroid);var A=(x=c(g))*(_+=f.num_prims)+m[d-1].AL*m[d-1].NL;A<=S&&(S=A,E=d,r(u.vb_right,g),r(u.cb_right,v),r(u.vb_left,m[d-1].BL),r(u.cb_left,m[d-1].CL),u.num_left=m[d-1].NL)}u.best_split=E,u.best_cost=S}}var b=new Float32Array(3);return{bvh_subdivide:function(t,i,r,s,l,c,u,d){n(b,0,c,0);var f=t.nodes,p=u?t.frags_per_leaf_node_transparent:t.frags_per_leaf_node,m=u?t.frags_per_inner_node_transparent:t.frags_per_inner_node,g=t.max_polys_per_node,v=0;b[1]>b[0]&&(v=1),b[2]>b[v]&&(v=2),f.setBox0(i,l);var x=0,_=0,E=s-r+1;let S=!1;if(t.finfo.hasPolygonCounts&&t.frags_per_inner_node){let e=new Set;var A=E<=t.frags_per_inner_node?s:r+t.frags_per_inner_node-1;const i=t.prim_sizes[t.primitives[r]];let n,a=r;for(;a<=A;a++){const r=t.primitives[a];if(S=(x+=t.finfo.getPolygonCount(r))>g,n=i/t.prim_sizes[r],S||=i>o&&n>t.max_size_ratio,t.per_tile_consolidation&&(e.add(t.finfo.getDrawCallId(r)),S||=e.size>=t.max_drawcalls_per_node),_++,S){++a;break}}if(t.per_tile_consolidation&&e.size>=t.max_drawcalls_per_node){const r=a;let s=[],l=[],c=!1;for(;a<=A;a++){const r=t.primitives[a],h=t.finfo.getPolygonCount(r);if(e.has(t.finfo.getDrawCallId(r))){if(c||=x+h>g,n=i/t.prim_sizes[r],c||=i>o&&n>t.max_size_ratio,c)break;s.push(r),_++,x+=h}else l.push(r)}if(s.length>0){a=r;for(let e=0;e15||b[v]t.frags_per_inner_node&&(f=t.frags_per_inner_node),f>h&&(f=h),i.setPrimStart(r,o),i.setPrimCount(r,f),o+=f,a(l);for(var p=o;p<=s;p++)e(l,d,3*u[p]);n(c,0,l,0);var m=0;return c[1]>c[0]&&(m=1),c[2]>c[m]&&(m=2),m}(t,f,i,r,s,c,b,_),r+=f.getPrimCount(i));var w=new h;if(y(t,r,s,v,c,b,w),w.num_bins<0)f.setPrimCount(i,f.getPrimCount(i)+s-r+1);else{!function(e,t,i,n,r,o,s){var a,l,c=e.primitives,h=e.sort_prims,u=0,d=0|t,f=0|s.best_split;for(a=t;a<=i;a++){var p=0|c[a];h[a]=i.first_transparent?(e(c,p,3*x),t(l,m,g*x)):(e(s,p,3*x),t(r,m,g*x))}n(b,0,i.boxv_o,0);var _=Math.max(b[0],b[1],b[2]);i.scene_epsilon=o*_},box_area:function(e,t){return l(e[t+3]-e[t],e[t+4]-e[t+1],e[t+5]-e[t+2])},sqr_diag_len:function(e,t){var i=e[t+3]-e[t],n=e[t+4]-e[t+1],r=e[t+5]-e[t+2];return i*i+n*n+r*r},box_area_three:function(e){return l(e.max.x-e.min.x,e.max.y-e.min.y,e.max.z-e.min.z)}}}();function a(e,t){this.boxes=e.boxes,this.polygonCounts=e.polygonCounts,this.hasPolygonCounts=!!this.polygonCounts,this.geomIds=e.geomids,this.flags=e.flags,this.materials=e.materials,this.materialDefs=t,this.count=e.length,this.boxStride=6,this.wantSort=e.wantSort??!0}a.prototype.getCount=function(){return this.count},a.prototype.isTransparent=function(e){return this.flags?!!(this.flags[e]&l.IS_TRANSPARENT):!(!this.materialDefs||!this.materialDefs[this.materials[e]])&&this.materialDefs[this.materials[e]].transparent},a.prototype.getPolygonCount=function(e){return this.polygonCounts[e]},a.prototype.getGeometryId=function(e){return this.geomIds[e]},a.prototype.getCanBeConsolidated=function(e){return!!this.flags[e]&l.IS_CONSOLIDATED},a.prototype.getDrawCallId=function(e){return`${this.materials[e]}${this.getCanBeConsolidated(e)?"":"_"+this.getGeometryId(e)}`},a.prototype.supportsPerTileConsolidation=function(){return!!this.materials&&!!this.flags&&!!this.geomIds};const l=Object.freeze({IS_CONSOLIDATED:1,IS_TRANSPARENT:2}),c=Object.freeze({BOX_AREA:"box_area",DIAMETER:"sqr_diag_len"});function h(e,t,i){this.finfo=i||new a(e,t),this.prim_count=this.finfo.getCount(),this.frags_per_leaf_node=-1,this.frags_per_inner_node=-1,this.nodes=null,this.work_buf=new ArrayBuffer(4*this.prim_count),this.sort_prims=new Int32Array(this.work_buf),this.primitives=new Int32Array(this.prim_count),this.centroids=new Float32Array(r*this.prim_count),this.boxv_o=new Float32Array(6),this.boxc_o=new Float32Array(6),this.boxv_t=new Float32Array(6),this.boxc_t=new Float32Array(6),this.recursion_stack=[]}h.prototype.sortPrimitives=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c.BOX_AREA;var i=new Float32Array(this.max_size_ratio===1/0?this.work_buf:this.prim_count),n=this.primitives,r=0,o=e;const a=s[t];var l,h;for(l=0,h=this.prim_count;l=0?n[f++]=n[l]:d[p++]=n[l];n.set(d,this.prim_count-r)}this.prim_sizes=i,this.first_transparent=this.prim_count-r},h.prototype.build=function(e){var t=e&&!!e.useSlimNodes,i=this;function r(t,n){Object.prototype.hasOwnProperty.call(e,t)?i[t]=e[t]:i[t]=n}if(r("max_size_ratio",1/0),r("per_tile_consolidation",!1),e.sortFuncType===c.DIAMETER&&(this.max_size_ratio*=this.max_size_ratio),t)r("frags_per_leaf_node",1),r("frags_per_inner_node",0),r("frags_per_leaf_node_transparent",1),r("frags_per_inner_node_transparent",0),r("max_polys_per_node",1/0);else{var o=e.isWeakDevice?.5:1;r("frags_per_leaf_node",0|256*o),r("frags_per_inner_node",0|this.frags_per_leaf_node),r("frags_per_leaf_node_transparent",this.frags_per_leaf_node),r("frags_per_inner_node_transparent",0),r("max_polys_per_node",0|2e4*o),r("max_drawcalls_per_node",1/0),r("want_sort",this.finfo.wantSort)}if(this.per_tile_consolidation=this.per_tile_consolidation&&this.finfo.supportsPerTileConsolidation()&&this.want_sort,this.nodes&&this.nodes.is_lean_node==t)this.nodes.nodeCount=0;else{for(var a=this.prim_count/this.frags_per_leaf_node,l=1;l{"use strict";i.r(t),i.d(t,{BoundsCallback:()=>r});var n=i(72091);function r(e){this.bounds=e,this.point=new n.Vector4,this.point.z=0,this.point.w=1}r.prototype.onVertex=function(e,t,i){this.point.x=e,this.point.y=t,this.bounds.expandByPoint(this.point)},r.prototype.onLineSegment=function(e,t,i,n,r){this.onVertex(e,t),this.onVertex(i,n)},r.prototype.onCircularArc=function(e,t,i,n,r,o){this.onEllipticalArc(e,t,i,n,r,r,0,o)},r.prototype.onEllipticalArc=function(e,t,i,n,r,o,s,a){0==s?i<=0&&n>=2*Math.PI-1e-5?this.onTexQuad(e,t,2*r,2*o,s,a):(this.point.x=e+Math.cos(i)*r,this.point.y=t+Math.sin(i)*o,this.bounds.expandByPoint(this.point),this.point.x=e+Math.cos(n)*r,this.point.y=t+Math.sin(n)*o,this.bounds.expandByPoint(this.point),i>n&&(this.point.x=e+r,this.point.y=t,this.bounds.expandByPoint(this.point),i-=2*Math.PI),i<.5*Math.PI&&n>.5*Math.PI&&(this.point.x=e,this.point.y=t+o,this.bounds.expandByPoint(this.point)),iMath.PI&&(this.point.x=e-r,this.point.y=t,this.bounds.expandByPoint(this.point)),i<1.5*Math.PI&&n>1.5*Math.PI&&(this.point.x=e,this.point.y=t-o,this.bounds.expandByPoint(this.point))):this.onTexQuad(e,t,2*r,2*o,s,a)},r.prototype.onTexQuad=function(e,t,i,r,o,s){var a=.5*i,l=.5*i;if(0==o)this.onVertex(e-a,t-l),this.onVertex(e+a,t+l);else{var c=new n.Matrix4,h=new n.Matrix4;c.makeRotationZ(o),h.makeTranslation(e,t,0),h.multiply(c);for(var u=0;u<4;u++)this.point.x=u%2==1?a:-a,this.point.y=u>=2?l:-l,this.point.applyMatrix4(h),this.bounds.expandByPoint(this.point)}},r.prototype.onOneTriangle=function(e,t,i,n,r,o,s){this.onVertex(e,t),this.onVertex(i,n),this.onVertex(r,o)}},77201:(e,t,i)=>{"use strict";i.r(t),i.d(t,{BufferGeometryUtils:()=>m,createBufferGeometry:()=>f,findBufferAttribute:()=>a,meshToGeometry:()=>p});var n=i(55280),r=i(72091),o=i(83081),s={};function a(e,t,i){var n,a=t.normalize||t.normalized;if(!t.isInterleavedBufferAttribute&&t.array)n=new r.BufferAttribute(t.array,t.itemSize);else{var l=e+"|"+t.bytesPerItem+"|"+a+"|"+t.isPattern+"|"+t.divisor+"|"+t.offset;if(n=s[l])return n;n=new r.BufferAttribute(void 0,t.itemSize),s[l]=n}return n.normalized=a,n.bytesPerItem=t.bytesPerItem,n.isPattern=t.isPattern,i&&(n.divisor=t.divisor),!t.isInterleavedBufferAttribute&&t.array||(Object.prototype.hasOwnProperty.call(t,"offset")?n.offset=t.offset:o.logger.warn("VB attribute is neither interleaved nor separate. Something is wrong with the buffer specificaiton.")),n}var l,c,h={};var u=1,d=function(){this.id=u++,this.attributes={},this.__webglInit=void 0};function f(e){return l||((l=new r.BufferAttribute(void 0,1)).bytesPerItem=2,(c=new r.BufferAttribute(void 0,1)).bytesPerItem=4),new d}function p(e){var t=e.mesh,i=f(t.numInstances);for(var o in(0,n.isNodeJS)()&&(i.packId=e.packId,i.meshIndex=e.meshIndex),i.byteSize=0,i.vb=t.vb,i.vbbuffer=void 0,i.vbNeedsUpdate=!0,i.vbstride=t.vbstride,i.byteSize+=t.vb.byteLength,i.hash=e.hash,t.isLines&&(i.isLines=t.isLines),t.isWideLines&&(i.isWideLines=!0,i.lineWidth=t.lineWidth),t.isPoints&&(i.isPoints=t.isPoints,i.pointSize=t.pointSize),e.is2d&&(i.is2d=!0),i.numInstances=t.numInstances,t.vblayout){var s=t.vblayout[o];i.attributes[o]=a(o,s,t.numInstances)}return i.index=t.indices instanceof Uint32Array?c:l,i.ib=t.indices,i.ibbuffer=void 0,t.iblines&&(i.attributes.indexlines=t.iblines instanceof Uint32Array?c:l,i.iblines=t.iblines,i.iblinesbuffer=void 0),i.attributesKeys=function(e){var t="";for(var i in e.attributes)t+=i+"|";var n=h[t];return n||(n=Object.keys(e.attributes),h[t]=n,n)}(i),i.byteSize+=t.indices.byteLength,t.boundingBox&&(i.boundingBox=(new r.Box3).copy(t.boundingBox),i.boundingSphere=(new r.Sphere).copy(t.boundingSphere)),i}d.prototype=Object.create(r.BufferGeometry.prototype),d.prototype.clone=function(){const e=new d;e.ib=this.ib,e.vb=this.vb,e.vbstride=this.vbstride,e.byteSize=this.byteSize,e.isLines=this.isLines,e.isWideLines=this.isWideLines,e.lineWidth=this.lineWidth,e.isPoints=this.isPoints,e.pointSize=this.pointSize,e.index=this.index;for(const t in this.attributes){const i=this.attributes[t],n=i.array?new i.array.constructor(this.array):void 0,o=new r.BufferAttribute(n,i.itemSize);o.itemOffset=i.itemOffset,o.bytesPerItem=i.bytesPerItem,o.normalized=i.normalized,e.setAttribute(t,o)}if(this.groups)for(var t=0,i=this.groups.length;t{"use strict";function n(e){var t;if(!e)return 0;return((null===(t=e.attributes.index)||void 0===t?void 0:t.array)||e.ib).length/3||0}function r(e){var t,i,n;return((null===(t=e.vb)||void 0===t?void 0:t.byteLength)||0)+((null===(i=e.ib)||void 0===i?void 0:i.byteLength)||0)+((null===(n=e.iblines)||void 0===n?void 0:n.byteLength)||0)}i.r(t),i.d(t,{getByteSize:()=>r,getPolygonCount:()=>n})},65672:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MeshAccessor:()=>p,createWireframe:()=>m});var n=i(69511),r=i(96118),o=i(21706);const s=1e-6;const a={x:0,y:0,z:0};class l{constructor(e,t,i){this.getVertex=e,this.bbox=t,this.boxSize=this.bbox.getSize().length(),i||(i=s),i>0?(this.precisionTolerance=i,this.scale=1/this.precisionTolerance):(this.precisionTolerance=-i*this.boxSize,this.scale=1/this.precisionTolerance),this.snapBaseX=this.bbox.min.x,this.snapBaseY=this.bbox.min.y,this.snapBaseZ=this.bbox.min.z,this.xymap={}}findOrAddPoint(e,t,i,n){let r,o=0|(e-this.snapBaseX)*this.scale,s=0|(t-this.snapBaseY)*this.scale,l=0|(i-this.snapBaseZ)*this.scale,c=1/0;for(let n=o-1;n<=o+1;n++){let o=this.xymap[n];if(o)for(let n=s-1;n<=s+1;n++){let s=o[n];if(s)for(let n=l-1;n<=l+1;n++){let o=s[n];if(void 0===o)continue;this.getVertex(o,a);let l=a,h=(l.x-e)*(l.x-e)+(l.y-t)*(l.y-t)+(l.z-i)*(l.z-i);hthis.precisionTolerance&&(r=void 0),void 0===r){let e=this.xymap[o];e||(e=this.xymap[o]={});let t=e[s];return t||(t=e[s]={}),t[l]=n,n}return r}}let c=new r.LmvVector3,h=new r.LmvVector3,u=new r.LmvVector3,d=new r.LmvVector3,f=new r.LmvVector3;class p{constructor(e,t,i){let s=e.boundingBox||i,a=new o.LmvBox3;s&&a.copy(s),this.geom=e,this.myVerts=function(e,t){var i=new Float32Array(3*(0,n.getVertexCount)(e));return(0,n.enumMeshVertices)(e,(function(e,n,r,o){t&&t.expandByPoint(e),i[3*o]=e.x,i[3*o+1]=e.y,i[3*o+2]=e.z})),i}(e,s?null:a);let c=new l(this.getV.bind(this),a,-1/65536);this.remap=new Array((0,n.getVertexCount)(e));for(let e=0,t=0;el){var u=n;n=l,l=u,h=!0}var p=s[n];if(p){var m=p[l];if(void 0===m)p[l]=h?-i-1:i;else{if(r)a.push(e),a.push(t);else{o.getNormal(e,t,i,d),m<0?o.getNormal(l,n,o.remap[-m-1],f):o.getNormal(n,l,o.remap[m],f);var g=d.dot(f);Math.abs(g)<.25&&(a.push(e),a.push(t))}delete p[l]}}else s[n]={},s[n][l]=i}}for(var c in(0,n.enumMeshTriangles)(e,(function(e,t,i,n,r,o){l(n,r,o),l(r,o,n),l(o,n,r)})),s)for(var h in s[c])a.push(parseInt(c)),a.push(parseInt(h));a.length<2||(e.iblines=new Uint16Array(a.length),e.iblines.set(a))}},94549:(e,t,i)=>{"use strict";function n(){let e,t,i,n,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=0;const s=[],a=[];let l,c,h,u;const d=r.timeSlice||15,f=r.sliceDelay||0,p=r.delay??-1;function m(e){o&&clearTimeout(o),o=0,i=e,s.length=0,a.length=0,l=null,c=-1,h=0,u=0}function g(){o=0;const r=performance.now()+d;for(;performance.now()=a.length,!i||c>=i.length)}o=setTimeout((()=>g()),f)}function v(){if(i&&cparseInt(e))))}if(s.length>0)return n=i[c],n}return n=null,!1}function y(e){if(l)return!l.isNodeHidden(e)&&!l.isNodeOff(e);return!i[c].getFragmentList().dbIdIsGhosted[e]}function b(){if(h>=s.length)return!1;for(;++ht.isFragVisible(e))),a.push(...i)}if(a.length>0)return!0}}return!1}function x(){if(++u=0?o=setTimeout((()=>g()),p):g())},this.stop=function(){m(null)}}i.r(t),i.d(t,{FragmentIterator:()=>n})},54561:(e,t,i)=>{"use strict";i.r(t),i.d(t,{FragmentList:()=>b,FragmentPointer:()=>x});var n=i(72091),r=i(68747),o=i(83081),s=i(10149),a=i(81760),l=new Uint32Array(1);function c(e){var t;this.geometry=e,this.vb=e.vb.buffer,this.stride=e.vbstride,this.vbi=new Int32Array(this.vb),this.vbs=new Uint16Array(this.vb),this.vcount=this.vbi.length/this.stride,this.useCompactBuffers=e.unpackXform,this.texData=this.useCompactBuffers&&(null===(t=e.tIdColor)||void 0===t||null===(t=t.image)||void 0===t?void 0:t.data)&&new Uint32Array(e.tIdColor.image.data.buffer),this.texColMap=(()=>{if(!this.texData)return null;const e={},t=new Set;for(let i=0;i65536)return void o.logger.warn("setColorAt() cannot add new color as size limit reached");const n=new Uint32Array(e.length+1);n.set(e,0),n[e.length]=t,this.texColMap[t]=e.length;var i=new THREE.DataTexture(new Uint8Array(n.buffer),n.length,1,THREE.RGBAFormat,THREE.UnsignedByteType,THREE.UVMapping,THREE.ClampToEdgeWrapping,THREE.ClampToEdgeWrapping,THREE.NearestFilter,THREE.NearestFilter,0);i.generateMipmaps=!1,i.flipY=!1,i.needsUpdate=!0,this.geometry.tIdColor.dispose(),this.geometry.tIdColor=i,this.texData=new Uint32Array(i.image.data.buffer),this.geometry.vIdColorTexSize=new THREE.Vector2(n.length,1)}this.vbs[e*this.stride*2+6]=this.texColMap[t]}else this.vbi[e*this.stride+6]=t;var n},c.prototype.setVertexFlagsAt=function(e,t){this.texData?this.vbi[e*this.stride+4]=t:this.vbi[e*this.stride+8]=t};const h=new n.Matrix4,u=new n.Box3,d=new n.Quaternion,f=new n.Vector3,p=new n.Vector3,m=new n.Vector4(0,0,0,0),g=new n.Matrix4,v=new n.Color,y=new n.Color;class b{is2d;modelId;fragments;geoms;isFixedSize;vizflags;useThreeMesh;vizMeshes;allVisible=!0;allVisibleDirty=!0;vizflagsDirty=!0;linesHidden=!1;pointsHidden=!1;matrix=null;viewBounds=null;materialmap={};materialIdMap={};nextMaterialId=1;materialIdMapOriginal=null;db2ThemingColor=[];originalColors=[];themingOrGhostingNeedsUpdate={};themingOrGhostingNeedsUpdateByDbId={};dbIdOpacity=[];themeingOrGhostingIsDirty=!0;dbIdIsGhosted=[];animxforms=null;nextAvailableFragID;meshSetCallbacks=[];transformChangedCallbacks=[];materialChangedCallbacks=[];objectFlagsChangedCallbacks=[];themingColorChangedCallbacks=[];visibilityDirtyCallbacks=[];constructor(e,t,i,n,r,o){var a;this.is2d=o.is2d,this.modelId=i,this.fragments=e,this.geoms=t,this.isFixedSize=this.fragments.length>0,this.isFixedSize?(this.boxes=this.fragments.boxes,this.transforms=this.fragments.transforms,this.useThreeMesh=!1):(this.boxes=null,this.transforms=null,this.useThreeMesh=!0);const l=this.fragments.length;this.vizflags=new Uint16Array(l),this.useThreeMesh&&(this.vizmeshes=new Array(l)),o.isOTG?(this.materialids=(0,s.z)(l,n),this.geomids=(0,s.z)(l,r)):(this.geomids=new Int32Array(l),this.materialids=new Int32Array(l)),!o.isOTG&&null!==(a=this.fragments)&&void 0!==a&&a.visibilityFlags?this.vizflags.set(this.fragments.visibilityFlags):this.vizflags.fill(1),this.vizflagsDirty=!0,this.nextAvailableFragID=l}getNextAvailableFragmentId(){return this.nextAvailableFragID++}fragmentsHaveBeenAdded(){return this.vizflags.length>this.fragments.length}getSvfMaterialId(e){var t=this.getMaterial(e);return t?t.svfMatId:void 0}setMesh(e,t,i,s){if(this.vizmeshes){const t=this.vizmeshes[e];t&&t.parent&&t.parent.remove(t)}if(this.vizflags.length<=e){this.isFixedSize&&(o.logger.warn("Attempting to resize a fragments list that was initialized with fixed data. This will have a performance impact."),this.isFixedSize=!1);let t=Math.ceil(1.5*Math.max(this.vizflags.length,e))||1;this.useThreeMesh&&t>8)&&0===d,p=this.db2ThemingColor[h],m=0===this.dbIdOpacity[h];if(p||m){if(!t){t=new Uint32Array(s);for(var g=0;gthis.themingOrGhostingNeedsUpdateByDbId[e])),t.length&&(this.#C(e),t.forEach((e=>{delete this.themingOrGhostingNeedsUpdateByDbId[e]})))}}getVizmesh(e){if(this.is2d&&this.#P(e),this.useThreeMesh){const t=this.vizmeshes[e];return t&&(t.themingColor=this.db2ThemingColor[t.dbId]),t}const t=this.scratchMesh=this.scratchMesh||function(){var e=new n.Mesh;return e.isTemp=!0,e.dbId=0,e.modelId=0,e.fragId=-1,e.hide=!1,e.isLine=!1,e.isWideLine=!1,e.isPoint=!1,e.frustumCulled=!1,e}();return t.geometry=this.getGeometry(e),t.material=this.getMaterial(e),t.dbId=this.getDbIds(e),t.modelId=this.modelId,t.fragId=e,t.visible=!0,t.isLine=this.isLine(e),t.isWideLine=this.isWideLine(e),t.isPoint=this.isPoint(e),t.hide=this.isFragOff(e),t.themingColor=this.db2ThemingColor[t.dbId],this.getWorldMatrix(e,t.matrixWorld),t}getMaterialId(e){var t=this.getMaterial(e);return t?t.id:0}getMaterial(e){return this.useThreeMesh?this.vizmeshes[e].material:this.materialIdMap[this.materialids[e]]}storeOriginalMaterials(){let e,t;this.materialIdMapOriginal=[];for(let i=0;i2&&void 0!==arguments[2]&&arguments[2];if(this.useThreeMesh)this.vizmeshes[e].material=t;else{var n=this.materialmap[t.id];n||(n=this.nextMaterialId++,this.materialids=(0,s.i)(this.materialids,n),this.materialIdMap[n]=t,this.materialmap[t.id]=n),this.materialids[e]=n}for(const n of this.materialChangedCallbacks)n(e,t,i)}getCount(){return this.vizmeshes?this.vizmeshes.length:this.vizflags.length}getDbIds(e){return this.fragments.fragId2dbId[e]}setObjectFlagsCB=function(e){this.objectFlagsCB=e;for(const e of this.objectFlagsChangedCallbacks)e()};getThemingColor(e){return this.db2ThemingColor[this.fragments.fragId2dbId[e]]}dispose(){if(this.useThreeMesh)for(var e={type:"dispose"},t={type:"removed"},i=0;i{e.matrixWorld.multiplyMatrices(this.matrix,e.matrix)}))):(this.matrix=null,this.useThreeMesh&&this.vizmeshes.forEach((e=>{e.matrixWorld.copy(e.matrix)}))),this.invMatrix=null}getInverseModelMatrix(){return this.matrix?(this.invMatrix||(this.invMatrix=this.matrix.clone().invert()),this.invMatrix):null}getWorldBounds(e,t){if(this.boxes&&!this.isFlagSet(e,r.MeshFlags.MESH_MOVED)){var i=this.boxes,n=6*e;return t.min.x=i[n],t.min.y=i[n+1],t.min.z=i[n+2],t.max.x=i[n+3],t.max.y=i[n+4],t.max.z=i[n+5],void(this.matrix&&t.applyMatrix4(this.matrix))}if(this.useThreeMesh){var o=this.vizmeshes[e];o&&o.geometry&&t.copy(o.geometry.boundingBox)}else this.geoms.getModelBox(this.geomids[e],t);this.viewBounds&&t.intersect(this.viewBounds),t.isEmpty()?t.makeEmpty():(this.getWorldMatrix(e,h),t.applyMatrix4(h))}getOriginalWorldBounds(e,t){if(this.boxes){var i=this.boxes,n=6*e;return t[0]=i[n],t[1]=i[n+1],t[2]=i[n+2],t[3]=i[n+3],t[4]=i[n+4],void(t[5]=i[n+5])}if(this.useThreeMesh){var r=this.vizmeshes[e];r&&r.geometry&&u.copy(r.geometry.boundingBox)}else this.geoms.getModelBox(this.geomids[e],u);u.isEmpty()||(this.getOriginalWorldMatrix(e,h),u.applyMatrix4(h)),t[0]=u.min.x,t[1]=u.min.y,t[2]=u.min.z,t[3]=u.max.x,t[4]=u.max.y,t[5]=u.max.z}#D(e){if(this.is2d){var t=this.fragments.dbId2fragId[e];if(Array.isArray(t))for(var i=0;i{"use strict";i.r(t),i.d(t,{CONTAINMENT_UNKNOWN:()=>c,CONTAINS:()=>l,FrustumIntersector:()=>o,INTERSECTS:()=>a,OUTSIDE:()=>s});var n=i(72091),r=[[1,5,4,7,3,2,6],[0,3,2,1,5,4,6],[0,3,2,6,5,4,6],[0,4,7,3,2,1,6],[0,3,2,1,-1,-1,4],[0,3,2,6,5,1,6],[0,4,7,6,2,1,6],[0,3,7,6,2,1,6],[0,3,7,6,5,1,6],[0,1,5,4,7,3,6],[0,1,5,4,-1,-1,4],[0,1,2,6,5,4,6],[0,4,7,3,-1,-1,4],[-1,-1,-1,-1,-1,-1,0],[1,2,6,5,-1,-1,4],[0,4,7,6,2,3,6],[2,3,7,6,-1,-1,4],[1,2,3,7,6,5,6],[0,1,5,6,7,3,6],[0,1,5,6,7,4,6],[0,1,2,6,7,4,6],[0,4,5,6,7,3,6],[4,5,6,7,-1,-1,4],[1,2,6,7,4,5,6],[0,4,5,6,2,3,6],[2,3,7,4,5,6,6],[1,2,3,7,4,5,6]];function o(){this.frustum=new n.Frustum,this.viewProj=new n.Matrix4,this.viewDir=[0,0,1],this.ar=1,this.viewport=new n.Vector3(1,1,1),this.areaConv=1,this.areaCullThreshold=1,this.eye=new n.Vector3,this.perspective=!1,this.projScale=1}const s=0,a=1,l=2,c=-1;var h,u;function d(e,t,i){return i.x=1&t?e.max.x:e.min.x,i.y=2&t?e.max.y:e.min.y,i.z=4&t?e.max.z:e.min.z,i}o.OUTSIDE=s,o.INTERSECTS=a,o.CONTAINS=l,o.CONTAINMENT_UNKNOWN=c,o.prototype.reset=function(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.viewProj.multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse),this.perspective=e.isPerspective,this.frustum.setFromProjectionMatrix(this.viewProj);var r=e.matrixWorldInverse.elements;this.ar=e.aspect,this.viewDir[0]=-r[2],this.viewDir[1]=-r[6],this.viewDir[2]=-r[10],this.eye.x=e.position.x,this.eye.y=e.position.y,this.eye.z=e.position.z,this.areaConv=e.clientWidth*e.clientHeight/4,this.cutPlanes=t,this.cutplanesHideInterior=i,this.perspective?this.projScale=e.clientHeight/(2*Math.tan(n.Math.degToRad(e.fov/2))):this.projScale=e.clientHeight/e.orthoScale},o.prototype.projectedArea=function(){var e=[new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3,new n.Vector3],t=new n.Box2;function i(e,t){var i=e.x,n=e.y,r=e.z,o=t.elements,s=o[3]*i+o[7]*n+o[11]*r+o[15];s<0&&(s=-s);var a=1/s;e.x=(o[0]*i+o[4]*n+o[8]*r+o[12])*a,e.y=(o[1]*i+o[5]*n+o[9]*r+o[13])*a}return function(n){if(n.isEmpty())return 0;var r=this.viewProj;e[0].set(n.min.x,n.min.y,n.min.z),e[1].set(n.min.x,n.min.y,n.max.z),e[2].set(n.min.x,n.max.y,n.min.z),e[3].set(n.min.x,n.max.y,n.max.z),e[4].set(n.max.x,n.min.y,n.min.z),e[5].set(n.max.x,n.min.y,n.max.z),e[6].set(n.max.x,n.max.y,n.min.z),e[7].set(n.max.x,n.max.y,n.max.z);for(var o=0;o<8;o++)i(e[o],r);return t.makeEmpty(),t.setFromPoints(e),t.min.x<-1&&(t.min.x=-1),t.min.x>1&&(t.min.x=1),t.min.y<-1&&(t.min.y=-1),t.min.y>1&&(t.min.y=1),t.max.x>1&&(t.max.x=1),t.max.x<-1&&(t.max.x=-1),t.max.y>1&&(t.max.y=1),t.max.y<-1&&(t.max.y=-1),(t.max.x-t.min.x)*(t.max.y-t.min.y)}}(),o.prototype.projectedBoxArea=function(){for(var e,t=[],i=[],o=0;o<10;o++)t.push(new n.Vector3),i.push(new n.Vector3);function s(e,t){var i=e.x,n=e.y,r=e.z,o=t.elements,s=o[3]*i+o[7]*n+o[11]*r+o[15];s<0&&(s=-s);var a=1/s;e.x=(o[0]*i+o[4]*n+o[8]*r+o[12])*a,e.y=(o[1]*i+o[5]*n+o[9]*r+o[13])*a}return function(n,o){if(n.isEmpty())return 0;var a,l=this.viewProj;if(this.perspective?(a=this.eye.x>=n.min.x?this.eye.x>n.max.x?2:1:0,this.eye.y>=n.min.y&&(a+=this.eye.y>n.max.y?6:3),this.eye.z>=n.min.z&&(a+=this.eye.z>n.max.z?18:9)):(a=this.viewDir[0]<=0?this.viewDir[0]<0?2:1:0,this.viewDir[1]<=0&&(a+=this.viewDir[1]<0?6:3),this.viewDir[2]<=0&&(a+=this.viewDir[2]<0?18:9)),13===a)return 4;var c,h=r[a][6];for(c=0;c=-1;case 1:return e.x<=1;case 2:return e.y>=-1;case 3:return e.y<=1}},m=function(e){f[u].x=e.x,f[u++].y=e.y},g=function(){var e,t;switch(h){case 0:e=-1,t=o.y+(s.y-o.y)*(e-o.x)/(s.x-o.x);break;case 1:e=1,t=o.y+(s.y-o.y)*(e-o.x)/(s.x-o.x);break;case 2:t=-1,e=o.x+(s.x-o.x)*(t-o.y)/(s.y-o.y);break;case 3:t=1,e=o.x+(s.x-o.x)*(t-o.y)/(s.y-o.y)}f[u].x=e,f[u++].y=t};for(h=0;h<4&&n>2;h++){for(u=0,a=p(o=d[n-1]),c=0;c=3)for(d=(f[e-1].x-f[0].x)*(f[e-1].y+f[0].y),c=0;c0?e.min.x:e.max.x,u.x=r.normal.x>0?e.max.x:e.min.x,h.y=r.normal.y>0?e.min.y:e.max.y,u.y=r.normal.y>0?e.max.y:e.min.y,h.z=r.normal.z>0?e.min.z:e.max.z,u.z=r.normal.z>0?e.max.z:e.min.z;var s=r.distanceToPoint(h),a=r.distanceToPoint(u);if(s<0&&a<0)return o.OUTSIDE;s>0&&a>0&&i++}return 6==i?o.CONTAINS:o.INTERSECTS});var f,p=function(e,t){f||(f=new n.Vector3);for(var i=0;i<8;i++){var r=d(e,i,f);if(s=t,!((o=r).x*s.x+o.y*s.y+o.z*s.z+s.w>1e-6))return!1}var o,s;return!0};let m;o.prototype.boxOutsideCutPlanes=function(e){if(this.cutplanesHideInterior||!this.cutPlanes)return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];m||(m=new n.Vector4);let i=0;for(let n=0;n3&&i===t.length}(e,this.cutPlanes);for(var t=0;t{"use strict";i.r(t),i.d(t,{GeometryList:()=>o});var n=i(72091),r=i(65782);function o(e,t,i,n){this.geoms=[null],this.geomPolyCount=0,this.instancePolyCount=0,this.is2d=t,this.geomBoxes=n?null:new Float32Array(6*Math.max(1,e+1)),this.numObjects=e,this.disableStreaming=!!i,this.instanceCount=[null]}o.prototype._getMemoryStat=function(e){const t=r.MemoryTracker.geomListStats.get(this);return t?t[e]:0},Object.defineProperty(o.prototype,"numGeomsInMemory",{get(){return this._getMemoryStat("geomCount")}}),Object.defineProperty(o.prototype,"geomMemory",{get(){return this._getMemoryStat("geomMemory")}}),Object.defineProperty(o.prototype,"gpuNumMeshes",{get(){return this._getMemoryStat("gpuGeomCount")}}),Object.defineProperty(o.prototype,"gpuMeshMemory",{get(){return this._getMemoryStat("gpuGeomMemory")}}),o.prototype.getGeometry=function(e){return this.geoms[e]},o.prototype.hasGeometry=function(e){return!!this.geoms[e]},o.prototype.getCount=function(){return this.geoms.length},o.prototype._addBbox=function(e,t){if(this.geomBoxes){var i=this.geomBoxes.length/6|0;if(i=1&&e<=this.numObjects?(t.min.x=-.5,t.min.y=-.5,t.min.z=-.5,t.max.x=.5,t.max.y=.5,t.max.z=.5):t.makeEmpty()},o.prototype.dispose=function(){let e;for(var t=0,i=this.geoms.length;t{"use strict";i.r(t),i.d(t,{InstanceTree:()=>l,NODE_TYPE:()=>o});var n=i(63430),r=i(83081);const o={NODE_TYPE_ASSEMBLY:0,NODE_TYPE_INSERT:1,NODE_TYPE_LAYER:2,NODE_TYPE_COLLECTION:3,NODE_TYPE_COMPOSITE:4,NODE_TYPE_MODEL:5,NODE_TYPE_GEOMETRY:6,NODE_TYPE_BITS:7};var s=1073741824,a=2147483648;function l(e,t,i){this.nodeAccess=e,this.maxDepth=i,this.objectCount=t,this.numHidden=0,this.numOff=0,this.fragList=null}l.prototype.dtor=function(){this.nodeAccess.dtor(),this.nodeAccess=null,this.fragList=null},l.prototype.setFlagNode=function(e,t,i){var n=this.nodeAccess.getNodeFlags(e);return!!(n&t)!=i&&(i?this.nodeAccess.setNodeFlags(e,n|t):this.nodeAccess.setNodeFlags(e,n&~t),!0)},l.prototype.setFlagGlobal=function(e,t){var i=this.nodeAccess,n=0,r=i.numNodes;if(t)for(;n{this.fragList.getOriginalWorldBounds(e,c),t[0]=Math.min(t[0],c[0]),t[1]=Math.min(t[1],c[1]),t[2]=Math.min(t[2],c[2]),t[3]=Math.max(t[3],c[3]),t[4]=Math.max(t[4],c[4]),t[5]=Math.max(t[5],c[5])}),!0)):void r.logger.error("getNodeBox() requires fragBoxes or nodeBoxes");this.nodeAccess.getNodeBox(e,t)},l.prototype.getNodeIndex=function(e){return this.nodeAccess.getIndex(e)},l.prototype.enumNodeFragments=function(e,t,i){var n;"number"==typeof e?n=e:e&&(n=e.dbId);const r=e=>{var n=this.nodeAccess.enumNodeFragments(e,t);return n||(i&&(n=this.enumNodeChildren(e,(e=>r(e))))?n:void 0)};return r(n)},l.prototype.enumNodeChildren=function(e,t,i){var n;if("number"==typeof e?n=e:e&&(n=e.dbId),i&&t(n))return n;const r=e=>{var n=this.nodeAccess.enumNodeChildren(e,(n=>t(n,e)?n:i?r(n):void 0));if(n)return n};return r(n)},l.prototype.findNodeForSelection=function(e,t){if(t===n.SelectionMode.LEAF_OBJECT)return e;var i,r,s=e;if(t===n.SelectionMode.FIRST_OBJECT){var a=[];for(i=e;i;)a.push(i),i=this.getNodeParentId(i);for(var l=a.length-1;l>=0;l--)if((r=this.getNodeType(a[l]))!==o.NODE_TYPE_MODEL&&r!==o.NODE_TYPE_LAYER&&r!==o.NODE_TYPE_COLLECTION){s=a[l];break}}else if(t===n.SelectionMode.LAST_OBJECT)for(i=e;i;){if((r=this.getNodeType(i))===o.NODE_TYPE_COMPOSITE){s=i;break}i=this.getNodeParentId(i)}return s},l.prototype.setFragmentList=function(e){this.fragList=e},l.prototype.search=function(e){const t=e.toLowerCase();let i=[];return this.enumNodeChildren(this.getRootId(),((e,n)=>{var r;((null===(r=this.getNodeName(e))||void 0===r?void 0:r.toLowerCase())||"").indexOf(t)>-1&&i.push(e)}),!0),i}},65435:(e,t,i)=>{"use strict";i.r(t),i.d(t,{FlatStringStorage:()=>r,InstanceTreeAccess:()=>l,InstanceTreeStorage:()=>s});var n=i(42759);class r{constructor(e){e?(this.buf=e.buf,this.idx=e.idx,this.next=e.next):(this.buf=new Uint8Array(256),this.next=0,this.idx=[0])}allocate(e){if(this.buf.length-this.nextthis.children.length&&console.error("Child index out of bounds -- should not happen"),this.processName(l,i)},s.prototype.processName=function(e,t){var i,n,r=-1,o=-1;if(t&&(o=t.lastIndexOf("]"),-1!==(r=t.lastIndexOf("["))&&-1!==o||(r=t.lastIndexOf(":"),o=t.length)),r>=0&&o>r){i=t.slice(0,r+1);var s=t.slice(r+1,o);(n=parseInt(s,10))&&n+""===s||(i=t,n=0)}else i=t,n=0;var a=this.s2i[i];void 0===a&&(a=this.strings.add(i),this.s2i[i]=a),this.names[e]=a,this.nameSuffixes[e]=n},s.prototype.flatten=function(){this.nodes=a(this.nodes),this.children=a(this.children),this.names=a(this.names),this.nameSuffixes=a(this.nameSuffixes),this.strings.flatten(),this.s2i=null},l.prototype.dtor=function(){this.nodes=null,this.children=null,this.dbIdToIndex=null,this.names=null,this.nameSuffixes=null,this.strings=null,this.visibleIds=null,this.nodeBoxes=null},l.prototype.getNumNodes=function(){return this.numNodes},l.prototype.getIndex=function(e){return this.dbIdToIndex[e]},l.prototype.name=function(e,t){var i,n=this.dbIdToIndex[e],r=this.strings.get(this.names[n]),o=this.nameSuffixes[n];o?i="["===r.charAt(r.length-1)?r+o+"]":r+o:i=r;return t&&(this.childCounts||this.computeChildCounts(),this.childCounts[e]>0&&(i+=" ("+this.childCounts[e]+")")),i},l.prototype.getParentId=function(e){var t=this.dbIdToIndex[e];return this.nodes[t*o+1]},l.prototype.getNodeFlags=function(e){var t=this.dbIdToIndex[e];return this.nodes[t*o+4]},l.prototype.setNodeFlags=function(e,t){var i=this.dbIdToIndex[e];i&&(this.nodes[i*o+4]=t)},l.prototype.getNumChildren=function(e){var t=this.dbIdToIndex[e],i=this.nodes[t*o+3];if(i>=0)return i;var n=this.nodes[t*o+2];i=Math.abs(i);for(var r=0,s=0;s=0)return 0;for(var n=this.nodes[t*o+2],r=0,s=(i=Math.abs(i))-1;s>=0;s--){if(this.children[n+s]>=0)break;r++}return r},l.prototype.getNodeBox=function(e,t){for(var i=6*this.getIndex(e),n=0;n<6;n++)t[n]=this.nodeBoxes[i+n]},l.prototype.getVisibleIds=function(){return this.visibleIds||(this.visibleIds=Object.keys(this.dbIdToIndex).map((function(e){return parseInt(e)}))),this.visibleIds},l.prototype.enumNodeChildren=function(e,t){var i=this.dbIdToIndex[e],n=this.nodes[i*o+2],r=this.nodes[i*o+3];r=Math.abs(r);for(var s=0;s0)&&t(-a-1,e,i))return e}}},l.prototype.computeBoxes=function(e){this.nodeBoxes||(this.nodeBoxes=new Float32Array(6*this.numNodes));var t=this,i=t.getIndex(t.rootId),n=t.nodeBoxes;function r(e,i,r){var o=t.getIndex(e);s(e,o);for(var a=6*r,l=6*o,c=0;c<3;c++)n[a+c]>n[l+c]&&(n[a+c]=n[l+c]),n[a+c+3]e[o+a]&&(n[s+a]=e[o+a]),n[s+a+3]{t[n]+=i(e)}),!0),e.getNumFragments(n)&&(r=1)),t[n]+r}(e.rootId)},l.prototype.dbIdToIndexFiltered=function(e){const t={},i=this,n=r=>{let o=e(r);return i.enumNodeChildren(r,(e=>{n(e)&&(o=!0)})),o&&(t[r]=i.dbIdToIndex[r]),o};return n(this.rootId),t}},10149:(e,t,i)=>{"use strict";function n(e,t){return t<=255?new Uint8Array(e):t<=65535?new Uint16Array(e):new Uint32Array(e)}function r(e,t){if(t<=255)return e;if(t<=65535&&e instanceof Uint8Array){let t=new Uint16Array(e.length);return t.set(e),t}if(!(e instanceof Uint32Array)){let t=new Uint32Array(e.length);return t.set(e),t}return e}i.d(t,{i:()=>r,z:()=>n})},21706:(e,t,i)=>{"use strict";i.r(t),i.d(t,{LmvBox3:()=>r});var n=i(96118);let r=function(e,t){this.min=void 0!==e?e:new n.LmvVector3(1/0,1/0,1/0),this.max=void 0!==t?t:new n.LmvVector3(-1/0,-1/0,-1/0)};var o,s,a;r.prototype={constructor:r,set:function(e,t){return this.min.copy(e),this.max.copy(t),this},setFromPoints:function(e){this.makeEmpty();for(var t=0,i=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z},getParameter:function(e,t){return(t||new n.LmvVector3).set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))},isIntersectionBox:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)},intersectsBox:function(e){return this.isIntersectionBox(e)},clampPoint:function(e,t){return(t||new n.LmvVector3).copy(e).clamp(this.min,this.max)},distanceToPoint:function(){var e=new n.LmvVector3;return function(t){return e.copy(t).clamp(this.min,this.max).sub(t).length()}}(),intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},applyMatrix4:(o=new n.LmvVector3,s=new n.LmvVector3,function(e){for(var t=e.elements,i=0;i<3;i++){let e=t[12+i],l=e;for(var n=0;n<3;n++){var r=t[i+4*n]*this.min.getComponent(n),a=t[i+4*n]*this.max.getComponent(n);e+=Math.min(r,a),l+=Math.max(r,a)}o.setComponent(i,e),s.setComponent(i,l)}return this.min.copy(o),this.max.copy(s),this}),translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}},37365:(e,t,i)=>{"use strict";i.r(t),i.d(t,{LmvMatrix4:()=>r});var n=i(96118);let r=function(e){this.elements=e?new Float64Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]):new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),this.isDoublePrecision=!!e};r.prototype={constructor:r,set:function(e,t,i,n,r,o,s,a,l,c,h,u,d,f,p,m){var g=this.elements;return g[0]=e,g[4]=t,g[8]=i,g[12]=n,g[1]=r,g[5]=o,g[9]=s,g[13]=a,g[2]=l,g[6]=c,g[10]=h,g[14]=u,g[3]=d,g[7]=f,g[11]=p,g[15]=m,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},copy:function(e){return this.elements.set(e.elements),this},makeRotationFromQuaternion:function(e){var t=this.elements,i=e.x,n=e.y,r=e.z,o=e.w,s=i+i,a=n+n,l=r+r,c=i*s,h=i*a,u=i*l,d=n*a,f=n*l,p=r*l,m=o*s,g=o*a,v=o*l;return t[0]=1-(d+p),t[4]=h-v,t[8]=u+g,t[1]=h+v,t[5]=1-(c+p),t[9]=f-m,t[2]=u-g,t[6]=f+m,t[10]=1-(c+d),t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},multiply:function(e){return this.multiplyMatrices(this,e)},multiplyMatrices:function(e,t){var i=e.elements,n=t.elements,r=this.elements,o=i[0],s=i[4],a=i[8],l=i[12],c=i[1],h=i[5],u=i[9],d=i[13],f=i[2],p=i[6],m=i[10],g=i[14],v=i[3],y=i[7],b=i[11],x=i[15],_=n[0],E=n[4],S=n[8],A=n[12],w=n[1],T=n[5],M=n[9],C=n[13],P=n[2],D=n[6],L=n[10],I=n[14],R=n[3],O=n[7],N=n[11],F=n[15];return r[0]=o*_+s*w+a*P+l*R,r[4]=o*E+s*T+a*D+l*O,r[8]=o*S+s*M+a*L+l*N,r[12]=o*A+s*C+a*I+l*F,r[1]=c*_+h*w+u*P+d*R,r[5]=c*E+h*T+u*D+d*O,r[9]=c*S+h*M+u*L+d*N,r[13]=c*A+h*C+u*I+d*F,r[2]=f*_+p*w+m*P+g*R,r[6]=f*E+p*T+m*D+g*O,r[10]=f*S+p*M+m*L+g*N,r[14]=f*A+p*C+m*I+g*F,r[3]=v*_+y*w+b*P+x*R,r[7]=v*E+y*T+b*D+x*O,r[11]=v*S+y*M+b*L+x*N,r[15]=v*A+y*C+b*I+x*F,this},multiplyToArray:function(e,t,i){var n=this.elements;return this.multiplyMatrices(e,t),i[0]=n[0],i[1]=n[1],i[2]=n[2],i[3]=n[3],i[4]=n[4],i[5]=n[5],i[6]=n[6],i[7]=n[7],i[8]=n[8],i[9]=n[9],i[10]=n[10],i[11]=n[11],i[12]=n[12],i[13]=n[13],i[14]=n[14],i[15]=n[15],this},multiplyScalar:function(e){var t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this},determinant:function(){var e=this.elements,t=e[0],i=e[4],n=e[8],r=e[12],o=e[1],s=e[5],a=e[9],l=e[13],c=e[2],h=e[6],u=e[10],d=e[14];return e[3]*(+r*a*h-n*l*h-r*s*u+i*l*u+n*s*d-i*a*d)+e[7]*(+t*a*d-t*l*u+r*o*u-n*o*d+n*l*c-r*a*c)+e[11]*(+t*l*h-t*s*d-r*o*h+i*o*d+r*s*c-i*l*c)+e[15]*(-n*s*c-t*a*h+t*s*u+n*o*h-i*o*u+i*a*c)},transpose:function(){var e,t=this.elements;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this},flattenToArrayOffset:function(e,t){var i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15],e},setPosition:function(e){var t=this.elements;return t[12]=e.x,t[13]=e.y,t[14]=e.z,this},invert:function(e){const t=this.elements,i=t[0],n=t[1],r=t[2],o=t[3],s=t[4],a=t[5],l=t[6],c=t[7],h=t[8],u=t[9],d=t[10],f=t[11],p=t[12],m=t[13],g=t[14],v=t[15],y=u*g*c-m*d*c+m*l*f-a*g*f-u*l*v+a*d*v,b=p*d*c-h*g*c-p*l*f+s*g*f+h*l*v-s*d*v,x=h*m*c-p*u*c+p*a*f-s*m*f-h*a*v+s*u*v,_=p*u*l-h*m*l-p*a*d+s*m*d+h*a*g-s*u*g,E=i*y+n*b+r*x+o*_;if(0===E)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const S=1/E;return t[0]=y*S,t[1]=(m*d*o-u*g*o-m*r*f+n*g*f+u*r*v-n*d*v)*S,t[2]=(a*g*o-m*l*o+m*r*c-n*g*c-a*r*v+n*l*v)*S,t[3]=(u*l*o-a*d*o-u*r*c+n*d*c+a*r*f-n*l*f)*S,t[4]=b*S,t[5]=(h*g*o-p*d*o+p*r*f-i*g*f-h*r*v+i*d*v)*S,t[6]=(p*l*o-s*g*o-p*r*c+i*g*c+s*r*v-i*l*v)*S,t[7]=(s*d*o-h*l*o+h*r*c-i*d*c-s*r*f+i*l*f)*S,t[8]=x*S,t[9]=(p*u*o-h*m*o-p*n*f+i*m*f+h*n*v-i*u*v)*S,t[10]=(s*m*o-p*a*o+p*n*c-i*m*c-s*n*v+i*a*v)*S,t[11]=(h*a*o-s*u*o-h*n*c+i*u*c+s*n*f-i*a*f)*S,t[12]=_*S,t[13]=(h*m*r-p*u*r+p*n*d-i*m*d-h*n*g+i*u*g)*S,t[14]=(p*a*r-s*m*r-p*n*l+i*m*l+s*n*g-i*a*g)*S,t[15]=(s*u*r-h*a*r+h*n*l-i*u*l-s*n*d+i*a*d)*S,this},getInverse:function(e,t){if(console.warn("LmvMatrix4.getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead."),this.copy(e).invert(),0===this.determinant()){const e="Matrix4.getInverse(): can't invert matrix, determinant is 0";if(t)throw new Error(e);console.warn(e),this.identity()}return this},scale:function(e){var t=this.elements,i=e.x,n=e.y,r=e.z;return t[0]*=i,t[4]*=n,t[8]*=r,t[1]*=i,t[5]*=n,t[9]*=r,t[2]*=i,t[6]*=n,t[10]*=r,t[3]*=i,t[7]*=n,t[11]*=r,this},getMaxScaleOnAxis:function(){var e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],n=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,Math.max(i,n)))},makeTranslation:function(e,t,i){return this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this},makeRotationX:function(e){var t=Math.cos(e),i=Math.sin(e);return this.set(1,0,0,0,0,t,-i,0,0,i,t,0,0,0,0,1),this},makeRotationY:function(e){var t=Math.cos(e),i=Math.sin(e);return this.set(t,0,i,0,0,1,0,0,-i,0,t,0,0,0,0,1),this},makeRotationZ:function(e){var t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,0,i,t,0,0,0,0,1,0,0,0,0,1),this},makeRotationAxis:function(e,t){var i=Math.cos(t),n=Math.sin(t),r=1-i,o=e.x,s=e.y,a=e.z,l=r*o,c=r*s;return this.set(l*o+i,l*s-n*a,l*a+n*s,0,l*s+n*a,c*s+i,c*a-n*o,0,l*a-n*s,c*a+n*o,r*a*a+i,0,0,0,0,1),this},makeScale:function(e,t,i){return this.set(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1),this},lookAt:function(){var e=new n.LmvVector3,t=new n.LmvVector3,i=new n.LmvVector3;return function(n,r,o){var s=this.elements;return i.subVectors(n,r).normalize(),0===i.length()&&(i.z=1),e.crossVectors(o,i).normalize(),0===e.length()&&(i.x+=1e-4,e.crossVectors(o,i).normalize()),t.crossVectors(i,e),s[0]=e.x,s[4]=t.x,s[8]=i.x,s[1]=e.y,s[5]=t.y,s[9]=i.y,s[2]=e.z,s[6]=t.z,s[10]=i.z,this}}(),compose:function(e,t,i){return this.makeRotationFromQuaternion(t),this.scale(i),this.setPosition(e),this},decompose:function(){var e=new n.LmvVector3,t=new r(!0);return function(i,n,r){var o=this.elements,s=e.set(o[0],o[1],o[2]).length(),a=e.set(o[4],o[5],o[6]).length(),l=e.set(o[8],o[9],o[10]).length();this.determinant()<0&&(s=-s),i.x=o[12],i.y=o[13],i.z=o[14],t.elements.set(this.elements);var c=1/s,h=1/a,u=1/l;return t.elements[0]*=c,t.elements[1]*=c,t.elements[2]*=c,t.elements[4]*=h,t.elements[5]*=h,t.elements[6]*=h,t.elements[8]*=u,t.elements[9]*=u,t.elements[10]*=u,n.setFromRotationMatrix(t),r.x=s,r.y=a,r.z=l,this}}(),transformPoint:function(e){var t=e.x,i=e.y,n=e.z,r=this.elements;return e.x=r[0]*t+r[4]*i+r[8]*n+r[12],e.y=r[1]*t+r[5]*i+r[9]*n+r[13],e.z=r[2]*t+r[6]*i+r[10]*n+r[14],e},transformDirection:function(e){var t=e.x,i=e.y,n=e.z,r=this.elements;e.x=r[0]*t+r[4]*i+r[8]*n,e.y=r[1]*t+r[5]*i+r[9]*n,e.z=r[2]*t+r[6]*i+r[10]*n;var o=Math.sqrt(e.x*e.x+e.y*e.y+e.z*e.z);if(o>0){var s=1/o;e.x*=s,e.y*=s,e.z*=s}return e},equals(e){const t=this.elements,i=e.elements;for(var n=0;n<16;n++)if(t[n]!==i[n])return!1;return!0},fromArray:function(e){return this.elements.set(e),this},toArray:function(){var e=this.elements;return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]},clone:function(){return new r(this.isDoublePrecision).fromArray(this.elements)}}},96118:(e,t,i)=>{"use strict";i.r(t),i.d(t,{LmvVector3:()=>n});let n=function(e,t,i){this.x=e||0,this.y=t||0,this.z=i||0};var r,o,s,a;n.prototype={constructor:n,set:function(e,t,i){return this.x=e,this.y=t,this.z=i,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this},add:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this},addScaledVector:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this},sub:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this},multiply:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this},multiplyVectors:function(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this},applyMatrix3:function(e){var t=this.x,i=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[3]*i+r[6]*n,this.y=r[1]*t+r[4]*i+r[7]*n,this.z=r[2]*t+r[5]*i+r[8]*n,this},applyMatrix4:function(e){var t=this.x,i=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[4]*i+r[8]*n+r[12],this.y=r[1]*t+r[5]*i+r[9]*n+r[13],this.z=r[2]*t+r[6]*i+r[10]*n+r[14],this},applyProjection:function(e){var t=this.x,i=this.y,n=this.z,r=e.elements,o=1/(r[3]*t+r[7]*i+r[11]*n+r[15]);return this.x=(r[0]*t+r[4]*i+r[8]*n+r[12])*o,this.y=(r[1]*t+r[5]*i+r[9]*n+r[13])*o,this.z=(r[2]*t+r[6]*i+r[10]*n+r[14])*o,this},applyQuaternion:function(e){var t=this.x,i=this.y,n=this.z,r=e.x,o=e.y,s=e.z,a=e.w,l=a*t+o*n-s*i,c=a*i+s*t-r*n,h=a*n+r*i-o*t,u=-r*t-o*i-s*n;return this.x=l*a+u*-r+c*-s-h*-o,this.y=c*a+u*-o+h*-r-l*-s,this.z=h*a+u*-s+l*-o-c*-r,this},transformDirection:function(e){var t=this.x,i=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[4]*i+r[8]*n,this.y=r[1]*t+r[5]*i+r[9]*n,this.z=r[2]*t+r[6]*i+r[10]*n,this.normalize(),this},divide:function(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this},divideScalar:function(e){if(0!==e){var t=1/e;this.x*=t,this.y*=t,this.z*=t}else this.x=0,this.y=0,this.z=0;return this},min:function(e){return this.x>e.x&&(this.x=e.x),this.y>e.y&&(this.y=e.y),this.z>e.z&&(this.z=e.z),this},max:function(e){return this.xt.x&&(this.x=t.x),this.yt.y&&(this.y=t.y),this.zt.z&&(this.z=t.z),this},clampScalar:function(e,t){return void 0===s&&(s=new n,a=new n),s.set(e,e,e),a.set(t,t,t),this.clamp(s,a)},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(e){var t=this.length();return 0!==t&&e!==t&&this.multiplyScalar(e/t),this},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this},lerpVectors:function(e,t,i){return this.subVectors(t,e).multiplyScalar(i).add(e),this},cross:function(e,t){if(void 0!==t)return console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t);var i=this.x,n=this.y,r=this.z;return this.x=n*e.z-r*e.y,this.y=r*e.x-i*e.z,this.z=i*e.y-n*e.x,this},crossVectors:function(e,t){var i=e.x,n=e.y,r=e.z,o=t.x,s=t.y,a=t.z;return this.x=n*a-r*s,this.y=r*o-i*a,this.z=i*s-n*o,this},projectOnVector:function(e){return void 0===r&&(r=new n),r.copy(e).normalize(),o=this.dot(r),this.copy(r).multiplyScalar(o)},projectOnPlane:function(){var e;return function(t){return void 0===e&&(e=new n),e.copy(this).projectOnVector(t),this.sub(e)}}(),reflect:function(){var e;return function(t){return void 0===e&&(e=new n),this.sub(e.copy(t).multiplyScalar(2*this.dot(t)))}}(),distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,i=this.y-e.y,n=this.z-e.z;return t*t+i*i+n*n},setEulerFromRotationMatrix:function(e,t){console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(e,t){console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(e){return console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),this.setFromMatrixPosition(e)},getScaleFromMatrix:function(e){return console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),this.setFromMatrixScale(e)},getColumnFromMatrix:function(e,t){return console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),this.setFromMatrixColumn(e,t)},setFromMatrixPosition:function(e){return this.x=e.elements[12],this.y=e.elements[13],this.z=e.elements[14],this},setFromMatrixScale:function(e){var t=this.set(e.elements[0],e.elements[1],e.elements[2]).length(),i=this.set(e.elements[4],e.elements[5],e.elements[6]).length(),n=this.set(e.elements[8],e.elements[9],e.elements[10]).length();return this.x=t,this.y=i,this.z=n,this},setFromMatrixColumn:function(e,t){var i=4*e,n=t.elements;return this.x=n[i],this.y=n[i+1],this.z=n[i+2],this},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e},fromAttribute:function(e,t,i){return void 0===i&&(i=0),t=t*e.itemSize+i,this.x=e.array[t],this.y=e.array[t+1],this.z=e.array[t+2],this}}},65782:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MemoryTracker:()=>s});var n=i(57872),r=i(55280),o=i(25004);class s{static geomMemory=0;static geomCount=0;static gpuGeomMemory=0;static gpuGeomCount=0;static geomListStats=new WeakMap;static#L(e){let t=this.geomListStats.get(e);return t||(t={geomMemory:0,geomCount:0,gpuGeomMemory:0,gpuGeomCount:0},this.geomListStats.set(e,t)),t}static printStats(){console.log("MemoryTracker Global Stats:"),console.log("--------------------------"),this.#I(this),this.#R||console.log("Available GPU resources are tracked per model.")}static printModelStats(e){console.log("MemoryTracker Model Stats:"),console.log("--------------------------");const t=e.getGeometryList(),i=this.geomListStats.get(t);i?(this.#I(i),this.#R||(console.log("gpuGeomMemory remaining (low/high):",n.GPU_MEMORY_LIMIT-i.gpuGeomMemory,2*n.GPU_MEMORY_LIMIT-i.gpuGeomMemory),console.log("gpuGeomCount remaining:",n.GPU_OBJECT_LIMIT-i.gpuGeomCount))):console.log("No stats tracked for this model yet.")}static#I(e){console.log("geomMemory:",e.geomMemory),console.log("geomCount:",e.geomCount),console.log("gpuGeomMemory:",e.gpuGeomMemory),console.log("gpuGeomCount:",e.gpuGeomCount),this.#R&&(console.log("gpuGeomMemory remaining (low/high):",n.GPU_MEMORY_LIMIT-this.gpuGeomMemory,2*n.GPU_MEMORY_LIMIT-this.gpuGeomMemory),console.log("gpuGeomCount remaining:",n.GPU_OBJECT_LIMIT-this.gpuGeomCount))}static#R=!1;static setMemoryType(e,t,i){const n=void 0!==t.streamingDraw,r=this.#O(e,t,i);n&&!!t.streamingDraw===r?t.modelRefCount>1&&n&&!r&&this.#N(e,t,!0):(t.streamingDraw=t.streamingIndex=r,r?n&&this.untrackGeometry(e,t,!1,!0,!0):this.#N(e,t))}static#O(e,t,i){if(0===this.GPU_MEMORY_LOW)return!0;let r,o;if(this.#R)r=this.gpuGeomMemory,o=this.gpuGeomCount;else{const t=this.#L(e);r=t.gpuGeomMemory,o=t.gpuGeomCount}return!(e.disableStreaming||r=this.GPU_MEMORY_HIGH||o>=n.GPU_OBJECT_LIMIT||(e.is2d?100001:t.byteSize*(i||1))<1e5)}static#F(e){if(!n.USE_BUFFER_MANAGER)return 1;let t=0,i=0;e.ib&&(i+=e.ib.byteLength),e.iblines&&(i+=e.iblines.byteLength);let r=e.byteSize-i;return t+=i/n.INDEX_BUFFER_REGION_SIZE,t+=r/n.VERTEX_BUFFER_REGION_SIZE,0===t&&(t=1),t}static#N(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=this.#L(e);(0,r.isMobileDevice)()&&(i||(this.geomMemory+=t.byteSize),n.geomMemory+=t.byteSize);let o=this.#F(t);i||(this.gpuGeomMemory+=t.byteSize,this.gpuGeomCount+=o),n.gpuGeomMemory+=t.byteSize,n.gpuGeomCount+=o}static trackGeometry(e,t){const i=t.byteSize+n.GEOMETRY_OVERHEAD;void 0!==t.modelRefCount&&1!==t.modelRefCount||(this.geomMemory+=i,this.geomCount++);const r=this.#L(e);r.geomMemory+=i,r.geomCount++}static untrackGeometry(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],o=arguments.length>3?arguments[3]:void 0,s=arguments.length>4&&void 0!==arguments[4]&&arguments[4],a=0;const l=this.geomListStats.get(e);if(void 0===o&&(o=!1===t.streamingDraw),i&&(a=t.byteSize+n.GEOMETRY_OVERHEAD,l.geomMemory-=a,l.geomCount--,!t.modelRefCount||s?(this.geomMemory-=a,this.geomCount--,t.streamingDraw=void 0,t.streamingIndex=void 0):a=0),o){let e=this.#F(t);l.gpuGeomMemory-=t.byteSize,l.gpuGeomCount-=e,(0,r.isMobileDevice)()&&(t.modelRefCount&&!s||(a+=t.byteSize,this.geomMemory-=t.byteSize),l.geomMemory-=t.byteSize),t.modelRefCount&&!s||(this.gpuGeomMemory-=t.byteSize,this.gpuGeomCount-=e)}return a}static getGeometrySize(e){return e.byteSize+n.GEOMETRY_OVERHEAD}static get GPU_MEMORY_LOW(){return n.GPU_MEMORY_LIMIT}static get GPU_MEMORY_HIGH(){return 2*n.GPU_MEMORY_LIMIT}}o.EventDispatcher.prototype.apply(s)},68747:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MeshFlags:()=>n});let n={MESH_VISIBLE:1,MESH_HIGHLIGHTED:2,MESH_HIDE:4,MESH_ISLINE:8,MESH_MOVED:16,MESH_RENDERFLAG:32,MESH_NOTLOADED:64,MESH_ISPOINT:128,MESH_ISWIDELINE:256,MESH_TRAVERSED:512,MESH_DRAWN:1024}},1979:(e,t,i)=>{"use strict";i.d(t,{L:()=>l});var n=i(72091),r=new n.Vector3,o=new Float32Array(6);const s="hierarchy";var a=s;class l{constructor(){}static setStrategy(e){if(a!==e)return a=e,!0}static getStrategy(){return a}static explode(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var l=e.getData().instanceTree,c=e.getFragmentList(),h=e.getVisibleBounds(!0).getCenter(new n.Vector3);if(a===s&&l&&0!==t){const{magnitude:e,depthDampening:n}=i;!function(e,t,i,n){let s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:4,a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;var l=i*e.maxDepth+1;1===e.maxDepth&&(l=i);var c=0|l,h=l-c;function u(n,l,d,f,p,m,g,v){var y=i*s/Math.pow(l,a);l==c&&(y*=h),e.getNodeBox(n,o);var b=.5*(o[0]+o[3]),x=.5*(o[1]+o[4]),_=.5*(o[2]+o[5]);l>0&&l<=c&&(m+=(b-d)*y,g+=(x-f)*y,v+=(_-p)*y);e.isNodeExplodeLocked(n)&&(m=g=v=0),e.enumNodeChildren(n,(function(e){u(e,l+1,b,x,_,m,g,v)}),!1),r.x=m,r.y=g,r.z=v,e.enumNodeFragments(n,(function(e){t.updateAnimTransform(e,null,null,r)}),!1)}u(e.getRootId(),0,n.x,n.y,n.z,0,0,0)}(l,c,t,h,e,n)}else!function(e,t,i,n){var o,s,a=e.fragments.boxes;e.useThreeMesh?o=e.vizmeshes:s=e.fragments.fragId2dbId;for(var l=0,c=e.getCount();l{"use strict";i.r(t),i.d(t,{ModelIteratorBVH:()=>h});var n=i(57872),r=i(4897),o=i(72091),s=i(75468);const a=new o.Box3,l=new o.Box3,c=new o.Sphere;class h{#U;#B;#k;#V;#G;#z;#H;#W;#j;#q;#X;#Y;#K;#Q;#Z;#$;#J;#ee;#te;#ie;constructor(){this.#U=null,this.#B=null,this.#k=null,this.#V=null,this.#G=null,this.#z=null,this.#H=null,this.#W=0,this.#j=0,this.#q=1,this.#X=!0,this.#Y=!1,this.#K=!1,this.#Q=!1,this.#Z=null,this.#$=!1,this.#J=null,this.#ee=!0,this.#te=null,this.#ie=null}initialize(e,t,i,n){this.#te=e,this.#ie=n,this.#U=e.getFragmentList(),this.#J=e.RenderBatch,n&&n.hasOwnProperty("prioritize_screen_size")&&(this.#X=n.prioritize_screen_size),this.#k=i,this.#V=new Array(t.nodeCount),this.#G=new Int8Array(t.nodeCount),this.#B=t,this.#z=new Int32Array(t.nodeCount+1),this.#H=new Float32Array(t.nodeCount);for(let e=0;ethis.#W&&this.#H[this.#z[i-1]]>t;)this.#z[i]=this.#z[i-1],i--;else for(;i>this.#W&&this.#H[this.#z[i-1]]>2&1,f=h>>3&1;const p=this.#q||this.#Y?1:0;let m=0,g=0;if(this.#X&&!this.#Y){if(o=i+d,l=i+1-d,n.USE_HLOD){let e;this.#V[o].getLargestFragBoxThree(a),this.getBVH().options.sortFuncType===Autodesk.Viewing.Private.BVHSortFuncType.DIAMETER?(a.getBoundingSphere(c),e=c.center.distanceTo(this.#Z.eye),this.#H[o]=m=c.radius/e,a.getBoundingSphere(c),e=c.center.distanceTo(this.#Z.eye),this.#H[l]=g=c.radius/e):(e=a.getCenter().distanceTo(this.#Z.eye),this.#H[o]=m=s.BVHModule.box_area_three(a)/(e*e),this.#V[l].getLargestFragBoxThree(a),e=a.getCenter().distanceTo(this.#Z.eye),this.#H[l]=g=s.BVHModule.box_area_three(a)/(e*e))}else this.#B.getBoxThree(o,a),this.#H[o]=m=this.#Z.projectedBoxArea(a,t===r.FrustumIntersector.CONTAINS),this.#B.getBoxThree(l,a),this.#H[l]=g=this.#Z.projectedBoxArea(a,t===r.FrustumIntersector.CONTAINS);this.#G[o]=this.#G[l]=t,m>0&&this.#ne(o),g>0&&this.#ne(l)}else u^p^f&&(d=1-d),o=i+d,l=i+1-d,this.#z[this.#j++]=o,this.#H[o]=-1,this.#z[this.#j++]=l,this.#H[l]=-1,this.#G[o]=this.#G[l]=t}if(0!==this.#B.getPrimCount(e)){const i=this.#V[e];return i.renderImportance=this.#Z.projectedBoxArea(i.getBoundingBox(),t===r.FrustumIntersector.CONTAINS),i}}this.#Y||this.#K||this.#W!==this.#j||(this.#Q||(this.#z[this.#j++]=1),this.#Y=!0)}return this.#$=!0,null}skipOpaqueShapes(){this.#Y||this.#K||(this.#W=0,this.#j=0,this.#z[this.#j++]=1,this.#K=!0)}setIgnoreTransparency(e){this.#Q=e}#re(e){const t=this.#B.getLeftChild(e);-1!==t&&(this.#re(t),this.#re(t+1)),a.makeEmpty(),-1!==t&&(this.#B.getBoxThree(t,l),a.union(l),this.#B.getBoxThree(t+1,l),a.union(l));this.#B.getPrimCount(e)&&(a.union(this.#V[e].getBoundingBox()),a.union(this.#V[e].getBoundingBoxHidden())),this.#B.setBoxThree(e,a)}getVisibleBounds(e,t){for(let i=0;i3&&void 0!==arguments[3]?arguments[3]:{};const r=e.ray.origin;let s=[1,0],a=new o.Vector3,l=new o.Box3;for(;s.length>0;){const o=s.pop();if(this.#B.getBoxThree(o,l),l.expandByScalar(.5),null!=n.maxDistance){if(l.distanceToPoint(r)>n.maxDistance)continue}if(null===e.ray.intersectBox(l,a))continue;const c=this.#B.getLeftChild(o);-1!==c&&(s.push(c),s.push(c+1));if(0!==this.#B.getPrimCount(o)){this.#V[o].raycast(e,t,i,n)}}}intersectFrustum(e,t){let i=[1,r.FrustumIntersector.CONTAINMENT_UNKNOWN,0,r.FrustumIntersector.CONTAINMENT_UNKNOWN];for(;i.length;){const n=i.pop(),o=i.pop();let s;if(n===r.FrustumIntersector.CONTAINS?s=r.FrustumIntersector.CONTAINS:(this.#B.getBoxThree(o,a),s=e.intersectsBox(a)),s===r.FrustumIntersector.OUTSIDE)continue;const l=this.#B.getLeftChild(o);-1!==l&&(i.push(l),i.push(s),i.push(l+1),i.push(s));if(0!==this.#B.getPrimCount(o)){let i=this.#V[o];i&&i.intersectFrustum(e,t,s===r.FrustumIntersector.CONTAINS)}}}getSceneCount(){return this.#V.length}getGeomScenes(){return this.#V}getBVH(){return{nodes:this.#B,primitives:this.#k,options:this.#ie}}getFragOrder(){return this.#k}done(){return this.#$}resetVisStatus(){this.#ee=!0}clone(){const e=new h,t=new Int32Array(this.#k);return e.initialize(this.#te,this.#B,t,this.#ie),e}}},42525:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ModelIteratorLinear:()=>o});i(8879);var n=i(55280),r=i(4897);class o{constructor(e){this._frags=e.getFragmentList(),this._RenderBatch=e.RenderBatch,this._model=e,this._is2d=this._model.is2d(),this._fragsPerScene=function(e){let t=500;return e&&(t/=6),(0,n.isMobileDevice)()&&(t/=3),t=Math.floor(t),t>0?t:500}(e.is2d()),this._fragOrder=null,this._geomScenes=[],this._secondPassIndex=null;const t=this._frags.getCount();this._currentScene=0,this._fragOrder=new Int32Array(t);for(let e=0;ee&&(r=e),n.lastItem=r,n.count=n.lastItem-t}}addFragment(e){if(this._fragOrder.length<=e){var t=2*this._fragOrder.length;t<=e&&(t=e+1);var i=new Int32Array(t);i.set(this._fragOrder),this._fragOrder=i,this.visibleBoundsDirty=!0}this._fragOrder[e]=e;var n=Math.floor(e/this._fragsPerScene);if(this._geomScenes){var r=this._geomScenes[n];r&&!r.isSecondPass||(r=new this._RenderBatch(this,this._frags,n*this._fragsPerScene,this._fragsPerScene),null===this._secondPassIndex?this._geomScenes[n]=r:this.insertSceneToSecondPass(n,r)),r&&(r.onFragmentAdded(e),null!==this._secondPassIndex&&this._geomScenes[this._secondPassIndex+n].onFragmentAdded(e))}}insertSceneToSecondPass(e,t){const i=this._geomScenes.slice(0,this._secondPassIndex),n=this._geomScenes.slice(this._secondPassIndex);i[e]=t,n[e]=this.cloneForSecondPass(t),this._secondPassIndex=i.length,this._geomScenes=i.concat(n)}reset(e,t){if(this._currentScene=0,this._is2d&&this._geomScenes[0]&&(this._geomScenes[0].drawEnd=0,null!==this._secondPassIndex&&(this._geomScenes[this._secondPassIndex].drawEnd=0)),this._resetVisStatus){let e=this._geomScenes,t=e.length;for(let n=0;n=this._geomScenes.length-1&&(!(e=this._geomScenes[this._currentScene])||e.drawStart>=e.lastItem));var e}nextBatch(){if(this._currentScene>=this.getSceneCount())return null;let e=this._geomScenes[this._currentScene];if(this._is2d){const t=this.areTwoPassesNeeded();if(e.lastItem>=e.start+e.count&&(++this._currentScene,this._geomScenes[this._currentScene]&&(this._geomScenes[this._currentScene].drawEnd=this._geomScenes[this._currentScene].start)),e.drawStart=e.drawEnd,e.drawEnd=e.lastItem,e.hasOwnProperty("drawStart")&&e.lastItem<=e.drawStart){return t&&!this._isSecondPass?(this._currentScene=this._secondPassIndex,this.nextBatch()):null}const i=!this._model.areAllVisible()||this._isSecondPass;e.renderImportance=i?-1:1e20,e.needsTwoPasses=t}else e.renderImportance=0,++this._currentScene;return e}areTwoPassesNeeded(){const e=this._model.hasPaperTransparency();return e&&null===this._secondPassIndex&&this.addSecondPassScenes(),this._isSecondPass=!!(e&&this._currentScene>=this._secondPassIndex),e}cloneForSecondPass(e){if(!e)return;const t=e.clone();return t.isSecondPass=!0,t}addSecondPassScenes(){const e=this._geomScenes.length;e&&(this._geomScenes=this._geomScenes.concat(this._geomScenes.map(this.cloneForSecondPass)),this._secondPassIndex=e)}getVisibleBounds(e,t){for(var i=this.getSceneCount(),n=0;n{"use strict";i.r(t),i.d(t,{NoOpTraversalController:()=>r});class n{constructor(){}dtor(){}clone(){}nextBatch(){}reset(e,t){}getGeomScenes(){}getSceneCount(){}getVisibleBounds(e,t,i){}rayCast(e,t,i){}}class r extends n{nextBatch(){return null}getGeomScenes(){return new Array}getSceneCount(){return 0}clone(){return new r}}},8879:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ConsolidatedRenderBatch:()=>f,RenderBatch:()=>d});var n=i(36411),r=i(4897),o=i(68747),s=i(24528),a=i(83081),l=i(21706),c=i(57872),h=new l.LmvBox3,u=null;class d{creatorIterator;frags;start;count;lastItem;overrideMaterial=null;sortDone=!1;numAdded=0;avgFrameTime=void 0;nodeIndex=void 0;bboxes=new Array(12);sortObjects=!1;sortByShaderDone=!1;fragOrderChangedCallbacks=[];frustumCulled=!0;forceVisible=!1;renderImmediate;renderImportance=0;isComplete=!1;useRenderBundles=!1;_renderBundles=[];#oe;constructor(e,t,i,n,r){this.creatorIterator=e,this.frags=t,this.start=i,this.count=n,this.lastItem=i,this.indices=r,this.#oe=this.getIndices()[this.start],this.bboxes[0]=this.bboxes[1]=this.bboxes[2]=1/0,this.bboxes[3]=this.bboxes[4]=this.bboxes[5]=-1/0,this.bboxes[6]=this.bboxes[7]=this.bboxes[8]=1/0,this.bboxes[9]=this.bboxes[10]=this.bboxes[11]=-1/0,this.renderImmediate=!t.useThreeMesh}clone(){const e=new d(this.creatorIterator,this.frags,this.start,this.count,this.indices);return e.sortDone=this.sortDone,e.sortByShaderDone=this.sortByShaderDone,e.lastItem=this.lastItem,e.visibleStats=this.visibleStats,e.numAdded=this.numAdded,e.bboxes=this.bboxes.slice(),e}getIndices(){return this.indices??this.creatorIterator.getFragOrder()}registerFragOrderChangedCallback=function(e){this.fragOrderChangedCallbacks.push(e)};removeFragOrderChangedCallback=function(e){const t=this.fragOrderChangedCallbacks.indexOf(e);-1!==t&&this.fragOrderChangedCallbacks.splice(t,1)};sortByMaterial(){if(!(this.numAddedd)return 1;let f=c?null===(o=c.__gpuib)||void 0===o?void 0:o.id:Number.MAX_SAFE_INTEGER,p=h?null===(s=h.__gpuib)||void 0===s?void 0:s.id:Number.MAX_SAFE_INTEGER;return fp?1:((null===(a=i.getMaterial(e))||void 0===a?void 0:a.id)??Number.MAX_SAFE_INTEGER)-((null===(l=i.getMaterial(t))||void 0===l?void 0:l.id)??Number.MAX_SAFE_INTEGER)})),this.numAdded=0,this.sortByVBDone=!0,this.sortDone=!0;for(const e of this.fragOrderChangedCallbacks)e(this.start,this.lastItem-this.start)}sortByDepth(e){var t=this.frags,i=this.getIndices(),n=e,r=h;if(i){(!u||u.length{t.hasGeometry(e)?(t.getWorldBounds(e,r),l[i]=n.estimateDepth(r)):l[i]=-1/0}));for(var d=1;d0&&l[f-1]{if(!this.frags.isFlagSet(a,o.MeshFlags.MESH_HIDE)){if(i&&i.length){var l=0|this.frags.getDbIds(a);if(-1===i.indexOf(l))return}this.frags.getWorldBounds(a,h),h.expandByScalar(.5),e.ray.intersectsBox(h)&&n.VBIntersector.rayCast(s,e,t,r)}}),o.MeshFlags.MESH_VISIBLE)}intersectFrustum(e,t,i){if(!i){let t=e.intersectsBox(this.getBoundingBox());if(t===r.FrustumIntersector.OUTSIDE)return;t===r.FrustumIntersector.CONTAINS&&(i=!0)}this.forEach(((n,s)=>{if(this.frags.isFlagSet(s,o.MeshFlags.MESH_HIDE))return;if(i)return void t(s,i);this.frags.getWorldBounds(s,h);let a=e.intersectsBox(h);a!==r.FrustumIntersector.OUTSIDE&&t(s,a===r.FrustumIntersector.CONTAINS)}),o.MeshFlags.MESH_VISIBLE)}calculateBounds(){this.bboxes[0]=this.bboxes[1]=this.bboxes[2]=1/0,this.bboxes[3]=this.bboxes[4]=this.bboxes[5]=-1/0,this.bboxes[6]=this.bboxes[7]=this.bboxes[8]=1/0,this.bboxes[9]=this.bboxes[10]=this.bboxes[11]=-1/0,this.forEachNoMesh((e=>{this.frags.getWorldBounds(e,h);var t=this.frags.vizflags[e];this.addToBox(h,!(1&t))}),0,!0)}applyVisibility(e,t){let i,n,l,u,d,f,p,m;function g(e){var t=!1;return i.getWorldBounds(e,h),d&&!l.intersectsBox(h)&&(t=!0),c.ENABLE_PIXEL_CULLING&&!t&&l.estimateProjectedDiameter(h){var t=6*this.#oe,i=this.frags.boxes;e.min.x=i[t],e.min.y=i[t+1],e.min.z=i[t+2],e.max.x=i[t+3],e.max.y=i[t+4],e.max.z=i[t+5]}}class f extends d{constructor(e,t,i){var n;const r=new Int32Array(null===(n=i.nodeId2SingleFragIds)||void 0===n?void 0:n[t.nodeIndex]);super(e,t.frags,0,r.length,r),this.lastItem=this.count,this.bboxes=t.bboxes,this.consolidatedScene=new THREE.Scene,this.sortDone=!1}render(e){e(this.consolidatedScene),e(this)}}},24528:(e,t,i)=>{"use strict";i.r(t),i.d(t,{RenderFlags:()=>n});var n={RENDER_NORMAL:0,RENDER_HIGHLIGHTED:1,RENDER_HIDDEN:2,RENDER_SHADOWMAP:3,RENDER_FINISHED:4}},9478:(e,t,i)=>{"use strict";i.r(t),i.d(t,{RenderModel:()=>M});var n=i(57872),r=i(86639),o=i(54561),s=i(8879),a=i(90824),l=i(28441),c=i(34845),h=i(72474),u=i(36411),d=i(72091),f=i(68747),p=i(24528),m=i(83081),g=i(37365),v=i(6684),y=i(22040),b=i(65782),x=i(7756),_=i(2404),E=i.n(_);const S=Autodesk.Viewing,A="Job canceled. While ";var w=(()=>{const e=new d.Vector4;return(t,i)=>{e.copy(t);for(let t=0;t1e-6)return!0;return!1}})(),T=1;class M{#se=new d.Box3;#ae=new d.Box3;#le=new d.Box3;visibleBoundsDirty=!1;#ce=0;id=T++;#he=null;#U=null;#ue=new c.SceneTraversal;#de=null;#fe=[];#pe=null;#me=0;#Z=null;#ge=p.RenderFlags.RENDER_NORMAL;#ve=null;#ye=null;#be=null;#xe;#_e;#Ee;RenderBatch=s.RenderBatch;#Se=!1;#Ae;#we;visibilityManager=null;#Te=new d.Plane;#Me=new d.Vector3;#Ce;#Pe;#De;#Le;#Ie={};#Re=null;#Oe=null;_currentConsolidationOptions={};static _consolidationCounter=0;static _consolidationWorker=null;static _consolidationJobs=new Map;static _workerRefCount=0;static addJob(e){M._consolidationWorker||(M._consolidationWorker=(0,x.createWorker)("ConsolidationWorker"));let t=!1;return e.stopIfCanceled=function(){if(t)throw A+(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"")},e.cancel=()=>{t=!0},e.signalProgress=t=>{e.model.loader.viewer3DImpl&&e.model.loader.viewer3DImpl.signalProgress(t,l.ProgressState.OPTIMIZING,e.model)},e.worker=M._consolidationWorker,e.id=M._consolidationCounter++,e.signalProgress(.1),this._consolidationJobs.set(e.id,e),e}static removeJob(e){var t;null===(t=e.model.loader)||void 0===t||t.viewer3DImpl.signalProgress(100,l.ProgressState.OPTIMIZING,this),M._consolidationJobs.delete(e.id)}static _registerConsolidationWorker(){M._workerRefCount++}static async _unregisterConsolidationWorker(){if(this._workerRefCount--,0===M._workerRefCount&&M._consolidationWorker){const e=[];this._consolidationJobs.forEach((t=>{t.cancel(),e.push(t.promise)})),Promise.all(e).then((()=>{0===this._consolidationJobs.size&&(m.logger.info("Shutting down consolidation worker"),M._consolidationWorker.terminate(),M._consolidationWorker=null)}))}}constructor(e){this.#Le=e,this.#Ce=e.modelSpaceBBox,this.#Pe=e.bbox,this.#De=e.placementWithOffset,M._registerConsolidationWorker()}dtor(){this.#o()}setModelFormat(e){this.#Ie=e}initialize(){var e,t;const i=this.#Le.numGeoms,s=!function(e,t,i){return!(e&&e-3*t*2<=n.GPU_MEMORY_LIMIT&&ie.far)return;let a,h;if(n){const e=n(s);if(a=e[0],t&&t.length>0&&!t.includes(a))return;const i=e[1];if(0!==i&&i!==this.id)return;var c;h=null===(c=this.#U)||void 0===c?void 0:c.fragments.dbId2fragId[a]}const u={intersectPoint:s,point:s,distance:o,dbId:a&&this.remapDbIdFor2D(a),fragId:h,model:this};return i&&i.push(u),u}}return null}rayIntersect(e,t,i,n,r,o){if(this.ignoreRayIntersect)return null;if(this.#Ie.is2d)return this.rayIntersect2D(e,i,n,r);this.visibleBoundsDirty&&this.getVisibleBounds();var s,a=[];if(i&&i.length>0){var l=this.getInstanceTree(),c=[];if(l)for(s=0;s2){(this.#de||this.getIterator()).rayCast(e,a,i)}else for(s=0;s0)break}}var y=n[0]||null;return y&&(y.model=this),y}setHighlighted(e,t){if(!this.#U)return!1;var i=this.#U.setFlagFragment(e,f.MeshFlags.MESH_HIGHLIGHTED,t);return i&&(t?this.#ce++:this.#ce--),i}setVisibility(e,t){this.#U?this.#U.setVisibility(e,t):this.isLeaflet()&&this.#ue.setVisibilityLeaflet(t),this.invalidateBBoxes()}setAllVisibility(e){this.#U?this.#U.setAllVisibility(e):this.isLeaflet()&&this.#ue.setVisibilityLeaflet(e),this.invalidateBBoxes()}hideLines(e){this.#U&&this.#U.hideLines(e)}hidePoints(e){this.#U&&this.#U.hidePoints(e)}hasHighlighted(){return!!this.#ce}isFragVisible(e){return this.#U.isFragVisible(e)}areAllVisible(){return!this.#U||this.#U.areAllVisible()}getGeomScenes(){return this.#ue.getScenes()}getRenderProgress(){const e=this.#me/this.#ue.getSceneCount();return e>1?1:e}update(e){return this.#ue.needsRedrawLeaflet(e)}setThemingColor(e,t,i){if(this.#U){e=this.reverseMapDbIdFor2D(e);const n=this.getInstanceTree();return i&&n?void n.enumNodeChildren(e,(e=>{this.#U.setThemingColor(e,t)}),!0):void this.#U.setThemingColor(e,t)}this.#ue.setThemingColorLeaflet(t)||m.logger.warn("Theming colors are not supported by this model type.")}clearThemingColors(){this.#U?this.#U.clearThemingColors():this.#ue.clearThemingColorsLeaflet()}getLeaflet(){return this.#ue.getLeafletIterator()}chooseMemoryTypes(){const e=this.#ue.getConsolidation();var t=this.getGeometryList(),i=[];let n;for(o=1;o3&&void 0!==arguments[3]&&arguments[3];t=t||n.CONSOLIDATION_MEMORY_LIMIT,this.isConsolidating()&&this._cancelConsolidationJob();const o=this.getData().loadOptions.bvhOptions.consolidation,s={byteLimit:t,forceConsolidationMapRecomputation:this.#Ne(t,o),bvhOptions:o,syncTimeSlice:n.USE_HLOD?20:1/0,consolidationMap:this.#pe,useDeferredConsolidation:r,model:this};return m.logger.info("Starting consolidation",s.id),this.#Re=M.addJob(s),this.#Oe=this.#Re.promise=(0,a.consolidateFragmentList)(this,e,s).then((e=>{if(s.canceled)return void m.logger.debug("Skipping results of canceled consolidation",s.id);this.#ue.enableConsolidation(this.#U,e),this.chooseMemoryTypes(),this.#pe=e.consolidationMap;const i=s.consolidationBVH;i&&this.setBVH(i.nodes,i.primitives,i.bvhOptions),this._currentConsolidationOptions.byteLimit=t,this._currentConsolidationOptions.bvhOptions=o,m.logger.info("Consolidation finished",s.id)})).finally((()=>{this.#Oe=null,this.#Re=null,M.removeJob(s)})).catch((e=>{var t;null!=e&&null!==(t=e.startsWith)&&void 0!==t&&t.call(e,A)?m.logger.info("Consolidation canceled."):m.logger.error("Consolidation failed.",e)})),this.#Oe}untrackConsolidatedGeometry(){const e=this.#ue.getConsolidation();for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];return console.warn("RenderModel.consolidate is deprecated. Use consolidateAsync instead."),this.consolidateAsync(e,t,i,n)}unconsolidate(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.isConsolidating()&&this._cancelConsolidationJob(),this.isConsolidated()&&(this.untrackConsolidatedGeometry(),this.#ue.disableConsolidation(),t&&(this._currentConsolidationOptions={},this.#pe=null),e&&this.chooseMemoryTypes())}isConsolidated(){return this.#ue.isEnabledConsolidation()}isConsolidating(){return null!=this.#Oe}getConsolidationPromise(){return this.#Oe||Promise.resolve()}getConsolidation(){return this.#ue.getConsolidation()}setDbIdRemap(e){this.#Ae=e}remapDbId(e){return this.#Ae&&e>0&&e0&&t<1}setModelTransform(e){this.#ue.setModelTransformLeaflet(e),this.isLeaflet()||(this.#U.setModelMatrix(e),this.#ue.updateModelTransformConsolidation()),this.invalidateBBoxes(),this.getVisibleBounds(!0),this.#ye=null,this.#be=null}getModelTransform(){var e;const t=this.#ue.getModelTransformLeaflet();return t||(null===(e=this.#U)||void 0===e?void 0:e.matrix)}getModelBounds(e,t){if(!this.#Ce&&!this.#Pe)return null;const i=new d.Box3;if(i.copy(this.#Ce||this.#Pe),t&&i.copy(this.trimPageShadowGeometry(i)),e)return i;this.#De&&this.#Ce&&i.applyMatrix4(this.#De);const n=this.getModelTransform();return n&&i.applyMatrix4(n),i}updateModelBBoxOriginal(e){this.#Ce=e}getInverseModelTransform(){var e;const t=this.#ue.getInverseModelTransformLeaflet();return t||(null===(e=this.#U)||void 0===e?void 0:e.getInverseModelMatrix())}getPlacementTransform(){return this.#ve=this.#ve||new g.LmvMatrix4(!0),this.#xe||this.getData().placementTransform||this.#ve}getGlobalOffset(){return this.#_e||this.getData().globalOffset}setPlacementTransform(e){this.#xe=(this.#xe||new g.LmvMatrix4(!0)).copy(e),v.DynamicGlobalOffset.updateModelMatrix(this,e,this.getGlobalOffset())}setGlobalOffset(e){this.#_e=this.#_e||new d.Vector3,this.#_e.copy(e);var t=this.getPlacementTransform();v.DynamicGlobalOffset.updateModelMatrix(this,t,e)}getModelToViewerTransform(){var e;if(this.#ye)return this.#ye;const t=this.getModelTransform(),i=null===(e=this.getData())||void 0===e?void 0:e.placementWithOffset;return(t||i)&&(this.#ye=new d.Matrix4,t&&this.#ye.multiply(t),i&&this.#ye.multiply(i)),this.#ye}getInverseModelToViewerTransform(){if(this.#be)return this.#be;const e=this.getModelToViewerTransform();return e&&(this.#be=e.clone().invert()),this.#be}getInversePlacementWithOffset(){return this.myData.placementWithOffset?(this.#Ee||(this.#Ee=new g.LmvMatrix4(!0).copy(this.myData.placementWithOffset).invert()),this.#Ee):null}setInnerAttributes(e){this.id=e._id,this.#se=e._visibleBounds,this.#ae=e._visibleBoundsWithHidden,this.#le=e._tmpBox,this.#ce=e._numHighlighted,this.#he=e._geoms,this.#U=e._frags,this.#pe=e._consolidationMap,this.#me=e._renderCounter,this.#Z=e._frustum,this.#ge=e._drawMode,this.#Ae=e._idRemap,this.#we=e._reverseMap;const t={_iterator:e._iterator,_linearIterator:e._linearIterator,_bvhIterator:e._bvhIterator,_consolidationIterator:e._consolidationIterator};this.#ue.setInnerAttributes(t)}getInnerAttributes(){const e=this.#ue.getInnerAttributes();return{_id:this.id,_visibleBounds:this.#se,_visibleBoundsWithHidden:this.#ae,_tmpBox:this.#le,_numHighlighted:this.#ce,_geoms:this.#he,_frags:this.#U,_linearIterator:e.linearIterator,_bvhIterator:e.bvhIterator,_iterator:e.currentIterator,_consolidationIterator:e.consolidationIterator,_consolidationMap:this.#pe,_renderCounter:this.#me,_frustum:this.#Z,_drawMode:this.#ge,_idRemap:this.#Ae,_reverseMap:this.#we}}setDoNotCut(e,t){if(this.#Se===t)return;this.#Se=t,this.#U?this.#U.setDoNotCut(t):this.isLeaflet()&&this.#ue.setDoNotCutLeaflet(t);e.forEachInModel(this,!1,(i=>{var n;i.doNotCut=t;(null===(n=i.cutplanes)||void 0===n?void 0:n.length)>0===t&&(e._applyCutPlanes(i),i.needsUpdate=!0)}))}getDoNotCut(){return this.#Se}setViewportBounds(e,t){this.isLeaflet()?this.#ue.setViewportBoundsLeaflet(t):this.#U&&(t=t||this.isPdf()&&this.getModelBounds(!0,!0),this.#U.setViewBounds(t),e.setViewportBoundsForModel(this,t)),this.invalidateBBoxes()}getViewportBounds(){var e;return this.isLeaflet()?this.#ue.getViewportBoundsLeaflet():null===(e=this.#U)||void 0===e?void 0:e.getViewBounds()}load(e){let t=0;return(this.#Ie.isSVF2||this.#Ie.isOTG)&&(t=this.loader.loadFragments(e)),t}unload(e){let t=0;return(this.#Ie.isSVF2||this.#Ie.isOTG)&&(t=this.getFragmentList().unload(e,this.loader.viewer3DImpl.geomCache(!1)),t>0&&(this.getData().fragsLoaded-=t,this.#Fe({type:S.FRAGMENTS_UNLOADED_EVENT,model:this}))),t}#Fe(e){this.loader.viewer3DImpl.api.dispatchEvent(e)}}},47263:(e,t,i)=>{"use strict";i.r(t),i.d(t,{RenderScene:()=>h});var n=i(57872),r=i(4897),o=i(72091),s=i(24528),a=i(19129),l=i(1979);const c=new o.Box3;class h{#$=!1;#Ue=[];#Be=[];#ke=[];#Ve=[];#Z=new r.FrustumIntersector;#Ge=new o.Raycaster;enableNonResumableFrames=!1;budgetForTransparent=.1;#ze=!1;#He=[];#We=null;constructor(){}frustum(){return this.#Z}#je(e,t){for(let i=0;i=0&&this.#Ue.splice(t,1),this.#Be.length=this.#Ue.length,this.#ke.length=this.#Ue.length,this.recomputeLinePrecision(),t>=0}addHiddenModel(e){const t=this.#Ve.indexOf(e);return t<0&&this.#Ve.push(e),t<0}removeHiddenModel(e){const t=this.#Ve.indexOf(e);return t>=0&&this.#Ve.splice(t,1),t>=0}isEmpty(){return 0===this.#Ue.length}recomputeLinePrecision(){let e=1;const t=new o.Vector3;for(let i=0,n=this.#Ue.length;i1.5*e.avgFrameTime?(e.outliers.push(t),i=!1,e.outliers.length>4&&(e.avgFrameTime=e.outliers.reduce(((e,t)=>e+t),0)/e.outliers.length,e.outliers.splice(0,1e3))):e.outliers.splice(0,1e3),i&&(e.avgFrameTime=.95*e.avgFrameTime+.05*t)}#qe(e,t,i){let n,r;for(n=0;n2&&void 0!==arguments[2]?arguments[2]:1,r=performance.now(),o=r;const s=this.budgetForTransparent*t;let a=null,l=0,c=0,h=0,u=n.PER_FRAME_CONSOLIDATION_TIME_BUDGET;const d=e=>{const n=performance.now()+Math.min(u,.5*t);let o=performance.now(),s=e.nextBatch(n),a=performance.now(),l=a-o;return t-=l/i,u-=l,r=a,s};for(;;){let i=0,n=null;for(let e=0;en.renderImportance,l=!r.sortObjects&&n.sortObjects;(o||l)&&(i=e,n=r)}if(!n){this.#$=!0;break}if(this.#Be[i]=d(this.#Ue[i]),n.sortObjects&&this.#ze)this.#He.push(n),t-=void 0===n.avgFrameTime?.05:n.avgFrameTime;else{n.render?n.render(e):e(n),Object.prototype.hasOwnProperty.call(n,"drawEnd")&&(n.drawEnd=n.lastItem),o=performance.now();let i,s=o-r;r=o,l>5&&(i=c/l,s>5*i&&h<3&&(s=n.avgFrameTime??i,h++)),c+=s,l++,void 0===n.avgFrameTime&&(s=i??.5),this._updateAvgFrameTime(n,s),t-=n.avgFrameTime}if(t<=0)break}return this.#He.length>0&&(this.#qe(this.#He,this.#We,e),this.#He.length=0),t}reset(e,t,i,r){let o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(this.#$=!1,this.#Z.reset(e,r,o),this.#Z.areaCullThreshold=n.PIXEL_CULLING_THRESHOLD,this.#Ue.length){this.#ze=this.enableNonResumableFrames&&i==a.ResetFlags.RESET_RELOAD&&t===s.RenderFlags.RENDER_NORMAL,this.#We=e;for(let n=0;n1){const e=[];if(r)for(let t=0;t(e.push(t.getGeomScenes()),e)),[])}explode(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.#Ue.length){for(let i=0;i{"use strict";i.r(t),i.d(t,{ResetFlags:()=>n});var n={RESET_NORMAL:0,RESET_REDRAW:1,RESET_RELOAD:2}},12153:(e,t,i)=>{"use strict";i.r(t),i.d(t,{SceneMath:()=>c});var n=i(72091);const r=[new n.Vector3(1,0,0),new n.Vector3(0,1,0),new n.Vector3(0,0,1),new n.Vector3(-1,0,0),new n.Vector3(0,-1,0),new n.Vector3(0,0,-1)];let o=new n.Plane;new n.Vector3;function s(e,t,i,r){var o=e;o.z=-1;var s=new n.Vector3(o.x,o.y,1);o=o.unproject(t),(s=s.unproject(t)).sub(o).normalize();var a,l=s;if(Math.abs(l[i])<1e-6)return null;a=t.isPerspective?t.position:o;var c=((r?r.min[i]:0)-a[i])/l[i];return l.multiplyScalar(c),l.add(a),l}function a(e,t,i){var n=e.clone();return n.max(t),n.min(i),n.distanceToSquared(e)}function l(e,t){return a(e,t.min,t.max)}let c={box2CutPlanes:function(e,t){let i=[];for(let s=0;s{"use strict";i.r(t),i.d(t,{SceneTraversal:()=>s});var n=i(81422),r=i(70101),o=i(8879);class s{#Xe=new Map;#Ye="NoOp";#Ke=null;#Z=void 0;#ge=void 0;constructor(){this.addTraversalController("NoOp",new r.NoOpTraversalController)}addTraversalController(e,t){this.#Xe.set(e,t),this.#Qe()}getTraversalController(){return this.#Xe.get(this.#Ye)}#Qe(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]||!this.#Xe.has("BVH")?this.#Xe.has("Linear")?this.#Ye="Linear":this.#Xe.has("Custom")?this.#Ye="Custom":this.#Ye="NoOp":this.#Ye="BVH"}dtor(){this.#Ke&&(this.#Ke.dispose(),this.#Ke=null),this.#Xe.forEach((e=>{e.dtor()})),this.#Xe=null,this.#Ye=null}nextBatch(e){const t=this.getTraversalController().nextBatch();if(!t)return null;if(this.#Ke&&t instanceof o.RenderBatch){const i=this.#Ke.consolidateNextBatch(t,this.#Z,this.#ge,e);return i||t}return t}updateView(e,t,i,n){this.#Z=t,this.#ge=i,this.#Qe(n),this.getTraversalController().reset(t,e),this.#Ke&&this.#Ke.reset()}getVisibleBounds(e,t,i){this.getTraversalController().getVisibleBounds(e,t,i)}getScenes(){const e=this.getTraversalController();return e.isModelIteratorTexQuad?[]:e.getGeomScenes()}getSceneCount(){return this.getTraversalController().getSceneCount()}getInnerAttributes(){return{currentIterator:this.getTraversalController(),linearIterator:this.#Xe.get("Linear"),bvhIterator:this.#Xe.get("BVH"),consolidationIterator:this.#Ke}}setInnerAttributes(e){var t;(!this.#Xe.has("Linear")&&e._linearIterator&&(this.#Xe.set("Linear",e._linearIterator.clone()),e._linearIterator===e._iterator&&(this.#Ye="Linear")),!this.#Xe.has("BVH")&&e._bvhIterator&&(this.#Xe.set("BVH",e._bvhIterator.clone()),e._bvhIterator===e._iterator&&(this.#Ye="BVH")),!this.#Ke&&e._consolidationIterator&&(this.#Ke=e._consolidationIterator.clone()),"NoOp"==!this.#Ye)&&(this.#Xe.set("Custom",null!==(t=e._iterator)&&void 0!==t&&t.clone?e._iterator.clone():e._iterator),this.#Ye="Custom")}addFragment(e){"Linear"==this.#Ye&&this.getTraversalController().addFragment(e)}setVisibilityLeaflet(e){this.getTraversalController().isModelIteratorTexQuad&&this.getTraversalController().setVisibility(e)}needsRedrawLeaflet(e){return!!this.getTraversalController().isModelIteratorTexQuad&&this.getTraversalController().update(e)}clearThemingColorsLeaflet(){this.getTraversalController().isModelIteratorTexQuad&&this.getTraversalController().clearThemingColor()}setThemingColorLeaflet(e){return!!this.getTraversalController().isModelIteratorTexQuad&&(this.getTraversalController().setThemingColor(e),!0)}getLeafletIterator(){return this.getTraversalController().isModelIteratorTexQuad?this.getTraversalController():null}setModelTransformLeaflet(e){this.getTraversalController().isModelIteratorTexQuad&&this.getTraversalController().setModelMatrix(e)}getModelTransformLeaflet(){if(this.getTraversalController().isModelIteratorTexQuad)return this.getTraversalController().getModelMatrix()}getInverseModelTransformLeaflet(){if(this.getTraversalController().isModelIteratorTexQuad)return this.getTraversalController().getInverseModelMatrix()}setViewportBoundsLeaflet(e){this.getTraversalController().isModelIteratorTexQuad&&this.getTraversalController().setViewBounds(e)}getViewportBoundsLeaflet(){if(this.getTraversalController().isModelIteratorTexQuad)return this.getTraversalController().getViewBounds()}setDoNotCutLeaflet(e){this.getTraversalController().isModelIteratorTexQuad&&this.getTraversalController().setDoNotCut(e)}updateModelTransformConsolidation(){this.#Ke&&this.#Ke.modelMatrixChanged()}enableConsolidation(e,t){this.#Ke=new n.ConsolidationIterator(e,t)}disableConsolidation(){this.#Ke.dispose(),this.#Ke=null}getConsolidation(){var e;return null===(e=this.#Ke)||void 0===e?void 0:e.getConsolidation()}isEnabledConsolidation(){return!!this.#Ke}updateRenderProxy(e,t){this.isEnabledConsolidation()&&this.#Ke.updateRenderProxy(e,t)}skipOpaqueShapes(){this.getTraversalController().skipOpaqueShapes&&this.getTraversalController().skipOpaqueShapes()}}},63430:(e,t,i)=>{"use strict";i.r(t),i.d(t,{SelectionMode:()=>n});let n={LEAF_OBJECT:0,FIRST_OBJECT:1,LAST_OBJECT:2}},71082:(e,t,i)=>{"use strict";function n(e){var t=e||function(e,t){return e=s)return s;if(s===o+1){var a=i[n[o]];return t(a,e)?s:o}var l=parseInt(o+(s-o)/2),c=i[n[l-1]];return t(e,c)?r(e,o,l):t(c,e)?r(e,l,s):l-1}this.add=function(e){var t=r(e);if(t==n.length)return i.push(e),void n.push(i.length-1);i.push(e),n.splice(t,0,i.length-1)},this.size=function(){return n.length},this.get=function(e){return i[n[e]]},this.removeAt=function(e){var t=n[e];i[t]=void 0,n.splice(e,1)},this.toString=function(){for(var e="",t=0,i=this.size();tn})},36411:(e,t,i)=>{"use strict";i.r(t),i.d(t,{VBIntersector:()=>m});var n,r,o,s,a=i(69511),l=i(72091);function c(){n||(n=new l.Matrix4,r=new l.Ray,new l.Vector3,new l.Vector3,new l.Vector3,o=new l.Vector3,s=new l.Vector3)}function h(e,t,i){c();var h=e.geometry;if(h){var u=e.material,d=u?u.side:l.FrontSide;n.copy(e.matrixWorld).invert(),r.copy(t.ray).applyMatrix4(n);var f,p,m=t.precision||1e-4;(0,a.enumMeshTriangles)(h,(function(n,a,c,h,u,g,v,y,b,x){null!==(f=d===l.BackSide?r.intersectTriangle(c,a,n,!0,o):r.intersectTriangle(n,a,c,d!==l.DoubleSide,o))&&(f.applyMatrix4(e.matrixWorld),(p=t.ray.origin.distanceTo(f))t.far||(l.Triangle.getNormal(n,a,c,s),i.push({distance:p,point:f.clone(),face:new l.Face3(h,u,g,s.clone()),faceIndex:x,fragId:e.fragId,dbId:e.dbId,object:e,modelId:e.modelId})))}))}}function u(e,t,i,o){c();var s=e.geometry;if(s){var h=t.params.Line.threshold;e.isWideLine&&(e.material.linewidth?h=e.material.linewidth:e.geometry.lineWidth&&(h=e.geometry.lineWidth));var u=h*h;n.copy(e.matrixWorld).invert(),r.copy(t.ray).applyMatrix4(n);var d=new l.Vector3,f=new l.Vector3;s instanceof l.BufferGeometry&&(0,a.enumMeshLines)(s,(function(n,s,a,l,c){var h,p;if(r.distanceSqToSegment(n,s,f,d),d.applyMatrix4(e.matrixWorld),f.applyMatrix4(e.matrixWorld),(p=d.distanceToSquared(f))>u)return;if((h=t.ray.origin.distanceTo(d))t.far)return;let m={distance:h,point:d.clone(),face:{a,b:l},faceIndex:c,fragId:e.fragId,dbId:e.dbId,object:e,distanceToRay:Math.sqrt(p)};o&&o.filter&&!o.filter(m)||i.push(m)}))}}function d(e,t,i,o){e.isLine||e.isWideLine?null!=o&&o.skipLines||u(e,t,i,o):e.isPoint?null!=o&&o.skipPoints||function(e,t,i){c();var o=e.geometry;if(o){n.copy(e.matrixWorld).invert(),r.copy(t.ray).applyMatrix4(n);var s=t.precision||1e-4,h=t.params.PointCloud.threshold;h||(h=1),h*=Math.max(3,o.pointSize),h/=4,o instanceof l.BufferGeometry&&(0,a.enumMeshVertices)(o,(function(n,o,a,l){if(!(r.distanceToPoint(n)>h)){var c=r.closestPointToPoint(n);if(null!==c){c.applyMatrix4(e.matrixWorld);var u=t.ray.origin.distanceTo(c);ut.far||i.push({distance:u,point:n,face:{a:l},faceIndex:l,fragId:e.fragId,dbId:e.dbId,object:e})}}}))}}(e,t,i):null!=o&&o.skipMeshes||h(e,t,i)}function f(e,t,i,n){if(e instanceof l.Mesh?d(e,t,i):e.raycast(t,i),!0===n)for(var r=e.children,o=0,s=r.length;o{"use strict";i.r(t),i.d(t,{VertexBufferReader:()=>r});var n=2*Math.PI;function r(e){var t;this.vb=e.vb.buffer,this.stride=e.vbstride,this.vbf=new Float32Array(this.vb),this.vbi=new Int32Array(this.vb),this.vbs=new Uint16Array(this.vb),this.ib=e.ib,this.vcount=this.vbf.length/this.stride,this.useInstancing=e.numInstances>0,this.useCompactBuffers=e.unpackXform,this.texData=this.useCompactBuffers&&(null===(t=e.tIdColor)||void 0===t||null===(t=t.image)||void 0===t?void 0:t.data)&&new Uint32Array(e.tIdColor.image.data.buffer),this.isInterleavedVb=(()=>{const t=e.attributes;if(!t)return!1;const i=t.layerVp4b,n=t.flags4b;if(this.useCompactBuffers){return t.uvIdColor&&i&&n}{const e=t.color4b,r=t.dbId4b;return e&&r&&i&&n}})()}r.prototype.getDbIdAt=function(e){return this.texData?this.texData[this.vbs[e*this.stride*2+7]]:this.vbi[e*this.stride+7]},r.prototype.getColorAt=function(e){return this.texData?this.texData[this.vbs[e*this.stride*2+6]]:this.vbi[e*this.stride+6]},r.prototype.getVertexFlagsAt=function(e){return this.texData?this.vbi[e*this.stride+4]:this.vbi[e*this.stride+8]},r.prototype.getLayerIndexAt=function(e){return this.texData?65535&this.vbi[e*this.stride+5]:65535&this.vbi[e*this.stride+9]},r.prototype.getViewportIndexAt=function(e){return this.texData?this.vbi[e*this.stride+5]>>16&65535:this.vbi[e*this.stride+9]>>16&65535},r.prototype.decodeLineAt=function(e,t,i,r){if(r.onLineSegment){if(this.useCompactBuffers)var o=this.stride*e*2,s=this.useCompactBuffers.x*this.vbs[o]/65535+this.useCompactBuffers.z,a=this.useCompactBuffers.y*this.vbs[o+1]/65535+this.useCompactBuffers.w,l=this.vbs[o+2]/65535*n-Math.PI,c=this.vbs[o+3]/65535*Math.max(this.useCompactBuffers.x,this.useCompactBuffers.y),h=this.vbs[o+4]/32767*Math.max(this.useCompactBuffers.x,this.useCompactBuffers.y)*2;else{var u=this.stride*e;s=this.vbf[u],a=this.vbf[u+1],l=this.vbf[u+2]*n-Math.PI,c=this.vbf[u+3],h=2*this.vbf[u+4]}var d=s+c*Math.cos(l),f=a+c*Math.sin(l);r.onLineSegment(s,a,d,f,i,h)}},r.prototype.decodeCircularArcAt=function(e,t,i,r){if(r.onCircularArc){if(this.useCompactBuffers)var o=this.stride*e*2,s=this.useCompactBuffers.x*this.vbs[o]/65535+this.useCompactBuffers.z,a=this.useCompactBuffers.y*this.vbs[o+1]/65535+this.useCompactBuffers.w,l=this.vbs[o+2]/65535*n,c=this.vbs[o+3]/65535*n,h=this.vbs[o+5]/65535*Math.max(this.useCompactBuffers.x,this.useCompactBuffers.y);else{var u=this.stride*e;s=this.vbf[u],a=this.vbf[u+1],l=this.vbf[u+2]*n,c=this.vbf[u+3]*n,h=this.vbf[u+5]}r.onCircularArc(s,a,l,c,h,i)}},r.prototype.decodeEllipticalArcAt=function(e,t,i,r){if(r.onEllipticalArc){var o=this.stride*e,s=this.vbf[o],a=this.vbf[o+1],l=this.vbf[o+2]*n,c=this.vbf[o+3]*n,h=this.vbf[o+5],u=this.vbf[o+10],d=this.vbf[o+11];r.onEllipticalArc(s,a,l,c,h,u,d,i)}},r.prototype.decodeTexQuadAt=function(e,t,i,r){if(r.onTexQuad){if(this.useCompactBuffers)var o=this.stride*e*2,s=this.useCompactBuffers.x*this.vbs[o]/65535+this.useCompactBuffers.z,a=this.useCompactBuffers.y*this.vbs[o+1]/65535+this.useCompactBuffers.w,l=this.vbs[o+2]/65535*n,c=this.vbs[o+3]/65535*Math.max(this.useCompactBuffers.x,this.useCompactBuffers.y),h=this.vbs[o+4]/65535*Math.max(this.useCompactBuffers.x,this.useCompactBuffers.y);else{var u=this.stride*e;s=this.vbf[u],a=this.vbf[u+1],l=this.vbf[u+2]*n,c=this.vbf[u+3],h=this.vbf[u+4]}r.onTexQuad(s,a,c,h,l,i)}},r.prototype.decodeOneTriangleAt=function(e,t,i,n){if(n.onOneTriangle){if(this.useCompactBuffers)var r=this.stride*e*2,o=this.useCompactBuffers.x*this.vbs[r]/65535+this.useCompactBuffers.z,s=this.useCompactBuffers.y*this.vbs[r+1]/65535+this.useCompactBuffers.w,a=this.useCompactBuffers.x*this.vbs[r+2]/65535+this.useCompactBuffers.z,l=this.useCompactBuffers.y*this.vbs[r+3]/65535+this.useCompactBuffers.w,c=this.useCompactBuffers.x*this.vbs[r+4]/65535+this.useCompactBuffers.z,h=this.useCompactBuffers.y*this.vbs[r+5]/65535+this.useCompactBuffers.w;else{var u=this.stride*e;o=this.vbf[u],s=this.vbf[u+1],a=this.vbf[u+2],l=this.vbf[u+3],c=this.vbf[u+4],h=this.vbf[u+5]}n.onOneTriangle(o,s,a,l,c,h,i)}},r.prototype.decodeTriangleIndexed=function(e,t,i,n,r,o){if(o.onOneTriangle){if(this.useCompactBuffers){var s=this.stride*e*2,a=this.useCompactBuffers.x*this.vbs[s]/65535+this.useCompactBuffers.z,l=this.useCompactBuffers.y*this.vbs[s+1]/65535+this.useCompactBuffers.w;s=this.stride*t*2;var c=this.useCompactBuffers.x*this.vbs[s]/65535+this.useCompactBuffers.z,h=this.useCompactBuffers.y*this.vbs[s+1]/65535+this.useCompactBuffers.w;s=this.stride*i*2;var u=this.useCompactBuffers.x*this.vbs[s]/65535+this.useCompactBuffers.z,d=this.useCompactBuffers.y*this.vbs[s+1]/65535+this.useCompactBuffers.w}else{var f=this.stride*e;a=this.vbf[f],l=this.vbf[f+1];f=this.stride*t;c=this.vbf[f],h=this.vbf[f+1];f=this.stride*i;u=this.vbf[f],d=this.vbf[f+1]}o.onOneTriangle(a,l,c,h,u,d,r)}},r.prototype.decodeByType=function(e,t,i,n,r){switch(e){case 11:case 8:case 9:case 10:case 1:this.decodeLineAt(t,i,n,r);break;case 2:this.decodeCircularArcAt(t,i,n,r);break;case 3:this.decodeEllipticalArcAt(t,i,n,r);break;case 4:this.decodeTexQuadAt(t,i,n,r);break;case 5:this.decodeOneTriangleAt(t,i,n,r)}},r.prototype.enumGeomsForObject=function(e,t){if(this.useInstancing)for(var i=0;i>8&255,r=this.getLayerIndexAt(i),o=this.getViewportIndexAt(i);(a=this.getDbIdAt(i)===e)&&this.decodeByType(n,i,r,o,t),i+=1}else for(i=0;i>8&255,r=this.getLayerIndexAt(s),o=this.getViewportIndexAt(s),this.getDbIdAt(s)===e);0===n?(a&&this.decodeTriangleIndexed(this.ib[i],this.ib[i+1],this.ib[i+2],r,o,t),i+=3):(a&&this.decodeByType(n,s,r,o,t),i+=6)}},r.prototype.enumGeomsForVisibleLayer=function(e,t){this.enumGeoms((function(t,i,n){return!e||0!==i&&-1!==e.indexOf(i)}),t)},r.prototype.enumGeoms=function(e,t){if(this.useInstancing)for(var i=0;i>8&255,r=this.getLayerIndexAt(i),o=this.getViewportIndexAt(i),s=this.getDbIdAt(i);(l=!e||e(s,r,o))&&this.decodeByType(n,i,r,o,t),i+=1}else for(i=0;i>8&255,r=this.getLayerIndexAt(a),o=this.getViewportIndexAt(a),s=this.getDbIdAt(a),!e||e(s,r,o));0===n?(l&&this.decodeTriangleIndexed(this.ib[i],this.ib[i+1],this.ib[i+2],r,o,t),i+=3):(l&&this.decodeByType(n,a,r,o,t),i+=6)}}},69511:(e,t,i)=>{"use strict";i.r(t),i.d(t,{VertexEnumerator:()=>w,enumMeshEdges:()=>A,enumMeshIndices:()=>_,enumMeshLines:()=>S,enumMeshTriangles:()=>E,enumMeshVertices:()=>x,getIndicesCount:()=>g,getVertexCount:()=>m});var n,r,o,s,a,l,c,h,u,d,f,p=i(96118);function m(e){return e.vb?e.vb.length/e.vbstride:e.attributes.position?e.attributes.position.array.length/3:0}function g(e){const t=b(e);if(t){var i=e.groups;if(!i||0===i.length)return t.length;let o=0;for(var n=0,r=i.length;n{"use strict";i.r(t),i.d(t,{Consolidation:()=>B,ConsolidationBuilder:()=>k,canBeMerged:()=>U,copyPrimitiveProps:()=>N,copyVertexFormat:()=>O,isVisible:()=>L,mergeGeometries:()=>F});var n=i(72091),r=i(57872),o=i(69511),s=i(77201),a=i(22040),l=i(1433),c=i(7756),h=i(37365),u=i(96118);function d(e,t,i,n){var r=function(e){for(var t=new Uint16Array(e.length+1),i=0,n=0;n0&&(a=new Uint16Array(l),c.byteSize+=a.byteLength,c.iblines=a),c.byteSize+=c.vb.byteLength+c.ib.byteLength,N(e[0],c),O(e[0],c);var h=new n.BufferAttribute(new Float32Array,3);h.normalized=!0,h.bytesPerItem=1,c.setAttribute("id",h);var u=e[0];return _(c,x(u)),u.isPoints&&(c.pointSize=u.pointSize),u.isWideLines&&(c.lineWidth=u.lineWidth),c}(e);return l.boundingBox=r.clone(),function(e,t){for(var i=0,n=0,r=0,s=0,a=0;a2&&void 0!==arguments[2]?arguments[2]:null;this.fragOrder=new Uint32Array(e),this.ranges=new Uint32Array(t),this.boxes=new Array(t),this.numConsolidated=-1,this.tmpGeoms=[],this.tmpMatrix=new n.Matrix4,this.fragIdToNodeIdx=i}R.prototype={constructor:R,addGeom:function(e,t,i){this.geoms.push(e),this.fragIds.push(i),this.worldBox.union(t),this.vertexCount+=(0,o.getVertexCount)(e);var n=this.geoms.length;return 1==n?0:(void 0===e.byteSize&&m.logger.warn("Error in consolidation: Geometry must contain byteSize."),e.byteSize+(2==n?this.geoms[0].byteSize:0))}},B.prototype={constructor:B,addContainerMesh:function(e,t,i,r,o){var s=new n.Mesh(e,t);this.meshes.push(s),this.byteSize+=e.byteSize;var a=r||0,l=a+(o||i.length);s.frustumCulled=!1;for(var c=this.meshes.length-1,h=a;hr)return null;o.geometry=a._buildConsolidationGeometry(e,t),o.geometry.streamingDraw=s.streamingDraw,o.geometry.streamingIndex=s.streamingIndex,o.geometry.discardAfterUpload=s.discardAfterUpload,s=o.geometry}var c,h,u,d=a.fragOrder,f=s.numInstances,p=t.db2ThemingColor.length>0||void 0;if(f?h=(c=o.rangeStart)+o.geometry.numInstances:s.attributes.id?(c=a.ranges[e],h=e+1>=a.ranges.length?a.numConsolidated:a.ranges[e+1]):u=o.fragId,!n||void 0!==u)return s.groups&&void 0===u&&(s.groups=void 0),o.visible=L(l[void 0===u?d[c]:u],i),o.themingColor=p&&t.getThemingColor(u),o;var m,g,v=0,y=0,b=0,x=0,_=0;function E(){if(m){s.groups=s.groups||[];var e=s.groups[_]||{index:0};s.groups[_++]=e,f?(e.start=0,e.count=s.ib?s.ib.length:s.ibLength,(s.iblines||s.iblinesLength)&&(e.edgeStart=0,e.edgeCount=s.iblines?s.iblines.length:s.iblinesLength),e.instanceStart=v,e.numInstances=y-v):(e.start=v,e.count=y-v,(s.iblines||s.iblinesLength)&&(e.edgeStart=b,e.edgeCount=x-b)),e.themingColor=g}}for(var S=c;Sv&&E(),v=y,b=x,m=A,g=w),f)y+=1;else{var T=t.getGeometry(u);y+=T.ib?T.ib.length:T.ibLength,(T.iblines||T.iblinesLength)&&(x+=T.iblines?T.iblines.length:T.iblinesLength)}}return 0===v?(o.themingColor=g,o.visible=m,o.material=Array.isArray(o.material)?o.material[0]:o.material):(o.visible=!0,E()),s.groups&&(s.groups.length=_),o},dispose:function(){for(var e={type:"dispose"},t={type:"removed"},i=0;i65535)){s=h;break}}s||(s=new R(t),this.bucketCount++,l?l.push(s):this.buckets.set(a,[s])),this.costs+=s.addGeom(e,i,n)},createConsolidationMap:function(e,t,i){var n=new V(e.length,this.bucketCount,i),r=0,o=0;this.buckets.forEach((e=>{for(var t=0;t3&&void 0!==arguments[3]&&arguments[3];var r=e.getCount(),o=this.ranges.length,s=new B(r),a=null;n||p.createWorker&&(a=new p(s)),s.consolidationMap=this;for(var l=0;l{"use strict";i.r(t),i.d(t,{ConsolidationIterator:()=>d});var n=i(32431),r=i(23936),o=i(72091),s=i(4897),a=i(68747),l=i(24528),c=i(83081),h=i(57872),u=i(8879);function d(e,t){var i=e,f=t,p=[],m=!1;const g=[];var v=[],y=new o.Matrix4,b=new o.Box3;function x(e){const t=i.matrix,n=e.consolidatedScene||e;t?(n.matrixWorld.copy(t),n.matrixAutoUpdate=!1):n.matrixWorld.identity()}function _(){const e=f.meshes;for(let t=0;t0,h=0;h=0&&(v[d]=!0)}}}},this.dispose=function(){f.dispose()},this.consolidateNextBatch=function(e,t,n,r){var a=e.nodeIndex;if(m||void 0===a)return e;if(f.inProgress)return e;let u,d=!1,g=this.acquireSceneOrConsolidatedRenderBatch(e);if(h.USE_HLOD)u=g.consolidatedScene;else{u=g;const i=n===l.RenderFlags.RENDER_HIDDEN?e.getBoundingBoxHidden():e.getBoundingBox(),r=t.intersectsBox(i);if(r===s.FrustumIntersector.OUTSIDE)return null;if(h.ENABLE_PIXEL_CULLING&&t.estimateProjectedDiameter(i){"use strict";i.r(t),i.d(t,{CONSOLIDATION_STOP_MARKER:()=>l,consolidateFragmentList:()=>g});var n=i(32431),r=i(23936),o=i(62612),s=i(72091),a=i(75468);const l=Object.freeze({BVH_SORTING:{name:"Sorting fragments for BVH computation",progress:10},BVH:{name:"Computing Consolidation BVH",progress:30},SORTING:{name:"Sorting Fragments by Consolidation Costs",progress:50},MAP_CREATION:{name:"Creating Consolidation Map",progress:50},INSTANCING:{name:"Applying Instancing to Fragments",progress:70},FINAL_PROCESSING:{name:"Finalizing Consolidation",progress:95}}),c=5e4,h=1e4;let u=0;var d,f=(d=null,function(e,t,i,n,a,l){var c=e.getFragmentList();d||(d=new s.Matrix4);var h=i[n],u=c.getGeometry(h),f=c.getMaterial(h),p=a-n,m=a-1;if(p<=1)for(let e=n;e<=m;e++)l.addSingleFragment(i[e],c);else{var g=new r.InstanceBufferBuilder(u,p);for(let e=n;e<=m;e++){var v=i[e];c.getOriginalWorldMatrix(v,d);var y=c.fragments.fragId2dbId[v];if(!g.addInstance(d,y)){var b=i[m];i[m]=v,i[e]=b,--e,--m}}var x=g.finish();if(x){var _=t.getMaterialVariant(f,o.MATERIAL_VARIANT.INSTANCED,e);l.addContainerMesh(x,_,i,n,p),l.meshes[l.meshes.length-1].rangeStart=n}for(let e=m+1;e{const t=u++;d=i=>{i.data.jobId===t&&e(i.data.fragIds)},n.worker.addEventListener("message",d);const o={operation:"SORT_FRAGMENTS",fragIds:l,geomIds:r.geomids,memCosts:c,materialIds:r.materialids,fragIdToNodeIdx:i,jobId:t};n.worker.doOperation(o)})).finally((()=>{var e;null===(e=n.worker)||void 0===e||e.removeEventListener("message",d)}))}async function m(e,t){if(!t.consolidationMap||t.forceConsolidationMapRecomputation){var i;const r=e.getFragmentList();let o=null,c=new Int32Array(r.getCount());null!==(i=t.bvhOptions)&&void 0!==i&&i.per_tile_consolidation&&(o=new Uint32Array(r.getCount()),await async function(e,t,i,n){const r=e.getFragmentList(),o={boxes:r.fragments.boxes,polygonCounts:new Uint32Array(r.fragments.length),flags:new Uint8Array(r.fragments.length),materials:r.materialids,length:r.fragments.length,geomids:r.geomids};i=await p(e,i,t,n),n.stopIfCanceled(l.BVH_SORTING),n.signalProgress(l.BVH_SORTING.progress);const s=e.getFragmentList().materialIdMap;let c,h=0;for(let e=0;e{const i=u++;c=e=>{if(e.data.jobId===i){const i=e.data.bvh;t({nodes:new a.NodeArray(i.nodes,i.useLeanNodes),primitives:i.primitives})}},n.worker.addEventListener("message",c),n.worker.doOperation({operation:"COMPUTE_BVH",fragments:o,modelId:e.id,bvhOptions:n.bvhOptions,jobId:i},[o.polygonCounts.buffer,o.flags.buffer])})).finally((()=>{var e;null===(e=n.worker)||void 0===e||e.removeEventListener("message",c)}));n.consolidationBVH=d,n.consolidationBVH.bvhOptions=n.bvhOptions,n.stopIfCanceled(l.BVH),n.signalProgress(l.BVH.progress);let f=e=>{const i=d.nodes.getPrimStart(e),n=i+d.nodes.getPrimCount(e);for(let r=i;r{var a=new s.Box3,c=new n.ConsolidationBuilder,u=0;const d=()=>{r.stopIfCanceled(l.MAP_CREATION);const n=performance.now()+r.syncTimeSlice;for(;u=r.byteLimit);u++){var s=t[u];e.getWorldBounds(s,a);var f=e.getGeometry(s),p=e.getMaterial(s);if(c.addGeom(f,p,a,s,i),u%h==0){const e=l.INSTANCING.progress-l.MAP_CREATION.progress;if(r.signalProgress(l.MAP_CREATION.progress+e*Math.max(u/t.length,c.costs/r.byteLimit)),performance.now()>n)return++u,void setTimeout(d,0)}}o(c.createConsolidationMap(t,u,i))};d()}))}(e.getFragmentList(),c,o,t)}return t.consolidationMap}async function g(e,t,i){const n=e.getFragmentList(),r=(i.consolidationMap=await m(e,i)).buildConsolidation(n,t,e,i.useDeferredConsolidation);await async function(e,t,i,n){var r=e.getFragmentList();const o=n.consolidationMap.fragOrder,s=n.consolidationMap.numConsolidated;if(s>=o.length)return;var a=s,u=-1,d=-1;let p,m=-1,g=0;const v=n.consolidationMap.fragIdToNodeIdx;await new Promise((y=>{let b=s;const x=()=>{n.stopIfCanceled(l.INSTANCING);const _=performance.now()+n.syncTimeSlice;for(;bc)&&(b!=s&&f(e,t,o,a,b,i),a=b,u=S,d=A,m=w,g=0,p=r.getGeometry(E)),g+=p.ib?p.ib.length:0,b%h==0){const e=l.FINAL_PROCESSING.progress-l.INSTANCING.progress;if(n.signalProgress(l.INSTANCING.progress+e*b/o.length),performance.now()>_)return++b,void setTimeout(x,0)}}y()};x()})),f(e,t,o,a,o.length,i)}(e,t,r,i);const o=e.getModelId();for(let e=0;e{"use strict";i.r(t),i.d(t,{GeomMergeTask:()=>r,writeIdToBuffer:()=>s});var n=1;function r(){this.vb=null,this.vbstride=0,this.posOffset=0,this.normalOffset=0,this.matrices=null,this.ranges=null,this.dbIds=null,this.id=n++}function o(e){e.x=.5*(1+Math.atan2(e.y,e.x)/Math.PI),e.y=.5*(1+e.z),e.z=0}function s(e,t,i){t[i++]=255&e,t[i++]=e>>8&255,t[i++]=e>>16&255,t[i]=0}var a=function(e,t,i,n,r,s,a){for(var l,c,h,u,d,f,p,m=e.posOffset,g=n;g{"use strict";i.r(t),i.d(t,{InstanceBufferBuilder:()=>l});var n=i(32431),r=i(1433),o=i(77201),s=i(83081),a=i(72091);function l(e,t){const i=(0,o.createBufferGeometry)(!0);i.ib=e.ib,i.vb=e.vb,i.iblines=e.iblines,(0,n.copyVertexFormat)(e,i),(0,n.copyPrimitiveProps)(e,i);this.offsets=new Float32Array(3*t),this.rotations=new Float32Array(4*t),this.scalings=new Float32Array(3*t),this.ids=new Uint8Array(3*t);var l=new a.Vector3,c=new a.Quaternion,h=new a.Vector3,u=new a.Matrix4,d=0,f=t;this.addInstance=function(e,t){return d>=f?(s.logger.warn("Instance buffer is already full."),!1):(e.decompose(l,c,h),!!function(e,t,i,n){u.compose(t,i,n);for(var r=e.elements,o=u.elements,s=0;s<16;s++){var a=r[s],l=o[s];if(Math.abs(l-a)>1e-4*Math.max(1,Math.min(Math.abs(a),Math.abs(l))))return!1}return!0}(e,l,c,h)&&(this.offsets[3*d]=l.x,this.offsets[3*d+1]=l.y,this.offsets[3*d+2]=l.z,this.rotations[4*d]=c.x,this.rotations[4*d+1]=c.y,this.rotations[4*d+2]=c.z,this.rotations[4*d+3]=c.w,this.scalings[3*d]=h.x,this.scalings[3*d+1]=h.y,this.scalings[3*d+2]=h.z,(0,r.writeIdToBuffer)(t,this.ids,3*d),d++,!0))},this.finish=function(){if(0==d)return null;let e,t,n,r;return d{"use strict";i.r(t),i.d(t,{ModelIteratorTexQuad:()=>w,TexQuadConfig:()=>A});var n=i(55280),r=i(76731),o=i(71082),s=i(37365),a=i(72091);function l(){this.offsetX=0,this.offsetY=0,this.scaleX=1,this.scaleY=1}function c(){var e=[],t=0;const i=new l;function n(e,t){var n=t||i;const r=[n.offsetX,n.offsetY,n.offsetX+n.scaleX,n.offsetY,n.offsetX+n.scaleX,n.offsetY+n.scaleY,n.offsetX,n.offsetY+n.scaleY],o=e.getAttribute("uv");if(o){for(let e=0;e0&&"number"==typeof this.tileSize&&this.tileSize>0&&"number"==typeof this.maxLevel&&this.maxLevel>0&&"number"==typeof this.texWidth&&this.texWidth>0&&"number"==typeof this.texHeight&&this.texHeight>0},this.initForSimpleImage=function(e){this.urlPattern=decodeURIComponent(e),this.maxLevel=0,this.levelOffset=0,this.scale=1,this.tileSize=-1,this.texWidth=-1,this.texHeight=-1,this.isSimpleImage=!0},this.isLevelPresent=function(e){return!this.skippedLevels[e]},this.initFromLoadOptions=function(e,t,i,n){if(this.urlPattern=decodeURIComponent(e),this.textureLoader=i,this.options=n,t){this.tileSize=t.tileSize,this.maxLevel=(r=t.texWidth,o=t.texHeight,s=t.tileSize,a=Math.ceil(Math.log2(r)),l=Math.ceil(Math.log2(o)),Math.max(a,l)-Math.log2(s)),this.texWidth=t.texWidth,this.texHeight=t.texHeight,this.levelOffset=t.levelOffset,this.zips=t.zips;const e=!(!t.paperWidth||!t.paperHeight);this.fitPaperSize=t.fitPaperSize&&e,this.paperHeight=t.paperHeight,this.scale=this.fitPaperSize?t.paperWidth*this.getRootTileSize()/this.texWidth:1,this.skippedLevels=function(e){var t=[];if(e.zips){i=(i=(i=(i=e.urlPattern.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")).replace(/\\{x\\}/,"[0-9]+")).replace(/\\{y\\}/,"[0-9]+")).replace(/\\{z\\}/,"([0-9]+)");var i=new RegExp("^"+i+"$");t.length=e.maxLevel+1,t.fill(!0);var n=0;e.zips.forEach((function(r){Object.keys(r.fileTable).forEach((function(r){var o=i.exec(r);if(o&&o[1]){var s=parseInt(o[1])-e.levelOffset;s>=0&&s<=e.maxLevel&&(t[s]=!1,++n)}}))})),0===n&&(t.length=0,h.logger.info("No leaflet levels found - assume all are present"))}return t}(this),"number"==typeof t.maxLevel&&function(e,t,i){for(;i>0&&e.skippedLevels[i];)--i;var n=t-i;n>0&&(e.texWidth>>=n,e.texHeight>>=n,e.maxLevel=i)}(this,this.maxLevel,t.maxLevel),this.maxActiveTiles=t.maxActiveTiles||this.maxActiveTiles,this.cacheSize=t.cacheSize||this.cacheSize}else this.options&&(this.options.loadOptions={});var r,o,s,a,l}}function w(e,t){this.isModelIteratorTexQuad=!0;var i=e,n=1,s=e.getBBox(),h=[];let f=null,p=null;const m=new a.Matrix4,g=new a.Matrix4,v=new a.Matrix4,A=new a.Vector3,w=new a.Quaternion,T=new a.Vector3,M=new Autodesk.Viewing.Private.FrustumIntersector;let C,P=1,D=1;const L=new a.Vector4(0,0,0,0),I=(new a.Vector4).copy(L);let R=0;var O=t,N=null,F=!1,U=!1,B=!1,k=new a.Color,V=[],G=[],z=[];this.registerView=function(){var e=h.indexOf(void 0);-1===e&&(e=h.length);var t=new a.Scene;return t.ignoreFadeMaterial=!0,i.placementTransform&&t.matrix.copy(i.placementTransform),t.matrixAutoUpdate=!1,h[e]=t,z[e]=0,V[e]=!0,e},this.registerView();var H=0,W=0,j=!1,q=[],X=null,Y=!1,K=new c;function Q(e){var t=i.maxLevel-e;return i.texWidth>>t}function Z(e){var t=i.maxLevel-e;return i.texHeight>>t}function $(e){var t=Q(e.level),n=Z(e.level),r=e.x*i.tileSize,o=e.y*i.tileSize;return r>=t||o>=n}function J(e){var t=Q(e.level),n=Z(e.level),r=e.x*i.tileSize,o=e.y*i.tileSize,s=Math.max(0,Math.min(i.tileSize,t-r)),l=Math.max(0,Math.min(i.tileSize,n-o)),c=1*i.tileSize;return new a.Vector2(s/c,l/c)}function ee(e){return i.scale/(1<0&&(r=!1),r)break;i=i.getParent()}return i}(e);t=ce(o).material;var s=function(e,t){var i=1<0}),ge=function(){var e=new a.Vector3,t=new a.Vector3;return function(i,n,r){var o=ee(i.level);he(i,e),ue(i,t);var s=u.SceneMath.pointToMinMaxBoxDistance2(r,e,t);return(me(i,n)?100:1)*(o*o)/(s=Math.max(s,1e-4))}}(),ve=function(){const e=new a.Vector3,t=new a.Vector3;return function(n,r,o){he(n,e),ue(n,t);const s=Math.abs(function(e,t,i,n){var r=e.clone();return r.max(i),r.min(n),r.sub(e).dot(t)}(r.position,o,e,t)),a=i.getPixelRatio(),l=r.pixelsPerUnitAtDistance(s)*a;return(t.y-e.y)*l}}();function ye(e,t){this.tile=e,this.prio=t}function be(e,t){return e.prio>t.prio}function xe(e,t){var i=G[(0,r.tile2Index)(e)];i&&i.timeStamps[t]!==z[t]&&(i.timeStamps[t]=z[t],H++)}function _e(e,t,i){e.sort((function(e,n){var r=ge(e,t,i);return ge(n,t,i)-r}));for(var n=0,r=0;r=5)break;le(e[r]),n++}}return n}function Ee(e){if(e&&e.mesh&&e.mesh.material){var t=e.mesh.material;O.removeMaterial(t.name),t.map.dispose(),t.map.needsUpdate=!0;t.dispatchEvent({type:"dispose"}),t.needsUpdate=!0}}function Se(e){for(var t=0;t0,l=h[n];var c,u;for(({camera:t,frustum:e}=function(e,t,i){const n=e.matrixWorld;if(f?n.multiplyMatrices(f,e.matrix):n.copy(e.matrix),n.equals(v))P=1,D=1;else{n.decompose(A,w,T),m.makeRotationFromQuaternion(w),m.setPosition(A),P=T.x,D=T.y,C=i.clone(C),g.copy(m).invert(),C.transformCurrentView(g),C.updateCameraMatrices();const e=t.cutPlanes,r=t.areaCullThreshold;(t=M).areaCullThreshold=r,t.reset(C,e),i=C}return{camera:i,frustum:t}}(l,e,t)),c=0;c0;){if(u=d.get(0).tile,d.removeAt(0),$(u))continue;var L=!0;u.level===i.maxLevel&&(L=!1);ve(u,t,b)i.maxActiveTiles&&(L=!1),L)for(let i=0;i<4;i++){const n=u.getChild(i);y=ge(n,e,t.position),d.add(new ye(n,y))}else I?x.push(u):E.push(u)}var R=0;j=!1;var O=!0;for(c=0;c=i.maxActiveTiles);c++)if(re(u=E[c]))for(let e=0;e<=u.level;e++){if(xe(u.getParentAtLevel(e),n),H>i.maxActiveTiles)break}else U.push(u),H++;if(F+=_e(U,e,t.position),Y){for(U=[],c=0;c0){var B=q.splice(0,q.length);setTimeout((function(){for(var e=0;e0&&!h[t-1];)t--;h.length=t,z.length=t,V.length=t},this._updateMaterialVisibility=function(e){!e.defines.GHOSTED^!U&&(U?e.defines.GHOSTED=1:delete e.defines.GHOSTED,e.needsUpdate=!0)},this.setVisibility=function(e){U=!e,O.forEachInModel(R,!1,(e=>{this._updateMaterialVisibility(e)}))},this._updateMaterialSelection=function(e){e.uniforms.selectionColor.value.set(k.r,k.g,k.b,B?.6:0)},this.highlightSelection=function(e){B=e,k=arguments.length>1&&void 0!==arguments[1]?arguments[1]:k,O.forEachInModel(R,!1,(e=>{this._updateMaterialSelection(e)}))}}},76731:(e,t,i)=>{"use strict";function n(e,t,i){this.level=e,this.x=t,this.y=i}function r(e){var t=((1<<2*e.level)-1)/3,i=1<n,index2Tile:()=>o,tile2Index:()=>r}),n.prototype={constructor:n,copy:function(){return new n(this.level,this.x,this.y)},isValid:function(){return Number.isInteger(this.level)&&this.level>=0&&Number.isInteger(this.x)&&Number.isInteger(this.y)},getChild:function(e){var t=1&e?1:0,i=2&e?1:0;return new n(this.level+1,2*this.x+t,2*this.y+i)},getParent:function(){return 0===this.level?null:new n(this.level-1,Math.floor(this.x/2),Math.floor(this.y/2))},getParentAtLevel:function(e){if(e<0||e>this.level)return null;var t=this.level-e;return new n(e,Math.floor(this.x>>t),Math.floor(this.y>>t))},toString:function(){return"("+this.level+", "+this.x+", "+this.y+")"},equals:function(e,t,i){return e instanceof n?this.equals(e.level,e.x,e.y):this.level===e&&this.x===t&&this.y===i}}},44745:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Renderer:()=>xt});const n=67108864,r=16777216,o=33554432;let s=1;function a(e){this.starts=new Map,this.ends=new Map,this.freeSize=0,this.addFreeBlock(0,e)}a.prototype.addFreeBlock=function(e,t){let i=e,n=e+t;this.freeSize+=t;let r=this.starts.get(n);void 0!==r&&(this.starts.delete(n),n=r);let o=this.ends.get(i);void 0!==o&&(this.ends.delete(i),i=o),this.starts.set(i,n),this.ends.set(n,i)},a.prototype.findBlock=function(e){let t,i;for(const[n,r]of this.starts)if(r-n>=e){t=n,i=r;break}if(void 0===t)return;this.freeSize-=e;let n=t+e;return this.starts.delete(t),n===i?this.ends.delete(i):(this.starts.set(n,i),this.ends.set(i,n)),t},a.prototype.getFreeSize=function(){return this.freeSize};class l{#Ze={};#$e=[];#Je=[];#et;constructor(e){this.#et=e}vAlloc(e,t){let i,r,o=this.#Ze[t];if(o)for(let t=o.length-1;t>=0;t--)if(r=o[t].heap.findBlock(e),void 0!==r){i=o[t];break}if(void 0===r){i={buffer:this.#et.createBuffer({size:n,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!1}),heap:new a(n),id:s++},this.#Ze[t]?this.#Ze[t].push(i):this.#Ze[t]=[i],r=i.heap.findBlock(e)}return[i,r/t]}iAlloc(e){let t,i;for(let n=this.#$e.length-1;n>=0;n--)if(i=this.#$e[n].heap.findBlock(e),void 0!==i){t=this.#$e[n];break}if(void 0===i){t={buffer:this.#et.createBuffer({size:r,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!1}),heap:new a(r),id:s++},this.#$e.push(t),i=t.heap.findBlock(e)}return[t,i]}mAlloc(e){let t,i;for(let n=this.#Je.length-1;n>=0;n--)if(i=this.#Je[n].heap.findBlock(e),void 0!==i){t=this.#Je[n];break}if(void 0===i){t={buffer:this.#et.createBuffer({size:o,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),stride:e,heap:new a(o),id:s++},this.#Je.push(t),i=t.heap.findBlock(e)}return[t,i]}gFree(e){e.__gpuvb&&(e.__gpuvb.heap.addFreeBlock(e.__gpuvbBaseVertex*e.vbstride*4,e.__gpuvbSize),e.__gpuvb=void 0),e.__gpuib&&(e.__gpuib.heap.addFreeBlock(e.__gpuibBaseIndex<e.ib.buffer.byteLength){console.log("OUT OF BOUNDS FIX",a.offset,o);let t=new Uint16Array(new ArrayBuffer(o));t.set(e.ib),this.#et.queue.writeBuffer(a.buffer,l,t.buffer,0,o)}else this.#et.queue.writeBuffer(a.buffer,l,e.ib.buffer,e.ib.byteOffset,o);e.iblines&&this.#et.queue.writeBuffer(a.buffer,l+o,e.iblines.buffer,e.iblines.byteOffset,s),e.__gpuib=a,e.ib instanceof Uint16Array?(e.__gpuibType="uint16",e.__gpuibShift=1,e.iblines&&(e.__gpuibLinesOffset=o/2)):e.ib instanceof Uint32Array?(e.__gpuibType="uint32",e.__gpuibShift=2,e.iblines&&(e.__gpuibLinesOffset=o/4)):console.warn("unknown index buffer type"),e.__gpuibBaseIndex=l>>e.__gpuibShift,e.__gpuibSize=o+s,e.vbNeedsUpdate=!1,e.addEventListener("dispose",this.#ot)}draw(e,t,i){t.__gpuvb&&!t.vbNeedsUpdate||this.initVB(t);const n=t.__gpuvb,r=t.__gpuib;this.#nt!==e?(e.setVertexBuffer(0,n.buffer),this.#tt=n.buffer,e.setIndexBuffer(r.buffer,t.__gpuibType),this.#it=r.buffer,this.#nt=e):(n.buffer!==this.#tt&&(e.setVertexBuffer(0,n.buffer),this.#tt=n.buffer),r.buffer!==this.#it&&(e.setIndexBuffer(r.buffer,t.__gpuibType),this.#it=r.buffer)),e.drawIndexed(t.ib.length,1,t.__gpuibBaseIndex,t.__gpuvbBaseVertex,i)}drawEdges(e,t,i){if(!t.iblines)return;t.__gpuvb||this.initVB(t);const n=t.__gpuvb,r=t.__gpuib;this.#nt!==e?(e.setVertexBuffer(0,n.buffer),this.#tt=n.buffer,e.setIndexBuffer(r.buffer,t.__gpuibType),this.#it=r.buffer,this.#nt=e):(n.buffer!==this.#tt&&(e.setVertexBuffer(0,n.buffer),this.#tt=n.buffer),r.buffer!==this.#it&&(e.setIndexBuffer(r.buffer,t.__gpuibType),this.#it=r.buffer));let o=t.__gpuibBaseIndex+t.__gpuibLinesOffset;e.drawIndexed(t.iblines.length,1,o,t.__gpuvbBaseVertex,i)}}var h=i(43851);const u="//See documentation in Fxaa3_11.h\n//This shader uses the CONSOLE PC version of the algorithm, adapted for WebGPU.\n//We use Luma encoded into the alpha channel from the previous rendering pass\n//Since WGSL doesn't currently allow texture reads from non-uniform code paths,\n//a small adaptation is necessary to avoid the early out\n\ndiagnostic(off, derivative_uniformity);\n\n@group(0) @binding(0) var tex: texture_2d;\n@group(0) @binding(1) var smpl: sampler;\n\n@id(0) override invWidth = (1.0/1024.0);\n@id(1) override invHeight = (1.0/1024.0);\n\nfn FxaaTexTop(p: vec2f) -> vec4f {\n\treturn textureSample(tex, smpl, p);\n}\n\n/*============================================================================\n\n\t\t\t\t\t\t FXAA3 CONSOLE - PC VERSION\n\n------------------------------------------------------------------------------\nInstead of using this on PC, I'd suggest just using FXAA Quality with\n\t#define FXAA_QUALITY__PRESET 10\nOr\n\t#define FXAA_QUALITY__PRESET 20\nEither are higher qualilty and almost as fast as this on modern PC GPUs.\n============================================================================*/\n\nconst fxaaConsoleEdgeThresholdMin = 0.05;\nconst fxaaConsoleEdgeThreshold = 0.125;\nconst fxaaConsoleEdgeSharpness = 8.0;\nconst fxaaConsoleRcpFrameOpt = 0.33; //0.33 (sharper) or 0.5 (default) // This affects sub-pixel AA quality and inversely sharpness.\nconst fxaaConsoleRcpFrameOpt2 = 2.0;\n\n/*--------------------------------------------------------------------------*/\n@fragment fn FxaaPixelShader(\n\t@builtin(position) coord : vec4f,\n\t@location(0) @interpolate(linear) pos: vec2f\n) -> @location(0) vec4f {\n\n\tvar invDim = vec2f(invWidth, invHeight);\n\n/*--------------------------------------------------------------------------*/\n\t//Luma encoded in alpha component of input texture\n\tvar lumaNw = (textureSample(tex, smpl, pos, vec2i(-1,-1))).w;\n\tvar lumaSw = (textureSample(tex, smpl, pos, vec2i(-1, 1))).w;\n\tvar lumaNe = (textureSample(tex, smpl, pos, vec2i( 1,-1))).w;\n\tvar lumaSe = (textureSample(tex, smpl, pos, vec2i( 1, 1))).w;\n/*--------------------------------------------------------------------------*/\n\tvar rgbyM = FxaaTexTop(pos);\n\tvar lumaM = rgbyM.w;\n/*--------------------------------------------------------------------------*/\n\tvar lumaMaxNwSw = max(lumaNw, lumaSw);\n\tlumaNe += 1.0/384.0;\n\tvar lumaMinNwSw = min(lumaNw, lumaSw);\n/*--------------------------------------------------------------------------*/\n\tvar lumaMaxNeSe = max(lumaNe, lumaSe);\n\tvar lumaMinNeSe = min(lumaNe, lumaSe);\n/*--------------------------------------------------------------------------*/\n\tvar lumaMax = max(lumaMaxNeSe, lumaMaxNwSw);\n\tvar lumaMin = min(lumaMinNeSe, lumaMinNwSw);\n/*--------------------------------------------------------------------------*/\n\tvar lumaMaxScaled = lumaMax * fxaaConsoleEdgeThreshold;\n/*--------------------------------------------------------------------------*/\n\tvar lumaMinM = min(lumaMin, lumaM);\n\tvar lumaMaxScaledClamped = max(fxaaConsoleEdgeThresholdMin, lumaMaxScaled);\n\tvar lumaMaxM = max(lumaMax, lumaM);\n\tvar dirSwMinusNe = lumaSw - lumaNe;\n\tvar lumaMaxSubMinM = lumaMaxM - lumaMinM;\n\tvar dirSeMinusNw = lumaSe - lumaNw;\n\tvar earlyOut = 0.0;\n\tif(lumaMaxSubMinM < lumaMaxScaledClamped) {\n\t\treturn vec4f(rgbyM.xyz, 1.0);\n\t}\n/*--------------------------------------------------------------------------*/\n\tvar dir: vec2f;\n\tdir.x = dirSwMinusNe + dirSeMinusNw;\n\tdir.y = dirSwMinusNe - dirSeMinusNw;\n/*--------------------------------------------------------------------------*/\n\tvar dir1 = normalize(dir.xy);\n\tvar rcpFrameOpt = fxaaConsoleRcpFrameOpt * invDim;\n\tvar rgbyN1 = FxaaTexTop(pos - dir1 * rcpFrameOpt);\n\tvar rgbyP1 = FxaaTexTop(pos + dir1 * rcpFrameOpt);\n/*--------------------------------------------------------------------------*/\n\tvar dirAbsMinTimesC = min(abs(dir1.x), abs(dir1.y)) * fxaaConsoleEdgeSharpness;\n\tvar dir2 = clamp(dir1.xy / dirAbsMinTimesC, vec2f(-2.0), vec2f(2.0));\n/*--------------------------------------------------------------------------*/\n\tvar rcpFrameOpt2 = fxaaConsoleRcpFrameOpt2 * invDim;\n\tvar rgbyN2 = FxaaTexTop(pos - dir2 * rcpFrameOpt2);\n\tvar rgbyP2 = FxaaTexTop(pos + dir2 * rcpFrameOpt2);\n/*--------------------------------------------------------------------------*/\n\tvar rgbyA = rgbyN1 + rgbyP1;\n\tvar rgbyB = ((rgbyN2 + rgbyP2) * 0.25) + (rgbyA * 0.25);\n/*--------------------------------------------------------------------------*/\n\tvar twoTap = (rgbyB.w < lumaMin) || (rgbyB.w > lumaMax);\n\tif(twoTap) {\n\t\treturn vec4f(rgbyA.xyz * 0.5, 1.0);\n\t} else {\n\t\treturn vec4f(rgbyB.xyz, 1.0);\n\t}\n}\n/*==========================================================================*/\n\n";var d=i(29251),f=i(19698);const p="struct BlendUniforms {\n highlightColor: vec4f, //0\n selectionColor: vec4f, //4\n\n objectId: i32, //8\n modelId: i32, //9\n glowFlagInt: i32, //10\n glowCompFunc: i32, //11\n highlightIntensity: f32, //12\n useAO: i32, //13\n encodeLuma: i32, //14\n aoBias: f32, //15\n edgeObjectId: i32, //16\n edgeModelId: i32, //17\n useOverlay: i32 //18 //TODO: combine with useAO into single bitmask uniform\n\n //Enable these if the forward pass renders in HDR-linear target and the Blend shader is doing the tone mapping\n //exposureBias: f32,\n //toneMapMethod: i32,\n}\n@group($0) @binding(0) var u : BlendUniforms;\n";class m extends f.D{constructor(){super(null,32,!0,!1)}init(e){this.setDevice(e)}setAOEnabled(e){this.setInt(13,e?1:0)}setFXAAEnabled(e){let t=e?1:0;this.setInt(14,t)}setHighlightObjectId(e){this.setInt(8,e)}setHighlightModelId(e){this.setInt(9,e)}setHighlightIntensity(e){this.setFloat(12,e)}getHighlightIntensity(){return this.getFloat(12)}setRolloverHighlightColor(e){this.setColor(0,e,1)}setEdgeHighlightObjectId(e,t){this.setInt(16,e),this.setInt(17,t)}setGlowFlag(e){this.setInt(10,e)}setGlowOptions(e,t){this.setInt(11,t)}setAOBias(e){this.setFloat(15,e)}setSelectionColor(e){this.setColor(4,e,1)}setUseOverlay(e){this.setInt(18,e?1:0)}}const g="//post-gamma luminance\nfn luminance_post(rgb: vec3f) -> f32 {\n\treturn dot(rgb, vec3f(0.299, 0.587, 0.114));\n}\n\n//pre-gamma luminance\nfn luminance_pre(rgb: vec3f) -> f32 {\n\treturn dot(rgb, vec3f(0.212671, 0.715160, 0.072169));\n}\n\n\nfn xyz2rgb(xyz: vec3f) -> vec3f {\n\t//XYZ -> RGB conversion matrix using HDTV constants\n\tvar R = vec3f( 3.240479, -1.537150, -0.498535);\n\tvar G = vec3f(-0.969256, 1.875992, 0.041556);\n\tvar B = vec3f( 0.055648, -0.204043, 1.057311);\n\n\tvar rgb: vec3f;\n\trgb.b = dot(xyz, B);\n\trgb.g = dot(xyz, G);\n\trgb.r = dot(xyz, R);\n\n\treturn rgb;\n}\n\nfn rgb2xyz(rgb: vec3f) -> vec3f {\n\t//RGB -> XYZ conversion matrix using HDTV constants\n\tvar X = vec3f(0.412453, 0.35758, 0.180423);\n\tvar Y = vec3f(0.212671, 0.71516, 0.0721688);\n\tvar Z = vec3f(0.0193338, 0.119194, 0.950227);\n\n\tvar xyz: vec3f;\n\txyz.x = dot(rgb, X);\n\txyz.y = dot(rgb, Y);\n\txyz.z = dot(rgb, Z);\n\n\treturn xyz;\n}\n\nfn xyz2xyY(xyz: vec3f) -> vec3f {\n\tvar sum = xyz.x + xyz.y + xyz.z;\n\n\t//Note in case of division by 0, the hardware\n\t//should output zero for sum, so we are still ok with the result\n\tsum = 1.0 / sum;\n\n\tvar xyY: vec3f;\n\txyY.z = xyz.y;\n\txyY.x = xyz.x * sum;\n\txyY.y = xyz.y * sum;\n\n\treturn xyY;\n}\n\nfn xyY2xyz(xyY: vec3f) -> vec3f {\n\tvar x = xyY.x;\n\tvar y = xyY.y;\n\tvar Y = xyY.z;\n\n\tvar xyz: vec3f;\n\txyz.y = Y;\n\txyz.x = x * (Y / y);\n\txyz.z = (1.0 - x - y) * (Y / y);\n\n\treturn xyz;\n}\n\n\n\n//OGS/RaaS Cannon tonemappong with ColorPerserving enabled.\nfn toneMapCanon_T(x: f32) -> f32\n{\n\t// this function fits the measured Canon sigmoid *without gamma correction* through 0.0\n\tvar xpow = pow(x, 1.60525727);\n\tvar tmp = ((1.05542877*4.68037409)*xpow) / (4.68037409*xpow + 1.0);\n\treturn clamp(tmp, 0.0, 1.0);\n}\n\n\nconst Shift = 1.0 / 0.18;\n\n//Best fit of John Hable's generalized filmic function parameters to the Canon curve\n//This is a significantly better and cheaper to compute fit than the power and polynomial\n//least squares fits from OGS/RaaS (which have larger max and average error, and also go negative near\n//the origin).\nfn toneMapCanonFilmic_NoGamma(y: f32) -> f32 {\n\n\t//This extra exposure by 1.0/0.18 mimics what is also done in OGS's implementation\n\t//and the curve fit was done with this scale in mind.\n\tvar x = y;\n\tx *= Shift;\n\n\tconst A = 0.2; //shoulder strength\n\tconst B = 0.34; //linear strength\n\tconst C = 0.002; //linear angle\n\tconst D = 1.68; //toe strength\n\tconst E = 0.0005; //toe numerator\n\tconst F = 0.252; //toe denominator (E/F = toe angle)\n\tconst scale = 1.0/0.833837;\n\n\treturn (((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F) * scale;\n}\n\n\n//Same as above but with 2.2 gamma built into the fit and working on the\n//whole RGB triplet at once (i.e. non color preserving version).\nfn toneMapCanonFilmic_WithGamma(y: vec3f) -> vec3f {\n\n\t//This extra exposure by 1.0/0.18 mimics what is also done in OGS's implementation\n\t//and the curve fit was done with this scale in mind.\n\tvar x = y;\n\tx *= Shift;\n\n\t//Best overall error params\n\t/*\n\tconst float A = 0.2;\n\tconst float B = 0.23;\n\tconst float C = 0.147;\n\tconst float D = 0.26;\n\t//const float E = 0.0;\n\tconst float F = 0.22;\n\tconst float scale = 1.0/0.900202;\n\t*/\n\n\t//Best max deviation params\n\tconst A = 0.27;\n\tconst B = 0.29;\n\tconst C = 0.052;\n\tconst D = 0.2;\n\t//const E = 0.0;\n\tconst F = 0.18;\n\tconst scale = 1.0/0.897105;\n\n\treturn (((x*(A*x+C*B))/(x*(A*x+B)+D*F))) * scale;\n}\n\n\nfn toneMapCanonOGS_WithGamma_WithColorPerserving(x: vec3f) -> vec3f {\n\tvar outColor = x.rgb;\n\toutColor = min(outColor, vec3f(3.0));\n\tvar inLum = luminance_pre(outColor);\n\tif (inLum > 0.0) {\n\t\tvar outLum = toneMapCanon_T(inLum);\n\t\toutColor = outColor * (outLum / inLum);\n\t\toutColor = clamp(outColor, vec3f(0.0), vec3f(1.0));\n\t}\n\tconst gamma = 1.0/2.2;\n\toutColor = pow(outColor, vec3f(gamma));\n\treturn outColor;\n}\n",v="\nfn calculateHatchPatternRaw(hatchSlope: f32, hatchPeriod: f32, coord: vec2f ) -> f32 {\n\t//Note that this condition is inverted from the WebGL version, because\n\t//screen coordinates are Y-down in WebGPU, so the slope is inverted\n\tif (abs(hatchSlope) > 1.0) {\n\t\tvar hatchPhase = f32(coord.y - hatchSlope * coord.x);\n\t\tvar dist = abs(hatchPhase % hatchPeriod);\n\t\treturn dist;\n\t} else {\n\t\tvar hatchPhase = - f32(coord.y / hatchSlope + coord.x);\n\t\tvar dist = abs(hatchPhase % hatchPeriod);\n\t\treturn dist;\n\t}\n}\n\nfn calculateHatchPattern(hatchParams: vec2f, coord: vec2f, fragColor: vec4f, hatchTintColor: vec3f, hatchTintIntensity: f32 ) -> vec4f {\n\n\tvar dist = calculateHatchPatternRaw(hatchParams.x, hatchParams.y, coord);\n\tvar outColor: vec4f;\n\n\tif (dist < 1.0) {\n\t\toutColor = vec4f(0.0,0.0,0.0,1.0);\n\t} else {\n\t\toutColor = vec4f(mix(fragColor.xyz, hatchTintColor, hatchTintIntensity), fragColor.a);\n\t}\n\n\treturn outColor;\n}\n",y="@group(0) @binding(0) var tColor: texture_2d;\n@group(0) @binding(1) var tOverlay: texture_2d;\n@group(0) @binding(2) var tID: texture_2d;\n@group(0) @binding(3) var tID2: texture_2d;\n//@group(0) @binding(4) var tID3: texture_2d;\n@group(0) @binding(4) var tAO: texture_2d;\n\n$blendUniforms\n$tonemap\n$hatch\n\nfn toInt(v: vec4u) -> i32 {\n return i32(v.r | (v.g << 8) | (v.b << 16) | (v.a << 24));\n}\n\n// modify rgb by applying rollOver highlighting.\n// filterValue is an additonal multiplier for highlighting intensity. (always 1.0 if no spatial filter is used)\nfn applyHighlighting(inRgb: vec3f) -> vec3f {\n //rgb += highlightColor * filterValue * u.highlightIntensity * 0.20;\n var rgb = inRgb;\n rgb += vec3(1.0,1.0,1.0) * u.highlightIntensity * 0.20;\n return rgb;\n}\n\n//Color key based edge detection for selection set\nfn isSelectionColor(C : vec3f) -> bool {\n\n //Simple check that assumes the blue selection color\n if (C.b >= C.g && C.b >= C.r) {\n return true;\n }\n\n return false;\n/*\n var minS = min(u.selectionColor.r, min(u.selectionColor.g, u.selectionColor.b));\n var maxS = max(u.selectionColor.r, max(u.selectionColor.g, u.selectionColor.b));\n var satS = maxS - minS;\n var minC = min(C.r, min(C.g, C.b));\n var maxC = max(C.r, max(C.g, C.b));\n var satC = maxC - minC;\n // If one color has low saturation, they only match if both have low saturation.\n if (satC < .01 || satS < .01) {\n return false;\n }\n\n // Now compare the hue. We don't convert to a numeric hue, just\n // the vector representation.\n var S = (u.selectionColor.rgb - minS) / satS;\n var H = (C - minC) / satC;\n var D = H - S;\n var eps = .15;\n // We want to match the hue of selectionColor and C, but if the max component of C is\n // 1, then it may have been clamped which will change the hue. In this case the\n // middle colors should be higher than we expect, so we just make sure that\n // all of C's components are larger than selectionColor's.\n return (abs(D.r) + abs(D.g) + abs(D.b) < eps)\n || (maxC >= (1.0 - eps) && D.r >= -eps && D.g >= -eps && D.b >= -eps);\n */\n}\n\nfn sampleTargetSS(coord: vec2i, offset: vec2i) -> vec4f {\n return textureLoad(tOverlay, coord + offset, 0);\n}\n\nstruct SumNeighbors {\n hasEdge: i32,\n selectionPixel: vec4f,\n maxAlpha: f32\n}\nvar sum: SumNeighbors;\n\nfn checkEdgeSelection(ssCoord: vec2i, offX: i32, offY: i32) {\n var c = sampleTargetSS( ssCoord, vec2i(offX, offY));\n sum.maxAlpha = max(sum.maxAlpha, c.a);\n if (c.a <= 0.0) {\n sum.hasEdge++;\n }\n}\n\n// search neighbors to detect change in pixel coverage\n// the current pixel is outline if is selection && has empty neighbors\nfn overlayEdgeDetect(ssCoord: vec2i) -> vec4f {\n\n //Note that the sampled color here has pre-multiplied alpha,\n //but we don't need to correct for that with the current isSelectionColor check\n var center = sampleTargetSS(ssCoord, vec2i(0));\n var paintOutline = false;\n\n if (center.a > 0.0 && isSelectionColor(center.rgb)) {\n checkEdgeSelection(ssCoord, -1,-1);\n checkEdgeSelection(ssCoord, 0,-1);\n checkEdgeSelection(ssCoord, 1,-1);\n\n checkEdgeSelection(ssCoord, -1, 0);\n checkEdgeSelection(ssCoord, 1, 0);\n\n checkEdgeSelection(ssCoord, -1, 1);\n checkEdgeSelection(ssCoord, 0, 1);\n checkEdgeSelection(ssCoord, 1, 1);\n\n checkEdgeSelection(ssCoord, -2,-2);\n checkEdgeSelection(ssCoord, -1,-2);\n checkEdgeSelection(ssCoord, 0,-2);\n checkEdgeSelection(ssCoord, 1,-2);\n checkEdgeSelection(ssCoord, 2,-2);\n\n checkEdgeSelection(ssCoord, -2,2);\n checkEdgeSelection(ssCoord, -1,2);\n checkEdgeSelection(ssCoord, 0,2);\n checkEdgeSelection(ssCoord, 1,2);\n checkEdgeSelection(ssCoord, 2,2);\n\n checkEdgeSelection(ssCoord, -2, -2);\n checkEdgeSelection(ssCoord, -2, -1);\n checkEdgeSelection(ssCoord, -2, 0);\n checkEdgeSelection(ssCoord, -2, 1);\n checkEdgeSelection(ssCoord, -2, 2);\n\n checkEdgeSelection(ssCoord, 2, -2);\n checkEdgeSelection(ssCoord, 2, -1);\n checkEdgeSelection(ssCoord, 2, 0);\n checkEdgeSelection(ssCoord, 2, 1);\n checkEdgeSelection(ssCoord, 2, 2);\n\n if (sum.hasEdge != 0) { // if has empty neighbors\n paintOutline = true;\n } else {\n center.a = -center.a; // special flag marking inside pixel\n }\n }\n\n // calculate outline color\n if (paintOutline) {\n var rgb = mix(sqrt(u.selectionColor.rgb), vec3f(1.0), 0.65);\n var a = 1.0; //make edge fully opaque so it's easier to see\n center = vec4f(rgb, a);\n }\n\n return center;\n}\n\nfn glowComp(c: i32) -> bool {\n if (u.glowCompFunc == 0) {\n return c == u.glowFlagInt;\n } else {\n return (c != -1) && ((c & u.glowFlagInt) != 0);\n }\n}\n\nvar hasEdgeGlow: i32;\n\nfn checkEdgeId(ssCoord: vec2i, offX: i32, offY: i32, W: i32) {\n //See corresponding comment in UberShader. We currently don't have enough room\n //to encode the object flags in a separate render target, so we put half of it\n //in the upper 2 bytes of the modelId render target (tID2). We need to find a solution\n //for the remaining two bytes, or an alternative solution that doesn't require the extra\n //target during the main pass (e.g. lookup into data texture by model/object ID which we already know)\n var c = toInt(textureLoad(tID2, ssCoord + vec2i(offX, offY), 0)) >> 16;\n if (glowComp(c)) {\n hasEdgeGlow += W;\n }\n}\n\nconst glowColor = vec3f(1.0,1.0,0.0);\n\n// search 3x3 neighbors\n// the current pixel is outline if\n// (is selection && has empty neighbor) || (pixel is empty && has selection neighbor)\nfn glowEdgeDetect(ssCoord: vec2i) -> vec4f {\n\n hasEdgeGlow = 0;\n\n var paintOutline = false;\n\n checkEdgeId(ssCoord, -1,-1, 2);\n checkEdgeId(ssCoord, 0,-1, 4);\n checkEdgeId(ssCoord, 1,-1, 2);\n checkEdgeId(ssCoord,-1, 0, 4);\n checkEdgeId(ssCoord, 1, 0, 4);\n checkEdgeId(ssCoord,-1, 1, 2);\n checkEdgeId(ssCoord, 0, 1, 4);\n checkEdgeId(ssCoord, 1, 1, 2);\n\n checkEdgeId(ssCoord, 2, -1, 1);\n checkEdgeId(ssCoord, 2, 0, 1);\n checkEdgeId(ssCoord, 2, 1, 1);\n\n checkEdgeId(ssCoord, -2, -1, 1);\n checkEdgeId(ssCoord, -2, 0, 1);\n checkEdgeId(ssCoord, -2, 1, 1);\n\n checkEdgeId(ssCoord, -1, 2, 1);\n checkEdgeId(ssCoord, 0, 2, 1);\n checkEdgeId(ssCoord, 1, 2, 1);\n\n checkEdgeId(ssCoord, -1, -2, 1);\n checkEdgeId(ssCoord, 0, -2, 1);\n checkEdgeId(ssCoord, 1, -2, 1);\n\n if (hasEdgeGlow != 0) { // if has object neighbors\n paintOutline = true;\n }\n\n // calculate outline color\n if (paintOutline) {\n return vec4f(glowColor.rgb, min(1.0, f32(hasEdgeGlow)/6.0));\n }\n\n return vec4f(0.0);\n}\n\n\n@fragment\nfn main(\n @builtin(position) coord : vec4f,\n @location(0) @interpolate(linear) vUv: vec2f\n) -> @location(0) vec4f {\n\n var pixelCoord = vec2i(floor(coord.xy));\n\n var outColor = textureLoad(tColor, pixelCoord, 0);\n\n if (u.useAO != 0) {\n var ao = textureLoad(tAO, pixelCoord, 0).r;\n outColor = vec4f(sqrt(outColor.rgb * outColor.rgb * min(1.0, ao+ u.aoBias)), outColor.a);\n }\n\n if (u.useOverlay != 0) {\n //composite in the overlays texture\n var overlay = overlayEdgeDetect(pixelCoord);\n\n // Negative alpha signals the inside overlay condition, as above.\n if (overlay.a < 0.0) {\n overlay.a = -overlay.a;\n\n if (overlay.a >= 0.99) {\n //Blend the overlay color with the luminance of the underlying\n //pixel so that we do not lose detail from any underlying texture map\n outColor = vec4f(vec3f(luminance_post(outColor.rgb)), 0.75);\n }\n }\n\n // For 3D, apply some hard-wired gamma correction.\n // Todo: When embedding 2D in 3D scenes, the gamma-correction will alter the 2D colors as well.\n //outColor = vec4f(outColor.rgb * (1.0 - overlay.a) + sqrt(overlay.rgb * overlay.a), outColor.a);\n //WEBGPU: do not gamma the overlay because it's currently using the UberShader that applies tone mapping + gamma in the pixel shader\n //Note we use pre-multiplied blend function here, because that's how our blend function is set up\n //to put pixels into the color targets\n outColor = vec4f(outColor.rgb * (1.0 - overlay.a) + overlay.rgb, outColor.a);\n\n //if (useOverlayAlpha != 0) {\n // In case texel (diffuse color) has 0 alpha, but overlay has something to render, make sure to update the alpha accordingly.\n outColor = vec4f(outColor.rgb, outColor.a + overlay.a * (1.0 - outColor.a));\n //}\n\n //test only\n //outColor = overlay;\n }\n\n //rollover highlighting\n if (u.objectId != 0) {\n var objectId = toInt(textureLoad(tID, pixelCoord, 0));\n var modelId = toInt(textureLoad(tID2, pixelCoord, 0)) & 0xffff;\n\n if (u.objectId == objectId && u.modelId == modelId) {\n outColor = vec4f(applyHighlighting(outColor.rgb), outColor.a);\n }\n }\n\n //glow effect\n if (u.glowFlagInt != 0) {\n\n var flagAtPixel = toInt(textureLoad(tID2, pixelCoord, 0)) >> 16;\n\n if (!glowComp(flagAtPixel)) {\n var outline = glowEdgeDetect(pixelCoord);\n outline.a *= u.highlightIntensity;\n outColor = vec4f(outColor.rgb * (1.0 - outline.a) + outline.rgb * outline.a, outColor.a);\n } else {\n var dist = calculateHatchPatternRaw(1.0, 10.0, coord.xy);\n var intensity : f32;\n if (dist <= 0.5) {\n intensity = 1.0;\n } else {\n intensity = 0.10;\n }\n //float intensity = 0.1;\n outColor = vec4f(mix(outColor.rgb, glowColor, intensity * u.highlightIntensity), outColor.a);\n }\n }\n\n\n //Encode luminance in A for the downstream FXAA pass\n //TODO: make this shader constant\n if (u.encodeLuma == 1) {\n outColor.a = luminance_post(outColor.rgb);\n }\n return outColor;\n}\n";function b(e){let t,i,n,r,o,s,a,l,c=e,f=navigator.gpu.getPreferredCanvasFormat(),b=new m,x=[],_=[];this.init=function(){t=c.getDevice(),b.init(t)},this.getBlendSettings=function(){return b},this.resize=function(e,m){!function(e,i){o||(o=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]})),n=t.createRenderPipeline({layout:t.createPipelineLayout({bindGroupLayouts:[o]}),vertex:{module:t.createShaderModule({code:h}),entryPoint:"mainFlipY"},fragment:{module:t.createShaderModule({code:u}),entryPoint:"FxaaPixelShader",targets:[{format:f}],constants:{0:1/e,1:1/i}},primitive:{topology:"triangle-list",cullMode:"back"}}),l||(l=t.createSampler({magFilter:"linear",minFilter:"linear"}))}(e,m),function(){var e;r||(r=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"uint"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"uint"}},{binding:4,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]})),i||(i=t.createRenderPipeline({layout:t.createPipelineLayout({bindGroupLayouts:[r,b.getLayout()]}),vertex:{module:t.createShaderModule({code:h}),entryPoint:"main"},fragment:{module:t.createShaderModule({code:(0,d.$wgsl)(y,{blendUniforms:(e=1,(0,d.$wgsl)(p,e+0||0)),tonemap:g,hatch:v})}),entryPoint:"main",targets:[{format:f}]},primitive:{topology:"triangle-list",cullMode:"back"}}));let n=c.getRenderTargets().getTargetViewsForBlend().map(((e,t)=>({binding:t,resource:e})));n.push({binding:n.length,resource:c.getSAO().getTargetView()}),a=t.createBindGroup({layout:r,entries:n}),s||(s={colorAttachments:[{view:void 0,clearValue:{r:0,g:0,b:0,a:1},loadOp:"clear",storeOp:"store"}]})}(),function(e,i){for(let e=0;e<2;e++)_[e]=c.getRenderTargets().getPostTarget(e).createView(),x[e]=t.createBindGroup({layout:o,entries:[{binding:0,resource:_[e]},{binding:1,resource:l}]})}()},this.run=function(e,r){b.setFXAAEnabled(r),b.upload();let o=t.createCommandEncoder();if(r){s.colorAttachments[0].view=_[0];let t=o.beginRenderPass(s);t.setPipeline(i),t.setBindGroup(0,a),t.setBindGroup(1,b.getBindGroup()),t.draw(3),t.end(),s.colorAttachments[0].view=e,t=o.beginRenderPass(s),t.setPipeline(n),t.setBindGroup(0,x[0]),t.draw(3),t.end()}else{s.colorAttachments[0].view=e;let t=o.beginRenderPass(s);t.setPipeline(i),t.setBindGroup(0,a),t.setBindGroup(1,b.getBindGroup()),t.draw(3),t.end()}t.queue.submit([o.finish()])}}const x="depth24plus",_={color:{operation:"add",srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha"},alpha:{operation:"add",srcFactor:"one",dstFactor:"one-minus-src-alpha"}};class E{#rt;#et;#st;#at;#lt;#ct;#ht;#ut;#dt;#ft;#pt=[0,0];#mt;#gt;#vt;#yt;#bt=!0;#xt=!1;#_t;#Et;#St;constructor(e){this.#rt=e}init(e){this.#et=this.#rt.getDevice(),this.#mt=navigator.gpu.getPreferredCanvasFormat(),this.#gt=e?"rgba16float":this.#mt}cleanup(){var e,t,i,n,r,o,s;null===(e=this.#at)||void 0===e||e.destroy(),null===(t=this.#st)||void 0===t||t.destroy(),null===(i=this.#ht)||void 0===i||i.destroy(),null===(n=this.#lt)||void 0===n||n.destroy(),null===(r=this.#ct)||void 0===r||r.destroy(),null===(o=this.#ut)||void 0===o||o.forEach((e=>null==e?void 0:e.destroy())),null===(s=this.#dt)||void 0===s||s.forEach((e=>null==e?void 0:e.destroy())),this.#at=null,this.#st=null,this.#ht=null,this.#lt=null,this.#ut=[],this.#dt=[]}resize(e,t){if(this.#_t=null,this.#Et=null,this.#St=null,this.#pt[0]=e,this.#pt[1]=t,this.#yt=null,this.cleanup(),0!==e&&0!==t){this.#st=this.#et.createTexture({size:[e,t],format:this.#gt,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}),this.#ft=this.#st.createView(),this.#at=this.#et.createTexture({size:[e,t],format:x,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.#ht=this.#et.createTexture({size:[e,t],format:this.#mt,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),this.#lt=this.#et.createTexture({size:[e,t],format:"rgb10a2unorm",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),this.#ct=this.#et.createTexture({size:[e,t],format:"rgb10a2unorm",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),this.#ut=new Array(2);for(let i=0;i0&&(s+=256-a);let l=s*n;var c;(!this.#vt||this.#vt.size<2*l)&&(null===(c=this.#vt)||void 0===c||c.destroy(),this.#vt=this.#et.createBuffer({size:2*l,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ}));let h=this.#et.createCommandEncoder();return h.copyTextureToBuffer({texture:this.#ut[0],origin:[e,t]},{buffer:this.#vt,offset:0,bytesPerRow:s},[i,n]),h.copyTextureToBuffer({texture:this.#ut[1],origin:[e,t]},{buffer:this.#vt,offset:l,bytesPerRow:s},[i,n]),this.#et.queue.submit([h.finish()]),this.#vt.mapAsync(GPUMapMode.READ,0).then((()=>{let e=new Uint8Array(this.#vt.getMappedRange());!function(e,t,i,n,r){const o=e[0],s=e[1],a=r*n;for(let e=0;e0&&(i+=256-n);let r=i*t;var o;(!this.#vt||this.#vt.size<2*r)&&(null===(o=this.#vt)||void 0===o||o.destroy(),this.#vt=this.#et.createBuffer({size:2*r,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ}));let s=this.#et.createCommandEncoder();return s.copyTextureToBuffer({texture:this.#ut[0],origin:[0,0]},{buffer:this.#vt,offset:0,bytesPerRow:i},[e,t]),s.copyTextureToBuffer({texture:this.#ut[1],origin:[0,0]},{buffer:this.#vt,offset:r,bytesPerRow:i},[e,t]),this.#et.queue.submit([s.finish()]),this.#vt.mapAsync(GPUMapMode.READ,0).then((()=>{let e=new Uint8Array(this.#vt.getMappedRange());this.#yt||(this.#yt=new Uint8Array(e.byteLength)),this.#yt.set(e),this.#vt.unmap(),this.#bt=!1,this.#xt=!1}))}readIdTargetPixelsSyncOrFail(e,t,i,n,r){var o;function s(){for(let e=0;e0&&(a+=256-l),((e,t,i,n,r,o,s)=>{const a=e[0],l=e[1],c=r*this.#pt[1],h=o||0,u=s||0;for(let e=0;e0&&void 0!==arguments[0]?arguments[0]:0,visibility:arguments.length>1&&void 0!==arguments[1]?arguments[1]:GPUShaderStage.FRAGMENT,texture:{sampleType:arguments.length>2&&void 0!==arguments[2]?arguments[2]:"float"}}}function L(){return{binding:arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,visibility:arguments.length>1&&void 0!==arguments[1]?arguments[1]:GPUShaderStage.FRAGMENT,sampler:{}}}function I(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return(0,d.$wgsl)(P,{bindGroup:e})}const R={NO_UNIFORMS:268435456,TEXTURE_MASK:255,MAP_DIFFUSE:1,MAP_SPECULAR:2,MAP_BUMP:4,MAP_NORMAL:8,MAP_ALPHA:16},O=new Float32Array(9);class N extends f.D{#et;#Pt;#Dt;#Lt;#It;constructor(e,t,i){super(e,40,!0,!1),this.#et=e,this.#Pt=i,this.#Dt=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT|GPUShaderStage.VERTEX,buffer:{}},D(1),L(2),D(3),L(4),D(5),L(6),D(7),L(8)]}),t?(this.#It||(this.#It=new C(e)),this.#Rt(t)):this.#Ot()}#Ot(){let e=this.#Pt.view,t=this.#Pt.sampler;this.#Lt=this.#et.createBindGroup({layout:this.#Dt,entries:[{binding:0,resource:{buffer:this.getBuffer()}},{binding:1,resource:e},{binding:2,resource:t},{binding:3,resource:e},{binding:4,resource:t},{binding:5,resource:e},{binding:6,resource:t},{binding:7,resource:e},{binding:8,resource:t}]})}#Nt(e,t){let i=e.offset,n=e.repeat;if(e.matrix)O.set(e.matrix.elements);else for(let e=0;e<9;e++)O[e]=e%4?0:1;O[6]+=i.x,O[7]+=i.y,O[0]*=n.x,O[3]*=n.x,O[1]*=n.y,O[4]*=n.y,this.setMatrix3x3(t,O)}#Rt(e){let t=0,i=[{binding:0,resource:{buffer:this.getBuffer()}}];const n=(n,r,o)=>{let s,a,l=e[n];l?((0,T.i1)(this.#et,this.#It,l),s=l.__gpuTexture.createView(),a=l.__gpuSampler,t|=r):(s=this.#Pt.view,a=this.#Pt.sampler),i.push({binding:o,resource:s}),i.push({binding:o+1,resource:a})};n("map",R.MAP_DIFFUSE,1),n("specularMap",R.MAP_SPECULAR,3),e.bumpMap?n("bumpMap",R.MAP_BUMP,5):n("normalMap",R.MAP_NORMAL,5),n("alphaMap",R.MAP_ALPHA,7);let r=e.map||e.specularMap;r&&this.#Nt(r,0);let o=e.normalMap||e.bumpMap;o&&this.#Nt(o,12);let s=e.alphaMap;return s&&this.#Nt(s,24),e.bumpMap&&(this.setFloat(36,e.bumpScale),this.setFloat(37,e.bumpScale)),e.normalMap&&(this.setFloat(36,e.normalScale.x),this.setFloat(37,e.normalScale.y)),this.upload(),this.#Lt=this.#et.createBindGroup({layout:this.#Dt,entries:i}),t}getLayout(){return this.#Dt}getBindGroup(){return this.#Lt}}function F(e){let t=0;return e.map&&(t|=R.MAP_DIFFUSE),e.specularMap&&(t|=R.MAP_SPECULAR),e.bumpMap&&(t|=R.MAP_BUMP),e.normalMap&&(t|=R.MAP_NORMAL),e.alphaMap&&(t|=R.MAP_ALPHA),t}function U(e){const t=e.target;t.__gpuMaterialUniforms&&(t.__gpuMaterialUniforms.getBuffer().destroy(),t.__gpuMaterialUniforms=void 0),t.removeEventListener("dispose",U)}let B;const k=512,V=96;function G(e){return(0,d.$wgsl)(A,{bindGroup:e})}function z(e,t,i){return 255*e.r|255*e.g<<8|255*e.b<<16|255*t<<24}function H(e){return 255*e.x|255*e.y<<8|255*e.z<<16|255*e.w<<24}function W(e,t){for(let i=0;ie.start-t.start));for(let e=0;en){if(t<=i+1){const e=this.#jt.fragments.length-r,n=e<=this.#Ut?e:this.#Ut,o=this.#et.createBuffer({size:n*V,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST});this.#Ht.push(o),t++,this.#ui(this.#Gt,i+1,o)}this.#Wt[i++]=r+s,r+=s,o=a,n=this.#Ht[i].size/V}s=o}this.#Wt[i]=r+s}#mi(e,t){if(this.#jt.hasGlobalTransform||16&this.#jt.vizflags[e])this.#jt.getWorldMatrix(e,j),this.#Bt.set(j.elements,this.#li);else{const t=12*e,i=this.#jt.transforms;this.#Bt[this.#li]=i[t],this.#Bt[this.#li+1]=i[t+1],this.#Bt[this.#li+2]=i[t+2],this.#Bt[this.#li+3]=0,this.#Bt[this.#li+4]=i[t+3],this.#Bt[this.#li+5]=i[t+4],this.#Bt[this.#li+6]=i[t+5],this.#Bt[this.#li+7]=0,this.#Bt[this.#li+8]=i[t+6],this.#Bt[this.#li+9]=i[t+7],this.#Bt[this.#li+10]=i[t+8],this.#Bt[this.#li+11]=0,this.#Bt[this.#li+12]=i[t+9],this.#Bt[this.#li+13]=i[t+10],this.#Bt[this.#li+14]=i[t+11],this.#Bt[this.#li+15]=1}const i=this.#jt.fragments.fragId2dbId[e];this.#kt[this.#li+16]=i,this.#kt[this.#li+17]=this.#Gt,this.#kt[this.#li+18]=this.#jt.objectFlagsCB&&this.#jt.objectFlagsCB(i);const n=this.#jt.db2ThemingColor[i];n&&n.w>0?this.#kt[this.#li+19]=H(n):this.#kt[this.#li+19]=0;let r=80;return t&&(this.#Ft.setMaterialReference(this.#li,t),r=V),r}#Jt(e,t){if(this.#gi())return;const i=this.#mi(e,t),n=this.#Xt[e];this.#vi(n,0,i)}#ni(e,t,i){if(this.#gi())return;this.#Ft.setMaterialReference(this.#li,t);const n=this.#Xt[e];this.#vi(n,80,4),i||this.#rt.invalidateRenderBundles(this.#Vt)}#ti(e){if(this.#gi())return;this.#jt.getWorldMatrix(e,j),this.#Bt.set(j.elements,this.#li);const t=this.#Xt[e];this.#vi(t,0,64)}#ai(e,t){if(this.#gi())return;t.w>0?this.#kt[this.#li+19]=H(t):this.#kt[this.#li+19]=0;const i=this.#Xt[e];this.#vi(i,76,4)}updateBatch(e,t){let i,n;this.#li=0;let r=0,o=e;for(let s=e;s0&&this.#vi(o,0,r*V),this.#li=0}#gi(){return!!this.#ci||++this.#hi>1e3&&(this.#ci=!0,this.#oi(),!0)}resetUpdateHeuristic(){this.#hi=0,this.#ci=!1}#vi(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:V;const n=W(this.#Wt,e),r=this.#Ht[n],o=0===n?e:e-this.#Wt[n-1];this.#et.queue.writeBuffer(r,o*V+t,this.#Bt.buffer,t,i)}}class X extends l{#rt;#et;#Ft;#yi=new Float32Array(12288);#bi=new Int32Array(this.#yi.buffer);#Ht=new Map;#xi;#Ut;#Wt=new Map;#_i=new Map;#Ei=new Map;#Si;#Ai;#wi;#Ti;#Mi;#Ci=new Float32Array(8);#Pi=new Int32Array(this.#Ci.buffer);#Di;#Li;#Ii;#Ri=new Float32Array(4);#Oi=new Int32Array(this.#Ri.buffer);#Ni;#Fi;constructor(e){super(e.getDevice()),this.#rt=e,this.#et=this.#rt.getDevice(),this.MAX_BATCH=k,this.OBJECT_STRIDE_32=24;const t=this.#et.limits.maxStorageBufferBindingSize;this.#xi=Math.floor(t/V)*V,this.#Ut=this.#xi/V,this.#Ui(),this.#Di=this.#Bi.bind(this),this.#Li=this.#ki.bind(this)}#Vi(e){return this.#et.createBindGroup({layout:this.#Ni,entries:[{binding:0,resource:{buffer:e}},{binding:1,resource:{buffer:this.#Mi}},{binding:2,resource:{buffer:this.#Ii}}]})}#ui(e,t,i){const n=this.#_i.get(e);n&&(n[t]=this.#Vi(i))}#Ui(){this.#Ft=this.#et.createBuffer({size:49152,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),this.#Ii=this.#et.createBuffer({size:16,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST});const e=this.mAlloc(0);e[0].stride=32,this.#Mi=e[0].buffer,this.#Ni=this.#et.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.#Fi=this.#Vi(this.#Ft)}#Gi(e){let t;if(e.__gpumb)t=e.__gpumbOffset;else{const i=this.mAlloc(32);e.__gpumb=i[0],e.__gpumbOffset=t=i[1];const n=()=>{this.mFree(e),e.removeEventListener("dispose",n)};e.addEventListener("dispose",n)}return t}#zi(e){this.#et.queue.writeBuffer(this.#Mi,e,this.#Ci.buffer,0,this.#Ci.byteLength)}addModel(e){if(this.#Ht.has(e.id))return;const t=e.getFragmentList().fragments.length*V;if(0===t)return;let i=Math.ceil(t/this.#xi);const n=511*(i-1)*V;i*this.#xi2&&void 0!==arguments[2]&&arguments[2];if(i||e.needsUpdate||e.uniformsNeedUpdate){this.#Gi(e);const n=e.opacity<0?1:0,r=e.doNotCut?2:0,o=e.alphaTest>0?4:0,s=e.hatchPattern?8:0;this.#Pi[0]=n|r|o|s|t<<16,e.uniformsNeedUpdate&&(e.__gpuDiffuse=z(e.color,Math.abs(e.opacity)),e.specular?e.__gpuSpecular=z(e.specular,e.reflectivity):e.__gpuSpecular=0,e.uniformsNeedUpdate=!1),this.#Pi[1]=e.__gpuDiffuse,this.#Pi[2]=e.__gpuSpecular,this.#Ci[3]=e.shininess,e.hatchPattern&&(this.#Ci[4]=e.hatchParams.x,this.#Ci[5]=e.hatchParams.y,this.#Ci[6]=e.hatchTintIntensity),this.#Pi[7]=((e.heatmapSensorOffset??0)<<8)+e.heatmapSensorCount??0,this.#zi(e.__gpumbOffset),i||(e.needsUpdate=!1)}}setOneMaterialData2D(e,t){if(e.needsUpdate||e.uniformsNeedUpdate){this.#Gi(e);const i=e.opacity<0?1:0,n=e.doNotCut?2:0,r=e.alphaTest>0?4:0,o=e.hatchPattern?8:0;this.#Pi[0]=i|n|r|o|t<<16,e.uniformsNeedUpdate&&(e.__gpuDiffuse=255*(e.opacity||1)<<24,e.uniformsNeedUpdate=!1),this.#Pi[1]=e.__gpuDiffuse,e.hatchPattern&&(this.#Ci[4]=e.hatchParams.x,this.#Ci[5]=e.hatchParams.y,this.#Ci[6]=e.hatchTintIntensity),this.#zi(e.__gpumbOffset),e.needsUpdate=!1}}setOneObjectData(e,t){let i=24*t;this.#yi.set(e.matrixWorld.elements,i),this.#bi[i+16]=e.dbId,this.#bi[i+17]=e.modelId,this.#bi[i+18]=e.objectFlags||0;const n=e.themingColor;n&&n.w>0?this.#bi[i+19]=H(n):this.#bi[i+19]=0,this.setMaterialReference(i,e.material)}updateBatch(e){var t;const i=e.frags.modelId,n=e.start,r=e.lastItem-n;null===(t=this.#Ei.get(i))||void 0===t||t.updateBatch(n,r)}setEdgeColorInt(e){e!==this.#Oi[0]&&(this.#Oi[0]=e,this.#et.queue.writeBuffer(this.#Ii,0,this.#Ri.buffer,0,this.#Ri.byteLength))}setDoNotCutOverride(e){e!==!!this.#Oi[1]&&(this.#Oi[1]=e,this.#et.queue.writeBuffer(this.#Ii,0,this.#Ri.buffer,0,this.#Ri.byteLength))}getBufferInt(){return this.#bi}getBufferFloat(){return this.#yi}getObjectStride(){return V}writeToQueue(e){let t=e*V;t=t+255&4294967040,this.#et.queue.writeBuffer(this.#Ft,0,this.#yi.buffer,0,t)}resetUpdateHeuristic(e){var t;null===(t=this.#Ei.get(e))||void 0===t||t.resetUpdateHeuristic()}getRenderIndex(e){return e-this.#wi}setBufferLimits(e,t){this.#Wt.set(e,t)}getBindGroup(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(-1!==e){this.MAX_BATCH=1/0;const i=this.#Wt.get(e),n=W(i,t);return e===this.#Si&&n===this.#Ai||(this.#Si=e,this.#Ai=n,this.#wi=0===n?0:i[n-1],this.#Ti=this.#_i.get(e)[n]),this.#Ti}return this.MAX_BATCH=k,this.#Fi}getLayout(){return this.#Ni}}var Y=i(65796);var K=i(12360);const Q=function(e){return(0,d.$wgsl)("const NUM_STOPS = $NUM_HEATMAP_STOPS;\n\n// Interleaving heatmap colors and stops for better alignment\nstruct ColorsAndStops {\n color: vec3f,\n stop: f32\n};\n\nstruct IBLSettings {\n envMapExposure: f32,\n exposureBias: f32,\n tonemapMethod: i32,\n numCutplanes: i32,\n heatmapAlpha: f32,\n pad1: u32,\n pad2: u32,\n pad3: u32,\n colorsAndStops: array\n}\n@group($bindGroupNumber) @binding(0) var ibl : IBLSettings;\n@group($bindGroupNumber) @binding(1) var reflMap: texture_cube;\n@group($bindGroupNumber) @binding(2) var reflSampler: sampler;\n@group($bindGroupNumber) @binding(3) var irrMap: texture_cube;\n@group($bindGroupNumber) @binding(4) var irrSampler: sampler;\n@group($bindGroupNumber) @binding(5) var cutplanes: array; //TODO: could use variable length array of needed\n@group($bindGroupNumber) @binding(6) var heatmapSensors: array;\n\n//TODO: Add lights here if we want to support discrete lights\n\nfn checkCutPlanes(worldPosition: vec3f) {\n for (var i=0; i 0.0) {\n discard;\n }\n }\n}\n",{NUM_HEATMAP_STOPS:5,bindGroupNumber:e})};function Z(e){let t,i=e,n=(0,K.CreateCubeMapFromColors)({x:1,y:1,z:1},{x:1,y:1,z:1}),r=n,o=n;(0,T.rL)(n),(0,T.rL)(r),(0,T.rL)(o);let s,a,l,c,h=1,u=1,d=0,f=new Float32Array(28),p=new Int32Array(f.buffer),m=new Float32Array(24),g=0,v=!1;const y=new Float32Array(20);let b,x,_,E,S,A=!1;this.init=function(){t=i.getDevice(),s=t.createBuffer({size:f.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),c=t.createBuffer({size:m.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),_=t.createBuffer({size:64,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),a=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float",viewDimension:"cube"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float",viewDimension:"cube"}},{binding:4,visibility:GPUShaderStage.FRAGMENT,sampler:{}},{binding:5,visibility:GPUShaderStage.FRAGMENT,buffer:{}},{binding:6,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}}]})},this.setReflectionMap=function(e){e!==r&&(e||=n,(0,T.rL)(e),(0,T.el)(r),r=e,E=!0)},this.setIrradianceMap=function(e){e||=n,(0,T.rL)(e),(0,T.el)(o),o=e,E=!0},this.isComplete=function(){return r&&o},this.setEnvExposure=function(e){const t=Math.pow(2,e);t!==u&&(u=t,S=!0)},this.setExposureBias=function(e){let t=Math.pow(2,e);t!==h&&(h=t,S=!0)},this.setTonemapMethod=function(e){d!==e&&(d=e,S=!0)},this.setEnvRotation=function(e){},this.setCutPlanes=function(e){if(g!==((null==e?void 0:e.length)||0)&&(g=(null==e?void 0:e.length)||0,S=!0),!e)return;e.length>6&&console.warn("too many cut planes");let t=0;for(let i=0;i VertexOutput {\n\n\t\tvar objectUniforms = getObjectUniforms(instance);\n\n\t\tvar output : VertexOutput;\n\t\tvar pos4 = vec4f(in.position.x, in.position.y, in.position.z, 1.0);\n\n\t\tvar mvMatrix = uniforms.viewMatrix * objectUniforms.modelMatrix;\n\t\tvar mvPosition = mvMatrix * pos4;\n\n\t\toutput.Position = uniforms.projectionMatrix * mvPosition;\n\n\t\toutput.vViewPosition = -mvPosition.xyz;\n\t\toutput.vViewNormal = getNormalMatrix(mvMatrix) * decodeNormalInt(in.normal);\n\t\toutput.vWorldPosition = (objectUniforms.modelMatrix * pos4).xyz;\n\n#if $hasTextures\n\t#if $isUVW\n\t\toutput.uvw = textureUniforms.texMatrix * in.uvw;\n\t\toutput.uvwBump = textureUniforms.texMatrixBump * in.uvw;\n\t\toutput.uvwAlpha = textureUniforms.texMatrixAlpha * in.uvw;\n\t#else\n\t\toutput.uv = (textureUniforms.texMatrix * vec3f(in.uv, 1.0)).xy;\n\t\toutput.uvBump = (textureUniforms.texMatrixBump * vec3f(in.uv, 1.0)).xy;\n\t\toutput.uvAlpha = (textureUniforms.texMatrixAlpha * vec3f(in.uv, 1.0)).xy;\n\t#endif\n#else\n\t#if $isUVW\n\t\toutput.uvw = in.uvw;\n\t\toutput.uvwBump = in.uvw;\n\t\toutput.uvwAlpha = in.uvw;\n\t#endif\n#endif\n\t\toutput.instance = instance;\n\t\toutput.depth = mvPosition.z;\n#if $hasVertexColors\n\t\toutput.color = in.color;\n#endif\n\n\t\treturn output;\n\t}\n\n\tstruct PixelOutput {\n\t\t@location(0) color: vec4f,\n\t\t@location(1) normal: vec4f,\n\t\t@location(2) viewDepth: vec4f,\n\t\t@location(3) dbId: vec4u,\n\t\t@location(4) modelId: vec4u,\n\t\t//@location(5) objectFlags: vec4u\n\t}\n\n\n\t//Samples normal map texture (will be treated as either bump map or normal map depending on flags)\n\tfn GET_BUMPMAP(uv: vec2f) -> vec4f {\n\t\t//TODO: this ignores invert and clamp settings, see getMapChunk in WebGLProgram.js for details\n\t\treturn textureSample(mapNormal, smplNormal, uv);\n\t}\n\n\t// Derivative maps - bump mapping unparametrized surfaces by Morten Mikkelsen\n\t// http://mmikkelsen3d.blogspot.sk/2011/07/derivative-maps.html\n\t// Evaluate the derivative of the height w.r.t. screen-space using forward differencing (listing 2)\n\tfn dHdxy_fwd(vUvBump: vec2f) -> vec2f {\n\n\t\tvar dSTdx = dpdx( vUvBump );\n\t\tvar dSTdy = dpdy( vUvBump );\n\n\t\tvar Hll = textureUniforms.normalScale.x * GET_BUMPMAP(vUvBump).x;\n\t\tvar dBx = textureUniforms.normalScale.x * GET_BUMPMAP(vUvBump + dSTdx).x - Hll;\n\t\tvar dBy = textureUniforms.normalScale.x * GET_BUMPMAP(vUvBump + dSTdy).x - Hll;\n\n\t\treturn vec2f( dBx, dBy );\n\t}\n\n\tfn perturbNormalArb( surf_pos: vec3f, surf_norm: vec3f, dHdxy: vec2f ) -> vec3f {\n\n\t\tvar vSigmaX = dpdx( surf_pos );\n\t\tvar vSigmaY = dpdy( surf_pos );\n\t\tvar vN = surf_norm; // normalized\n\n\t\tvar R1 = cross( vSigmaY, vN );\n\t\tvar R2 = cross( vN, vSigmaX );\n\n\t\tvar fDet = dot( vSigmaX, R1 );\n\n\t\tvar vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\n\t}\n\n\t// Per-Pixel Tangent Space Normal Mapping\n\t// http://hacksoflife.blogspot.ch/2009/11/per-pixel-tangent-space-normal-mapping.html\n\tfn perturbNormal2Arb( eye_pos: vec3f, surf_norm: vec3f, vUvBump: vec2f ) -> vec3f {\n\n\t\tvar q0 = dpdx( eye_pos.xyz );\n\t\tvar q1 = dpdy( eye_pos.xyz );\n\t\tvar st0 = dpdx( vUvBump.xy );\n\t\tvar st1 = dpdy( vUvBump.xy );\n\n\t\tvar S = normalize( q0 * st1.y - q1 * st0.y );\n\t\tvar T = normalize( -q0 * st1.x + q1 * st0.x );\n\t\tvar N = normalize( surf_norm );\n\n\t\tvar mapN = GET_BUMPMAP(vUvBump).xyz * 2.0 - 1.0;\n\t\tmapN = vec3f(textureUniforms.normalScale * mapN.xy, mapN.z);\n\t\tvar tsn = mat3x3f( S, T, N );\n\t\treturn normalize( tsn * mapN );\n\t}\n\n\n\tfn toIntVec(v: vec4f) -> vec4u\n\t{\n\t\treturn vec4u(v * 255.0);\n\t}\n\n\tfn Schlick_v3(v: vec3f, cosHV: f32) -> vec3f {\n\t\tvar facing = max(1.0 - cosHV, 0.0);\n\t\treturn v + (1.0 - v) * pow(facing, 5.0);\n\t}\n\n\tfn Schlick_f(v: f32, cosHV: f32) -> f32 {\n\t\tvar facing = max(1.0 - cosHV, 0.0);\n\t\treturn v + ( 1.0 - v ) * pow(facing, 5.0);\n\t}\n\n\tfn InputToLinear(v: vec3f) -> vec3f {\n\t\treturn v*v;\n\t}\n\n\tconst AlphaTest = 0.01;\n\n\t@fragment fn psmain(\n\t\tin: VertexOutput\n\t) -> PixelOutput\n\t{\n#if $hasTextures\n\t#if $isUVW\n\t\tvar vUv = in.uvw.xy;\n\t\tvar vUvBump = in.uvwBump.xy;\n\t\tvar vUvAlpha = in.uvwAlpha.xy;\n\t#else\n\t\tvar vUv = in.uv;\n\t\tvar vUvBump = in.uvBump;\n\t\tvar vUvAlpha = in.uvAlpha;\n\t#endif\n#else\n\tconst vUv = vec2f(0.0,0.0);\n\tconst vUvBump = vec2f(0.0,0.0);\n\tconst vUvAlpha = vec2f(0.0,0.0);\n#endif\n\t\tvar output: PixelOutput;\n\t\tvar objectUniforms = getObjectUniforms(in.instance);\n\t\tvar materialUniforms = getMaterialUniforms(objectUniforms.materialIndex);\n\n\t\t//check doNotCut flag\n\t\tif (commonMaterialUniforms.doNotCutOverride + (materialUniforms.renderFlags & 2) == 0) {\n\t\t\tcheckCutPlanes(in.vWorldPosition);\n\t\t}\n\n\t\tvar normal = normalize(in.vViewNormal);\n\n\t\t//With ortho projection, the view direction needs to be\n\t\t//adjusted so that all view direction rays (for all pixels) are parallel\n\t\t//instead of going from the camera position directly to the vertex like\n\t\t//in perspective. In view space, this is kind of easy -- the view vector is along Z.\n\t\t//TODO: Actually the vViewPosition varying is the position of the camera wrt the vertex\n\t\t//so the naming of the variable can be clarified.\n\t\tvar viewDirection: vec3f;\n\t\tif (uniforms.projectionMatrix[3][3] == 0.0) {\n\t\t\tviewDirection = normalize( in.vViewPosition );\n\t\t} else {\n\t\t\tviewDirection = vec3f(0.0, 0.0, 1.0);\n\t\t}\n\t\tnormal = faceForward(normal, -viewDirection, normal);\n\n\t\tvar geomNormal = normal;\n\n#if $hasTextures\n\t\tif ((materialUniforms.renderFlags & (8 << 16)) != 0) {\n\t\t\tnormal = perturbNormal2Arb( -in.vViewPosition, normal, vUvBump );\n\t\t} else if ((materialUniforms.renderFlags & (4 << 16)) != 0) {\n\t\t\tnormal = perturbNormalArb( -in.vViewPosition, normal, dHdxy_fwd(vUvBump) );\n\t\t}\n#endif\n\n\t\t//TODO: vertex color\n#if $hasVertexColors\n\t\tvar diffuse = vec4f(in.color, 1.0);\n#else\n\t\tvar diffuse = intToVecf(materialUniforms.diffuse);\n\t\tif ((materialUniforms.renderFlags & (1 << 16)) != 0) {\n\t\t\tdiffuse *= textureSample(mapDiffuse, smplDiffuse, vUv);\n\t\t}\n#endif\n\t\tvar outAlpha = diffuse.a;\n\n#if $hasTextures\n\t\tif ((materialUniforms.renderFlags & (16 << 16)) != 0) {\n\t\t\tvar alphaTexel = textureSample(mapAlpha, smplAlpha, vUvAlpha);\n\t\t\toutAlpha *= alphaTexel.r;\n\t\t}\n#endif\n\n\t\t//In the WebGL version, alpha test is a configurable parameter of each material,\n\t\t//However, we don't _really_ need to be that generic\n\t\tif ((materialUniforms.renderFlags & 4) != 0 && outAlpha < AlphaTest) {\n\t\t\tdiscard;\n\t\t}\n\n\t\tvar specularR = intToVecf(materialUniforms.specular);\n\t\tvar reflectivity = specularR.a;\n\t\tvar specular = InputToLinear(specularR.xyz);\n\n\t\t//Diffuse from irradiance map\n\t\tvar worldNormal = getMat3(uniforms.viewInverseEnv) * normal;\n\t\tvar indirectDiffuse = sampleIrradianceMap(worldNormal, irrMap, irrSampler, ibl.envMapExposure);\n\n\t\tvar outColor = InputToLinear(diffuse.xyz) * indirectDiffuse;\n\n\t\t//Reflection map\n\t\tvar reflectVec = reflect( -viewDirection, normal );\n\n\t\treflectVec = getMat3(uniforms.viewInverseEnv) * reflectVec;\n\n\t\t//If the reflection vector points into the ground, we will scale\n\t\t//down the reflection intensity, in order to fake interference with the\n\t\t//ground plane and avoid an eclipse-like light-dark line between the object\n\t\t//and its shadow.\n\t\t//The actual scaling is made up so that it gets very dark near the ground facing faces\n\t\t//float reflectScale = 1.0 - clamp(-reflectVec.y, 0.0, 1.0);\n\t\t//reflectScale *= (reflectScale * reflectScale);\n\t\tvar reflectScale = 1.0;\n\n\t\t//The environment cube map is blurred with the assumption that\n\t\t//max shininess is 2048 and every mip drops that by a factor of 4\n\t\t//float MipmapIndex = log4(shininess / 2048.0) / log4(0.25);\n\t\t//The simplification below was given in the original source for this method.\n\t\t//It uses log base 10. We use log base 2 below, which changes the constant.\n\t\t//float MipmapIndex = max(0.0, -1.66096404744368 * logShiny + 5.5);\n\t\tvar logShiny = log2(max(1.0+1e-10, materialUniforms.shininess));\n\t\tvar reflMipIndex = max(0.0, 5.5 - 0.5 * logShiny);\n\t\t//If we get roughness map support, we'd have to sample the roughness map here to get a mip index.\n\n\t\tvar cubeColor = sampleReflection(reflectVec, reflMap, reflSampler, reflMipIndex, ibl.envMapExposure);\n\n\t\tcubeColor *= reflectScale;\n\n\t\tvar facing = dot( viewDirection, normal );\n\n\t\t//Argh. If facing is very much below the horizon, it's probably\n\t\t//a backwards facing polygon, so turn off Fresnel completely.\n\t\t//Otherwise, if it's just slightly below, it's probably some interpolation\n\t\t//artifact, so we treat it as almost oblique facing.\n\t\t// Bypassing Fresnel when reflectivity is set exactly to 0.0 is intentional and provided\n\t\t// as a way to turn off the effect\n\t\tif (facing < -1e-2 || reflectivity == 0.0) {\n\t\t\tfacing = 1.0;\n\t\t} else {\n\t\t\tfacing = max(1e-6, facing);\n\t\t}\n\n#if $hasTextures\n\t\t//Gratuitous hack to make bump mapped materials less shiny at grazing angles.\n\t\t//This has the effect of reducing the Fresnel effect when bumpScale is large.\n\t\t//Assumption is that large bump scale = very rough surface.\n\t\tif ((materialUniforms.renderFlags & (4 << 16)) != 0) {\n\t\t\tfacing = min(1.0, facing + textureUniforms.normalScale.x * 7.0);\n\t\t}\n#endif\n\n#if $metalMaterial\n\n\t\t//Metals do not generally have Fresnel reflection\n\t\tvar schlickRefl = specular;\n\n#else\n\n\t\t//Nonmetals reflect using Fresnel -- so they reflect a lot at grazing angles\n\t\tvar schlickRefl = Schlick_v3(specular, facing);\n\n\t\t//Seems appropriate to also reduce transparency of the material as\n\t\t//the view angle is more oblique:\n\t\t//BOGUS: The scaling by reflectivity is not physical -- here\n\t\t//we use reflectivity as a scale to make transparent ghosted objects look good\n\t\t//while still retaining some physical Fresnel for glass materials.\n\t\t//For ghosted objects the reflectivity is 0 while for physical glass\n\t\t//it is a non-zero value.\n\t\toutAlpha = mix(outAlpha, Schlick_f(outAlpha, facing), reflectivity);\n\n\t\t//Scale down diffuse in order to keep energy conservation\n\t\t//at grazing angles, where specular takes over. The actual equation is\n\t\t//given here: http://www.cs.utah.edu/~shirley/papers/jgtbrdf.pdf.\n\t\t//For the environment map, N.V and N.R are equal so we can just square the one factor\n\t\t//instead of computing two and multiplying them.\n\t\t//TODO: check further on the exact normalization factors needed.\n\t\t//Also note that we drop a factor of PI (we drop that from the specular light as well,\n\t\t//where we use n/8 instead of n/8pi as normalization).\n\t\tvar invSchlick = pow(1.0 - facing * 0.5, 5.0);\n\n\t\t//If contrast is too high, and RaaS complains, set this factor to 1.\n\t\tvar norm_factor = (28.0 / 23.0) * (1.0 - invSchlick) * (1.0 - invSchlick);\n\n\t\toutColor *= norm_factor * (1.0 - specular);\n#endif\n\n\t\toutColor += cubeColor.xyz * schlickRefl.xyz;\n\n\t\tif (ibl.tonemapMethod == 1) {\n\t\t\toutColor = toneMapCanonOGS_WithGamma_WithColorPerserving(ibl.exposureBias * outColor);\n\t\t} else if (ibl.tonemapMethod == 2) {\n\t\t\toutColor = toneMapCanonFilmic_WithGamma(ibl.exposureBias * outColor);\n\t\t}\n\n\t\toutput.color = vec4f(outColor, outAlpha);\n\n\t\t//Store normal and depth information for SSAO (opaque objects only)\n\t\tvar discardNormal = 1.0;\n\t\tif (outAlpha < 0.9) {\n\t\t\tdiscardNormal = 0.0;\n\t\t}\n\n\t\toutput.normal = vec4f(packNormal10(geomNormal), discardNormal);\n\t\tvar unitDepth = (-in.depth - uniforms.near) / (uniforms.far - uniforms.near);\n\t\toutput.viewDepth = vec4f(packDepth10(unitDepth), discardNormal);\n\n\t\t//Store object identity information\n\t\toutput.dbId = intToVec(objectUniforms.dbId);\n\n\n\t\t//Currently we don't have enough room to bind a third ID render target (32 byte limit on render attachments),\n\t\t//so we stash half of the object flags in the modelId\n\t\t//output.objectFlags = intToVec(objectUniforms.objectFlags);\n\n\t\toutput.modelId = intToVec(objectUniforms.modelId | (objectUniforms.objectFlags << 16));\n\n\t\t//If there is theming color, apply it at the end\n\t\t//If we ever use the uber shader for drawing ghosted objects, which are not subject to theming\n\t\t//we will also need to check the ghosting flag here (materialUniforms.renderFlags & 1)\n\t\t//Currently our ghosting effect is edges only.\n\t\tif (objectUniforms.themeColor != 0) {\n\t\t\tvar themingColor = intToVecf(objectUniforms.themeColor);\n\t\t\toutput.color = mix(output.color, themingColor, themingColor.a);\n\t\t}\n\n\t\t// (See the comment on theming above). If this shader is ever used for ghosted objects,\n\t\t// the heatmap chunk needs to check for that.\n\t\t$heatmap\n\n\t\t// cap mesh hatch pattern\n\t\tif ((materialUniforms.renderFlags & 8) != 0) {\n\t\t\toutput.color = calculateHatchPattern(materialUniforms.hatchParams, in.Position.xy, output.color,\n\t\t\t\thatchTintColor, materialUniforms.hatchTintIntensity);\n\t\t}\n\n\t\treturn output;\n\t}\n",{IBL:Q(0),cameraUniforms:te(1),objectUniforms:G(2),materialUniforms:I(3),pack_normals:"//See http://aras-p.info/texts/CompactNormalStorage.html\n//Currently using the slow and simple approach of mapping 3d normal to two spherical coords.\n//TODO try other, cheaper ways to encode the normal.\n\nconst kPI = 3.14159265358979;\n\nfn encodeNormal (n: vec3f) -> vec2f {\n\treturn (vec2f(atan2(n.y,n.x)/kPI, n.z)+1.0)*0.5;\n}\n\nfn decodeNormal (enc: vec2f) -> vec3f {\n\tvar ang = enc * 2.0 - 1.0;\n\tvar scth = vec2f(sin(ang.x * kPI), cos(ang.x * kPI));\n\t//sincos(ang.x * kPI, scth.x, scth.y);\n\tvar scphi = vec2f(sqrt(1.0 - ang.y * ang.y), ang.y);\n\treturn vec3f(scth.y * scphi.x, scth.x * scphi.x, scphi.y);\n}\n\nfn decodeNormalInt (enc: u32) -> vec3f {\n\tvar xy = vec2f(f32(enc & 0xffff), f32((enc >> 16) & 0xffff)) / 65535.0;\n\treturn decodeNormal(xy);\n}",pack_depth:Y,mat_inverse:"\nfn inverse2(m: mat2x2f) -> mat2x2f {\n\treturn mat2x2f(\n\t\tm[1][1],-m[0][1],\n\t\t-m[1][0], m[0][0]\n\t) * (1.0 / (m[0][0]*m[1][1] - m[0][1]*m[1][0]));\n}\n\nfn inverse3(m: mat3x3f) -> mat3x3f {\n\tvar a00 = m[0][0]; var a01 = m[0][1]; var a02 = m[0][2];\n\tvar a10 = m[1][0]; var a11 = m[1][1]; var a12 = m[1][2];\n\tvar a20 = m[2][0]; var a21 = m[2][1]; var a22 = m[2][2];\n\n\tvar b01 = a22 * a11 - a12 * a21;\n\tvar b11 = -a22 * a10 + a12 * a20;\n\tvar b21 = a21 * a10 - a11 * a20;\n\n\tvar det = a00 * b01 + a01 * b11 + a02 * b21;\n\n\treturn mat3x3f(\n\t\tb01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11),\n\t\tb11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10),\n\t\tb21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)\n\t) * (1.0 / det);\n}\n\nfn inverse4(m: mat4x4f) -> mat4x4f {\n\tvar a00 = m[0][0]; var a01 = m[0][1]; var a02 = m[0][2]; var a03 = m[0][3];\n\tvar a10 = m[1][0]; var a11 = m[1][1]; var a12 = m[1][2]; var a13 = m[1][3];\n\tvar a20 = m[2][0]; var a21 = m[2][1]; var a22 = m[2][2]; var a23 = m[2][3];\n\tvar a30 = m[3][0]; var a31 = m[3][1]; var a32 = m[3][2]; var a33 = m[3][3];\n\n\tvar b00 = a00 * a11 - a01 * a10;\n\tvar b01 = a00 * a12 - a02 * a10;\n\tvar b02 = a00 * a13 - a03 * a10;\n\tvar b03 = a01 * a12 - a02 * a11;\n\tvar b04 = a01 * a13 - a03 * a11;\n\tvar b05 = a02 * a13 - a03 * a12;\n\tvar b06 = a20 * a31 - a21 * a30;\n\tvar b07 = a20 * a32 - a22 * a30;\n\tvar b08 = a20 * a33 - a23 * a30;\n\tvar b09 = a21 * a32 - a22 * a31;\n\tvar b10 = a21 * a33 - a23 * a31;\n\tvar b11 = a22 * a33 - a23 * a32;\n\n\tvar det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n\treturn mat4x4f(\n\t\ta11 * b11 - a12 * b10 + a13 * b09,\n\t\ta02 * b10 - a01 * b11 - a03 * b09,\n\t\ta31 * b05 - a32 * b04 + a33 * b03,\n\t\ta22 * b04 - a21 * b05 - a23 * b03,\n\t\ta12 * b08 - a10 * b11 - a13 * b07,\n\t\ta00 * b11 - a02 * b08 + a03 * b07,\n\t\ta32 * b02 - a30 * b05 - a33 * b01,\n\t\ta20 * b05 - a22 * b02 + a23 * b01,\n\t\ta10 * b10 - a11 * b08 + a13 * b06,\n\t\ta01 * b08 - a00 * b10 - a03 * b06,\n\t\ta30 * b04 - a31 * b02 + a33 * b00,\n\t\ta21 * b02 - a20 * b04 - a23 * b00,\n\t\ta11 * b07 - a10 * b09 - a12 * b06,\n\t\ta00 * b09 - a01 * b07 + a02 * b06,\n\t\ta31 * b01 - a30 * b03 - a32 * b00,\n\t\ta20 * b03 - a21 * b01 + a22 * b00\n\t) * (1.0 / det);\n}\n\nfn getMat3(m: mat4x4f) -> mat3x3f {\n\treturn mat3x3f(\n\t\tm[0].xyz,\n\t\tm[1].xyz,\n\t\tm[2].xyz\n\t);\n}\n\nfn getNormalMatrix(m: mat4x4f) -> mat3x3f\n{\n\tvar nm = getMat3(m);\n\treturn transpose(inverse3(nm));\n}\n",tonemap:g,envMapSample:J(!0,!1,!0),hatch:v,heatmapDecl:"fn lmap(value: f32, inMin: f32, inMax: f32, outMin: f32, outMax: f32) -> f32 {\n return clamp(outMin + ((outMax - outMin) * (value - inMin)) / (inMax - inMin), outMin, outMax);\n}\n\n// Gradient with multiple colors in non-equal intervals\nfn colormap(x: f32) -> vec3f {\n var colorsAndStops = ibl.colorsAndStops;\n for (var i = 1; i < NUM_STOPS; i++) {\n if (x <= colorsAndStops[i].stop) {\n var stopPct = lmap(x, colorsAndStops[i - 1].stop, colorsAndStops[i].stop, 0.0, 1.0);\n return mix(colorsAndStops[i - 1].color, colorsAndStops[i].color, stopPct);\n }\n }\n\n // In case 'x' goes beyond upper bound.\n return colorsAndStops[NUM_STOPS - 1].color;\n}\n",heatmap:"var sensorCount = materialUniforms.heatmapSensorCountAndOffset & 0x000000ff;\nif (sensorCount > 0) {\n\n var sensorOffset = materialUniforms.heatmapSensorCountAndOffset >> 8;\n var heatResult: f32 = 0.0;\n var heatSum: f32 = 0.0;\n var heatWsum: f32 = 0.000001;\n var heatFound: bool = false; // at exact location of the sensor\n var heatmapAlpha = ibl.heatmapAlpha;\n\n for (var i = sensorOffset; i < sensorOffset + sensorCount; i++) {\n var mydist = distance(in.vWorldPosition, heatmapSensors[i].xyz);\n if (mydist < 0.00001) {\n // So the exact pixel of the sensor will get the right color, but pretty much nothing beside it.\n heatResult = heatmapSensors[i][3];\n heatFound = true;\n } else {\n var w = (1.0 / (mydist * mydist));\n heatSum += (heatmapSensors[i][3] * w);\n heatWsum += w;\n }\n }\n\n if (!heatFound) {\n heatResult = heatSum / heatWsum;\n }\n\n // Defaults without influence from any sensor\n var sensorColor = vec3f(0.5);\n if (heatResult >= 0.0) {\n heatResult = clamp(heatResult, 0.0, 1.0);\n sensorColor = colormap(heatResult);\n }\n\n // If this chunk is used in shaders that render ghosted objects, we need to check for that and don't apply the\n // heatmap color, i.e. use 'ghosted ? 0.0 : heatmapAlpha' below.\n output.color = vec4f(mix(vec3f(luminance_post(output.color.rgb)), sensorColor, heatmapAlpha), output.color.a);\n if (heatmapAlpha > 0.0) {\n output.color[3] = max(output.color.a, heatmapAlpha);\n }\n}\n",metalMaterial:e.metal,hasUV:t,hasTextures:i,hasVertexColors:n,isUVW:r,hasUVAndHasVertexColors:t&&n,hasUVAndNotHasVertexColors:t&&!n,notHasUVAndHasVertexColors:!t&&n})}var oe=i(77201);function se(e,t,i,n,r,o){let s=e.__gpuPipelineHash;s||(s=function(e,t,i,n){let r=e.__gpuPipelineHash;if(r)return r;e.vb||oe.BufferGeometryUtils.interleaveGeometry(e,!0),r=255&e.vbstride;const o=e.attributesInterleaved||e.attributes;for(let e in o){let t=o[e];switch(e){case"position":0!==t.itemOffset&&console.log("unexpected itemOffset"),r|=256;break;case"normal":3!==t.itemOffset&&console.log("unexpected itemOffset"),2===t.bytesPerItem?r|=512:r|=1024;break;case"uv":case"uvw":i&&(3===t.itemOffset?r|=2048:4===t.itemOffset?r|=4096:6===t.itemOffset?r|=6144:console.log("unexpected itemOffset for color channel",t.itemOffset));break;case"color":n&&(3===t.itemOffset?r|=8192:4===t.itemOffset?r|=16384:6===t.itemOffset?r|=24576:8===t.itemOffset?r|=32768:console.log("unexpected itemOffset"))}}let s=0;return e.isLines&&(s=1),r|=s<<16,e.__gpuPipelineHash=r,r}(e,e.isLines,n,r));let a=t.__gpuPipelineHash;return!t.needsUpdate&&a||(a=function(e,t){let i=16777216;if(e.depthWrite&&(i|=1),e.depthTest&&(i|=2),e.depthFunc)switch(e.depthFunc){case"less":i|=4;break;case"less-equal":i|=8;break;case"greater":i|=12;break;case"greater-equal":i|=16;break;case"never":i|=20;break;case"always":i|=24;break;default:console.warn("unsupported depthFunc",e.depthFunc)}else i|=8;return i|=(e.side||0)<<5,i|=t?128:0,i|=e.isRoomMaterial&&e.heatmapSensorCount?256:0,e.__gpuPipelineHash=i,i}(t,o)),s|a<<17}function ae(e,t,i,n){let r=[],o=n&&e.attributes.color;if(e.vb){let s={arrayStride:4*e.vbstride,attributes:[]},a=e.attributesInterleaved||e.attributes;for(let r in a){let l=a[r];switch(r){case"position":s.attributes.push({shaderLocation:0,offset:4*l.itemOffset,format:"float32x3"});break;case"normal":!e.isLines&&t&&s.attributes.push({shaderLocation:1,offset:4*l.itemOffset,format:"uint32"});break;case"uv":i&&s.attributes.push({shaderLocation:o?3:2,offset:4*l.itemOffset,format:"float32x2"});break;case"uvw":i&&s.attributes.push({shaderLocation:o?3:2,offset:4*l.itemOffset,format:"float32x3"});break;case"color":n&&s.attributes.push({shaderLocation:2,offset:4*l.itemOffset,format:"float32x3"})}}r.push(s)}else console.log("non-interleaved buffer geometry not yet done");return r}function le(e){let t=[],i={arrayStride:4*e.vbstride,attributes:[]};return i.attributes.push({shaderLocation:0,offset:0,format:"float32x2"}),i.attributes.push({shaderLocation:1,offset:8,format:"float32x4"}),i.attributes.push({shaderLocation:2,offset:24,format:"unorm8x4"}),i.attributes.push({shaderLocation:3,offset:28,format:"uint8x4"}),i.attributes.push({shaderLocation:4,offset:32,format:"uint8x4"}),i.attributes.push({shaderLocation:5,offset:36,format:"uint8x4"}),i.attributes.push({shaderLocation:6,offset:i.arrayStride-8,format:"float32x2"}),t.push(i),t}function ce(e,t,i,n,r,o){let s=e.__gpuPipelineHash;s||(s=function(e){return e.__gpuPipelineHash=e.vbstride,e.__gpuPipelineHash}(e));let a=t.__gpuPipelineHash;return!t.needsUpdate&&a||(t.__gpuPipelineHash=a=16777216),s|a<<24}var he=i(82116);class ue{#rt;#et;#Mt=new Map;#qi;#Xi;#Yi;#Ki;#Qi;#Zi;constructor(e){this.#rt=e,this.#et=e.getDevice(),this.#Qi=this.#rt.getVB(),this.#Zi=se}#Ct(e,t,i,n){const r=t.attributes,o=r.color&&i.vertexColors,s=!!r.uvw,a=r.uv||s,l=a&&0!==n;let c;if(t.isLines){let e=this.#et.createShaderModule({code:(0,d.$wgsl)("$IBL\n$cameraUniforms\n$objectUniforms\n\nstruct VertexOutput {\n @builtin(position) Position : vec4f,\n @location(0) @interpolate(flat) instance: u32,\n @location(4) vWorldPosition: vec3f\n}\n\n@vertex\nfn vsmain(\n @location(0) position : vec3f,\n @builtin(instance_index) instance : u32\n) -> VertexOutput {\n\n var objectUniforms = getObjectUniforms(instance);\n\n var output : VertexOutput;\n var pos4 = vec4f(position.x, position.y, position.z, 1.0);\n\n var mvMatrix = uniforms.viewMatrix * objectUniforms.modelMatrix;\n var mvPosition = mvMatrix * pos4;\n\n output.Position = uniforms.projectionMatrix * mvPosition;\n output.vWorldPosition = (objectUniforms.modelMatrix * pos4).xyz;\n\n output.instance = instance;\n\n //TODO: world position for cutplanes\n\n return output;\n}\n\nstruct PixelOutput {\n @location(0) color: vec4f,\n @location(1) normal: vec4f,\n @location(2) viewDepth: vec4f,\n @location(3) dbId: vec4u,\n @location(4) modelId: vec4u\n //@location(4) objectFlags: vec4u,\n}\n\n@fragment\nfn psmain(\n in: VertexOutput,\n) -> PixelOutput {\n\n var output: PixelOutput;\n\n var objectUniforms = getObjectUniforms(in.instance);\n var materialUniforms = getMaterialUniforms(objectUniforms.materialIndex);\n\n //TODO: vertex color\n var diffuse = intToVecf(materialUniforms.diffuse);\n\n //check doNotCut flag\n if (commonMaterialUniforms.doNotCutOverride + (materialUniforms.renderFlags & 2) == 0) {\n checkCutPlanes(in.vWorldPosition);\n }\n\n //For line geometry, we just return the color as is\n output.color = diffuse;\n output.normal = vec4f(0.0);\n output.viewDepth = vec4f(0.0);\n output.dbId = intToVec(objectUniforms.dbId);\n output.modelId = intToVec(objectUniforms.modelId);\n\n return output;\n}\n",{IBL:Q(0),cameraUniforms:te(1),objectUniforms:G(2)})});c=this.#et.createRenderPipeline({label:"uber shader lines",layout:this.#et.createPipelineLayout({bindGroupLayouts:this.#Yi}),vertex:{module:e,entryPoint:"vsmain",buffers:ae(t,!1,!1,!1)},fragment:{module:e,entryPoint:"psmain",targets:this.#Ki},primitive:{topology:"line-list",cullMode:"none"},depthStencil:{depthWriteEnabled:i.depthWrite,depthCompare:i.depthTest?i.depthFunc||"less-equal":"always",format:x}})}else{const n=this.#et.createShaderModule({label:"uber shader triangles ("+e+")",code:re(i,a,l,o,s)});c=this.#et.createRenderPipeline({label:"uber pipeline triangles ("+e+")",layout:this.#et.createPipelineLayout({bindGroupLayouts:this.#Yi}),vertex:{module:n,entryPoint:"vsmain",buffers:ae(t,!0,a,o)},fragment:{module:n,entryPoint:"psmain",targets:this.#Ki},primitive:{topology:"triangle-list",cullMode:(0,he.oh)(i.side)},depthStencil:{depthWriteEnabled:i.depthWrite,depthCompare:i.depthTest?i.depthFunc||"less-equal":"always",format:x,depthBias:i.isRoomMaterial&&i.heatmapSensorCount?1:2,depthBiasSlopeScale:i.isRoomMaterial&&i.heatmapSensorCount?.5:1}})}return this.#Mt.set(e,c),c}reset(e,t){this.#qi=null,this.#Xi=null,this.#Yi=e,this.#Ki=t}#$i(e,t){let i=0|t.__gpuUniformsMask;return i!==R.NO_UNIFORMS||t.needsUpdate?((0===i||t.needsUpdate)&&(i=function(e,t,i){let n=F(t);if(0!==n){t.__gpuMaterialUniforms&&U({target:t});const n=new N(e,t,i);t.__gpuMaterialUniforms=n,t.addEventListener("dispose",U)}return B&&t.addEventListener("update",B),t.__gpuUniformsMask=n|=R.NO_UNIFORMS,n}(this.#et,t,this.#rt.getPlaceholderTexture()),this.#Xi=null),i===R.NO_UNIFORMS?0:(this.#Xi!==t&&(e.setBindGroup(3,t.__gpuMaterialUniforms.getBindGroup()),this.#Xi=t),i)):0}drawOne(e,t,i,n){if(i instanceof THREE.Geometry)return 0;const r=this.#$i(e,n)&R.TEXTURE_MASK,o=i.attributes,s=o.color&&n.vertexColors,a=o.uv,l=a&&0!==r,c=this.#Zi(i,n,!0,a,s,l);let h=this.#Mt.get(c);return h||(h=this.#Ct(c,i,n,r)),h!==this.#qi&&(e.setPipeline(h),this.#qi=h),this.#Qi.draw(e,i,t),r}}const de='\nfn orderedDithering(coord: vec2i) -> f32 {\n\n\t//Matrix for 4x4 ordered dithering. (http://en.wikipedia.org/wiki/Ordered_dithering)\n\tconst thresholdMatrix = mat4x4f(\n\t\t 1.0, 9.0, 3.0, 11.0,\n\t\t13.0, 5.0, 15.0, 7.0,\n\t\t 4.0, 12.0, 2.0, 10.0,\n\t\t16.0, 8.0, 14.0, 6.0) * (1.0 / 17.0);\n\n\tvar i = coord.x & 3;\n\tvar j = coord.y & 3;\n\n\treturn thresholdMatrix[i][j];\n\n}\n\n\n//Screen door transparency for "ghosted" elements, indicated by opacity < 0\nfn checkGhosting(coord: vec2i, isGhosted: bool) {\n\tif (isGhosted) {\n\t\tif (orderedDithering(coord) < 0.5) {\n\t\t\tdiscard;\n\t\t}\n\t}\n}\n';function fe(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return(0,d.$wgsl)("$ghosting\n$IBL\n$cameraUniforms\n$objectUniforms\n$materialUniforms\n\n\nstruct VertexOutput {\n @builtin(position) Position : vec4f,\n @location(0) @interpolate(flat) instance: u32,\n @location(4) vWorldPosition: vec3f\n}\n\n@vertex\nfn vsmain(\n @location(0) position : vec3f,\n @builtin(instance_index) instance : u32\n) -> VertexOutput {\n\n var objectUniforms = getObjectUniforms(instance);\n\n var output : VertexOutput;\n var pos4 = vec4f(position.x, position.y, position.z, 1.0);\n\n var mvMatrix = uniforms.viewMatrix * objectUniforms.modelMatrix;\n var mvPosition = mvMatrix * pos4;\n\n output.Position = uniforms.projectionMatrix * mvPosition;\n output.vWorldPosition = (objectUniforms.modelMatrix * pos4).xyz;\n\n //TODO: world position for cutplanes\n\n output.instance = instance;\n\n return output;\n}\n\n@fragment\nfn psmain(\n in: VertexOutput\n) -> @location(0) vec4f {\n\n var objectUniforms = getObjectUniforms(in.instance);\n var materialUniforms = getMaterialUniforms(objectUniforms.materialIndex);\n\n //check doNotCut flag\n if (commonMaterialUniforms.doNotCutOverride + (materialUniforms.renderFlags & 2) == 0) {\n checkCutPlanes(in.vWorldPosition);\n }\n\n var color = intToVecf(commonMaterialUniforms.edgeColor);\n\n #if $ghosted\n checkGhosting(vec2i(floor(in.Position.xy)), true);\n #endif\n\n return vec4(color.r, color.g, color.b, color.a);\n}\n",{ghosting:de,ghosted:e,IBL:Q(0),cameraUniforms:te(1),objectUniforms:G(2),materialUniforms:I(3)})}class pe{#rt;#et;#Mt=new Map;#qi;#Yi;#Ki;#Qi;#Zi=se;constructor(e){this.#rt=e,this.#et=e.getDevice()}#Ct(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=this.#et.createShaderModule({code:fe(n)}),o=this.#et.createRenderPipeline({layout:this.#et.createPipelineLayout({bindGroupLayouts:this.#Yi}),vertex:{module:r,entryPoint:"vsmain",buffers:ae(t,!1,!1,!1)},fragment:{module:r,entryPoint:"psmain",targets:this.#Ki},primitive:{topology:"line-list",cullMode:"none"},depthStencil:{depthWriteEnabled:i.depthWrite,depthCompare:i.depthTest?i.depthFunc||"less-equal":"always",format:x,depthBias:0,depthBiasSlopeScale:0}});return this.#Mt.set(e,o),o}reset(e,t){this.#qi=null,this.#Yi=e,this.#Ki=t,this.#Qi=this.#rt.getVB()}drawOne(e,t,i,n){if(i instanceof THREE.Geometry)return 0;if(i.isLines)return;let r=this.#Zi(i,n,!1,!1,!1),o=this.#Mt.get(r);o||(o=this.#Ct(r,i,n)),o!==this.#qi&&(e.setPipeline(o),this.#qi=o),this.#Qi.drawEdges(e,i,t)}drawOneGhosted(e,t,i,n){let r=this.#Zi(i,n,!1,!1,!1,!0),o=this.#Mt.get(r);o||(o=this.#Ct(r,i,n,!0)),o!==this.#qi&&(e.setPipeline(o),this.#qi=o),i.isLines?this.#Qi.draw(e,i,t):this.#Qi.drawEdges(e,i,t)}}const me="//Uniforms\nstruct Line2DUniforms {\n pixelsPerUnit: f32,\n aaRange: f32,\n size: vec2f,\n\n viewportId: f32,\n swap: f32,\n tanHalfFov: f32,\n opacity: f32,\n\n lineStyleWidth: u32,\n miterLimit: f32,\n miterScaleFactor: f32,\n miterCp: f32,\n}\n@group($group) @binding(0) var u: Line2DUniforms;\n@group($group) @binding(1) var lineStyles : array;\n";var ge=i(30514);class ve extends f.D{#et;#Dt;#Lt;#Ji;#en;constructor(e){super(e,16,!0,!0),this.setFloat(5,0),this.setFloat(7,1),this.#et=e,this.#Dt=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT|GPUShaderStage.VERTEX,buffer:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}}]}),this.#en=this.#et.createBuffer({size:64,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),this.setInt(8,0),this.setMiterData(ge.VBB_MITER_SEGMENT_LIMIT,ge.VBB_MITER_SEGMENT_SCALE_FACTOR,ge.VBB_MITER_SEGMENT_CP),this.#Vi()}#Vi(){this.#Lt=this.#et.createBindGroup({layout:this.#Dt,entries:[{binding:0,resource:{buffer:this.getBuffer()}},{binding:1,resource:{buffer:this.#en}}]})}updatePixelScale(e,t){if(this.#Ji=e,this.setFloat(1,.5),null!=t&&t.isPerspective){const e=t.fov*Math.PI/180;this.setFloat(6,Math.tan(.5*e))}else this.setFloat(6,0);this.setFloat(0,e)}setLineStyleBuffer(e,t){this.#en&&this.#en.size!==e.byteLength&&(this.#en.destroy(),this.#en=null),this.#en||(this.#en=this.#et.createBuffer({size:e.byteLength,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST})),this.#et.queue.writeBuffer(this.#en,0,e.buffer,0,e.byteLength),this.setInt(8,t)}setTargetSize(e,t){this.setFloat(2,e),this.setFloat(3,t)}setMiterData(e,t,i){this.setFloat(9,e),this.setFloat(10,t),this.setFloat(11,i)}getLayout(){return this.#Dt}getBindGroup(){return this.#Lt}}function ye(e){return(0,d.$wgsl)("$IBL\n$cameraUniforms\n$objectUniforms\n$lineUniforms\n$hatch\n\nconst hatchTintColor = vec3f(1, 1, 1);\n\n// Common defines\nconst TAU = 6.28318530718;\nconst PI = 3.14159265358979;\nconst HALF_PI = 1.57079632679;\nconst PI_1_5 = 4.71238898038; // 1.5 * PI\n\n// discard fragments if they belong to ghosted layers\n@id(0) override ENABLE_ID_DISCARD: u32 = 1;\n\n// Geometry type defines\nconst VBB_GT_TRIANGLE_INDEXED = 0;\nconst VBB_GT_LINE_SEGMENT = 1;\nconst VBB_GT_ARC_CIRCULAR = 2;\nconst VBB_GT_ARC_ELLIPTICAL = 3;\nconst VBB_GT_TEX_QUAD = 4;\nconst VBB_GT_ONE_TRIANGLE = 5;\nconst VBB_GT_MSDF_TRIANGLE_INDEXED = 6;\nconst VBB_GT_TEX_TRIANGLE_INDEXED = 7;\nconst VBB_GT_LINE_SEGMENT_CAPPED = 8;\nconst VBB_GT_LINE_SEGMENT_CAPPED_START = 9;\nconst VBB_GT_LINE_SEGMENT_CAPPED_END = 10;\nconst VBB_GT_LINE_SEGMENT_MITER = 11;\n\n// ID defines\nconst VBB_INSTANCED_FLAG = 0;\nconst VBB_SEG_START_RIGHT = 0;\nconst VBB_SEG_START_LEFT = 1;\nconst VBB_SEG_END_RIGHT = 2;\nconst VBB_SEG_END_LEFT = 3;\n\n// Defines scaling of line style patterns (e.g. for dashed and dotted lines)\n// We define some fixed scaling here.\n//\n// Why 0.25?: The choice is currently sort-of arbitrary - just manually adjusted\n// to look reasonable when drawing into 2D overlays. If this is not sufficient, we could make it\n// adjustable per shader parameter.\n//\n// AutoCAD will scale patterns based on the LTSCALE setting, and currently this is ignored here.\nconst LTSCALE = 0.25;\n\n//Attributes\nstruct VsInput {\n\t@builtin(instance_index) instance : u32,\n\t@location(0) fields1: vec2f,\n\t@location(1) fields2: vec4f,\n\t@location(2) color4b: vec4f,\n\t@location(3) dbId4b: vec4u,\n\t@location(4) flags4b: vec4u,\n\t@location(5) layerVp4b: vec4u,\n\t@location(6) extraParams: vec2f,\n}\n\n// Varyings\nstruct VsOutput {\n\t@builtin(position) position : vec4f,\n\t//TODO: most of these should be tagged @interpolate(flat)\n\t@location(0) @interpolate(flat) fsColor: vec4f,\n\t@location(1) fsOffsetDirection: vec2f,\n\t@location(2) fsMultipurpose: vec4f,\n\t//fsGeomType: f32,\n\t@location(3) @interpolate(flat) fsHalfWidth: f32,\n\t@location(4) fsVpTC: vec2f,\n\t@location(5) @interpolate(flat) fsGhosting: f32,\n\t@location(6) @interpolate(flat) dbId: vec4u,\n\t@location(7) vWorldPosition: vec3f, //for cutplanes\n\t@location(8) @interpolate(flat) instance: u32,\n#if $materialHasLineStyles\n\t@location(9) vPixelsPerUnit: f32\n#endif\n}\n\n// used internally by the VS\nvar centralVertex: vec2f;\nvar offsetPosition: vec2f;\nvar offsetPosDepth: vec2f;\nvar mvpMatrix: mat4x4f;\n\nfn cos_sin(angle: f32) -> vec2f {\n\treturn vec2f(cos(angle), sin(angle));\n}\n\nfn getVertexId(in: VsInput) -> u32 { return in.flags4b.x; }\n\nfn isStartVertex(in: VsInput) -> bool { return (getVertexId(in) < VBB_SEG_END_RIGHT); }\nfn isLeftVertex(in: VsInput) -> bool { var id = getVertexId(in); return ((id == VBB_SEG_END_LEFT || id == VBB_SEG_START_LEFT)); }\n\nfn min_max(minPt: ptr, maxPt: ptr, p: vec2f) {\n\t*minPt = min(*minPt, p);\n\t*maxPt = max(*maxPt, p);\n}\n\nfn setMvp(instance: u32) {\n\tvar objectUniforms = getObjectUniforms(instance);\n\tmvpMatrix = uniforms.projectionMatrix * uniforms.viewMatrix * objectUniforms.modelMatrix;\n}\n\n// Get the 2d screenspace position of a model-space position.\nfn posToSs(pos: vec4f) -> vec2f {\n\treturn clipPosToSs(mvpMatrix * pos);\n}\n\n// Get the 2d screenspace position of a clip-space position.\n// Visible positions will be within [0, width] x [0, height].\nfn clipPosToSs(clip: vec4f) -> vec2f {\n\treturn (clip.xy / clip.w + vec2f(1)) * 0.5 * u.size;\n}\n\n// Get the 2d screenspace transformation of a model-space vector.\nfn vecToSs(inVec: vec4f) -> vec2f {\n\tvar clip = mvpMatrix * inVec;\n\t// Don't divide by w, and don't translate vectors.\n\treturn clip.xy * 0.5 * u.size;\n}\n\n// Convert screenspace position back to clip space position.\nfn ssToClip(ssPos: vec2f, clipZw: vec2f) -> vec4f {\n\treturn vec4((ssPos / u.size * 2.0 - vec2f(1)) * clipZw[1], clipZw);\n}\n\nstruct SegmentData {\n\tangle: f32,\n\tdistAlong: f32,\n\tdistTotal: f32,\n\tlineWidthHalf: f32,\n\tlineType: u32\n};\n\nfn decodeSegmentData(in: VsInput) -> SegmentData {\n\tvar seg: SegmentData;\n\tseg.angle = in.fields2.x * TAU - PI;\n\tseg.distAlong = in.fields2.y;\n\tseg.distTotal = in.fields2.w;\n\tseg.lineWidthHalf = in.fields2.z;\n\tseg.lineType = in.flags4b.z;\n\n\treturn seg;\n}\n\nfn strokeLineSegment(in: VsInput, geomType: u32, out: ptr) {\n\tvar seg = decodeSegmentData(in);\n\n\t//Compute output point based on start point plus segment length and direction\n\t//This is because the line segment's 4 vertices are all equal to the start\n\t//point to begin with. We move the vertex to the correct place in the quad\n\t//based on vertex flags indicating whether it's left/right/top/bottom vertex in the\n\t//quad.\n\tvar isStartCapVertex = select(1.0, -1.0, isStartVertex(in));\n\tvar isLeftSide = select(-1.0, 1.0, isLeftVertex(in));\n\n\tsetMvp(in.instance);\n\n\t// Clip-space start position\n\tvar clipStart = (mvpMatrix * vec4f(centralVertex.xy, 0.0, 1.0));\n\n\tvar distanceAlong = seg.distAlong;\n\tvar along = distanceAlong * cos_sin(seg.angle);\n\n\tvar clipEnd = (mvpMatrix * vec4f(centralVertex.xy + along, 0.0, 1.0));\n\n\tvar screenStart = clipPosToSs(clipStart);\n\tvar screenEnd = clipPosToSs(clipEnd);\n\tvar roundedEnd = 0.0;\n\n\tif (isStartCapVertex < 0.0) {\n\t\toffsetPosition = screenStart;\n\t\tcentralVertex = screenStart;\n\t\toffsetPosDepth = clipStart.zw;\n\t\t// use 0.5 instead of 1.0 so that floor(roundedEnd)==roundedEnd\n\t\troundedEnd = select(0.0, 0.5, geomType == VBB_GT_LINE_SEGMENT || geomType == VBB_GT_LINE_SEGMENT_CAPPED_END);\n\t} else {\n\t\toffsetPosition = screenEnd;\n\t\tcentralVertex = screenEnd;\n\t\toffsetPosDepth = clipEnd.zw;\n\t\t// use 0.5 instead of 1.0 so that floor(roundedEnd)==roundedEnd\n\t\troundedEnd = select(0.0, 0.5, geomType == VBB_GT_LINE_SEGMENT || geomType == VBB_GT_LINE_SEGMENT_CAPPED_START);\n\t}\n\n#if $materialHasLineStyles\n\t// For consistency, disable butt capped ends for any pattern other\n\t// than a solid line (seg.lineType will be >0 and thus roundedEnd\n\t// will be >0, i.e., true)\n\t// See note in fragment shader\n\n\t// transport roundedEnd as fractional part of the integer lineType\n\troundedEnd += seg.lineType;\n#endif\n\n\t// Apply transverse line width offset to the start/endpoint\n\tvar screenDelta = screenEnd - screenStart;\n\tvar screenAngle = 0.0;\n\tif (distanceAlong != 0.0) {\n\t\tscreenAngle = atan2(screenDelta.y, screenDelta.x);\n\t}\n\tvar angleTransverse = screenAngle - isLeftSide * HALF_PI;\n\tvar lwAdjustment = (*out).fsHalfWidth + u.aaRange;\n\tvar transverseDir = cos_sin(angleTransverse);\n\toffsetPosition += transverseDir * lwAdjustment;\n\n\t// Apply start/end-cap extension offsets if needed\n\t// for rounded ends, the extension is lwAdjustment,\n\t// for butt capped ends it's aaRange\n\tvar segmentExtension = select(u.aaRange, lwAdjustment, roundedEnd > 0.0);\n\tvar moveOffset = isStartCapVertex * isLeftSide * vec2f(-transverseDir.y, transverseDir.x) * segmentExtension;\n\toffsetPosition += moveOffset;\n\tcentralVertex += moveOffset;\n\n\t// Distance we care about beyond the actual line segment vertex.\n\t// For start vertex, this is negative and equal to half a line weight\n\t// For end vertex this is the segment length plus the half line weight adjustment.\n\tvar distanceFromStart = max(0.0, isStartCapVertex) * length(screenDelta);\n\n\t(*out).fsMultipurpose = vec4f(\n\t\t// distance after end point that we want to fill with cap/join\n\t\t(isStartCapVertex * segmentExtension) + distanceFromStart,\n\t\tlength(screenDelta),\n\t\tseg.distTotal,\n\t\troundedEnd\n\t);\n\n\tif (seg.lineWidthHalf < 0.0) {\n\t\t(*out).fsHalfWidth = -(*out).fsHalfWidth;\n\t}\n\n\t// Vector from logical line centerline to the pixel position of the thick\n\t// line being shaded. We use this distance for antialiasing and line caps clipping\n\t(*out).fsOffsetDirection = offsetPosition - centralVertex;\n\n\t// Back to clip space coords\n\t(*out).position = ssToClip(offsetPosition, offsetPosDepth);\n}\n\nstruct MiterSegmentData {\n\tangle: f32,\n\tdistAlong: f32,\n\tdistAlongPN: f32,\n\tanglePrev: f32,\n\tangleNext: f32,\n\tlineWidthHalf: f32,\n\tlineType: u32,\n};\n\nfn decodeMiterSegment(in: VsInput) -> MiterSegmentData {\n\tvar seg: MiterSegmentData;\n\tseg.angle = in.fields2.x * TAU - PI;\n\tseg.distAlong = in.fields2.y;\n\tseg.anglePrev = in.fields2.w * TAU - PI;\n\tseg.lineWidthHalf = in.fields2.z;\n\tseg.lineType = in.flags4b.z;\n\tseg.angleNext = in.extraParams.x * TAU - PI;\n\tseg.distAlongPN = in.extraParams.y;\n\treturn seg;\n}\n\nfn strokeMiterLineSegment(in: VsInput, out: ptr) {\n\tvar seg = decodeMiterSegment(in);\n\n\t// Compute output point based on a starting point plus three directions to get the\n\t// previous, current, and next line segment. Using this information, each line\n\t// segment can calculate the correct miter joints on the start and end vertices.\n\t// The vertex flags indicate whether it's left/right/top/bottom vertex in the joint.\n\n\tvar isStartCapVertex = select(1.0, -1.0, isStartVertex(in));\n\tvar isLeftSide = select(-1.0, 1.0, isLeftVertex(in));\n\n\tsetMvp(in.instance);\n\n\t// Unpack previous and next line segment lengths. Precision was lost during compression.\n\t// These lengths are used along with the angles to determine if the line segments are\n\t// self intersecting and if so to draw a regular line segment with no miter joints.\n\tvar next = floor(seg.distAlongPN / u.miterCp);\n\tvar prev = seg.distAlongPN - (next * u.miterCp);\n\tvar distanceAlongNext = floor(next) / u.miterScaleFactor;\n\tvar distanceAlongPrev = floor(prev) / u.miterScaleFactor;\n\n\t// Screen space start position\n\tvar distanceAlong = seg.distAlong;\n\tvar along = cos_sin(seg.anglePrev) * distanceAlongPrev;\n\tvar along2 = cos_sin(seg.angle) * distanceAlong;\n\tvar along3 = along2 + cos_sin(seg.angleNext) * distanceAlongNext;\n\n\tvar screenPrev = posToSs(vec4(centralVertex.xy - along, 0.0, 1.0));\n\tvar screenNext = posToSs(vec4(centralVertex.xy + along3, 0.0, 1.0));\n\n\tvar clipStart = mvpMatrix * vec4(centralVertex.xy, 0.0, 1.0);\n\tvar screenStart = clipPosToSs(clipStart);\n\tvar clipEnd = mvpMatrix * vec4(centralVertex.xy + along2, 0.0, 1.0);\n\tvar screenEnd = clipPosToSs(clipEnd);\n\n\tif (isStartCapVertex < 0.0) {\n\t\toffsetPosition = screenStart;\n\t\toffsetPosDepth = clipStart.zw;\n\t} else {\n\t\toffsetPosition = screenEnd;\n\t\toffsetPosDepth = clipEnd.zw;\n\t}\n\tcentralVertex = offsetPosition;\n\n\tvar screenDelta = screenEnd - screenStart;\n\n\tvar AB = normalize(screenStart.xy - screenPrev.xy);\n\tvar BC = normalize(screenDelta);\n\tvar CD = normalize(screenNext.xy - screenEnd.xy);\n\n\tvar a = screenPrev;\n\tvar b = screenStart;\n\tvar c = screenEnd;\n\tvar d = screenNext;\n\tvar p = select(d, a, isStartCapVertex < 0.0);\n\n\tvar a2 = select(c, a, isStartCapVertex < 0.0);\n\tvar b2 = select(d, b, isStartCapVertex < 0.0);\n\tvar p2 = select(b, c, isStartCapVertex < 0.0);\n\tvar PP = select(CD, AB, isStartCapVertex < 0.0);\n\n\tvar normalBC = vec2(-BC.y, BC.x);\n\tvar normalPP = vec2(-PP.y, PP.x);\n\n\t// Check if the line segment at the start/end is interecting with the previous/next\n\t// line segment's start/end.\n\tvar pIsLeftOfBC = select(-1.0, 1.0, ((c.x - b.x)*(p.y - b.y) - (c.y - b.y)*(p.x - b.x)) > 0.0);\n\tvar bN = b + normalBC * (*out).fsHalfWidth * pIsLeftOfBC;\n\tvar cN = c + normalBC * (*out).fsHalfWidth * pIsLeftOfBC;\n\tvar pN = p + normalPP * (*out).fsHalfWidth * pIsLeftOfBC;\n\tvar isPIntersecting = ((cN.x - bN.x)*(pN.y - bN.y) - (cN.y - bN.y)*(pN.x - bN.x)) * pIsLeftOfBC;\n\n\tvar p2IsLeftOfPP = select(-1.0, 1.0, ((b2.x - a2.x)*(p2.y - a2.y) - (b2.y - a2.y)*(p2.x - a2.x)) > 0.0);\n\tvar a2N = a2 + normalPP * (*out).fsHalfWidth * p2IsLeftOfPP;\n\tvar b2N = b2 + normalPP * (*out).fsHalfWidth * p2IsLeftOfPP;\n\tvar p2N = p2 + normalBC * (*out).fsHalfWidth * p2IsLeftOfPP;\n\tvar isP2Intersecting = ((b2N.x - a2N.x)*(p2N.y - a2N.y) - (b2N.y - a2N.y)*(p2N.x - a2N.x)) * p2IsLeftOfPP;\n\n\t// calculate the miter joint\n\tvar tangentLength = select(length(BC + CD), length(AB + BC), isStartCapVertex < 0.0);\n\tvar tangent = select(normalize(BC + CD), normalize(AB + BC), isStartCapVertex < 0.0);\n\tvar miter = vec2(-tangent.y, tangent.x);\n\tvar normal = select(vec2(-BC.y, BC.x), vec2(-AB.y, AB.x), isStartCapVertex < 0.0);\n\tvar miterLength = abs(1.0 / dot(miter, normal));\n\n\tvar moveOffset: vec2f;\n\tvar lwAdjustment = (*out).fsHalfWidth + u.aaRange;\n\tif (miterLength > u.miterLimit || min(isPIntersecting, isP2Intersecting) < 0.0) {\n\t\tmoveOffset = isLeftSide * lwAdjustment * normalBC;\n\t} else {\n\t\tmoveOffset = isLeftSide * miter * lwAdjustment * miterLength;\n\t}\n\n\toffsetPosition += moveOffset;\n\n\tvar distanceFromStart = max(0.0, isStartCapVertex) * (length(screenDelta) + dot(moveOffset, BC));\n\t(*out).fsMultipurpose.x = distanceFromStart;\n\t(*out).fsMultipurpose.y = length(screenDelta) + dot(moveOffset, BC);\n\t(*out).fsMultipurpose.z = 0.0;\n#if $materialHasLineStyles\n\t(*out).fsMultipurpose.w = seg.lineType + 0.5; // enforce round line ends\n#else\n\t(*out).fsMultipurpose.w = 0.5; // enforce round line ends\n#endif\n\n\tif (seg.lineWidthHalf < 0.0) {\n\t\t(*out).fsHalfWidth = -(*out).fsHalfWidth;\n\t}\n\n\t// Vector from logical line centerline to the pixel position of the thick\n\t// line being shaded. We use this distance for antialiasing and line caps clipping\n\t(*out).fsOffsetDirection = offsetPosition - BC * dot(moveOffset, BC) - centralVertex;\n\n\t// Back to clip space coords\n\t(*out).position = ssToClip(offsetPosition, offsetPosDepth);\n}\n\nstruct ArcData {\n\tc: vec2f,\n\tstart: f32,\n\tend: f32,\n\tmajor: f32,\n\tminor: f32,\n\ttilt: f32,\n\tlineWidthHalf: f32,\n};\n\nfn decodeArcData(in: VsInput) -> ArcData {\n\tvar arc : ArcData;\n\tarc.c = in.fields1.xy;\n\tarc.start = in.fields2.x * TAU;\n\tarc.end = in.fields2.y * TAU;\n\tarc.major = in.fields2.w;\n\tarc.minor = in.extraParams.x;\n\tarc.tilt = in.extraParams.y * TAU;\n\tarc.lineWidthHalf = in.fields2.z;\n\treturn arc;\n}\n\nfn strokeArc(in: VsInput, circle: bool, out: ptr) {\n\tvar arc = decodeArcData(in);\n\tif (circle) {\n\t\t// This doesn't get set for circles.\n\t\tarc.minor = arc.major;\n\t}\n\n\t// TODO: Handle rotation/tilt.\n\n\t// Compute a tighter bounding quad for arcs if possible,\n\t// to avoid massive overdraw in case of very small angular range\n\tvar minPt: vec2f;\n\tvar maxPt: vec2f;\n\n\tvar angles: vec2f = vec2f(arc.start, arc.end);\n\tvar endsX: vec2f = vec2f(arc.c.x) + arc.major * cos(angles);\n\tvar endsY: vec2f = vec2f(arc.c.y) + arc.minor * sin(angles);\n\tminPt = vec2f(endsX.x, endsY.x);\n\tmaxPt = minPt;\n\tmin_max(&minPt, &maxPt, vec2f(endsX.y, endsY.y));\n\n\tif (arc.end > arc.start) {\n\t\tif (arc.start < HALF_PI && arc.end > HALF_PI) {\n\t\t\tmin_max(&minPt, &maxPt, vec2f(arc.c.x, arc.c.y + arc.minor));\n\t\t}\n\t\tif (arc.start < PI && arc.end > PI) {\n\t\t\tmin_max(&minPt, &maxPt, vec2f(arc.c.x - arc.major, arc.c.y));\n\t\t}\n\t\tif (arc.start < PI_1_5 && arc.end > PI_1_5) {\n\t\t\tmin_max(&minPt, &maxPt, vec2f(arc.c.x, arc.c.y - arc.minor));\n\t\t}\n\t} else {\n\t\t// In this case, CW arcs, we know it passes through angle 0:\n\t\tmin_max(&minPt, &maxPt, vec2f(arc.c.x + arc.major, arc.c.y));\n\n\t\t// All other checks are also reversed\n\t\t// TODO: verify this logic -- it might be overestimating\n\t\tif (arc.start < HALF_PI || arc.end > HALF_PI) {\n\t\t\tmin_max(&minPt, &maxPt, vec2f(arc.c.x, arc.c.y + arc.minor));\n\t\t}\n\t\tif (arc.start < PI || arc.end > PI) {\n\t\t\tmin_max(&minPt, &maxPt, vec2f(arc.c.x - arc.major, arc.c.y));\n\t\t}\n\t\tif (arc.start < PI_1_5 || arc.end > PI_1_5) {\n\t\t\tmin_max(&minPt, &maxPt, vec2f(arc.c.x, arc.c.y - arc.minor));\n\t\t}\n\t}\n\n\tminPt -= arc.lineWidthHalf;\n\tmaxPt += arc.lineWidthHalf;\n\n\tvar isStart = isStartVertex(in);\n\tvar isLeft = isLeftVertex(in);\n\tvar offsetPos: vec2f;\n\toffsetPos.x = select(maxPt.x, minPt.x, isStart);\n\toffsetPos.y = select(maxPt.y, minPt.y, isLeft);\n\n\tsetMvp(in.instance);\n\n\tvar clipPos = mvpMatrix * vec4(offsetPos, 0, 1);\n\toffsetPosition = clipPosToSs(clipPos);\n\n\t// Apply the aaRange offset in the correct screenspace direction.\n\tvar aaDir: vec2f;\n\taaDir.x = select(1.0, -1.0, isStart);\n\taaDir.y = select(1.0, -1.0, isLeft);\n\tvar ssAaDir = normalize(vecToSs(vec4(aaDir, 0, 0)));\n\toffsetPosition += u.aaRange * sqrt(2.0) * ssAaDir;\n\n\tcentralVertex = posToSs(vec4(arc.c, 0, 1));\n\t(*out).fsOffsetDirection = vec2(offsetPosition - centralVertex);\n\n\t// Back to clip space coords\n\t(*out).position = ssToClip(offsetPosition, clipPos.zw);\n\n\t// Get the screenspace lengths of the major and minor axis vectors.\n\tvar ssMajor = length(vecToSs(vec4(arc.major, 0, 0, 0)));\n\tvar ssMinor = length(vecToSs(vec4(0, arc.minor, 0, 0)));\n\n\t(*out).fsMultipurpose.x = arc.start;\n\t(*out).fsMultipurpose.y = -ssMajor;\n\t(*out).fsMultipurpose.z = arc.end;\n\t(*out).fsMultipurpose.w = ssMinor;\n}\n\nstruct CommonAttribs {\n\tpos: vec2f,\n\tcolor: vec4f,\n\tlayerTC: vec2f,\n\tvpTC: vec2f,\n\tlineWidthHalf: f32,\n\tgeomType: u32,\n\tghosting: u32\n}\n\nfn decodeCommonAttribs(in: VsInput) -> CommonAttribs {\n\tvar attribs : CommonAttribs;\n\tattribs.pos = in.fields1.xy;\n\tattribs.color = in.color4b;\n\tattribs.geomType = in.flags4b.y;\n\tattribs.layerTC = vec2f(in.layerVp4b.xy) / 255.0;\n\tattribs.vpTC = vec2f(in.layerVp4b.zw) / 255.0;\n\tattribs.lineWidthHalf = in.fields2.z;\n\tattribs.ghosting = in.flags4b.w;\n\treturn attribs;\n}\n\nfn strokeIndexedTriangle(in: VsInput, out: ptr) {\n\t// nothing to go, since centralVertex = attribs.pos already happened in main()...\n\t(*out).fsHalfWidth = 0.0;\n\t(*out).fsMultipurpose = vec4f(0.0);\n\tvar objectUniforms = getObjectUniforms(in.instance);\n\t(*out).position = uniforms.projectionMatrix * uniforms.viewMatrix * objectUniforms.modelMatrix * vec4(centralVertex.xy, 0.0, 1.0);\n}\n\nfn getColor(attribs: CommonAttribs) -> vec4f {\n\t//Check layer visibility\n\t//TODO:\n\t//if (isLayerOff(attribs)) { return vec4(0.0); }\n\treturn attribs.color;\n}\n\n@vertex fn vsmain(in: VsInput) -> VsOutput {\n\n\tvar out: VsOutput;\n\n\tvar objectUniforms = getObjectUniforms(in.instance);\n\tvar attribs = decodeCommonAttribs(in);\n\n\tout.instance = in.instance;\n\tout.fsColor = getColor(attribs);\n\n\n\t// LMV-1133: Add AutoCAD-like display functionality, swapping black and white line and fill elements.\n\t/*\n\tif (u.swap != 0.0 ) {\n\t\t// if black, go to white\n\t\tif ( fsColor.r == 0.0 && fsColor.g == 0.0 && fsColor.b == 0.0 ) {\n\t\t\tfsColor.rgb = vec3(1.0,1.0,1.0);\n\t\t// if white, go to black\n\t\t} else if ( fsColor.r == 1.0 && fsColor.g == 1.0 && fsColor.b == 1.0 ) {\n\t\t\tfsColor.rgb = vec3(0.0,0.0,0.0);\n\t\t}\n\t}\n\t*/\n\n\tcentralVertex = attribs.pos;\n\toffsetPosition = attribs.pos;\n\n\tvar lineWeight = attribs.lineWidthHalf;\n\n\tvar ppu = u.pixelsPerUnit;\n\t// For perspective camera calculate pixelsPerUnit according to vertex distance from camera.\n\t// Previously this was done as a general value with distance taken from center of the model,\n\t// but this is more accurate\n\tif (u.tanHalfFov > 0.0) { // For ortho camera, tanHalfFov is set to 0 in the uniform\n\n\t\t// There's a bit of chicken and egg problem here. The offsetPosition is modified later\n\t\t// (e.g. see strokeLineSegment) but fsHalfWidth needs to be calculated beforehand for that,\n\t\t// and that in itself is based on the pixelsPerUnit. So if we wait until the end to calculate\n\t\t// ppu according to the final offsetPosition it will be too late anyway and would need to be recalculated.\n\t\t// This should be a good enough approximation, though.\n\t\tvar cameraPos = uniforms.viewMatrixInverse[3].xyz;\n\t\tvar worldPos = objectUniforms.modelMatrix * vec4f(offsetPosition.xy, 0.0, 1.0);\n\t\tvar distanceToCamera = length(cameraPos - worldPos.xyz);\n\t\tppu = u.size.y / (2.0 * distanceToCamera * u.tanHalfFov);\n\t}\n\n#if $materialHasLineStyles\n\tout.vPixelsPerUnit = ppu; // Fragment shader only uses for linestyles (in the meantime...)\n#endif\n\n\tif (lineWeight > 0.0) {\n\t\t//Do not go below a line width of one pixel\n\t\t//Since we store, half-widths, the comparison is to 0.5 instead of 1.0\n\t\tlineWeight = max(0.5, lineWeight * ppu);\n\t}\n\telse {\n\t\t//Negative line weight means device space (pixel) width.\n\t\t//Currently used for antialiasing of polygon outlines.\n\t\tlineWeight = max(0.5, abs(lineWeight));\n\t}\n\n\tout.fsHalfWidth = lineWeight;\n\n\tout.dbId = vec4u(in.dbId4b);\n\n\tout.fsVpTC = attribs.vpTC;\n\tout.fsGhosting = f32(attribs.ghosting);\n\n\tif (attribs.geomType == VBB_GT_LINE_SEGMENT\n\t\t|| attribs.geomType == VBB_GT_LINE_SEGMENT_CAPPED\n\t\t|| attribs.geomType == VBB_GT_LINE_SEGMENT_CAPPED_START\n\t\t|| attribs.geomType == VBB_GT_LINE_SEGMENT_CAPPED_END) {\n\t\tstrokeLineSegment(in, attribs.geomType, &out);\n\t} else if (attribs.geomType == VBB_GT_LINE_SEGMENT_MITER) {\n\t\tstrokeMiterLineSegment(in, &out);\n\t} else if (attribs.geomType == VBB_GT_ARC_CIRCULAR) {\n\t\tstrokeArc(in, true, &out);\n\t} else if (attribs.geomType == VBB_GT_ARC_ELLIPTICAL) {\n\t\tstrokeArc(in, false, &out);\n\t} else /*if (attribs.geomType == VBB_GT_TRIANGLE_INDEXED)*/ {\n\t\tstrokeIndexedTriangle(in, &out);\n\t}\n\n\t//fsGeomType = attribs.geomType;\n\n\t// pass world-pos for cut planes\n\tvar worldPosition = objectUniforms.modelMatrix * vec4f( offsetPosition.xy, 0.0, 1.0 );\n\tout.vWorldPosition = worldPosition.xyz;\n\n\treturn out;\n}\n\n\n//Gaussian falloff function\nfn curveGaussian(r : f32, width: f32) -> f32 {\n\tvar amt = clamp(abs(r / (width * 1.0)), 0.0, 1.0);\n\tamt = max(amt - 0.0, 0.0);\n\n\tvar exponent = amt * 2.0;\n\n\treturn clamp(exp(-exponent*exponent), 0.0, 1.0);\n}\n\n#if $materialHasLineStyles\nfn getLinePatternPixel(i: u32, j: u32) -> f32 {\n\treturn f32(lineStyles[j * u.lineStyleWidth + i]) * 255.0;\n}\n\nfn getPatternLength(whichPattern: u32) -> f32 {\n\tvar p1 = getLinePatternPixel(0, whichPattern);\n\tvar p2 = getLinePatternPixel(1, whichPattern);\n\treturn (p2 * 256.0 + p1);\n}\n#endif\n\n\nfn fillLineSegment(in: VsOutput, out: ptr) {\n\n\tvar radius = abs(in.fsHalfWidth);\n\tvar parametricDistance = in.fsMultipurpose.x;\n\tvar segmentLength = in.fsMultipurpose.y;\n\tvar totalDistance = in.fsMultipurpose.z;\n\tvar roundedEnd = in.fsMultipurpose.w;\n\n\t//Apply any dot/dash linetype\n#if $materialHasLineStyles\n\tvar whichPattern = u32(in.fsMultipurpose.w);\n\n\tif (whichPattern > 0) {\n\t\tconst TEX_TO_UNIT = 1.0 / 96.0;\n\n\t\tvar patternScale: f32;\n\n\t\t//If line width is negative it means device space line style (zoom invariant)\n\t\t//line width, which also implies the same about the line pattern -- check for this here.\n\t\tif (in.fsHalfWidth < 0.0) {\n\t\t\tpatternScale = LTSCALE;\n\t\t} else {\n\t\t\tpatternScale = LTSCALE * TEX_TO_UNIT * in.vPixelsPerUnit;\n\t\t}\n\n\t\tvar patLen = patternScale * getPatternLength(whichPattern);\n\t\tvar phase = (totalDistance + parametricDistance) % patLen;\n\n\t\tvar onPixel = true;\n\t\tvar radiusPixels = radius + u.aaRange;\n\n\t\tfor (var i: u32 = 2; i < u.lineStyleWidth; i += 2) {\n\n\t\t\tvar on = getLinePatternPixel(i, whichPattern);\n\t\t\tif (on == 1.0) {\n\t\t\t\ton = 0.0; //special handling for dots, map length 1 to 0\n\t\t\t}\n\t\t\ton *= patternScale;\n\n\t\t\tonPixel = true;\n\t\t\tphase -= on;\n\t\t\tif (phase < 0.0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse if (phase <= radiusPixels) {\n\t\t\t\tonPixel = false;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar off = getLinePatternPixel(i+1, whichPattern);\n\t\t\tif (off <= 1.0) {\n\t\t\t\toff = 0.0; //special handling for dots, map length 1 to 0\n\t\t\t}\n\t\t\toff *= patternScale;\n\n\t\t\tonPixel = false;\n\t\t\tphase -= off;\n\t\t\tif (phase < -radiusPixels) {\n\t\t\t\tdiscard;\n\t\t\t}\n\t\t\tif (phase <= 0.0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//Modify the parametricDistance value used for round cap\n\t\t//rendering to reflect the current position along the dash,\n\t\t//so that dashes get caps also.\n\t\tif (!onPixel && (abs(phase) <= radiusPixels)) {\n\t\t\tsegmentLength = 0.0;\n\t\t\tparametricDistance = phase;\n\t\t}\n\t}\n#endif // HAS_LINESTYLES\n\n\t//Check for end cap or join region -- here we reduce\n\t///allowed distance from centerline in a circular way\n\t//to get a round cap/join\n\tvar dist: f32;\n\tvar offsetLength2 = dot(in.fsOffsetDirection, in.fsOffsetDirection);\n\t/*\n\t if (parametricDistance < 0.0) {\n\t var d = parametricDistance;\n\t dist = sqrt(d * d + offsetLength2);\n\t } else if (parametricDistance >= segmentLength) {\n\t var d = parametricDistance - segmentLength;\n\t dist = sqrt(d * d + offsetLength2);\n\t } else {\n\t dist = sqrt(offsetLength2);\n\t }\n\t*/\n\n\t//Branchless version of the above ifs (because who doesn't like to do boolean logic with float ops?):\n\tvar ltz = max(0.0, sign(-parametricDistance));\n\tvar gtsl = max(0.0, sign(parametricDistance - segmentLength));\n\tvar d = (ltz + gtsl) * (parametricDistance - gtsl * segmentLength);\n\tdist = sqrt(max(0.0, offsetLength2 + d*d));\n\n\t//pixel is too far out of the line center\n\t//so discard it\n\tvar range = dist - radius;\n\n\t// Handle butt capped ends:\n\t// Any line pattern != 0 (solid line) will automatically use round line ends. This behavior is on purpose!\n\t// Patterned lines must use the (unknown) actual line end style for each dash, not the style of either segment end.\n\t// The actual line end style would have to get passed in from Javascript (e.g., as extra bit in the pattern)\n\tif (roundedEnd < 0.25) {\n\t\t// this pixel is close to a butt capped end. Get its distance to the closer line end.\n\t\tvar buttRange = max(-parametricDistance, parametricDistance - segmentLength);\n\t\trange = max(range, buttRange);\n\t}\n\n\t//Here aaRange will always be 0.5 pixels.\n\t//The logic below blurs a thickness of 1 pixel, a distance of\n\t//(halfLineWidth - 0.5) to (halfLineWidth + 0.5) away from the centerline.\n\n\t//Fully outside, discard\n\tif (range > u.aaRange) {\n\t\tdiscard;\n\t}\n\n\t//The geometry covers this pixel -- do AA.\n\t(*out).color = in.fsColor;\n\n\t//Blur if we are in the blur range.\n\t//The exact parameters to the gaussian function (and inside it)\n\t//are based on personal preference observations\n\tif (range > -u.aaRange) {\n\t\t(*out).color = vec4f((*out).color.xyz, curveGaussian(range+u.aaRange, u.aaRange * 2.0));\n\t}\n\t//out.color.a *= curveGaussian(range, 1.0);\n}\n\nfn EllipticalApprox(\n\t\titers: i32,\n\t\tt0: ptr, t1: ptr,\n\t\ty: vec2f, e: vec2f, ey: vec2f, esqr: vec2f) -> f32 {\n\tvar r: vec2f;\n\tfor (var i = 0; i < 10; i++) { // maximum 10 iterations\n\t\tif (i >= iters) {\n\t\t\tbreak; // early out if we don't want the max number of iterations\n\t\t}\n\n\t\tvar t = mix(*t0, *t1, 0.5); // 0.5*(t0 + t1);\n\t\tr = ey / (vec2(t) + esqr);\n\n\t\tvar rsq = r * r;\n\t\tvar f = rsq.x + rsq.y - 1.0;\n\n\t\tif (f > 0.0) {\n\t\t\t*t0 = t;\n\t\t} else {\n\t\t\t*t1 = t;\n\t\t}\n\t}\n\n\tvar closestPoint = e * r;\n\treturn distance(closestPoint, y);\n}\n\nfn EllipseDistanceSpecial(\n\t\te: vec2f, y: vec2f, width: f32, aaRange: f32) -> f32 {\n\tvar dist: f32;\n\n\t// Bisect to compute the root of F(t) for t >= -e1*e1.\n\tvar esqr = e * e;\n\tvar ey = e * y;\n\tvar t0 = -esqr[1] + ey[1];\n\tvar t1 = -esqr[1] + length(ey);\n\n\t//Do a few initial iterations without loop break checks\n\t//to get approximately close to the result\n\tdist = EllipticalApprox(6, &t0, &t1, y, e, ey, esqr);\n\n\t//Early out -- point is going to be too far to matter for the ellipse outline\n\tif (dist > max(2.0 * (width + aaRange), e[0] * 0.05)) {\n\t\treturn dist;\n\t}\n\n\t//Do a few more iterations to get really close to the result...\n\tdist = EllipticalApprox(6, &t0, &t1, y, e, ey, esqr);\n\n\t//Early out -- point is too far to matter for the ellipse outline\n\t//The bigger the eccentricity, the worse the estimate, so increse\n\t//the tolerance based on that.\n\tvar ecc = 1.0 + 0.1 * e[0] / e[1];\n\n\tif (dist > max(ecc * (width + aaRange), e[0] * 0.001)) {\n\t\treturn dist;\n\t}\n\tif (dist < (width - aaRange) / ecc) {\n\t\treturn dist;\n\t}\n\n\t//Finally get an almost exact answer since\n\t//we are near the line width boundary\n\tdist = EllipticalApprox(10, &t0, &t1, y, e, ey, esqr);\n\treturn dist;\n}\n\n\n//----------------------------------------------------------------------------\n// The ellipse is (x0/e0)^2 + (x1/e1)^2 = 1. The query point is (y0,y1).\n// The function returns the distance from the query point to the ellipse.\n//----------------------------------------------------------------------------\nfn EllipseDistance(\n\t\te: vec2f, y: vec2f, width: f32, aaRange: f32) -> f32 {\n\tvar locE = e;\n\tvar locY = y;\n\tif (e[0] < e[1]) {\n\t\t// Determine the axis order for decreasing extents\n\t\tlocE = locE.yx;\n\t\tlocY = locY.yx;\n\t}\n\n\t// Determine reflections for y to the first quadrant.\n\tvar refl = sign(locY);\n\tlocY *= refl;\n\n\treturn EllipseDistanceSpecial(locE, locY, width, aaRange);\n}\n\nfn fillArc(in: VsOutput, out: ptr) {\n\tvar dist = length(in.fsOffsetDirection);\n\tvar angles = in.fsMultipurpose.xz; // (start, end) angles\n\tvar radiusX = abs(in.fsMultipurpose.y);\n\tvar radiusY = in.fsMultipurpose.w;\n\n\tvar edgeDist: f32;\n\tvar angle: f32;\n\tif (radiusX == radiusY) {\n\t\tedgeDist = abs(dist - radiusX);\n\t\tangle = atan2(in.fsOffsetDirection.y, in.fsOffsetDirection.x);\n\t} else {\n\t\tedgeDist = EllipseDistance(\n\t\t\tvec2(radiusX, radiusY), in.fsOffsetDirection, in.fsHalfWidth, u.aaRange);\n\t\tvar aspect = radiusX / radiusY;\n\t\tangle = atan2(aspect * in.fsOffsetDirection.y, in.fsOffsetDirection.x);\n\t}\n\tedgeDist -= in.fsHalfWidth;\n\n\t// pixel is too far out of the line center\n\t// so discard it\n\tif (edgeDist > u.aaRange) {\n\t\tdiscard;\n\t}\n\n\t// Handle clockwise arcs, which happen when the arc\n\t// crosses the X axis -- convert to CCW arc starting\n\t// at negative angle instead.\n\tif (angles.x > angles.y) {\n\t\t// Handle the case that 0 < angleStart < PI.\n\t\tif (angle > angles.x && angle < PI) {\n\t\t\tangle -= TAU;\n\t\t}\n\t\tangles.x -= TAU;\n\t\t// Fixed for https://jira.autodesk.com/browse/TREX-508: some arcs in this drawing are trimmed after translating\n\t\t// We need to handle the case that -PI < angle < angleStart < 0\n\t\t// In the case, angle needs to add 2*PI to ensure angle in the range of [angleStart, angleEnd]\n\t\tif (angle < angles.x) {\n\t\t\tangle += TAU;\n\t\t}\n\t} else if (angle < 0.0) {\n\t\tangle += TAU;\n\t}\n\n\t// TODO: Do we need this?\n\t// # ifdef LOADING_ANIMATION\n\t// \tif ((angle - angles.x) / (angles.y - angles.x) > loadingProgress) {\n\t// \t\tdiscard;\n\t// \t}\n\t// # endif\n\n\t// Are we in the exact range of the arc?\n\tif (angle > angles.x && angle < angles.y) {\n\t\t(*out).color = in.fsColor;\n\n\t\tif (edgeDist > -u.aaRange) {\n\t\t\t(*out).color.a *= curveGaussian(edgeDist + u.aaRange, u.aaRange * 2.0);\n\t\t}\n\t} else {\n\t\tdiscard;\n\t}\n}\n\n\nfn fillTriangle(in: VsOutput, out: ptr) {\n\t(*out).color = in.fsColor;\n}\n\n\n// Checks whether C is on the right/left of the AB vector\n// Returns 0 on the line\n// -1 on right side\n// 1 on left side\nfn getSide(a: vec2f, b: vec2f, c: vec2f) -> f32 {\n\treturn sign((b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x));\n}\n\n\nstruct PixelOutput {\n\t@location(0) color: vec4f,\n\t@location(1) normal: vec4f,\n\t@location(2) viewDepth: vec4f,\n\t@location(3) dbId: vec4u,\n\t@location(4) modelId: vec4u,\n\t//@location(5) objectFlags: vec4u\n}\n\n@fragment fn psmain(in: VsOutput) -> PixelOutput {\n\n\tvar out: PixelOutput;\n\n\tvar objectUniforms = getObjectUniforms(in.instance);\n\tvar materialUniforms = getMaterialUniforms(objectUniforms.materialIndex);\n\n\t//Is visibility off?\n\t//Note we check for all components to be zero,\n\t//because we still want the ability to mark the ID buffer\n\t//with IDs that do not render anything into the color buffer\n\tif (in.fsColor.a == 0.0 && in.fsColor.r == 0.0 && in.fsColor.g == 0.0 && in.fsColor.b == 0.0) {\n\t\tdiscard;\n\t}\n\n\tif (in.fsHalfWidth == 0.0) {\n\t\t// Filled triangle, not a line, no need for extra math\n\t\tfillTriangle(in, &out);\n\n\t\t// cap mesh hatch pattern\n\t\tif ((materialUniforms.renderFlags & 8) != 0) {\n\t\t\tout.color = calculateHatchPattern(materialUniforms.hatchParams, in.position.xy, out.color,\n\t\t\t\thatchTintColor, materialUniforms.hatchTintIntensity);\n\t\t}\n\t} else if (in.fsMultipurpose.y < 0.0) {\n\t\tfillArc(in, &out);\n\t} else {\n\t\tfillLineSegment(in, &out);\n\t}\n\n\t// The LineShader requires the ability to discard IDs independent of color. This is needed for ghosted 2D\n\t// objects, which are visible, but not selectable (allowing to select the object below).\n\t// To support this, the id_frag shader chunk supports the ENABLE_ID_DISCARD macro, which is always defined\n\t// by LineShader. If this macro is set, id_frag requires a variable writeId to control whether the id is\n\t// written (writeId=1.0) or not (writeId=0.0).\n\tvar writeId = 1.0;\n\n\tout.color.a *= u.opacity;\n\t// For fully transparent pixels we can discard\n\tif (out.color.a == 0.0) {\n\t\tdiscard;\n\t}\n\n\t// Apply ghosting, i.e., make an object transparent and exclude it from ID buffer if...\n\t// a) It is in the ghosting layer (see FragmentList.js)\n\t// b) We are in 2D measure mode and it belongs to a different viewport than the first selected one\n\tif (in.fsGhosting != 0.0)\n\t\t//|| ((in.viewportId != 0.0) && (abs(in.fsVpTC.x * 255.0 + in.fsVpTC.y) >= 0.5 && abs(in.fsVpTC.x * 255.0 + in.fsVpTC.y - in.viewportId) >= 0.5)))\n\t{\n\t\t// apply ghosting\n\t\twriteId = 0.0;\n\n\t\t// When swapping black and white, must kick up faded inks a bit to give them more contrast\n\t\t// with the (likely to be black) background. By visual test, 0.21 looks good.\n\t\t//DT gl_FragColor.a *= ((u.swap == 1.0) ? 0.21 : 0.1);\n\t\tout.color.a *= 0.30;\n\t}\n\n\t//check doNotCut flag\n\tif (commonMaterialUniforms.doNotCutOverride + (materialUniforms.renderFlags & 2) == 0) {\n\t\tcheckCutPlanes(in.vWorldPosition);\n\t}\n\n\tif (writeId == 1.0) {\n\t\t//Store object identity information\n\t\tout.dbId = in.dbId;\n\n\t\t//Currently we don't have enough room to bind a third ID render target (32 byte limit on render attachments),\n\t\t//so we stash half of the object flags in the modelId\n\t\t//output.objectFlags = intToVec(objectUniforms.objectFlags);\n\n\t\tout.modelId = intToVec(objectUniforms.modelId | (objectUniforms.objectFlags << 16));\n\t}\n\n\treturn out;\n}\n",{IBL:Q(0),cameraUniforms:te(1),objectUniforms:G(2),lineUniforms:(t=3,(0,d.$wgsl)(me,{group:t})),hatch:v,materialHasLineStyles:e.hasLineStyles});var t}class be{#rt;#et;#Mt=new Map;#qi;#Yi;#Ki;#Qi;#tn;constructor(e){this.#rt=e,this.#et=e.getDevice(),this.#Qi=this.#rt.getVB(),this.#tn=ce}#Ct(e,t,i){let n,r=this.#et.createShaderModule({code:ye(i)});return n=this.#et.createRenderPipeline({layout:this.#et.createPipelineLayout({bindGroupLayouts:this.#Yi}),vertex:{module:r,entryPoint:"vsmain",buffers:le(t)},fragment:{module:r,entryPoint:"psmain",targets:this.#Ki},primitive:{topology:"triangle-list",cullMode:"none"},depthStencil:{depthWriteEnabled:i.depthWrite,depthCompare:i.depthTest?i.depthFunc||"less-equal":"always",format:x}}),this.#Mt.set(e,n),n}reset(e,t){this.#qi=null,this.#Yi=e,this.#Ki=t}drawOne(e,t,i,n){const r=this.#tn(i,n);let o=this.#Mt.get(r);o||(o=this.#Ct(r,i,n)),o!==this.#qi&&(e.setPipeline(o),this.#qi=o),this.#Qi.draw(e,i,t)}}var xe=i(72091),_e=i.n(xe);let Ee,Se=[],Ae=[],we=new(_e().Vector3),Te=new(_e().Frustum),Me=!1;function Ce(e,t){return e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.z!==t.z?e.z-t.z:e.id-t.id}function Pe(e,t){return e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.material.id!==t.material.id?e.material.id-t.material.id:e.z!==t.z?t.z-e.z:e.id-t.id}function De(e,t,i){if(i||!1!==e.visible){if(e instanceof _e().Scene||e instanceof _e().Group);else if(e instanceof S.RenderBatch);else if(e instanceof _e().Light);else if((e instanceof _e().Mesh||e instanceof _e().Line)&&(!1===e.frustumCulled||!0===Te.intersectsObject(e))){const i=e.material;i&&(i.transparent?Ae.push(e):Se.push(e),i.is2d&&(Me=!0)),!0===t&&(we.setFromMatrixPosition(e.matrixWorld),we.applyProjection(Ee),e.z=we.z)}if(e.children)for(let n=0,r=e.children.length;n0&&(e-r>n?(e=r+n,o=e):n=Math.max(0,n-(e-r)));r0&&a-r>n&&(a=r+n,o=a+s);r1.5?1:.6;Ue.w=i,this.#xn=H(Ue),this.#Tn(e,t),this.#pn.setTargetSize(e,t)}#Mn(e){let t=this.#et.createCommandEncoder();t.beginRenderPass(e).end(),this.#et.queue.submit([t.finish()])}clearMainTargets(){this.#Mn(this.#rn)}clearOverlayTargets(){this.#Mn(this.#on)}setGhostingBrightness(e){this.#_n=H(e?Be:ke)}updatePixelScale(e,t){this.#pn&&(this.#pn.updatePixelScale(e,t),this.#pn.upload())}setLineStyleBuffer(e,t){this.#pn&&(this.#pn.setLineStyleBuffer(e,t),this.#pn.upload())}getIBL(){return this.#dn}#Cn(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,o=e.beginRenderPass(t),s=o;if(i){if(!i.record)return o;s=i}return s.setBindGroup(0,this.#dn.getBindGroup()),s.setBindGroup(1,this.#fn.getBindGroup()),s.setBindGroup(2,this.#Ft.getBindGroup(n,r)),s.setBindGroup(3,this.#Mi.getBindGroup()),o}#Pn(e,t){let i=e.beginRenderPass(t);return i.setBindGroup(0,this.#dn.getBindGroup()),i.setBindGroup(1,this.#fn.getBindGroup()),i.setBindGroup(2,this.#Ft.getBindGroup(-1)),i.setBindGroup(3,this.#pn.getBindGroup()),i}#Dn(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=e.finish();if(i&&t&&this.#Ft.writeToQueue(t),!i)return n;this.#et.queue.submit([n])}beginScene(e,t){this.#fn.update(e),this.#dn.update()}#Ln(e,t,i){let n;if(!this.#cn||this.#hn.record){const r=this.#Ft.getRenderIndex(i);this.#An[this.#A]=e,this.#wn[this.#A]=r,n=this.#mn.drawOne(this.#un,r,e,t),this.#Ft.initMaterialUpdateHook(t,n),t.needsUpdate=!1,this.#A++}}#In(e,t,i){const n=this.#Ft.getRenderIndex(i);this.#gn.drawOneGhosted(this.#un,n,e,Fe)}#Rn(e){const t=e.geometry,i=e.material;this.#An[this.#A]=t,this.#wn[this.#A]=this.#A;const n=this.#mn.drawOne(this.#un,this.#A,t,i);this.#Ft.setOneObjectData(e,this.#A),this.#Ft.setOneMaterialData(i,n),this.#A++}#On(e){this.#Ft.setOneObjectData(e,this.#A),this.#gn.drawOneGhosted(this.#un,this.#A,e.geometry,Fe),this.#A++}#Nn(e){const t=this.#et.createRenderBundleEncoder(e);return t.record=!0,t}#Fn(e,t,i,n){if(n){let r=n;n.record&&(r=n.finish(),e.setRenderBundle(t,r)),i.executeBundles([r])}}renderScenePart(e,t){let i,n,r,o,s,a,l,c,h=this.#rt.getRenderTargets();if(h.setTargetsDirty(),this.#cn=!1,e instanceof S.RenderBatch)i=e,n=i.frags.modelId,r=!0,o=this.#Ln.bind(this),s=this.#In.bind(this),this.#Ft.resetUpdateHeuristic(n),i.uniformsNeedUpdate&&(this.#Ft.updateBatch(i),i.uniformsNeedUpdate=!1),this.#cn=i.useRenderBundles,this.#rt.clearModelVisibilityDirty(n),this.#cn&&(a=i.getRenderBundle(0),l=i.getRenderBundle(1),t&&a&&!l&&(a=null),!t&&l&&(i.setRenderBundle(1,null),l=null),c=i.getRenderBundle(2));else{if(i=Ie(e,this.#fn.getViewProjectionMatrix()),!i)return;n=-1,r=!1,o=this.#Rn.bind(this),s=this.#On.bind(this)}if(i.is2d())return void this.#Un(i);let u=h.getTargetsListMainPass(),d=h.getTargetsListEdgePass();this.#Ft.setDoNotCutOverride(!1);let f,p=0;do{this.#A=0;let h=this.#et.createCommandEncoder();if(e.edgesOnly){this.#Ft.setEdgeColorInt(this.#_n),this.#cn&&!c&&(c=this.#Nn(this.#ln));let e=this.#Cn(h,this.#nn,c,n,i.start);this.#un=c||e,this.#gn.reset(this.#En,d),this.#A=0;let t=0;this.#cn&&!c.record||(t=i.forEachWGPU(p,this.#Ft.MAX_BATCH,s)),this.#Fn(i,2,e,c),e.end(),f=this.#Dn(h,this.#A,!r),p=t}else{this.#Ft.setEdgeColorInt(this.#xn),this.#cn&&(a||(a=this.#Nn(this.#an)),this.#hn=a);let e=this.#Cn(h,this.#in,a,n,i.start);this.#un=a||e,this.#mn.reset(this.#En,u);let s=0;if(this.#cn&&!a.record||(s=i.forEachWGPU(p,this.#Ft.MAX_BATCH,o)),this.#Fn(i,0,e,a),e.end(),t){this.#cn&&!l&&(l=this.#Nn(this.#ln));let e=this.#Cn(h,this.#nn,l,n,i.start);if(this.#un=l||e,this.#gn.reset(this.#En,d),!this.#cn||l.record)for(let e=0;e0);return this.#un=null,this.#hn=null,f}#Un(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=this.#rt.getRenderTargets();n.setTargetsDirty();let r=e,o=i?n.getOverlayTargetsList():n.getTargetsListMainPass();this.#Ft.setDoNotCutOverride(!1);let s=0;do{let e=0,n=this.#et.createCommandEncoder();const a=i?this.#sn:this.#in;let l=this.#Pn(n,a);const c=i?this.#bn:this.#yn;c.reset(this.#Sn,o);let h=r.forEachWGPU(s,this.#Ft.MAX_BATCH,(i=>{const n=i.geometry,r=t||i.material;c.drawOne(l,e,n,r),this.#Ft.setOneObjectData(i,e),this.#Ft.setOneMaterialData2D(r,0),e++}));l.end(),this.#Dn(n,e),s=h}while(s>0)}renderOverlay(e,t,i,n,r,o,s){this.#fn.update(t);let a=Ie(e,this.#fn.getViewProjectionMatrix());if(a.is2d())return void this.#Un(a,i,!0);let l=this.#rt.getRenderTargets().getOverlayTargetsList();this.#Ft.setDoNotCutOverride(!0);let c,h=0;do{let e,t=0,s=this.#et.createCommandEncoder();i&&(e=i),this.#Ft.setEdgeColorInt(H(o||Ge));let u=this.#Cn(s,this.#sn);if(this.#vn.reset(this.#En,l),c=a.forEachWGPU(h,this.#Ft.MAX_BATCH,(i=>{const n=i.geometry,r=i.material;this.#An[t]=n;const o=e||r,s=this.#vn.drawOne(u,t,n,o);i.material=o,this.#Ft.setOneObjectData(i,t),this.#Ft.setOneMaterialData(o,s),t++})),u.end(),n){if(r){let e=this.#Cn(s,this.#sn);this.#gn.reset(this.#En,l);for(let i=0;i{const r=this.#vn.drawOne(e,t,n.geometry,i);this.#Ft.setMaterialReference(t*this.#Ft.OBJECT_STRIDE_32,i),this.#Ft.setOneMaterialData(i,r),t++})),e.end()}}if(r){let e=this.#Cn(s,this.#sn);this.#gn.reset(this.#En,l);for(let i=0;i0)}}const He="$0 // ghosting\n\n@id(0) override r1: f32 = 0.9;\n@id(1) override g1: f32 = 0.9;\n@id(2) override b1: f32 = 0.9;\n\n@id(3) override r2: f32 = 0.59;\n@id(4) override g2: f32 = 0.59;\n@id(5) override b2: f32 = 0.59;\n\n@fragment\nfn main(\n @builtin(position) coord : vec4f,\n @location(0) @interpolate(linear) vUv: vec2f\n) -> @location(0) vec4f {\n var outColor = mix(vec3f(r2, g2, b2), vec3f(r1, g1, b1), vUv.y);\n return vec4f(outColor + orderedDithering(vec2i(floor(coord.xy))) / 256.0, 1.0);\n}\n";function We(e){let t,i,n,r,o,s,a,l,c,u,f,p=e,m=!1;function g(){i=t.createRenderPipeline({layout:"auto",vertex:{module:r,entryPoint:"main"},fragment:{module:o,entryPoint:"main",targets:[{format:p.getRenderTargets().getColorTarget().format}],constants:{0:s,1:a,2:l,3:c,4:u,5:f}},primitive:{topology:"triangle-list",cullMode:"back"}})}this.init=function(){t=p.getDevice(),r||(r=t.createShaderModule({code:h})),o||(o=t.createShaderModule({code:(0,d.$wgsl)(He,de)})),!i&&m&&g(),n||(n={colorAttachments:[{view:void 0,clearValue:{r:0,g:0,b:0,a:1},loadOp:"clear",storeOp:"store"}]})},this.run=function(){if(!t||!m)return;let e=t.createCommandEncoder();n.colorAttachments[0].view=p.getRenderTargets().getColorTargetView();let r=e.beginRenderPass(n);r.setPipeline(i),r.draw(3),r.end(),t.queue.submit([e.finish()])},this.setClearColors=function(e,n,r,o,h,d){s=e,a=n,l=r,c=o,u=h,f=d,i=null,t&&g(),m=!0},this.getClearColors=function(){return[s,a,l,c,u,f]}}const je="@group(0) @binding(0) var envMap: texture_cube;\n@group(0) @binding(1) var envSampler: sampler;\n\nstruct EnvMapUniforms {\n\tuCamDir: vec4f,\n\tuCamUp: vec4f,\n\tuResolution: vec2f,\n\tuHalfFovTan: f32,\n\tenvMapExposure: f32,\n\texposureBias: f32,\n\ttonemapMethod: i32\n}\n@group(1) @binding(0) var u : EnvMapUniforms;\n\n$tonemap\n$envMapSample\n\nfn rayDir(vUv: vec2f) -> vec3f {\n var A = (u.uResolution.x/u.uResolution.y)*normalize(cross(u.uCamDir.xyz,u.uCamUp.xyz)) * (u.uHalfFovTan * 2.0);\n var B = normalize(u.uCamUp.xyz) * (u.uHalfFovTan * 2.0);\n var C = normalize(u.uCamDir.xyz);\n\n var ray = normalize( C + (2.0*vUv.x - 1.0)*A + (2.0*vUv.y - 1.0)*B );\n return ray;\n}\n\n\n@fragment\nfn main\t(\n\t@builtin(position) coord : vec4f,\n\t@location(0) @interpolate(linear) vUv: vec2f\n) -> @location(0) vec4f {\n\n\tvar rd = rayDir(vUv);\n\n\tvar outColor = sampleIrradianceMap(rd, envMap, envSampler, u.envMapExposure).xyz;\n\n#if $tonemapMethod1\n\toutColor = toneMapCanonOGS_WithGamma_WithColorPerserving(u.exposureBias * outColor.xyz);\n#elif $tonemapMethod2\n\toutColor = toneMapCanonFilmic_WithGamma(u.exposureBias * outColor.xyz);\n#endif\n\n\treturn vec4f(outColor, 1.0);\n}\n";var qe=i(96118);let Xe=new qe.LmvVector3;class Ye extends f.D{constructor(e){super(e,14,!0,!1)}update(e,t,i,n,r,o){let s=e.worldUpTransform?e.getWorldDirection(Xe).applyMatrix4(e.worldUpTransform):e.getWorldDirection(Xe);this.setVector3(0,s);let a=e.worldUpTransform?e.up.clone().applyMatrix4(e.worldUpTransform):e.up;this.setVector3(4,a),this.setFloat(8,t[0]),this.setFloat(9,t[1]),this.setFloat(10,Math.tan(THREE.Math.degToRad(.5*e.fov))),this.setFloat(11,n),this.setFloat(12,r),this.setInt(13,o)}}function Ke(e){let t,i,n,r,o,s,a,l=e,c=1,u=1,f=0;this.init=function(){var e,i;t=l.getDevice(),n=new Ye(t),o||(o=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float",viewDimension:"cube"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]})),r||(r=t.createRenderPipeline({layout:t.createPipelineLayout({bindGroupLayouts:[o,n.getLayout()]}),vertex:{module:t.createShaderModule({code:h}),entryPoint:"main"},fragment:{module:t.createShaderModule({code:(e=!0,i=2,(0,d.$wgsl)(je,{tonemap:g,envMapSample:J(e,!e,i>0),tonemapMethod1:1===i,tonemapMethod2:2===i}))}),entryPoint:"main",targets:[{format:l.getRenderTargets().getColorTarget().format}]},primitive:{topology:"triangle-list",cullMode:"back"}})),a||(a={colorAttachments:[{view:void 0,clearValue:{r:0,g:0,b:0,a:1},loadOp:"clear",storeOp:"store"}]})},this.setCubeMap=function(e){(0,T.rL)(e),(0,T.el)(i),i=e},this.getCubeMap=function(){return i},this.hasCubeMap=function(){return!!i},this.setEnvExposure=function(e){const t=Math.pow(2,e);t!==u&&(u=t)},this.setExposureBias=function(e){let t=Math.pow(2,e);t!==c&&(c=t)},this.setTonemapMethod=function(e){f!==e&&(f=e)},this.setEnvRotation=function(e){},this.setCamera=function(e,i){if(!t)return;let r=l.getRenderTargets().getTargetSize();n.update(e,r,i,u,c,f)},this.run=function(){if(!t)return;!i.needsUpdate&&s||((0,T.eY)(t,i),s=t.createBindGroup({layout:o,entries:[{binding:0,resource:i.__gpuTextureCube.createView({dimension:"cube"})},{binding:1,resource:i.__gpuSampler}]})),n.upload();let e=t.createCommandEncoder();a.colorAttachments[0].view=l.getRenderTargets().getColorTargetView();let c=e.beginRenderPass(a);c.setPipeline(r),c.setBindGroup(0,s),c.setBindGroup(1,n.getBindGroup()),c.draw(3),c.end(),t.queue.submit([e.finish()])}}const Qe='$pack_depth\n\n// Total number of direct samples to take at each pixel\nconst NUM_SAMPLES = 17;\n\n// If using depth mip levels, the log of the maximum pixel offset before we need to switch to a lower\n// miplevel to maintain reasonable spatial locality in the cache\n// If this number is too small (< 3), too many taps will land in the same pixel, and we\'ll get bad variance that manifests as flashing.\n// If it is too high (> 5), we\'ll get bad performance because we\'re not using the MIP levels effectively\nconst LOG_MAX_OFFSET: i32 = 3;\n\n// This must be less than or equal to the MAX_MIP_LEVEL defined in SSAO.cpp\nconst MAX_MIP_LEVEL: i32 = 5;\n\n// This is the number of turns around the circle that the spiral pattern makes. This should be prime to prevent\n// taps from lining up. This particular choice (5) was tuned for NUM_SAMPLES == 17\n// Here is the table. The one\'s digit is the column, the ten\'s is the row to look at.\n// +0 1 2 3 4 5 6 7 8 9\n// 1, 1, 1, 2, 3, 2, 5, 2, 3, 2, // 00\n// 3, 3, 5, 5, 3, 4, 7, 5, 5, 7, // 10\n// 9, 8, 5, 5, 7, 7, 7, 8, 5, 8, // 20\n// 11, 12, 7, 10, 13, 8, 11, 8, 7, 14, // 30\n// 11, 11, 13, 12, 13, 19, 17, 13, 11, 18, // 40\n// 19, 11, 11, 14, 17, 21, 15, 16, 17, 18, // 50\n// 13, 17, 11, 17, 19, 18, 25, 18, 19, 19, // 60\n// 29, 21, 19, 27, 31, 29, 21, 18, 17, 29, // 70\n// 31, 31, 23, 18, 25, 26, 25, 23, 19, 34, // 80\n// 19, 27, 21, 25, 39, 29, 17, 21, 27, 29}; // 90\n\nconst NUM_SPIRAL_TURNS = 5;\n\nconst MIN_RADIUS = 3.0; // pixels\n\nconst TAU = 6.28318530718;\n\n//////////////////////////////////////////////////\n\n//\n// Uniforms and functions to reconstruct camera-space and world-space positions.\n// in post-processing passes from the (linear) depth texture.\n//\nstruct SAOUniforms {\n\t// vec4 used to reconstruct camera-space positions from screen-space + zValue (from tDepth).\n\t// It is computed from canvas resolution and projection matrix used during scene rendering by:\n\t// (see RenderContext.beginScene)\n\t//\n\t// vec4(-2.0f / (width*P[0][0]),\n\t// -2.0f / (height*P[1][1]),\n\t// ( 1.0f - P[0][2]) / P[0][0],\n\t// ( 1.0f + P[1][2]) / P[1][1])\n\t//\n\t// where P is the projection matrix that maps camera space points\n\t// to [-1, 1] x [-1, 1].\n\tprojInfo: vec4f,\n\n\t/* The height in pixels of a 1m object if viewed from 1m away.\n\t You can compute it from your projection matrix. The actual value is just\n\t a scale factor on radius; you can simply hardcode this to a constant (~500)\n\t and make your radius value unitless (...but resolution dependent.) */\n\tprojScale: f32,\n\n\tcameraNear: f32,\n\tcameraFar: f32,\n\tlumInfluence: f32,// how much luminance affects occlusion\n\n\t/* World-space AO radius in scene units (r). e.g., 1.0m */\n\tradius: f32,\n\t/* Bias to avoid AO in smooth corners, e.g., 0.01m */\n\tbias: f32,\n\tintensity: f32,\n\tisOrtho: i32 // 1 if ortho-camera is used, 0 for perspective\n}\n\n// Negative, "linear" depth values in world-space units\n@group(0) @binding(0) var tNormals: texture_2d;\n@group(0) @binding(1) var tDepth: texture_2d;\n@group(0) @binding(2) var u: SAOUniforms;\n\n#if $USE_MIPMAP\n\t@group(0) @binding(3) var tDepth_mip: texture_2d;\n#endif\n\n\n/* intensity / radius^6 */\n//uniform float intensityDivR6;\n//float intensityDivR6 = intensity / pow(radius, 6.0);\n\n/* Returns a unit vector and a screen-space radius for the tap on a unit disk (the caller should scale by the actual disk radius) */\nfn tapLocation(sampleNumber: i32, spinAngle: f32) -> vec3f {\n\t// Radius relative to ssR\n\tvar alpha = (f32(sampleNumber) + 0.5) * (1.0 / f32(NUM_SAMPLES));\n\tvar angle = alpha * (f32(NUM_SPIRAL_TURNS) * TAU) + spinAngle;\n\n\treturn vec3f(cos(angle), sin(angle), alpha);\n}\n\n\n/* Used for packing Z into the GB channels */\nfn CSZToKey(z: f32) -> f32 {\n\t// convert from z in camera space to 0-1 space:\n\t// z is a negative value, near and far are positive\n\t// (-z-cameraNear) / (cameraFar-cameraNear)\n\treturn clamp( (z + u.cameraNear) / (u.cameraNear - u.cameraFar), 0.0, 1.0);\n}\n\n\n/* Used for packing Z into the GB channels */\nfn packKey(key: f32) -> vec2f {\n\tvar p: vec2f;\n\n\t// Round to the nearest 1/256.0\n\tvar temp = floor(key * 255.0);\n\n\t// Integer part\n\tp.x = temp * (1.0 / 255.0);\n\n\t// Fractional part\n\tp.y = key * 255.0 - temp;\n\n\treturn p;\n}\n\n//Used to unpack depth value when input depth texture is RGBA8\nfn unpackDepthNearFar( packedDepth: vec3f ) -> f32 {\n\tvar depth = unpackDepth10(packedDepth);\n\tif (depth == 0.0) {\n\t\t//pixel is sky box\n\t\treturn -u.cameraFar * 1.0e10;\n\t}\n\treturn -(depth * (u.cameraFar - u.cameraNear) + u.cameraNear);\n}\n\n/*\n Clipping plane constants for use by reconstructZ\n\n clipInfo = (z_f == -inf()) ? Vector3(z_n, -1.0f, 1.0f) : Vector3(z_n * z_f, z_n - z_f, z_f);\n */\n//"uniform vec3 clipInfo;",\n//"vec3 clipInfo = vec3(cameraNear * cameraFar, cameraNear - cameraFar, cameraFar);",\n\n//"float reconstructCSZ(float d) {",\n// "return clipInfo[0] / (clipInfo[1] * d + clipInfo[2]);",\n//"}",\n\n/* Reconstructs screen-space unit normal from screen-space position */\n//vec3 reconstructCSFaceNormal(vec3 C) {\n// return normalize(cross(dFdy(C), dFdx(C)));\n//}\n\n//vec3 reconstructNonUnitCSFaceNormal(vec3 C) {\n// return cross(dFdy(C), dFdx(C));\n//}\n\n\n// Reconstruct camera-space P.xyz from screen-space fragCoords = (x, y) in\n// pixels and camera-space z < 0. Assumes that the upper-left pixel center\n// is at (0.5, 0.5) [but that need not be the location at which the sample tap\n// was placed!]\n//\n// Costs 3 MADD. Error is on the order of 10^3 at the far plane, partly due to z precision.\nfn reconstructCSPosition(fragCoords: vec2f, z: f32) -> vec3f {\n\tvar ndc = (fragCoords * u.projInfo.xy + u.projInfo.zw);\n\n\tif (u.isOrtho != 0) {\n\t\treturn vec3f(ndc * -1.0, z);\n\t} else {\n\t\treturn vec3f(ndc * z, z);\n\t}\n}\n\n/* Read the camera-space position of the point at screen-space pixel ssP */\nfn getPosition(ssP: vec2, depth: f32) -> vec3f {\n\t// Offset to pixel center\n\tvar P = reconstructCSPosition(vec2f(ssP) + vec2f(0.5), depth);\n\treturn P;\n}\n\n/* Read the camera-space position of the point at screen-space pixel ssP + unitOffset * ssR. Assumes length(unitOffset) == 1 */\nfn getOffsetPosition(ssC: vec2i, unitOffset: vec2f, ssR: f32) -> vec3f {\n\n\tvar ssP = vec2i(ssR * unitOffset) + ssC;\n\n\tvar z: f32;\n\n\t// We need to divide by 2^mipLevel to read the appropriately scaled coordinate from a MIP-map.\n\t// Manually clamp to the texture size because texelFetch bypasses the texture unit\n\t//"ivec2 mipP = clamp(ssP >> mipLevel, ivec2(0), textureSize(CS_Z_buffer, mipLevel) - ivec2(1));",\n\t//"ivec2 mipP = ssP;",\n\t//"P.z = texelFetch(tDepth, mipP, 0).z;",\n\n#if $USE_MIPMAP\n\tvar mipLevel: u32 = u32(clamp(i32(floor(log2(ssR))) - LOG_MAX_OFFSET, 0, MAX_MIP_LEVEL));\n\n\tif (mipLevel == 0) {\n\t\tz = unpackDepthNearFar(textureLoad(tDepth, ssP, 0).rgb);\n\t}\n\telse {\n\t\tmipLevel -= 1;\n\t\tvar mipP: vec2i = clamp(ssP >> vec2u(mipLevel + 1), vec2i(0), vec2i(textureDimensions(tDepth_mip, mipLevel)) - vec2i(1));\n\t\tz = unpackDepthNearFar(textureLoad(tDepth_mip, mipP, mipLevel).rgb);\n\t}\n#else\n\tz = unpackDepthNearFar(textureLoad(tDepth, ssP, 0).rgb);\n#endif\n\n\n\t// Offset to pixel center\n\treturn reconstructCSPosition(vec2f(ssP) + vec2f(0.5), z);\n}\n\n/** Compute the occlusion due to sample with index \\a i about the pixel at \\a ssC that corresponds\n to camera-space point \\a C with unit normal \\a n_C, using maximum screen-space sampling radius \\a ssDiskRadius\n\n Note that units of H() in the HPG12 paper are meters, not\n unitless. The whole falloff/sampling function is therefore\n unitless. In this implementation, we factor out (9 / radius).\n\n Four versions of the falloff function are implemented below\n */\nfn sampleAO(ssC: vec2i, C: vec3f, n_C: vec3f, ssDiskRadius: f32, tapIndex: i32, randomPatternRotationAngle: f32) -> f32 {\n\t// Offset on the unit disk, spun for this pixel\n\tvar unitOffset = tapLocation(tapIndex, randomPatternRotationAngle);\n\tvar ssR = unitOffset.z;\n\n\t// Ensure that the taps are at least 1 pixel away\n\tssR = max(0.75, ssR * ssDiskRadius);\n\n\t// The occluding point in camera space\n\tvar Q = getOffsetPosition(ssC, unitOffset.xy, ssR);\n\n\t// aoValueFromPositionsAndNormal() in original code\n\tvar v = Q - C;\n\n\tvar vv = dot(v, v);\n\tvar vn = dot(v, n_C);\n\n\tconst epsilon = 0.001; // was 0.01, but in G3D code it\'s 0.001\n\n\t// Without the angular adjustment term, surfaces seen head-on have less AO\n\tvar angAdjust = mix(1.0, max(0.0, 1.5 * n_C.z), 0.35);\n\n\t// fallOffFunction()\n\t// comment out this line for lower quality function:\n//#define HIGH_QUALITY\n\t// A: From the HPG12 paper\n\t// Note large epsilon to avoid overdarkening within cracks\n\t//"return angAdjust * float(vv < radius * radius) * max((vn - bias) / (epsilon + vv), 0.0) * (radius * radius) * 0.6;",\n\n\t// B: Smoother transition to zero (lowers contrast, smoothing out corners). [Recommended]\n//#ifdef HIGH_QUALITY\n\n\t// Higher quality version:\n\t// Epsilon inside the sqrt for rsqrt operation\n\tvar f = max(1.0 - vv / (u.radius * u.radius), 0.0); return angAdjust * f * max((vn - u.bias) / sqrt(epsilon + vv), 0.0);\n//# else\n\t// Avoid the square root from above.\n\t// Assumes the desired result is intensity/radius^6 in main()\n\t//var f = max(u.radius * u.radius - vv, 0.0); return angAdjust * f * f * f * max((vn - u.bias) / (epsilon + vv), 0.0);\n//# endif\n\n\t// C: Medium contrast (which looks better at high radii), no division. Note that the\n\t// contribution still falls off with radius^2, but we\'ve adjusted the rate in a way that is\n\t// more computationally efficient and happens to be aesthetically pleasing.\n\t//"return angAdjust * 4.0 * max(1.0 - vv / (radius * radius), 0.0) * max(vn - bias, 0.0);",\n\n\t// D: Low contrast, no division operation\n\t//"return angAdjust * 2.0 * float(vv < radius * radius) * max(vn - bias, 0.0);",\n}\n\n\n// user variables\n\n\n// random angle in radians between 0 and 2 PI\nfn getRandomAngle(pos: vec2f) -> f32 {\n\t// from http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/\n\tvar dt = dot(pos ,vec2f(12.9898,78.233));\n\treturn TAU * fract(sin(dt % 3.14) * 43758.5453);\n}\n\n@fragment fn psmain(\n\t@builtin(position) position: vec4f,\n\t@location(0) @interpolate(linear) vUv: vec2f\n) -> @location(0) vec4f {\n\n\t// Pixel being shaded\n\tvar ssC = vec2i(floor(position.xy));\n\n\t//get the normal and depth from our normal+depth texture\n\tvar nrmz = textureLoad(tNormals, ssC, 0);\n\tvar depth = unpackDepth10(textureLoad(tDepth, ssC, 0).rgb);\n\n\t//TODO: figure out how to hook this up with a depth test\n\t// Unneccessary with depth test.\n\tif (depth == 0.0) {\n\t\t// We\'re on the skybox\n\t\treturn vec4f(1.0, packKey(1.0), 0.0);\n\t}\n\n\tdepth = -(depth * (u.cameraFar - u.cameraNear) + u.cameraNear);\n\n\tvar output: vec4f;\n\n\t// Camera space point being shaded\n\tvar C = getPosition(ssC, depth);\n\n\tvar outputGB = packKey(CSZToKey(C.z));\n\toutput.g = outputGB.x;\n\toutput.b = outputGB.y;\n\n\t// Choose the screen-space sample radius\n\t// proportional to the projected area of the sphere.\n\t// If orthographic, use 1.0 for the divisor, else use the world-space point\'s Z value.\n\tvar ssDiskRadius = u.projScale * u.radius;\n\tif (u.isOrtho == 0) {\n\t\tssDiskRadius /= -C.z;\n\t}\n\n\tvar A: f32;\n\tif (ssDiskRadius <= MIN_RADIUS) {\n\t\t// There is no way to compute AO at this radius\n\t\tA = 1.0;\n\t} else {\n\n\t\tvar sum = 0.0;\n\n\t\t// Hash function used in the HPG12 AlchemyAO paper\n\t\t//var randomPatternRotationAngle = modXXX(f32((((3 * ssC.x) ^ (ssC.y + ssC.x * ssC.y))) * 10), TAU);\n\t\tvar randomPatternRotationAngle = getRandomAngle(vUv);\n\n\t\t// Reconstruct normals from positions. These will lead to 1-pixel black lines\n\t\t// at depth discontinuities, however the blur will wipe those out so they are not visible\n\t\t// in the final image.\n\t\t//vec3 n_C = reconstructCSFaceNormal(C);\n\t\tvar n_C = unpackNormal10(nrmz.xyz);\n\n\t\tfor (var i = 0; i < NUM_SAMPLES; i++) {\n\t\t\tsum += sampleAO(ssC, C, n_C, ssDiskRadius, i, randomPatternRotationAngle);\n\t\t}\n\n\t\t//var intensityDivR6 = u.intensity / pow(u.radius, 6.0);\n\t\t// high quality:\n\t//#ifdef HIGH_QUALITY\n\t\tA = pow(max(0.0, 1.0 - sqrt(sum * (3.0 / f32(NUM_SAMPLES)))), u.intensity);\n\n\t//# else\n\t\t// lower quality:\n\t\t//A = max(0.0, 1.0 - sum * intensityDivR6 * (5.0 / float(NUM_SAMPLES)));\n\t\t// Use the following line only with the lower quality formula.\n\t\t// Anti-tone map to reduce contrast and drag dark region farther\n\t\t// (x^0.2 + 1.2 * x^4)/2.2\n\t\t//A = (pow(A, 0.2) + 1.2 * A*A*A*A) / 2.2;\n\t//# endif\n\n\t\t// This code has been removed by the creator of the algorithm, see:\n\t\t// http://g3d.cs.williams.edu/websvn/filedetails.php?repname=g3d&path=%2FG3D10%2Fdata-files%2Fshader%2FAmbientOcclusion%2FAmbientOcclusion_AO.pix\n\t\t// In practice it seems to make no difference visually, but matters for\n\t\t// time spent in the benchmark! We see drops on 80 spheres metal and red of 20%. Weird.\n\t\t// So, we\'ll leave it in.\n\t\t// Bilateral box-filter over a quad for free, respecting depth edges\n\t\t// (the difference that this makes is subtle)\n\t\t//"if (abs(dFdx(C.z)) < 0.02) {",\n\t\t// "A -= dFdx(A) * ((ssC.x & 1) - 0.5);",\n\t\t//"}",\n\t\t//"if (abs(dFdy(C.z)) < 0.02) {",\n\t\t// "A -= dFdy(A) * ((ssC.y & 1) - 0.5);",\n\t\t//"}",\n\t\t/*\n\t\tif (abs(dFdx(C.z)) < 0.02) {\n\t\t\tA -= dFdx(A) * (mod(float(ssC.x), 2.0) - 0.5);\n\t\t}\n\t\tif (abs(dFdy(C.z)) < 0.02) {\n\t\t\tA -= dFdy(A) * (mod(float(ssC.y), 2.0) - 0.5);\n\t\t}\n\t\t*/\n\n\t\t// Fade in as the radius reaches 2 pixels\n\t\tA = mix(1.0, A, clamp(ssDiskRadius - MIN_RADIUS,0.0,1.0));\n\t}\n\n\toutput.r = A;\n\toutput.a = 1.0;\n\n\t// to show depths instead of SAO, uncomment:\n\t//output.r = CSZToKey(C.z);\n\t// to show normal component (pick one, x or y):\n\t//output.r = nrmz.y;\n\n\treturn output;\n\n}\n',Ze=!0;const $e="@group(0) @binding(0) var tDepth: texture_2d;\n\n@fragment\nfn psmain(\n\t@builtin(position) coord : vec4f,\n) -> @location(0) vec4f {\n\n\t// Rotated grid subsampling to avoid XY directional bias or Z precision bias while downsampling.\n\tvar ssP = vec2i(coord.xy);\n\treturn textureLoad(tDepth, clamp(ssP * 2 + vec2i(ssP.y & 1, ssP.x & 1), vec2i(0), vec2i(textureDimensions(tDepth)) - vec2i(1)), 0);\n}\n",Je='/* Increase to make depth edges crisper (though possibly noisier. Decrease to reduce flicker. */\nconst EDGE_SHARPNESS = 3.0;\n\n/* Step in 2-pixel intervals since we already blurred against neighbors in the\n first AO pass. This constant can be increased while R decreases to improve\n performance at the expense of some dithering artifacts.\n\n Morgan found that a scale of 3 left a 1-pixel checkerboard grid that was\n unobjectionable after shading was applied but eliminated most temporal incoherence\n from using small numbers of sample taps.\n */\nconst SCALE = 2;\n\n/* Filter radius in pixels. This will be multiplied by SCALE. */\n// Don\'t change this value, as the loop using it had to be unwound and hardcoded.\nconst R = 4;\n\n//////////////////////////////////////////////////////////////////////////////////////////////\n\n/* Swizzle to use to extract the channels of source. This macro allows\n the same blur shader to be used on different kinds of input data. */\n//#define VALUE_COMPONENTS r\n\n//#define VALUE_IS_KEY 0\n\n/* Channel encoding the bilateral key value (which must not be the same as VALUE_COMPONENTS) */\n//#define KEY_COMPONENTS gb\n\n\n// Gaussian coefficients (must be of length R+1)\nconst gaussian = array(\n// float[](0.356642, 0.239400, 0.072410, 0.009869);\n// float[](0.398943, 0.241971, 0.053991, 0.004432, 0.000134); // stddev = 1.0\n0.153170, 0.144893, 0.122649, 0.092902, 0.062970 // stddev = 2.0\n// float[](0.111220, 0.107798, 0.098151, 0.083953, 0.067458, 0.050920, 0.036108); // stddev = 3.0\n);\n\n@id(0) override axisX : i32 = 1;\n\nstruct SAOBlurUniforms {\n\tradius: f32\n}\n\n@group(0) @binding(0) var tAO: texture_2d;\n@group(0) @binding(1) var u: SAOBlurUniforms;\n\n//#define result gl_FragColor.r\n//#define keyPassThrough gl_FragColor.gb\n\n/* Returns a number on (0, 1) */\nfn unpackKey(p: vec2f) -> f32 {\n return p.x + p.y * (1.0 / 255.0);\n}\n\n\n@fragment fn psmain(\n\t@builtin(position) position: vec4f,\n\t@location(0) @interpolate(linear) vUv: vec2f\n) -> @location(0) vec4f {\n\n\tvar axis = vec2i(axisX, 1 - axisX);\n\tvar output: vec4f;\n\n\tvar ssC = vec2i(floor(position.xy));\n\tvar temp = textureLoad(tAO, ssC, 0);\n\n\toutput.g = temp.g;\n\toutput.b = temp.b;\n\toutput.a = temp.a;\n\n\tvar sum = temp.r;\n\n\tif (temp.a == 0.0) {\n\t\t// Sky pixel (we encoded that flag in the A component in the SAO shader)\n\t\toutput.r = sum;\n\t\treturn output;\n\t}\n\n\tvar key = unpackKey(output.gb);\n\n\t// Base weight for depth falloff. Increase this for more blurriness,\n\t// decrease it for better edge discrimination\n\tvar BASE = gaussian[0];\n\tvar totalWeight = BASE;\n\tsum *= totalWeight;\n\n\tvar scale = 1.5 / u.radius;\n\n\tfor (var r = -R; r <= R; r++) {\n\t\t// We already handled the zero case above. This loop should be unrolled and the static branch optimized out,\n\t\t// so the IF statement has no runtime cost\n\t\tif (r != 0) {\n\t\t\ttemp = textureLoad(tAO, ssC + axis * r * SCALE, 0);\n\n\t\t\tvar tapKey = unpackKey(temp.gb);\n\t\t\tvar value = temp.r;\n\n\t\t\t// spatial domain: offset gaussian tap\n\t\t\tvar weight = 0.3 + gaussian[abs(r)];\n\n\t\t\t// range domain (the "bilateral" weight). As depth difference increases, decrease weight.\n\t\t\tvar dz = tapKey - key;\n\t\t\tweight *= max(0.0, 1.0 - (EDGE_SHARPNESS * 2000.0) * abs(dz) * scale);\n\n\t\t\tsum += value * weight;\n\t\t\ttotalWeight += weight;\n\t\t}\n\t}\n\n\tconst epsilon = 0.0001;\n\toutput.r = sum / (totalWeight + epsilon);\n\n\treturn output;\n}\n';class et extends f.D{constructor(e){super(e,48,!0,!1)}setCamera(e,t,i){let n=e.near,r=e.far;this.setFloat(5,n),this.setFloat(6,r);let o=e.projectionMatrix.elements;e.isPerspective?this.setFloat4(0,-2/(t*o[0]),2/(i*o[5]),(1-o[8])/o[0],-(1+o[9])/o[5]):this.setFloat4(0,-2/(t*o[0]),2/(i*o[5]),(1-o[12])/o[0],-(1-o[13])/o[5]);let s=e.isPerspective?0:1;this.setInt(11,s);let a=i*o[5]*.125;this.setFloat(4,a)}setAOOptions(e,t,i){void 0!==e&&this.setFloat(8,e),void 0!==t&&this.setFloat(9,t),void 0!==i&&this.setFloat(10,i)}}class tt extends f.D{constructor(e){super(e,16,!0,!1)}setRadius(e){this.setFloat(0,e),this.upload()}}function it(){return{binding:arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,visibility:arguments.length>1&&void 0!==arguments[1]?arguments[1]:GPUShaderStage.FRAGMENT,texture:{sampleType:arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unfilterable-float"}}}function nt(){return{binding:arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,visibility:arguments.length>1&&void 0!==arguments[1]?arguments[1]:GPUShaderStage.FRAGMENT,buffer:{}}}const rt={topology:"triangle-list",cullMode:"back"},ot=5;function st(e){let t,i,n,r,o,s,a,l,c,u,f,p,m,g,v,y,b,x,_,E,S,A,w,T=e;this.init=function(){t=e.getDevice(),n=new et(t),n.setAOOptions(8,.01,1),u=new tt(t),u.setRadius(8);const i=t.createShaderModule({code:h}),r=t.createShaderModule({label:"sao mip shader",code:$e}),o=t.createShaderModule({code:Je}),s=T.getRenderTargets().getPreferredFormat();"bgra8unorm"!==s&&"rgba8unorm"!==s&&console.warn("post-processing render target format",s,"may not work with SSAO"),a=t.createBindGroupLayout({label:"sao bind group layout",entries:[it(0),it(1),nt(2),it(3)]}),y=t.createBindGroupLayout({label:"sao mip bind group layout",entries:[it(0)]}),f=t.createBindGroupLayout({entries:[it(0),nt(1)]}),l=t.createRenderPipeline({layout:t.createPipelineLayout({bindGroupLayouts:[a]}),vertex:{module:i,entryPoint:"mainFlipY"},fragment:{module:t.createShaderModule({code:(0,d.$wgsl)(Qe,{pack_depth:Y,USE_MIPMAP:Ze})}),entryPoint:"psmain",targets:[{format:s}]},primitive:rt}),x=t.createRenderPipeline({label:"sao mip pipeline",layout:t.createPipelineLayout({bindGroupLayouts:[y]}),vertex:{module:i,entryPoint:"mainFlipY"},fragment:{module:r,entryPoint:"psmain",targets:[{format:"rgb10a2unorm"}]},primitive:rt}),g=t.createRenderPipeline({layout:t.createPipelineLayout({bindGroupLayouts:[f]}),vertex:{module:i,entryPoint:"mainFlipY"},fragment:{module:o,entryPoint:"psmain",targets:[{format:s}],constants:{0:1}},primitive:rt}),v=t.createRenderPipeline({layout:t.createPipelineLayout({bindGroupLayouts:[f]}),vertex:{module:i,entryPoint:"mainFlipY"},fragment:{module:o,entryPoint:"psmain",targets:[{format:s}],constants:{0:0}},primitive:rt}),c={colorAttachments:[{view:void 0,clearValue:{r:0,g:0,b:0,a:1},loadOp:"clear",storeOp:"store"}]}},this.cleanup=function(){var e;null===(e=i)||void 0===e||e.destroy()},this.setAOOptions=function(e,t,i){n.setAOOptions(e,t,i),u.setRadius(e)},this.setUnitScale=function(e){},this.resize=function(e,l){r=e,o=l;const c=T.getRenderTargets();i&&i.destroy(),_&&_.destroy(),i=t.createTexture({size:[e,l],format:c.getPreferredFormat(),usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),A=i.createView(),w=c.getPostTarget(0).createView();const h=c.getViewDepthTarget().createView();E=null,S=[],b=[];const d=Math.min(ot,Math.min(Math.floor(Math.log2(e)),Math.floor(Math.log2(l)))),g=0|e/2,v=0|l/2;g>=1&&v>=1&&(_=t.createTexture({label:"saoMipTarget",size:[g,v],format:"rgb10a2unorm",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING,mipLevelCount:d}),E=_.createView({baseMipLevel:0,mipLevelCount:d}));for(let e=0;e4&&void 0!==arguments[4]?arguments[4]:"ground shadow texture bind group";return e.createBindGroup({label:r,layout:t,entries:[{binding:0,resource:n},{binding:1,resource:i}]})}function ft(e,t){return(0,d.$wgsl)("$pack_depth\n$groundShadowTexture\n\nconst PI: f32 = 3.14159265358979;\n@id(0) override KERNEL_SCALE: f32;\n@id(1) override KERNEL_RADIUS: f32;\noverride SIGMA: f32 = (2.0 * KERNEL_RADIUS + 1.0) / 6.0;\noverride SIGMASQ2: f32 = 2.0 * SIGMA * SIGMA;\noverride QUOTIENT: f32 = sqrt(PI * SIGMASQ2);\n\n#if $horizontal\n fn getUv(vUv: vec2f, x: f32) -> vec2f {\n\t\treturn vec2f(vUv.x + KERNEL_SCALE * x, vUv.y);\n\t}\n#else\n fn getUv(vUv: vec2f, y: f32) -> vec2f {\n return vec2f(vUv.x, vUv.y + KERNEL_SCALE * y);\n }\n#endif\n\nfn kernelVal(x: f32) -> f32 {\n return (1.0 / QUOTIENT) * exp(-x * x / SIGMASQ2);\n}\n\n@fragment\nfn psmain(\n @builtin(position) coord: vec4f,\n @location(0) @interpolate(linear) vUv: vec2f\n) -> @location(0) vec4f {\n var depthVal: f32 = 0.0;\n var sum: f32 = 0.0;\n var kVal: f32;\n\n for (var x = -KERNEL_RADIUS; x <= KERNEL_RADIUS; x += 1.0) {\n kVal = kernelVal(x);\n depthVal += unpackDepth(textureSample(map, smpl, getUv(vUv, x))) * kVal;\n sum += kVal;\n }\n\n return packDepth(depthVal / sum);\n}\n",{pack_depth:Y,groundShadowTexture:ut(t),horizontal:e})}class pt{#rt;#et;#Bn={ibl:0,camera:1,object:2};#En=[];#kn=[];#Mt=new Map;#qi;#Qi;#Vn={};constructor(e,t,i,n,r){this.#rt=e,this.#et=e.getDevice();for(let e in this.#Bn)switch(e){case"ibl":this.#En[this.#Bn[e]]=t;break;case"camera":this.#En[this.#Bn[e]]=i;break;case"object":this.#En[this.#Bn[e]]=n}this.#kn.push({format:r})}getBindGroupOrder(){return this.#Bn}getPipeline(e){const t=se(e,this.#Vn,0,!1,!1,!1);let i=this.#Mt.get(t);if(i)return i;const n=this.#et.createShaderModule({label:"ground shadow shader",code:(r=this.#Bn.ibl,o=this.#Bn.camera,s=this.#Bn.object,(0,d.$wgsl)("// We don't need IBL here, but this is where cut planes are currently implemented\n$IBL\n$cameraUniforms\n$objectUniforms\n$pack_depth\n\nstruct VertexOutput {\n @builtin(position) position: vec4f,\n @location(0) vWorldPosition: vec3f,\n //@location(1) @interpolate(flat) doNotCut: u32\n}\n\n@vertex fn vsmain(\n @location(0) position: vec3f,\n @builtin(instance_index) instance: u32\n) -> VertexOutput {\n\n var objectUniforms = getObjectUniforms(instance);\n\n var output: VertexOutput;\n\n var pos4 = vec4f(position.x, position.y, position.z, 1.0);\n var mvMatrix = uniforms.viewMatrix * objectUniforms.modelMatrix;\n var mvPosition = mvMatrix * pos4;\n\n output.position = uniforms.projectionMatrix * mvPosition;\n output.vWorldPosition = (objectUniforms.modelMatrix * pos4).xyz;\n\n return output;\n}\n\n@fragment fn psmain(\n in: VertexOutput\n) -> @location(0) vec4f {\n // if (in.doNotCut == 0) {\n checkCutPlanes(in.vWorldPosition);\n // }\n\n var depth = 1.0 - in.position.z / in.position.w;\n\n return packDepth(depth);\n}\n",{IBL:Q(r),cameraUniforms:te(o),objectUniforms:G(s),pack_depth:Y}))});var r,o,s;const a={label:"ground shadow pipeline",layout:this.#et.createPipelineLayout({bindGroupLayouts:this.#En}),vertex:{module:n,entryPoint:"vsmain",buffers:ae(e,!1,!1,!1)},fragment:{module:n,entryPoint:"psmain",targets:this.#kn},primitive:{cullMode:"none"},depthStencil:{depthWriteEnabled:!0,depthCompare:"less",format:x,depthBias:1,depthBiasSlopeScale:1}};return e.isLines?a.primitive.topology="line-list":a.primitive.topology="triangle-list",i=this.#et.createRenderPipeline(a),this.#Mt.set(t,i),i}reset(){this.#qi=null,this.#Qi=this.#rt.getVB()}drawOne(e,t,i){const n=this.getPipeline(i);n!==this.#qi&&(e.setPipeline(n),this.#qi=n),this.#Qi.draw(e,i,t)}}class mt{#rt;#et;#Gn;#Bn={camera:0,texture:1};#En=[];#kn=[];constructor(e,t,i,n,r){this.#rt=e,this.#et=e.getDevice();for(let e in this.#Bn)switch(e){case"camera":this.#En[this.#Bn[e]]=t;break;case"texture":this.#En[this.#Bn[e]]=i}this.#kn.push({format:n,blend:_});const o=this.#et.createShaderModule({label:"ground shadow color shader",code:(s=this.#Bn.camera,a=this.#Bn.texture,(0,d.$wgsl)("$cameraUniforms\n$groundShadowTexture\n$pack_depth\n\nstruct VertexOutput {\n @builtin(position) position: vec4f,\n @location(0) vUv: vec2f\n}\n\n@vertex fn vsmain(\n @location(0) position: vec3f,\n @location(1) uv: vec2f,\n @builtin(instance_index) instance: u32\n) -> VertexOutput {\n\n var output: VertexOutput;\n\n var pos4 = vec4f(position.x, position.y, position.z, 1.0);\n var mvPosition = uniforms.viewMatrix * pos4;\n\n output.position = uniforms.projectionMatrix * mvPosition;\n output.vUv = uv;\n\n return output;\n}\n\n@fragment fn psmain(\n in: VertexOutput\n) -> @location(0) vec4f {\n var depthVal = unpackDepth(textureSample(map, smpl, in.vUv));\n var shadowColor = vec4f(0, 0, 0, 1);\n\n return vec4f(shadowColor.rgb, shadowColor.a * depthVal);\n}\n",{cameraUniforms:te(s),groundShadowTexture:ut(a),pack_depth:Y}))});var s,a;this.#Gn=this.#et.createRenderPipeline({label:"ground shadow color pipeline",layout:this.#et.createPipelineLayout({bindGroupLayouts:this.#En}),vertex:{module:o,entryPoint:"vsmain",buffers:[{arrayStride:4*r,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x2"}]}]},fragment:{module:o,entryPoint:"psmain",targets:this.#kn},primitive:{cullMode:"back",topology:"triangle-list"},depthStencil:{depthWriteEnabled:!1,depthCompare:"less",format:x,depthBias:0,depthBiasSlopeScale:0}})}getPipeline(){return this.#Gn}getBindGroupOrder(){return this.#Bn}}class gt{#rt;#et;#Gn;#zn;#Hn;#Wn;#Bn={texture:0};#En=[];#kn=[];constructor(e,t,i,n,r,o){this.#rt=e,this.#et=e.getDevice(),this.#zn=n,this.#Hn=r,this.#Wn=o;for(let e in this.#Bn)if("texture"===e)this.#En[this.#Bn[e]]=t;this.#kn.push({format:i});const s=this.#et.createShaderModule({label:"ground shadow blur vertex shader",code:h}),a=this.#et.createShaderModule({label:"ground shadow blur fragment shader",code:ft(this.#zn,this.#Bn.texture)});this.#Gn=this.#et.createRenderPipeline({label:"ground shadow blur pipeline",layout:this.#et.createPipelineLayout({bindGroupLayouts:this.#En}),vertex:{module:s,entryPoint:"mainFlipY"},fragment:{module:a,entryPoint:"psmain",targets:this.#kn,constants:{0:this.#Hn,1:this.#Wn}},primitive:{cullMode:"back",topology:"triangle-list"}})}getPipeline(){return this.#Gn}getBindGroupOrder(){return this.#Bn}}class vt{#rt;#et;#jn=64;#qn=1;#Xn=7;#Yn;#Kn;#at;#Qn;#Zn;#$n;#Jn;#fn;#Ft;#er;#tr;#ir;#nr;#rr;#rn;#or;#sr;#ar;#lr;#cr;#hr;#ur;#dr=new Float32Array(20);#fr;#pr=new Uint16Array(6);#mr=new qe.LmvVector3;#gr=new THREE.Quaternion;#vr=new THREE.Euler;#yr=new qe.LmvVector3(1,1,1);#We=new THREE.OrthographicCamera;#br=new at.FrustumIntersector;#xr=!0;#_r=lt.GroundFlags.GROUND_FINISHED;#Er=!1;#Sr=new qe.LmvVector3(0,0,0);#Ar=new qe.LmvVector3(0,0,0);#wr=new qe.LmvVector3(0,0,0);#Tr=new qe.LmvVector3(0,0,0);#le=new THREE.Box3;#Mr=[];#Cr;#Pr=0;#Dr=0;#Lr=0;constructor(e){this.#rt=e,this.enabled=!1}init(e){this.#et=this.#rt.getDevice(),this.#fn=new ne(this.#et),this.#Ft=e,this.#ar=this.#et.createBindGroupLayout({label:"ground shadow texture bind group layout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]}),this.#Ir(),this.#er=new pt(this.#rt,this.#rt.getIBL().getLayout(),this.#fn.getLayout(),this.#Ft.getLayout(!1),this.#Yn.format),this.#tr=new mt(this.#rt,this.#fn.getLayout(),this.#ar,navigator.gpu.getPreferredCanvasFormat(),5),this.#nr=new gt(this.#rt,this.#ar,this.#Kn.format,!1,(this.#qn/this.#jn).toFixed(4),this.#Xn.toFixed(2)),this.#ir=new gt(this.#rt,this.#ar,this.#Yn.format,!0,(this.#qn/this.#jn).toFixed(4),this.#Xn.toFixed(2)),this.#Rr(),this.setTransform(new qe.LmvVector3(0,0,0),new qe.LmvVector3(1,1,1),new qe.LmvVector3(0,1,0),new qe.LmvVector3(0,1,0))}#Ir(){this.#Yn=this.#et.createTexture({label:"ground shadow h texture",size:{width:this.#jn,height:this.#jn},format:navigator.gpu.getPreferredCanvasFormat(),usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),this.#Qn=this.#Yn.createView({label:"ground shadow h texture view"}),this.#Kn=this.#et.createTexture({label:"ground shadow v texture",size:[this.#jn,this.#jn],format:navigator.gpu.getPreferredCanvasFormat(),usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}),this.#Zn=this.#Kn.createView({label:"ground shadow v texture view"}),this.#at=this.#et.createTexture({size:[this.#jn,this.#jn],format:x,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.#$n=this.#at.createView(),this.#Jn=this.#et.createSampler({label:"ground shadow texture sampler",magFilter:"linear",minFilter:"linear"}),this.#rn={label:"ground shadow clear pass descriptor",colorAttachments:[{view:this.#Qn,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"store"},{view:this.#Zn,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"store"}],depthStencilAttachment:{view:this.#$n,depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"store"}},this.#rr={label:"ground shadow pass descriptor",colorAttachments:[{view:this.#Qn,loadOp:"load",storeOp:"store"}],depthStencilAttachment:{view:this.#$n,depthLoadOp:"load",depthStoreOp:"store"}},this.#sr={label:"ground shadow color pass descriptor",colorAttachments:[{loadOp:"load",storeOp:"store"}],depthStencilAttachment:{depthLoadOp:"load",depthStoreOp:"store"}},this.#or={label:"ground shadow blur pass descriptor",colorAttachments:[{loadOp:"load",storeOp:"store"}]},this.#hr=dt(this.#et,this.#ar,this.#Jn,this.#Qn,"ground shadow color texture bind group"),this.#lr=dt(this.#et,this.#ar,this.#Jn,this.#Zn,"ground shadow blur h texture bind group"),this.#cr=dt(this.#et,this.#ar,this.#Jn,this.#Qn,"ground shadow blur v texture bind group"),this.#ur=this.#et.createBuffer({label:"ground shadow plane buffer",size:this.#dr.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST}),this.#fr=this.#et.createBuffer({label:"ground shadow plane index buffer",size:this.#pr.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST})}#Rr(){this.#dr.set([-.5,.5,0,0,0,.5,.5,0,1,0,-.5,-.5,0,0,1,.5,-.5,0,1,1]),this.#pr.set([1,3,2,1,2,0])}#Or(e,t,i,n){const r=new w.LmvMatrix4(!1),o=new qe.LmvVector3,s=new qe.LmvVector3;o.subVectors(e,i),r.lookAt(o,e,n),s.copy(i).multiplyScalar(-.5*t.y).add(e),this.#mr.copy(s),this.#vr.setFromRotationMatrix(r),this.#gr.setFromEuler(this.#vr,!1),this.#yr.set(t.z,t.x,t.y),r.compose(this.#mr,this.#gr,this.#yr);for(let e=0;e<4;++e)o.set(this.#dr[5*e],this.#dr[5*e+1],this.#dr[5*e+2]),o.applyMatrix4(r),this.#dr[5*e]=o.x,this.#dr[5*e+1]=o.y,this.#dr[5*e+2]=o.z}setTransform(e,t,i,n){e.equals(this.#Sr)&&t.equals(this.#Ar)&&i.equals(this.#wr)&&n.equals(this.#Tr)||(this.setDirty(),this.#Sr.copy(e),this.#Ar.copy(t),this.#wr.copy(i),this.#Tr.copy(n),this.#We.left=-t.z/2,this.#We.right=t.z/2,this.#We.top=t.x/2,this.#We.bottom=-t.x/2,this.#We.near=1,this.#We.far=t.y+this.#We.near,this.#We.updateProjectionMatrix(),this.#Rr(),this.#Or(e,t,i,n),this.#We.position.addVectors(e,i.clone().multiplyScalar(-t.y/2-this.#We.near)),n&&this.#We.up.set(n.x,n.y,n.z),this.#We.lookAt(e),this.#We.orthoScale=t.x,this.#We.clientHeight=this.#jn,this.#br.reset(this.#We),this.#br.areaCullThreshold=2)}#Nr(){this.#fn.update(this.#We),this.#rt.getIBL().update()}#Dn(e){const t=e.finish();this.#et.queue.submit([t])}#Fr(e,t){if(e.length!==t.length)return!0;for(let i=0;i{e.frags.getWorldBounds(t,this.#le);const i=e.frags.vizflags[t]&ct.MeshFlags.MESH_VISIBLE,n=this.#br.estimateProjectedDiameter(this.#le){s=this.#Ft.getRenderIndex(n),this.#er.drawOne(i,s,e)})),i.end(),this.#Dn(t)}prepareGroundShadow(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;if(!this.enabled||e.isEmpty())return this.#_r=lt.GroundFlags.GROUND_FINISHED,i;const r=e.getGeomScenesPerModel();if(this.#xr=this.#Fr(this.#Mr,r)||this.#xr,this.#xr)this.clear(),this.#xr=!1,this.#Nr(),this.#Mr=r,this.#Cr=e.getGeomScenes(),this.#Pr=this.#Cr.length,this.#Dr=0,this.#Lr=t?Math.max(Math.ceil(this.#Pr/100),t):this.#Pr;else{if(this.#_r===lt.GroundFlags.GROUND_RENDERED||this.#_r===lt.GroundFlags.GROUND_FINISHED)return this.#_r=lt.GroundFlags.GROUND_FINISHED,i;0===t&&(this.#Lr=this.#Pr)}let o,s,a;i&&(o=performance.now(),s=n*i);let l=0;for(;l{const t=e.target;(t.__gpuUniformsMask&R.TEXTURE_MASK)!==F(t)&&this.invalidateRenderBundles()},this.initSync=function(e,t){l=new X(this),a=navigator.gpu.getPreferredCanvasFormat(),i.configure({device:u,format:a,alphaMode:"premultiplied"}),r=!0,function(){let e=u.createTexture({dimension:"2d",format:"bgra8unorm",size:[4,4],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),t=e.createView(),i=u.createSampler({addressModeU:"repeat",addressModeV:"repeat"});h={texture:e,sampler:i,view:t};const n=new Uint32Array(16),r=4294967295,o=4294901760;n[0]=o,n[1]=r,n[2]=r,n[3]=o,n[4]=o,n[5]=r,n[6]=o,n[7]=o,n[8]=o,n[9]=o,n[10]=r,n[11]=o,n[12]=r,n[13]=r,n[14]=o,n[15]=r,u.queue.writeTexture({texture:e},n,{offset:0,bytesPerRow:16},[4,4])}(),s=new c(this),g.init(),v.init(l),S.init(),y.init(),A.init(l),this.setSize(e,t),x.init(),_.init(),u.lost.then((e=>{console.error(`WebGPU device was lost: ${e.message}`),u=null,this.fireEvent({type:yt.WEBGPU_DEVICE_LOST})}))},this.clearModelVisibilityDirty=function(e){m.get(e).visibilityDirty=!1},this.addModel=function(e){f.add(e),l.addModel(e);const t={visibilityDirty:!1},i=w.bind(t,e,this);t.callback=i,e.getFragmentList().registerVisibilityDirtyCallback(i),m.set(e.id,t)},this.removeModel=function(e){f.delete(e),l.removeModel(e);const t=m.get(e.id).callback;e.getFragmentList().removeVisibilityDirtyCallback(t),m.delete(e.id),this.invalidateRenderBundles(e);const i=e.getIterator().getGeomScenes();for(const e of i)e&&(e.isComplete=!1,e.useRenderBundles=!1)},this.getPixelRatio=function(){var e;return o||(null===(e=window)||void 0===e?void 0:e.devicePixelRatio)||1},this.setPixelRatio=function(e){o=e},this.setSize=function(e,t,i){n.width=e*this.getPixelRatio(),n.height=t*this.getPixelRatio(),!1!==i&&(n.style.width=e+"px",n.style.height=t+"px"),g.resize(n.width,n.height),v.resize(n.width,n.height),S.resize(n.width,n.height),y.resize(n.width,n.height)},this.renderBackground=function(e){e&&_.hasCubeMap()?_.run():x.run()},this.present=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(r){if(n){const t=g.getPostTarget(1);y.run(t.createView(),e),n.run(i.getCurrentTexture(),t)}else y.run(i.getCurrentTexture().createView(),e);t&&u.queue.onSubmittedWorkDone().then((()=>{this.fireEvent({type:yt.WEBGPU_RENDER_DONE})}))}else this.fireEvent({type:yt.WEBGPU_RENDER_DONE})},this.beginScene=function(e,t){r&&(p.clear(),v.beginScene(e,t))},this.renderScenePart=function(e,t){if(!r)return;const i=v.renderScenePart(e,t);i&&(d.push(i),d.length>=bt&&(u.queue.submit(d),d.length=0))},this.renderOverlay=function(e,t,i,n,o,s,a){r&&v.renderOverlay(e,t,i,n,o,s,a)},this.flushCommandQueue=function(){d.length&&(u.queue.submit(d),d.length=0)},this.getDevice=function(){return u},this.getRenderTargets=function(){return g},this.getVB=function(){return s},this.getGradientPass=function(){return x},this.getEnvMapPass=function(){return _},this.getIBL=function(){return v.getIBL()},this.getSAO=function(){return S},this.getMainPass=function(){return v},this.getGroundShadowPass=function(){return A},this.getBlendSettings=function(){return y.getBlendSettings()},this.setRenderTarget=function(e){},this.clearTarget=function(e){},this.clearMainTargets=function(){r&&v.clearMainTargets()},this.clearOverlayTargets=function(){r&&v.clearOverlayTargets()},this.clear=function(){},this.depthFunc=function(){},this.updateTimestamp=function(e){},this.getMaxAnisotropy=function(){return 16},this.supportsMRT=function(){return!0},this.verifyMRTWorks=function(){return!0},this.cleanup=function(){},this.getPlaceholderTexture=function(){return h},this.stats=function(){s.stats()},this.setLineStyleBuffer=function(e,t){v.setLineStyleBuffer(e,t)},this.invalidateRenderBundles=function(e){let t;t=e?[e]:f,t.forEach((e=>{if(!p.has(e.id)){const t=e.getIterator().getGeomScenes();for(const e of t)e&&e.clearRenderBundles();p.set(e.id)}}))},this.getContext=function(){return this.context}}xt.Events=yt},26027:(e,t,i)=>{"use strict";i.d(t,{eY:()=>a,el:()=>h,i1:()=>l,rL:()=>c});var n=i(82116),r=i(99315);function o(e,t){if(e.width<=t&&e.height<=t)return e;if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){var i=t/Math.max(e.width,e.height),n=Math.max(Math.floor(e.width*i),1),r=Math.max(Math.floor(e.height*i),1),o=document.createElement("canvas");return o.width=n,o.height=r,o.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,n,r),o}return"data"in e&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+e.width+"x"+e.height+")."),e}function s(e,t){return e.createSampler({addressModeU:(0,n.X9)(t.wrapS),addressModeV:(0,n.X9)(t.wrapT),magFilter:(0,n.X9)(t.magFilter),minFilter:(0,n.X9)(t.minFilter),mipmapFilter:(0,n.X9)(t.minFilter,!0),maxAnisotropy:t.anisotropy||1})}function a(e,t){if(6!==(null==t?void 0:t.image.length))return;if(!0!==t.needsUpdate)return;let i=t instanceof THREE.CompressedTexture,r=t.image[0]instanceof THREE.DataTexture,a=[];for(let n=0;n<6;n++)a[n]=i||r?r?t.image[n].image:t.image[n]:o(t.image[n],e.limits.maxTextureDimension2D||8192);var l;t.__gpuTextureCube||(t.addEventListener("dispose",(()=>{var e;null===(e=t.__gpuTextureCube)||void 0===e||e.destroy(),t.__gpuTextureCube=null,t.__gpuSampler=null})),t.__gpuTextureCube=e.createTexture({dimension:"2d",format:(0,n.L0)(t.format,t.type),mipLevelCount:(null===(l=a[0].mipmaps)||void 0===l?void 0:l.length)||1,size:[a[0].width,a[0].height,6],usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),t.__gpuSampler=s(e,t));for(let n=0;n<6;n++)if(i){let i=a[n].mipmaps;for(let r=0,o=i.length;r{var e;null===(e=i.__gpuTexture)||void 0===e||e.destroy(),i.__gpuTexture=null,i.__gpuSampler=null})),i.__gpuTexture=e.createTexture(u),i.__gpuSampler=s(e,i));let d=i.image,f=i.mipmaps;if(c||l)if(f.length>0){for(let t=0,n=f.length;t0){for(let t=0,n=f.length;t{"use strict";i.d(t,{D:()=>n});class n{#et;#Vr;#Gr;#zr;#Dt;#Lt;#Hr;#Wr=!1;constructor(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];this.#et=e;let r=t,o=t%4;o&&(r+=4-o),this.#Vr=new Float32Array(r),this.#Gr=new Int32Array(this.#Vr.buffer);let s=0;i&&(s|=GPUShaderStage.FRAGMENT),n&&(s|=GPUShaderStage.VERTEX),this.#Hr=s,this.#et&&this.#Ir()}#Ir(){this.#zr||(this.#zr=this.#et.createBuffer({size:this.#Vr.byteLength,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.#Dt=this.#et.createBindGroupLayout({entries:[{binding:0,visibility:this.#Hr,buffer:{}}]}),this.#Lt=this.#et.createBindGroup({layout:this.#Dt,entries:[{binding:0,resource:{buffer:this.#zr}}]}))}setDevice(e){this.#et=e,this.#Ir()}getLayout(){return this.#Dt}getBindGroup(){return this.#Lt}getBuffer(){return this.#zr}setFloat(e,t){this.#Vr[e]=t}getFloat(e){return this.#Vr[e]}setFloat2(e,t,i){this.#Vr[e]=t,this.#Vr[e+1]=i}setFloat4(e,t,i,n,r){this.#Vr[e]=t,this.#Vr[e+1]=i,this.#Vr[e+2]=n,this.#Vr[e+3]=r}setVector3(e,t){this.#Vr[e]=t.x,this.#Vr[e+1]=t.y,this.#Vr[e+2]=t.z}setVector4(e,t){this.#Vr[e]=t.x,this.#Vr[e+1]=t.y,this.#Vr[e+2]=t.z,this.#Vr[e+3]=t.w}setColor(e,t,i){this.#Vr[e]=t.r,this.#Vr[e+1]=t.g,this.#Vr[e+2]=t.b,void 0!==i&&(this.#Vr[e+3]=i)}setMatrix3x3(e,t){for(let i=0;i<3;i++)for(let n=0;n<3;n++)this.#Vr[e+n+4*i]=t[n+3*i]}setInt=function(e,t){this.#Gr[e]=t};getInt(e){return this.#Gr[e]}setBuffer(e,t){this.#Vr.set(t,e)}upload(){this.#et.queue.writeBuffer(this.#zr,0,this.#Vr.buffer,0,this.#Vr.byteLength)}}},99315:(e,t,i)=>{"use strict";function n(e){return Math.floor(Math.log2(Math.max(e.width,e.height)))+1}function r(){return"\n\tvar pos : array, 3> = array, 3>(\n\t\tvec2(-1.0, -1.0), vec2(-1.0, 3.0), vec2(3.0, -1.0)\n\t);\n\n\tstruct VertexOutput {\n\t\t@builtin(position) position : vec4,\n\t\t@location(0) texCoord : vec2,\n\t};\n\n\t@vertex\n\tfn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n\t\tvar output : VertexOutput;\n\t\toutput.texCoord = pos[vertexIndex] * vec2(0.5, -0.5) + vec2(0.5);\n\t\toutput.position = vec4(pos[vertexIndex], 0.0, 1.0);\n\t\treturn output;\n\t}\n\n\t@group(0) @binding(0) var imgSampler : sampler;\n\t@group(0) @binding(1) var img : texture_2d;\n\n\t@fragment\n\tfn fragmentMain(@location(0) texCoord : vec2) -> @location(0) vec4 {\n\t\treturn textureSample(img, imgSampler, texCoord);\n\t}\n\t"}i.d(t,{E:()=>r,J:()=>n})},82116:(e,t,i)=>{"use strict";i.d(t,{L0:()=>s,X9:()=>o,oh:()=>a});var n=i(72091),r=i.n(n);function o(e,t){switch(e){case r().RepeatWrapping:return"repeat";case r().ClampToEdgeWrapping:return"clamp-to-edge";case r().MirroredRepeatWrapping:return"mirror-repeat";case r().NearestFilter:case r().NearestMipMapNearestFilter:return"nearest";case r().NearestMipMapLinearFilter:return t?"linear":"nearest";case r().LinearFilter:return"linear";case r().LinearMipMapNearestFilter:return t?"nearest":"linear";case r().LinearMipMapLinearFilter:return"linear";default:return console.warn("unknown filter param",e),""}}function s(e,t){let i,n;switch(e){case r().AlphaFormat:i="r";break;case r().RGBFormat:i="rgb is unsupported";break;case r().RGBAFormat:i="rgba";break;case r().LuminanceFormat:i="r";break;case r().LuminanceAlphaFormat:i="rg";break;case r().RGB_S3TC_DXT1_Format:return"bc1-rgb-unorm unsupported";case r().RGBA_S3TC_DXT1_Format:return"bc1-rgba-unorm";case r().RGBA_S3TC_DXT3_Format:return"bc2-rgba-unorm";case r().RGBA_S3TC_DXT5_Format:return"bc3-rgba-unorm";default:i=e}switch(t){case r().UnsignedByteType:n="8unorm";break;case r().ByteType:n="8snorm";break;case r().ShortType:n="16sint";break;case r().UnsignedShortType:n="16uint";break;case r().IntType:n="32sint";break;case r().UnsignedIntType:n="32uint";break;case r().FloatType:n="32float";break;case r().HalfFloatType:n="16float";break;default:console.warn("unknown type",t),n=""}return""+i+n}function a(e){switch(e){case r().FrontSide:return"back";case r().BackSide:return"front";case r().DoubleSide:return"none"}}},40508:(e,t,i)=>{"use strict";i.d(t,{cS:()=>o,f6:()=>r});let n=null;async function r(e){if(!n)return n=await async function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const i=Object.assign({},{powerPreference:"high-performance"},t),n=await(null===(e=navigator)||void 0===e||null===(e=e.gpu)||void 0===e?void 0:e.requestAdapter(i));if(!n)return void console.warn("Couldn't request WebGPU adapter. WebGPU will not be available.");const r=n.info||await n.requestAdapterInfo();console.log(r);const o=await n.requestDevice({});return console.log(o.limits),o}(e),n}function o(){return n}},98233:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CPUTexture:()=>_});var n=i(5732),r=i(55280);const o="rgba8unorm",s="bgra8unorm",a="rgba8uint",l="rgb10a2unorm",c="depth32float",h="depth24plus",u="r32float",d="rgba32float",f={unknown:"unknown",uint8:"uint8",float32:"float32"};function p(e){switch(e){case o:case s:case a:case l:return f.uint8;case c:case u:case d:return f.float32}return console.error("Unsupported format: "+e),f.unknown}function m(e){switch(e){case o:case s:case a:case l:return 4;case c:case h:case u:return 1;case d:return 4;default:return console.error("Unsupported format: "+e),0}}function g(e){switch(e){case f.uint8:return Uint8Array;case f.float32:return Float32Array;default:return null}}async function v(e){const t=await async function(e){return new Promise((t=>{e.toBlob(t)}))}(e);return URL.createObjectURL(t)}const y=(e,t)=>{t.r=.5*(e.r+1)*255,t.g=.5*(e.g+1)*255,t.b=.5*(e.b+1)*255,t.a=255};const b=(e,t)=>{const i=e.r|e.g<<8|e.b<<16|e.a<<24,n=i?(1103515245*i+12345)%2**31:0;t.r=255&n,t.g=n>>8&255,t.b=n>>16&255,t.a=255},x=(e,t)=>{const i=255*e.r;t.r=i,t.g=i,t.b=i,t.a=255};class _{width=0;height=0;data=null;format=null;constructor(){}init(e,t,i,n){let r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(this.width=e,this.height=t,this.format=i,n)this.data=r?n.slice():n;else{const n=m(i),r=p(i),o=e*t*n;this.data=function(e,t){return new(g(e))(t)}(r,o)}return this}static async createFromTexture(e,t){const i=t.usage&GPUTextureUsage.COPY_SRC,r=t.usage&GPUTextureUsage.TEXTURE_BINDING;if(!i&&!r)return console.error("GPUTexture must have COPY_SRC or TEXTURE_BINDING usage for readback."),null;let o=i?t:(0,n.copyGPUTexture)(e,t);const s=await(new _).mapFromTexture(e,o),a=(new _).copyFrom(s,0,0,t.width,t.height);return s.unmap(),a}isEmpty(){return null===this.data}copyFrom(e,t,i,n,r){let o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0;if(this.isEmpty()){const t=o+n,i=s+r;this.init(t,i,e.format)}const a=m(e.format);for(let l=0;l2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:t.width,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:t.height;const s=function(e){switch(e){case"depth24plus":case"depth32float":case"bgra8unorm":case"rgba8uint":case"rgb10a2unorm":case"r32float":return 4;case"rgba32float":return 16;default:throw new Error("Unsupported texture format: "+e)}}(t.format);let a=(l=t.width*s,256*Math.ceil(l/256));var l;let c=a*t.height;const h=a/s,u=e.createBuffer({size:c,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ}),d=e.createCommandEncoder(),f=[i,n,0];d.copyTextureToBuffer({texture:t,origin:f},{buffer:u,bytesPerRow:a},[r,o]),e.queue.submit([d.finish()]),await u.mapAsync(GPUMapMode.READ);const m=new(g(p(t.format)))(u.getMappedRange());return this.init(h,o,t.format,m,!1),this.unmap=()=>{u.unmap(),u.destroy()},this}static async createFromColorTarget(e){const t=e.getRenderTargets(),i=e.getDevice(),n=t.getColorTarget();return await _.createFromTexture(i,n)}static async createFromViewDepthTarget(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=e.getRenderTargets(),r=e.getDevice(),o=i.getViewDepthTarget();let s=o;if(t){const e=r.createTexture({size:[o.width,o.height],format:"r32float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC});(0,n.convertTexture)(r,o,e,n.UnpackRGB10DepthShader),s=e}return await _.createFromTexture(r,s)}static async createFromNormalsTarget(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=e.getRenderTargets(),r=e.getDevice(),o=i.getNormalsTarget();let s=o;if(t){const e=r.createTexture({size:[o.width,o.height],format:"rgba32float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC});(0,n.convertTexture)(r,o,e,n.UnpackRGB10NormalsShader),s=e}return await _.createFromTexture(r,s)}static async createFromIdTarget(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=e.getRenderTargets(),n=e.getDevice(),r=i.getIdTarget(t);return await _.createFromTexture(n,r)}swizzelRGChannels(){const e=this.format===_.Formats.rgba8unorm,t=this.format===_.Formats.bgra8unorm;if(!e&&!t)return console.error("SwizzelRGChannels only supported for rgba8unorm and bgra8unorm formats."),null;for(var i=0;i1&&(i.g=this.data[r+1]),n>2&&(i.b=this.data[r+2]),n>3&&(i.a=this.data[r+3])}setPixel(e,t,i){const n=m(this.format),r=n*(t*this.width+e);this.data[r]=i.r,n>1&&(this.data[r+1]=i.g),n>2&&(this.data[r+2]=i.b),n>3&&(this.data[r+3]=i.a)}toColorImage(e){const t=(new _).init(this.width,this.height,o),i={r:0,g:0,b:0,a:0},n={r:0,g:0,b:0,a:0};for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:this.width,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:this.height,s=this;"r32float"===this.format&&(s=this.toColorImage(x)),e=e||(0,r.getGlobal)().document.createElement("canvas"),e.width=n,e.height=o;var a,l=e.getContext("2d"),c=new Uint8ClampedArray(s.data);return a=new ImageData(c,n,o),l.putImageData(a,t,i,0,0,n,o),e}async toImageUrl(){return v(this.toCanvas())}async showInNewTab(){const e=await this.toImageUrl();window.open(e)}}},5732:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CopyFragmentShader:()=>l,DummyFragmentShader:()=>a,ShaderPassWebGPU:()=>u,UnpackRGB10DepthShader:()=>c,UnpackRGB10NormalsShader:()=>h,convertTexture:()=>d,copyGPUTexture:()=>f});var n=i(29251),r=i(43851),o=i(41007),s=i(65796);const a=n.wgsl` + @fragment + fn main( + @builtin(position) coord : vec4f, + @location(0) @interpolate(linear) vUv: vec2f + ) -> @location(0) vec4f { + var outColor = vec4f(vUv, 0.0, 1.0); + return outColor; + } +`,l=n.wgsl` + @group(0) @binding(1) var texture: texture_2d; + @group(0) @binding(2) var texSampler: sampler; + + @fragment + fn main( + @builtin(position) coord: vec4f, + @location(0) @interpolate(linear) vUv: vec2f + ) -> @location(0) vec4f { + var outColor = textureSample(texture, texSampler, vUv); + return outColor; + } +`,c=n.wgsl` + ${s} + + @group(0) @binding(1) var texture: texture_2d; + @group(0) @binding(2) var texSampler: sampler; + + @fragment + fn main( + @builtin(position) coord: vec4f, + @location(0) @interpolate(linear) vUv: vec2f + ) -> @location(0) vec4f { + + var packedDepth = textureSample(texture, texSampler, vUv); + var depth = unpackDepth10(packedDepth.rgb); + return vec4f(depth, 0, 0, 1); + } +`,h=n.wgsl` + // Note that pack_normals chunk is only needed for int-packed vertex-normals. + // The rgb10-packed normals need unpackNormals10 instead. + ${s} + + @group(0) @binding(1) var texture: texture_2d; + @group(0) @binding(2) var texSampler: sampler; + + @fragment + fn main( + @builtin(position) coord: vec4f, + @location(0) @interpolate(linear) vUv: vec2f + ) -> @location(0) vec4f { + + var packedNormal = textureSample(texture, texSampler, vUv); + var normal = unpackNormal10(packedNormal.xyz); + return vec4f(normal, 1.0f); + } +`;class u{#et;#Gn;#jr;#qr;#Xr;#Yr;#Kr;#Qr;#Zr=[];#$r;#Jr;#eo;#to;#io=0;#no=0;#ro=0;#Pt;constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this.#et=e,this.#Pt=t,this.setFragmentShader(),this.setVertexShader();const n=new o.UniformGroup(e,i);this.setUniforms(n,i)}setFragmentShader(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"main";this.#$r=e,this.#Jr=t,this.#Xr=null,this.#Gn=null}setVertexShader(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"mainFlipY";this.#eo=e,this.#to=t,this.#qr=null,this.#Gn=null}setSourceTextureUniform(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;this.#io=e,this.#no=t,this.#ro=i;const n=this.getUniforms(i);n.isAssigned(e)||n.addTexture(e),n.isAssigned(t)||n.addSampler(t)}setUniforms(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.#Zr[t]=e}getUniforms(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this.#Zr[e]}get uniforms(){return this.getUniforms()}createPipeline(){let e="auto";if(this.#Zr.length>0){const t=[];for(let e=0;e{n.setBindGroup(t,e.bindGroup)})),n.setPipeline(this.#Gn),n.draw(3),n.end(),this.#et.queue.submit([i.finish()])}}function d(e,t,i,n){let r=new u(e);r.setSourceTextureUniform(),r.setFragmentShader(n),r.run(i,t)}function f(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC;const n=e.createTexture({size:[t.width,t.height],format:t.format,usage:i});return d(e,t,n,l),n}},29251:e=>{const t=/#([^\s]*)(\s*)/g;function i(e){const i=[];let n={string:"",elseIsValid:!1,expression:!0,levelProcessed:!1,ignoreNested:!1};for(var r=arguments.length,o=new Array(r>1?r-1:0),s=1;sr&&(n.string+=o[r]))}if(i.length)throw new Error("Mismatched #if/#endif count");return n.string}function n(e,t){if(!t||t.length`"$${e}"`)).join(", ");throw new Error(`[wgpu] Missing values for: ${i}`)}return t}e.exports={wgsl:i,$wgsl:function(e,t){const r=/\$\w+/,o=e.match(/(?<=\$)(\w+)/g);if(!o||!o.length)return e;if(Array.isArray(t))return i(e.split(r),...n(o,t));if(t&&!Array.isArray(t)&&"object"==typeof t)return i(e.split(r),...o.map((e=>{if(!Object.hasOwn(t,e))throw new Error(`[wgpu] Missing value for "$${e}"`);const i=t[e];if("object"==typeof i&&null!==i||"function"==typeof i)throw new Error(`[wgpu] Unsupported value type "${typeof i}"`);return i})));for(var s=arguments.length,a=new Array(s>2?s-2:0),l=2;l{var n; +/*! Hammer.JS - v2.0.8 - 2016-04-23 + * http://hammerjs.github.io/ + * + * Copyright (c) 2016 Jorik Tangelder; + * Licensed under the MIT license */!function(r,o,s,a){"use strict";var l=["","webkit","Moz","MS","ms","o"],c=o.createElement("div"),h="function",u=Math.round,d=Math.abs,f=Date.now;function p(e,t,i){return setTimeout(E(e,i),t)}function m(e,t,i){return!!Array.isArray(e)&&(g(e,i[t],i),!0)}function g(e,t,i){var n;if(e)if(e.forEach)e.forEach(t,i);else if(e.length!==a)for(n=0;n\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",o=r.console&&(r.console.warn||r.console.log);return o&&o.call(r.console,n,i),e.apply(this,arguments)}}var y=function(e){if(e===a||null===e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),i=1;i-1}function P(e){return e.trim().split(/\s+/g)}function D(e,t,i){if(e.indexOf&&!i)return e.indexOf(t);for(var n=0;ni[t]})):n.sort()),n}function R(e,t){for(var i,n,r=t[0].toUpperCase()+t.slice(1),o=0;o1&&!i.firstMultiple?i.firstMultiple=ne(t):1===r&&(i.firstMultiple=!1);var o=i.firstInput,s=i.firstMultiple,l=s?s.center:o.center,c=t.center=re(n);t.timeStamp=f(),t.deltaTime=t.timeStamp-o.timeStamp,t.angle=le(l,c),t.distance=ae(l,c),function(e,t){var i=t.center,n=e.offsetDelta||{},r=e.prevDelta||{},o=e.prevInput||{};t.eventType!==z&&o.eventType!==H||(r=e.prevDelta={x:o.deltaX||0,y:o.deltaY||0},n=e.offsetDelta={x:i.x,y:i.y});t.deltaX=r.x+(i.x-n.x),t.deltaY=r.y+(i.y-n.y)}(i,t),t.offsetDirection=se(t.deltaX,t.deltaY);var h=oe(t.deltaTime,t.deltaX,t.deltaY);t.overallVelocityX=h.x,t.overallVelocityY=h.y,t.overallVelocity=d(h.x)>d(h.y)?h.x:h.y,t.scale=s?(u=s.pointers,p=n,ae(p[0],p[1],ee)/ae(u[0],u[1],ee)):1,t.rotation=s?function(e,t){return le(t[1],t[0],ee)-le(e[1],e[0],ee)}(s.pointers,n):0,t.maxPointers=i.prevInput?t.pointers.length>i.prevInput.maxPointers?t.pointers.length:i.prevInput.maxPointers:t.pointers.length,function(e,t){var i,n,r,o,s=e.lastInterval||t,l=t.timeStamp-s.timeStamp;if(t.eventType!=W&&(l>G||s.velocity===a)){var c=t.deltaX-s.deltaX,h=t.deltaY-s.deltaY,u=oe(l,c,h);n=u.x,r=u.y,i=d(u.x)>d(u.y)?u.x:u.y,o=se(c,h),e.lastInterval=t}else i=s.velocity,n=s.velocityX,r=s.velocityY,o=s.direction;t.velocity=i,t.velocityX=n,t.velocityY=r,t.direction=o}(i,t);var u,p;var m=e.element;M(t.srcEvent.target,m)&&(m=t.srcEvent.target);t.target=m}(e,i),e.emit("hammer.input",i),e.recognize(i),e.session.prevInput=i}function ne(e){for(var t=[],i=0;i=d(t)?e<0?q:X:t<0?Y:K}function ae(e,t,i){i||(i=J);var n=t[i[0]]-e[i[0]],r=t[i[1]]-e[i[1]];return Math.sqrt(n*n+r*r)}function le(e,t,i){i||(i=J);var n=t[i[0]]-e[i[0]],r=t[i[1]]-e[i[1]];return 180*Math.atan2(r,n)/Math.PI}te.prototype={handler:function(){},init:function(){this.evEl&&w(this.element,this.evEl,this.domHandler),this.evTarget&&w(this.target,this.evTarget,this.domHandler),this.evWin&&w(N(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&T(this.element,this.evEl,this.domHandler),this.evTarget&&T(this.target,this.evTarget,this.domHandler),this.evWin&&T(N(this.element),this.evWin,this.domHandler)}};var ce={mousedown:z,mousemove:2,mouseup:H},he="mousedown",ue="mousemove mouseup";function de(){this.evEl=he,this.evWin=ue,this.pressed=!1,te.apply(this,arguments)}_(de,te,{handler:function(e){var t=ce[e.type];t&z&&0===e.button&&(this.pressed=!0),2&t&&1!==e.which&&(t=H),this.pressed&&(t&H&&(this.pressed=!1),this.callback(this.manager,t,{pointers:[e],changedPointers:[e],pointerType:V,srcEvent:e}))}});var fe={pointerdown:z,pointermove:2,pointerup:H,pointercancel:W,pointerout:W},pe={2:k,3:"pen",4:V,5:"kinect"},me="pointerdown",ge="pointermove pointerup pointercancel";function ve(){this.evEl=me,this.evWin=ge,te.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}r.MSPointerEvent&&!r.PointerEvent&&(me="MSPointerDown",ge="MSPointerMove MSPointerUp MSPointerCancel"),_(ve,te,{handler:function(e){var t=this.store,i=!1,n=e.type.toLowerCase().replace("ms",""),r=fe[n],o=pe[e.pointerType]||e.pointerType,s=o===k,a=o===V,l=D(t,e.pointerId,"pointerId");r&z&&(0===e.button||s)?l<0&&(t.push(e),l=t.length-1):r&(H|W)&&(i=!0),l<0||(t[l]=e,a&&!this.manager.options.handlePointerEventMouse||this.callback(this.manager,r,{pointers:t,changedPointers:[e],pointerType:o,srcEvent:e}),i&&t.splice(l,1))}});var ye={touchstart:z,touchmove:2,touchend:H,touchcancel:W};function be(){this.evTarget="touchstart",this.evWin="touchstart touchmove touchend touchcancel",this.started=!1,te.apply(this,arguments)}function xe(e,t){var i=L(e.touches),n=L(e.changedTouches);return t&(H|W)&&(i=I(i.concat(n),"identifier",!0)),[i,n]}_(be,te,{handler:function(e){var t=ye[e.type];if(t===z&&(this.started=!0),this.started){var i=xe.call(this,e,t);t&(H|W)&&i[0].length-i[1].length==0&&(this.started=!1),this.callback(this.manager,t,{pointers:i[0],changedPointers:i[1],pointerType:k,srcEvent:e})}}});var _e={touchstart:z,touchmove:2,touchend:H,touchcancel:W},Ee="touchstart touchmove touchend touchcancel";function Se(){this.evTarget=Ee,this.targetIds={},te.apply(this,arguments)}function Ae(e,t){var i=L(e.touches),n=this.targetIds;if(t&(2|z)&&1===i.length)return n[i[0].identifier]=!0,[i,i];var r,o,s=L(e.changedTouches),a=[],l=this.target;if(o=i.filter((function(e){return M(e.target,l)})),t===z)for(r=0;r-1&&n.splice(e,1)}),we)}}function Pe(e){for(var t=e.srcEvent.clientX,i=e.srcEvent.clientY,n=0;n-1&&this.requireFail.splice(t,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(e){return!!this.simultaneous[e.id]},emit:function(e){var t=this,i=this.state;function n(i){t.manager.emit(i,e)}i<8&&n(t.options.event+He(i)),n(t.options.event),e.additionalEvent&&n(e.additionalEvent),i>=8&&n(t.options.event+He(i))},tryEmit:function(e){if(this.canEmit())return this.emit(e);this.state=Ge},canEmit:function(){for(var e=0;et.threshold&&r&t.direction},attrTest:function(e){return qe.prototype.attrTest.call(this,e)&&(2&this.state||!(2&this.state)&&this.directionTest(e))},emit:function(e){this.pX=e.deltaX,this.pY=e.deltaY;var t=We(e.direction);t&&(e.additionalEvent=this.options.event+t),this._super.emit.call(this,e)}}),_(Ye,qe,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Ne]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.scale-1)>this.options.threshold||2&this.state)},emit:function(e){if(1!==e.scale){var t=e.scale<1?"in":"out";e.additionalEvent=this.options.event+t}this._super.emit.call(this,e)}}),_(Ke,ze,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[Re]},process:function(e){var t=this.options,i=e.pointers.length===t.pointers,n=e.distancet.time;if(this._input=e,!n||!i||e.eventType&(H|W)&&!r)this.reset();else if(e.eventType&z)this.reset(),this._timer=p((function(){this.state=8,this.tryEmit()}),t.time,this);else if(e.eventType&H)return 8;return Ge},reset:function(){clearTimeout(this._timer)},emit:function(e){8===this.state&&(e&&e.eventType&H?this.manager.emit(this.options.event+"up",e):(this._input.timeStamp=f(),this.manager.emit(this.options.event,this._input)))}}),_(Qe,qe,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Ne]},attrTest:function(e){return this._super.attrTest.call(this,e)&&(Math.abs(e.rotation)>this.options.threshold||2&this.state)}}),_(Ze,qe,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Q|Z,pointers:1},getTouchAction:function(){return Xe.prototype.getTouchAction.call(this)},attrTest:function(e){var t,i=this.options.direction;return i&(Q|Z)?t=e.overallVelocity:i&Q?t=e.overallVelocityX:i&Z&&(t=e.overallVelocityY),this._super.attrTest.call(this,e)&&i&e.offsetDirection&&e.distance>this.options.threshold&&e.maxPointers==this.options.pointers&&d(t)>this.options.velocity&&e.eventType&H},emit:function(e){var t=We(e.offsetDirection);t&&this.manager.emit(this.options.event+t,e),this.manager.emit(this.options.event,e)}}),_($e,ze,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[Oe]},process:function(e){var t=this.options,i=e.pointers.length===t.pointers,n=e.distance{"use strict";i.r(t),i.d(t,{DDSLoader:()=>r});var n=i(72091),r=function(){this._parser=r.parse};r.prototype=Object.create(n.CompressedTextureLoader.prototype),r.prototype.constructor=r,r.parse=function(e,t){var i={mipmaps:[],width:0,height:0,format:null,mipmapCount:1};function r(e){return e.charCodeAt(0)+(e.charCodeAt(1)<<8)+(e.charCodeAt(2)<<16)+(e.charCodeAt(3)<<24)}function o(e,t,i,n){for(var r=i*n*4,o=new Uint8Array(e,t,r),s=new Uint8Array(r),a=0,l=0,c=0;c>8&255,u>>16&255,u>>24&255))),i;f=!0,c=64,i.format=n.RGBAFormat}i.mipmapCount=1,h[7]>0&&!1!==t&&(i.mipmapCount=Math.max(1,h[7])),i.isCubemap=!!(512&h[28]),i.width=h[4],i.height=h[3];for(var p=h[1]+4,m=i.width,g=i.height,v=i.isCubemap?6:1,y=0;y{"use strict"; +/*! +MIT License + +Copyright (c) 2019 Fyrestar + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ +function n(e,t){for(let i in t){const n=t[i];if("@"===i[0]){const t=i.substr(1);e=e.replace(t,n)}else if("?"===i[0]){const t=i.substr(1);e=e.replace(t,n+"\n"+t)}else e=e.replace(i,i+"\n"+n)}return e}function r(e,t){const i=(t.header||"")+"\n";let r=(t.vertexHeader||"")+"\n"+e.vertexShader,o=(t.fragmentHeader||"")+"\n"+e.fragmentShader;return t.vertexEnd&&(r=r.replace(/\}(?=[^\}]*$)/g,t.vertexEnd+"\n}")),t.fragmentEnd&&(o=o.replace(/\}(?=[^\}]*$)/g,t.fragmentEnd+"\n}")),void 0!==t.vertex&&(r=n(r,t.vertex)),void 0!==t.fragment&&(o=n(o,t.fragment)),e.vertexShader=i+r,e.fragmentShader=i+o,e}i.r(t),i.d(t,{patchShader:()=>r})},63004:(e,t,i)=>{"use strict";i.r(t),i.d(t,{polyfillTHREE:()=>d});const n=(e,t,i)=>{"object"!=typeof e&&"function"!=typeof e||Object.prototype.hasOwnProperty.call(e,t)||(e[t]=i)},r=(e,t,i)=>{"object"==typeof e&&Object.defineProperty(e,t,i)},o=e=>{n(e,"BoxBufferGeometry",class extends e.BufferGeometry{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1;super(),this.type="BoxGeometry",this.parameters={width:t,height:i,depth:n,widthSegments:r,heightSegments:o,depthSegments:s};const a=this;r=Math.floor(r),o=Math.floor(o),s=Math.floor(s);const l=[],c=[],h=[],u=[];let d=0,f=0;function p(t,i,n,r,o,s,p,m,g,v,y){const b=s/g,x=p/v,_=s/2,E=p/2,S=m/2,A=g+1,w=v+1;let T=0,M=0;const C=new e.Vector3;for(let e=0;e0?1:-1,h.push(C.x,C.y,C.z),u.push(a/g),u.push(1-e/v),T+=1}}for(let e=0;e{n(e,"CircleBufferGeometry",class extends e.BufferGeometry{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:2*Math.PI;super(),this.type="CircleGeometry",this.parameters={radius:t,segments:i,thetaStart:n,thetaLength:r},i=Math.max(3,i);const o=[],s=[],a=[],l=[],c=new e.Vector3,h=new e.Vector2;s.push(0,0,0),a.push(0,0,1),l.push(.5,.5);for(let e=0,o=3;e<=i;e++,o+=3){const u=n+e/i*r;c.x=t*Math.cos(u),c.y=t*Math.sin(u),s.push(c.x,c.y,c.z),a.push(0,0,1),h.x=(s[o]/t+1)/2,h.y=(s[o+1]/t+1)/2,l.push(h.x,h.y)}for(let e=1;e<=i;e++)o.push(e,e+1,0);this.setIndex(o),this.setAttribute("position",new e.Float32BufferAttribute(s,3)),this.setAttribute("normal",new e.Float32BufferAttribute(a,3)),this.setAttribute("uv",new e.Float32BufferAttribute(l,2))}})},a=e=>{n(e,"CylinderBufferGeometry",class extends e.BufferGeometry{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:8,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:1,s=arguments.length>5&&void 0!==arguments[5]&&arguments[5],a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:2*Math.PI;super(),this.type="CylinderGeometry",this.parameters={radiusTop:t,radiusBottom:i,height:n,radialSegments:r,heightSegments:o,openEnded:s,thetaStart:a,thetaLength:l};const c=this;r=Math.floor(r),o=Math.floor(o);const h=[],u=[],d=[],f=[];let p=0;const m=[],g=n/2;let v=0;function y(n){const o=p,s=new e.Vector2,m=new e.Vector3;let y=0;const b=!0===n?t:i,x=!0===n?1:-1;for(let e=1;e<=r;e++)u.push(0,g*x,0),d.push(0,x,0),f.push(.5,.5),p++;const _=p;for(let e=0;e<=r;e++){const t=e/r*l+a,i=Math.cos(t),n=Math.sin(t);m.x=b*n,m.y=g*x,m.z=b*i,u.push(m.x,m.y,m.z),d.push(0,x,0),s.x=.5*i+.5,s.y=.5*n*x+.5,f.push(s.x,s.y),p++}for(let e=0;e0&&y(!0),i>0&&y(!1)),this.setIndex(h),this.setAttribute("position",new e.Float32BufferAttribute(u,3)),this.setAttribute("normal",new e.Float32BufferAttribute(d,3)),this.setAttribute("uv",new e.Float32BufferAttribute(f,2))}})},l=e=>{n(e,"PolyhedronBufferGeometry",class extends e.BufferGeometry{constructor(t,i){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;super(),this.type="PolyhedronGeometry",this.parameters={vertices:t,indices:i,radius:n,detail:r};const o=[],s=[];function a(e,t,i,n){const r=n+1,o=[];for(let n=0;n<=r;n++){o[n]=[];const s=e.clone().lerp(i,n/r),a=t.clone().lerp(i,n/r),l=r-n;for(let e=0;e<=l;e++)o[n][e]=0===e&&n===r?s:s.clone().lerp(a,e/l)}for(let e=0;e.9&&o<.1&&(t<.2&&(s[e+0]+=1),i<.2&&(s[e+2]+=1),n<.2&&(s[e+4]+=1))}}()}(),this.setAttribute("position",new e.Float32BufferAttribute(o,3)),this.setAttribute("normal",new e.Float32BufferAttribute(o.slice(),3)),this.setAttribute("uv",new e.Float32BufferAttribute(s,2)),0===r?this.computeVertexNormals():this.normalizeNormals()}})},c=e=>{n(e,"OctahedronBufferGeometry",class extends e.PolyhedronBufferGeometry{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;super([1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],e,t),this.type="OctahedronGeometry",this.parameters={radius:e,detail:t}}})},h=e=>{n(e,"SphereBufferGeometry",class extends e.BufferGeometry{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:6,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:2*Math.PI,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:Math.PI;super(),this.type="SphereGeometry",this.parameters={radius:t,widthSegments:i,heightSegments:n,phiStart:r,phiLength:o,thetaStart:s,thetaLength:a},i=Math.max(3,Math.floor(i)),n=Math.max(2,Math.floor(n));const l=Math.min(s+a,Math.PI);let c=0;const h=[],u=new e.Vector3,d=new e.Vector3,f=[],p=[],m=[],g=[];for(let e=0;e<=n;e++){const f=[],v=e/n;let y=0;0==e&&0==s?y=.5/i:e==n&&l==Math.PI&&(y=-.5/i);for(let e=0;e<=i;e++){const n=e/i;u.x=-t*Math.cos(r+n*o)*Math.sin(s+v*a),u.y=t*Math.cos(s+v*a),u.z=t*Math.sin(r+n*o)*Math.sin(s+v*a),p.push(u.x,u.y,u.z),d.copy(u).normalize(),m.push(d.x,d.y,d.z),g.push(n+y,1-v),f.push(c++)}h.push(f)}for(let e=0;e0)&&f.push(i,r,a),(e!==n-1||l{n(e,"TorusBufferGeometry",class extends e.BufferGeometry{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.4,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:8,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:6,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:2*Math.PI;super(),this.type="TorusGeometry",this.parameters={radius:t,tube:i,radialSegments:n,tubularSegments:r,arc:o},n=Math.floor(n),r=Math.floor(r);const s=[],a=[],l=[],c=[],h=new e.Vector3,u=new e.Vector3,d=new e.Vector3;for(let e=0;e<=n;e++)for(let s=0;s<=r;s++){const f=s/r*o,p=e/n*Math.PI*2;u.x=(t+i*Math.cos(p))*Math.cos(f),u.y=(t+i*Math.cos(p))*Math.sin(f),u.z=i*Math.sin(p),a.push(u.x,u.y,u.z),h.x=t*Math.cos(f),h.y=t*Math.sin(f),d.subVectors(u,h).normalize(),l.push(d.x,d.y,d.z),c.push(s/r),c.push(e/n)}for(let e=1;e<=n;e++)for(let t=1;t<=r;t++){const i=(r+1)*e+t-1,n=(r+1)*(e-1)+t-1,o=(r+1)*(e-1)+t,a=(r+1)*e+t;s.push(i,n,a),s.push(n,o,a)}this.setIndex(s),this.setAttribute("position",new e.Float32BufferAttribute(a,3)),this.setAttribute("normal",new e.Float32BufferAttribute(l,3)),this.setAttribute("uv",new e.Float32BufferAttribute(c,2))}})},d=e=>{var t,i,d,f,p,m,g,v,y,b,x,_,E,S,A,w,T,M,C,P,D,L,I,R,O,N,F,U,B,k,V;const G=new e.Vector3;n(null==e||null===(t=e.Camera)||void 0===t?void 0:t.prototype,"updateMatrixWorld",(function(t){e.Object3D.prototype.updateMatrixWorld.call(this,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()})),n(null==e||null===(i=e.Box2)||void 0===i?void 0:i.prototype,"getSize",(function(e){return this.isEmpty()?e.set(0,0):this.size(e)})),n(null==e||null===(d=e.Box3)||void 0===d?void 0:d.prototype,"getSize",(function(e){return this.isEmpty()?e.set(0,0,0):this.size(e)})),n(null==e||null===(f=e.Box2)||void 0===f?void 0:f.prototype,"intersectsBox",(function(e){return this.isIntersectionBox(e)})),n(null==e||null===(p=e.Box3)||void 0===p?void 0:p.prototype,"intersectsBox",(function(e){return this.isIntersectionBox(e)})),n(null==e||null===(m=e.Ray)||void 0===m?void 0:m.prototype,"intersectsBox",(function(e){return this.isIntersectionBox(e)})),n(null==e||null===(g=e.BufferAttribute)||void 0===g?void 0:g.prototype,"applyMatrix4",(function(e){for(let t=0,i=this.count;t2&&void 0!==arguments[2]?arguments[2]:0;return void 0!==i&&0!==i&&console.warn("THREE.BufferGeometry: .addGroup() with `materialIndex !== 0` is not supported in this Three.js version. Ignoring the `materialIndex` parameter."),this.addDrawCall(e,t)})),r(null==e||null===(A=e.BufferGeometry)||void 0===A?void 0:A.prototype,"index",{get:function(){return this.attributes.index},set:function(e){this.attributes.index=e}}),n(null==e||null===(w=e.BufferGeometry)||void 0===w?void 0:w.prototype,"setFromPoints",(function(t){const i=[];for(let e=0,n=t.length;e{if(0===e.length)return-1/0;for(var t=e[0],i=1,n=e.length;it&&(t=e[i]);return t})(t)>65535?e.Uint32BufferAttribute:e.Uint16BufferAttribute)(t,1):this.index=t,this})),"function"==typeof(null==e?void 0:e.BufferGeometry)&&(o(e),s(e),a(e),l(e),c(e),h(e),u(e)),n(null==e||null===(M=e.Frustum)||void 0===M?void 0:M.prototype,"setFromProjectionMatrix",(function(e){return this.setFromMatrix(e)})),n(null==e||null===(C=e.Geometry)||void 0===C?void 0:C.prototype,"applyMatrix4",(function(e){return this.applyMatrix(e),this})),"function"==typeof e.Line&&n(e,"LineSegments",class extends e.Line{constructor(t,i){super(t,i,e.LinePieces),this.isLineSegments=!0,this.type="LineSegments"}}),n(null==e||null===(P=e.Line)||void 0===P?void 0:P.prototype,"computeLineDistances",(function(){const e=this.geometry;if(e.isBufferGeometry)if(null===e.index){const t=e.attributes.position,i=[0];for(let e=1,n=t.count;e{var n,r,o,s,a,l,c,h,u,d,f,p,m,g,v,y,b,x,_,E,S,A,w,T,M,C,P,D,L,I,R,O,N,F,U,B,k,V,G,z,H,W,j,q,X,Y,K=e.exports={REVISION:"71"};void 0===Math.sign&&(Math.sign=function(e){return e<0?-1:e>0?1:+e}),K.log=function(){console.log.apply(console,arguments)},K.warn=function(){console.warn.apply(console,arguments)},K.error=function(){console.error.apply(console,arguments)},K.MOUSE={LEFT:0,MIDDLE:1,RIGHT:2},K.CullFaceNone=0,K.CullFaceBack=1,K.CullFaceFront=2,K.CullFaceFrontBack=3,K.FrontFaceDirectionCW=0,K.FrontFaceDirectionCCW=1,K.BasicShadowMap=0,K.PCFShadowMap=1,K.PCFSoftShadowMap=2,K.FrontSide=0,K.BackSide=1,K.DoubleSide=2,K.NoShading=0,K.FlatShading=1,K.SmoothShading=2,K.NoColors=0,K.FaceColors=1,K.VertexColors=2,K.NoBlending=0,K.NormalBlending=1,K.AdditiveBlending=2,K.SubtractiveBlending=3,K.MultiplyBlending=4,K.CustomBlending=5,K.AddEquation=100,K.SubtractEquation=101,K.ReverseSubtractEquation=102,K.MinEquation=103,K.MaxEquation=104,K.ZeroFactor=200,K.OneFactor=201,K.SrcColorFactor=202,K.OneMinusSrcColorFactor=203,K.SrcAlphaFactor=204,K.OneMinusSrcAlphaFactor=205,K.DstAlphaFactor=206,K.OneMinusDstAlphaFactor=207,K.DstColorFactor=208,K.OneMinusDstColorFactor=209,K.SrcAlphaSaturateFactor=210,K.MultiplyOperation=0,K.MixOperation=1,K.AddOperation=2,K.UVMapping=300,K.CubeReflectionMapping=301,K.CubeRefractionMapping=302,K.EquirectangularReflectionMapping=303,K.EquirectangularRefractionMapping=304,K.SphericalReflectionMapping=305,K.RepeatWrapping=1e3,K.ClampToEdgeWrapping=1001,K.MirroredRepeatWrapping=1002,K.NearestFilter=1003,K.NearestMipMapNearestFilter=1004,K.NearestMipMapLinearFilter=1005,K.LinearFilter=1006,K.LinearMipMapNearestFilter=1007,K.LinearMipMapLinearFilter=1008,K.UnsignedByteType=1009,K.ByteType=1010,K.ShortType=1011,K.UnsignedShortType=1012,K.IntType=1013,K.UnsignedIntType=1014,K.FloatType=1015,K.HalfFloatType=1025,K.UnsignedShort4444Type=1016,K.UnsignedShort5551Type=1017,K.UnsignedShort565Type=1018,K.AlphaFormat=1019,K.RGBFormat=1020,K.RGBAFormat=1021,K.LuminanceFormat=1022,K.LuminanceAlphaFormat=1023,K.RGBEFormat=K.RGBAFormat,K.RGB_S3TC_DXT1_Format=2001,K.RGBA_S3TC_DXT1_Format=2002,K.RGBA_S3TC_DXT3_Format=2003,K.RGBA_S3TC_DXT5_Format=2004,K.RGB_PVRTC_4BPPV1_Format=2100,K.RGB_PVRTC_2BPPV1_Format=2101,K.RGBA_PVRTC_4BPPV1_Format=2102,K.RGBA_PVRTC_2BPPV1_Format=2103,K.Projector=function(){K.error("THREE.Projector has been moved to /examples/js/renderers/Projector.js."),this.projectVector=function(e,t){K.warn("THREE.Projector: .projectVector() is now vector.project()."),e.project(t)},this.unprojectVector=function(e,t){K.warn("THREE.Projector: .unprojectVector() is now vector.unproject()."),e.unproject(t)},this.pickingRay=function(e,t){K.error("THREE.Projector: .pickingRay() is now raycaster.setFromCamera().")}},K.CanvasRenderer=function(){K.error("THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js"),this.domElement=document.createElement("canvas"),this.clear=function(){},this.render=function(){},this.setClearColor=function(){},this.setSize=function(){}},K.Color=function(e){return 3===arguments.length?this.setRGB(arguments[0],arguments[1],arguments[2]):this.set(e)},K.Color.prototype={constructor:K.Color,r:1,g:1,b:1,set:function(e){return e instanceof K.Color?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e),this},setHex:function(e){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,this},setRGB:function(e,t,i){return this.r=e,this.g=t,this.b=i,this},setHSL:function(e,t,i){if(0===t)this.r=this.g=this.b=i;else{var n=function(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+6*(t-e)*i:i<.5?t:i<2/3?e+6*(t-e)*(2/3-i):e},r=i<=.5?i*(1+t):i+t-i*t,o=2*i-r;this.r=n(o,r,e+1/3),this.g=n(o,r,e),this.b=n(o,r,e-1/3)}return this},setStyle:function(e){if(/^rgb\((\d+), ?(\d+), ?(\d+)\)$/i.test(e)){var t=/^rgb\((\d+), ?(\d+), ?(\d+)\)$/i.exec(e);return this.r=Math.min(255,parseInt(t[1],10))/255,this.g=Math.min(255,parseInt(t[2],10))/255,this.b=Math.min(255,parseInt(t[3],10))/255,this}if(/^rgb\((\d+)\%, ?(\d+)\%, ?(\d+)\%\)$/i.test(e)){t=/^rgb\((\d+)\%, ?(\d+)\%, ?(\d+)\%\)$/i.exec(e);return this.r=Math.min(100,parseInt(t[1],10))/100,this.g=Math.min(100,parseInt(t[2],10))/100,this.b=Math.min(100,parseInt(t[3],10))/100,this}if(/^\#([0-9a-f]{6})$/i.test(e)){t=/^\#([0-9a-f]{6})$/i.exec(e);return this.setHex(parseInt(t[1],16)),this}if(/^\#([0-9a-f])([0-9a-f])([0-9a-f])$/i.test(e)){t=/^\#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(e);return this.setHex(parseInt(t[1]+t[1]+t[2]+t[2]+t[3]+t[3],16)),this}if(/^(\w+)$/i.test(e))return this.setHex(K.ColorKeywords[e]),this},copy:function(e){return this.r=e.r,this.g=e.g,this.b=e.b,this},copyGammaToLinear:function(e,t){return void 0===t&&(t=2),this.r=Math.pow(e.r,t),this.g=Math.pow(e.g,t),this.b=Math.pow(e.b,t),this},copyLinearToGamma:function(e,t){void 0===t&&(t=2);var i=t>0?1/t:1;return this.r=Math.pow(e.r,i),this.g=Math.pow(e.g,i),this.b=Math.pow(e.b,i),this},convertGammaToLinear:function(){var e=this.r,t=this.g,i=this.b;return this.r=e*e,this.g=t*t,this.b=i*i,this},convertLinearToGamma:function(){return this.r=Math.sqrt(this.r),this.g=Math.sqrt(this.g),this.b=Math.sqrt(this.b),this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(e){var t,i,n=e||{h:0,s:0,l:0},r=this.r,o=this.g,s=this.b,a=Math.max(r,o,s),l=Math.min(r,o,s),c=(l+a)/2;if(l===a)t=0,i=0;else{var h=a-l;switch(i=c<=.5?h/(a+l):h/(2-a-l),a){case r:t=(o-s)/h+(o0?(t=.5/Math.sqrt(d+1),this._w=.25/t,this._x=(h-l)*t,this._y=(o-c)*t,this._z=(s-r)*t):n>a&&n>u?(t=2*Math.sqrt(1+n-a-u),this._w=(h-l)/t,this._x=.25*t,this._y=(r+s)/t,this._z=(o+c)/t):a>u?(t=2*Math.sqrt(1+a-n-u),this._w=(o-c)/t,this._x=(r+s)/t,this._y=.25*t,this._z=(l+h)/t):(t=2*Math.sqrt(1+u-n-a),this._w=(s-r)/t,this._x=(o+c)/t,this._y=(l+h)/t,this._z=.25*t),this.onChangeCallback(),this},setFromUnitVectors:function(e,t){return void 0===n&&(n=new K.Vector3),(r=e.dot(t)+1)<1e-6?(r=0,Math.abs(e.x)>Math.abs(e.z)?n.set(-e.y,e.x,0):n.set(0,-e.z,e.y)):n.crossVectors(e,t),this._x=n.x,this._y=n.y,this._z=n.z,this._w=r,this.normalize(),this},inverse:function(){return this.conjugate().normalize(),this},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this.onChangeCallback(),this},dot:function(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this.onChangeCallback(),this},multiply:function(e,t){return void 0!==t?(K.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(e,t)):this.multiplyQuaternions(this,e)},multiplyQuaternions:function(e,t){var i=e._x,n=e._y,r=e._z,o=e._w,s=t._x,a=t._y,l=t._z,c=t._w;return this._x=i*c+o*s+n*l-r*a,this._y=n*c+o*a+r*s-i*l,this._z=r*c+o*l+i*a-n*s,this._w=o*c-i*s-n*a-r*l,this.onChangeCallback(),this},multiplyVector3:function(e){return K.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."),e.applyQuaternion(this)},slerp:function(e,t){if(0===t)return this;if(1===t)return this.copy(e);var i=this._x,n=this._y,r=this._z,o=this._w,s=o*e._w+i*e._x+n*e._y+r*e._z;if(s<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,s=-s):this.copy(e),s>=1)return this._w=o,this._x=i,this._y=n,this._z=r,this;var a=Math.acos(s),l=Math.sqrt(1-s*s);if(Math.abs(l)<.001)return this._w=.5*(o+this._w),this._x=.5*(i+this._x),this._y=.5*(n+this._y),this._z=.5*(r+this._z),this;var c=Math.sin((1-t)*a)/l,h=Math.sin(t*a)/l;return this._w=o*c+this._w*h,this._x=i*c+this._x*h,this._y=n*c+this._y*h,this._z=r*c+this._z*h,this.onChangeCallback(),this},equals:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w},fromArray:function(e,t){return void 0===t&&(t=0),this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this.onChangeCallback(),this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e},onChange:function(e){return this.onChangeCallback=e,this},onChangeCallback:function(){},clone:function(){return new K.Quaternion(this._x,this._y,this._z,this._w)}},K.Quaternion.slerp=function(e,t,i,n){return i.copy(e).slerp(t,n)},K.Vector2=function(e,t){this.x=e||0,this.y=t||0},K.Vector2.prototype={constructor:K.Vector2,set:function(e,t){return this.x=e,this.y=t,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}},copy:function(e){return this.x=e.x,this.y=e.y,this},add:function(e,t){return void 0!==t?(K.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this)},addScalar:function(e){return this.x+=e,this.y+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this},sub:function(e,t){return void 0!==t?(K.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this)},subScalar:function(e){return this.x-=e,this.y-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this},multiply:function(e){return this.x*=e.x,this.y*=e.y,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return this.x/=e.x,this.y/=e.y,this},divideScalar:function(e){if(0!==e){var t=1/e;this.x*=t,this.y*=t}else this.x=0,this.y=0;return this},min:function(e){return this.x>e.x&&(this.x=e.x),this.y>e.y&&(this.y=e.y),this},max:function(e){return this.xt.x&&(this.x=t.x),this.yt.y&&(this.y=t.y),this},clampScalar:function(e,t){return void 0===o&&(o=new K.Vector2,s=new K.Vector2),o.set(e,e),s.set(t,t),this.clamp(o,s)},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this},negate:function(){return this.x=-this.x,this.y=-this.y,this},dot:function(e){return this.x*e.x+this.y*e.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,i=this.y-e.y;return t*t+i*i},setLength:function(e){var t=this.length();return 0!==t&&e!==t&&this.multiplyScalar(e/t),this},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this},lerpVectors:function(e,t,i){return this.subVectors(t,e).multiplyScalar(i).add(e),this},equals:function(e){return e.x===this.x&&e.y===this.y},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e},fromAttribute:function(e,t,i){return void 0===i&&(i=0),t=t*e.itemSize+i,this.x=e.array[t],this.y=e.array[t+1],this},clone:function(){return new K.Vector2(this.x,this.y)}},K.Vector3=function(e,t,i){this.x=e||0,this.y=t||0,this.z=i||0},K.Vector3.prototype={constructor:K.Vector3,set:function(e,t,i){return this.x=e,this.y=t,this.z=i,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this},add:function(e,t){return void 0!==t?(K.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this},sub:function(e,t){return void 0!==t?(K.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this},multiply:function(e,t){return void 0!==t?(K.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this},multiplyVectors:function(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this},applyEuler:function(e){return e instanceof K.Euler==0&&K.error("THREE.Vector3: .applyEuler() now expects a Euler rotation rather than a Vector3 and order."),void 0===l&&(l=new K.Quaternion),this.applyQuaternion(l.setFromEuler(e)),this},applyAxisAngle:function(){var e;return function(t,i){return void 0===e&&(e=new K.Quaternion),this.applyQuaternion(e.setFromAxisAngle(t,i)),this}}(),applyMatrix3:function(e){var t=this.x,i=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[3]*i+r[6]*n,this.y=r[1]*t+r[4]*i+r[7]*n,this.z=r[2]*t+r[5]*i+r[8]*n,this},applyMatrix4:function(e){var t=this.x,i=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[4]*i+r[8]*n+r[12],this.y=r[1]*t+r[5]*i+r[9]*n+r[13],this.z=r[2]*t+r[6]*i+r[10]*n+r[14],this},applyProjection:function(e){var t=this.x,i=this.y,n=this.z,r=e.elements,o=1/(r[3]*t+r[7]*i+r[11]*n+r[15]);return this.x=(r[0]*t+r[4]*i+r[8]*n+r[12])*o,this.y=(r[1]*t+r[5]*i+r[9]*n+r[13])*o,this.z=(r[2]*t+r[6]*i+r[10]*n+r[14])*o,this},applyQuaternion:function(e){var t=this.x,i=this.y,n=this.z,r=e.x,o=e.y,s=e.z,a=e.w,l=a*t+o*n-s*i,c=a*i+s*t-r*n,h=a*n+r*i-o*t,u=-r*t-o*i-s*n;return this.x=l*a+u*-r+c*-s-h*-o,this.y=c*a+u*-o+h*-r-l*-s,this.z=h*a+u*-s+l*-o-c*-r,this},project:function(e){return void 0===a&&(a=new K.Matrix4),a.multiplyMatrices(e.projectionMatrix,a.getInverse(e.matrixWorld)),this.applyProjection(a)},unproject:function(){var e;return function(t){return void 0===e&&(e=new K.Matrix4),e.multiplyMatrices(t.matrixWorld,e.getInverse(t.projectionMatrix)),this.applyProjection(e)}}(),transformDirection:function(e){var t=this.x,i=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[4]*i+r[8]*n,this.y=r[1]*t+r[5]*i+r[9]*n,this.z=r[2]*t+r[6]*i+r[10]*n,this.normalize(),this},divide:function(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this},divideScalar:function(e){if(0!==e){var t=1/e;this.x*=t,this.y*=t,this.z*=t}else this.x=0,this.y=0,this.z=0;return this},min:function(e){return this.x>e.x&&(this.x=e.x),this.y>e.y&&(this.y=e.y),this.z>e.z&&(this.z=e.z),this},max:function(e){return this.xt.x&&(this.x=t.x),this.yt.y&&(this.y=t.y),this.zt.z&&(this.z=t.z),this},clampScalar:function(){var e,t;return function(i,n){return void 0===e&&(e=new K.Vector3,t=new K.Vector3),e.set(i,i,i),t.set(n,n,n),this.clamp(e,t)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(e){var t=this.length();return 0!==t&&e!==t&&this.multiplyScalar(e/t),this},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this},lerpVectors:function(e,t,i){return this.subVectors(t,e).multiplyScalar(i).add(e),this},cross:function(e,t){if(void 0!==t)return K.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t);var i=this.x,n=this.y,r=this.z;return this.x=n*e.z-r*e.y,this.y=r*e.x-i*e.z,this.z=i*e.y-n*e.x,this},crossVectors:function(e,t){var i=e.x,n=e.y,r=e.z,o=t.x,s=t.y,a=t.z;return this.x=n*a-r*s,this.y=r*o-i*a,this.z=i*s-n*o,this},projectOnVector:function(){var e,t;return function(i){return void 0===e&&(e=new K.Vector3),e.copy(i).normalize(),t=this.dot(e),this.copy(e).multiplyScalar(t)}}(),projectOnPlane:function(){var e;return function(t){return void 0===e&&(e=new K.Vector3),e.copy(this).projectOnVector(t),this.sub(e)}}(),reflect:function(){var e;return function(t){return void 0===e&&(e=new K.Vector3),this.sub(e.copy(t).multiplyScalar(2*this.dot(t)))}}(),angleTo:function(e){var t=this.dot(e)/(this.length()*e.length());return Math.acos(K.Math.clamp(t,-1,1))},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,i=this.y-e.y,n=this.z-e.z;return t*t+i*i+n*n},setEulerFromRotationMatrix:function(e,t){K.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(e,t){K.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(e){return K.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),this.setFromMatrixPosition(e)},getScaleFromMatrix:function(e){return K.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),this.setFromMatrixScale(e)},getColumnFromMatrix:function(e,t){return K.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),this.setFromMatrixColumn(e,t)},setFromMatrixPosition:function(e){return this.x=e.elements[12],this.y=e.elements[13],this.z=e.elements[14],this},setFromMatrixScale:function(e){var t=this.set(e.elements[0],e.elements[1],e.elements[2]).length(),i=this.set(e.elements[4],e.elements[5],e.elements[6]).length(),n=this.set(e.elements[8],e.elements[9],e.elements[10]).length();return this.x=t,this.y=i,this.z=n,this},setFromMatrixColumn:function(e,t){var i=4*e,n=t.elements;return this.x=n[i],this.y=n[i+1],this.z=n[i+2],this},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e},fromAttribute:function(e,t,i){return void 0===i&&(i=0),t=t*e.itemSize+i,this.x=e.array[t],this.y=e.array[t+1],this.z=e.array[t+2],this},clone:function(){return new K.Vector3(this.x,this.y,this.z)}},K.Vector4=function(e,t,i,n){this.x=e||0,this.y=t||0,this.z=i||0,this.w=void 0!==n?n:1},K.Vector4.prototype={constructor:K.Vector4,set:function(e,t,i,n){return this.x=e,this.y=t,this.z=i,this.w=n,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},setW:function(e){return this.w=e,this},setComponent:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}},getComponent:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this},add:function(e,t){return void 0!==t?(K.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this)},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this},sub:function(e,t){return void 0!==t?(K.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this)},subScalar:function(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this},multiplyScalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this},applyMatrix4:function(e){var t=this.x,i=this.y,n=this.z,r=this.w,o=e.elements;return this.x=o[0]*t+o[4]*i+o[8]*n+o[12]*r,this.y=o[1]*t+o[5]*i+o[9]*n+o[13]*r,this.z=o[2]*t+o[6]*i+o[10]*n+o[14]*r,this.w=o[3]*t+o[7]*i+o[11]*n+o[15]*r,this},divideScalar:function(e){if(0!==e){var t=1/e;this.x*=t,this.y*=t,this.z*=t,this.w*=t}else this.x=0,this.y=0,this.z=0,this.w=1;return this},setAxisAngleFromQuaternion:function(e){this.w=2*Math.acos(e.w);var t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this},setAxisAngleFromRotationMatrix:function(e){var t,i,n,r,o=.01,s=.1,a=e.elements,l=a[0],c=a[4],h=a[8],u=a[1],d=a[5],f=a[9],p=a[2],m=a[6],g=a[10];if(Math.abs(c-u)y&&v>b?vb?ye.x&&(this.x=e.x),this.y>e.y&&(this.y=e.y),this.z>e.z&&(this.z=e.z),this.w>e.w&&(this.w=e.w),this},max:function(e){return this.xt.x&&(this.x=t.x),this.yt.y&&(this.y=t.y),this.zt.z&&(this.z=t.z),this.wt.w&&(this.w=t.w),this},clampScalar:function(){var e,t;return function(i,n){return void 0===e&&(e=new K.Vector4,t=new K.Vector4),e.set(i,i,i,i),t.set(n,n,n,n),this.clamp(e,t)}}(),floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length())},setLength:function(e){var t=this.length();return 0!==t&&e!==t&&this.multiplyScalar(e/t),this},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this},lerpVectors:function(e,t,i){return this.subVectors(t,e).multiplyScalar(i).add(e),this},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w},fromArray:function(e,t){return void 0===t&&(t=0),this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e},fromAttribute:function(e,t,i){return void 0===i&&(i=0),t=t*e.itemSize+i,this.x=e.array[t],this.y=e.array[t+1],this.z=e.array[t+2],this.w=e.array[t+3],this},clone:function(){return new K.Vector4(this.x,this.y,this.z,this.w)}},K.Euler=function(e,t,i,n){this._x=e||0,this._y=t||0,this._z=i||0,this._order=n||K.Euler.DefaultOrder},K.Euler.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"],K.Euler.DefaultOrder="XYZ",K.Euler.prototype={constructor:K.Euler,_x:0,_y:0,_z:0,_order:K.Euler.DefaultOrder,get x(){return this._x},set x(e){this._x=e,this.onChangeCallback()},get y(){return this._y},set y(e){this._y=e,this.onChangeCallback()},get z(){return this._z},set z(e){this._z=e,this.onChangeCallback()},get order(){return this._order},set order(e){this._order=e,this.onChangeCallback()},set:function(e,t,i,n){return this._x=e,this._y=t,this._z=i,this._order=n||this._order,this.onChangeCallback(),this},copy:function(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this.onChangeCallback(),this},setFromRotationMatrix:function(e,t,i){var n=K.Math.clamp,r=e.elements,o=r[0],s=r[4],a=r[8],l=r[1],c=r[5],h=r[9],u=r[2],d=r[6],f=r[10];return"XYZ"===(t=t||this._order)?(this._y=Math.asin(n(a,-1,1)),Math.abs(a)<.99999?(this._x=Math.atan2(-h,f),this._z=Math.atan2(-s,o)):(this._x=Math.atan2(d,c),this._z=0)):"YXZ"===t?(this._x=Math.asin(-n(h,-1,1)),Math.abs(h)<.99999?(this._y=Math.atan2(a,f),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-u,o),this._z=0)):"ZXY"===t?(this._x=Math.asin(n(d,-1,1)),Math.abs(d)<.99999?(this._y=Math.atan2(-u,f),this._z=Math.atan2(-s,c)):(this._y=0,this._z=Math.atan2(l,o))):"ZYX"===t?(this._y=Math.asin(-n(u,-1,1)),Math.abs(u)<.99999?(this._x=Math.atan2(d,f),this._z=Math.atan2(l,o)):(this._x=0,this._z=Math.atan2(-s,c))):"YZX"===t?(this._z=Math.asin(n(l,-1,1)),Math.abs(l)<.99999?(this._x=Math.atan2(-h,c),this._y=Math.atan2(-u,o)):(this._x=0,this._y=Math.atan2(a,f))):"XZY"===t?(this._z=Math.asin(-n(s,-1,1)),Math.abs(s)<.99999?(this._x=Math.atan2(d,c),this._y=Math.atan2(a,o)):(this._x=Math.atan2(-h,f),this._y=0)):K.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+t),this._order=t,!1!==i&&this.onChangeCallback(),this},setFromQuaternion:function(){var e;return function(t,i,n){return void 0===e&&(e=new K.Matrix4),e.makeRotationFromQuaternion(t),this.setFromRotationMatrix(e,i,n),this}}(),setFromVector3:function(e,t){return this.set(e.x,e.y,e.z,t||this._order)},reorder:(c=new K.Quaternion,function(e){c.setFromEuler(this),this.setFromQuaternion(c,e)}),equals:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order},fromArray:function(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this.onChangeCallback(),this},toArray:function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e},toVector3:function(e){return e?e.set(this._x,this._y,this._z):new K.Vector3(this._x,this._y,this._z)},onChange:function(e){return this.onChangeCallback=e,this},onChangeCallback:function(){},clone:function(){return new K.Euler(this._x,this._y,this._z,this._order)}},K.Line3=function(e,t){this.start=void 0!==e?e:new K.Vector3,this.end=void 0!==t?t:new K.Vector3},K.Line3.prototype={constructor:K.Line3,set:function(e,t){return this.start.copy(e),this.end.copy(t),this},copy:function(e){return this.start.copy(e.start),this.end.copy(e.end),this},center:function(e){return(e||new K.Vector3).addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(e){return(e||new K.Vector3).subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(e,t){var i=t||new K.Vector3;return this.delta(i).multiplyScalar(e).add(this.start)},closestPointToPointParameter:(h=new K.Vector3,u=new K.Vector3,function(e,t){h.subVectors(e,this.start),u.subVectors(this.end,this.start);var i=u.dot(u),n=u.dot(h)/i;return t&&(n=K.Math.clamp(n,0,1)),n}),closestPointToPoint:function(e,t,i){var n=this.closestPointToPointParameter(e,t),r=i||new K.Vector3;return this.delta(r).multiplyScalar(n).add(this.start)},applyMatrix4:function(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this},equals:function(e){return e.start.equals(this.start)&&e.end.equals(this.end)},clone:function(){return(new K.Line3).copy(this)}},K.Box2=function(e,t){this.min=void 0!==e?e:new K.Vector2(1/0,1/0),this.max=void 0!==t?t:new K.Vector2(-1/0,-1/0)},K.Box2.prototype={constructor:K.Box2,set:function(e,t){return this.min.copy(e),this.max.copy(t),this},setFromPoints:function(e){this.makeEmpty();for(var t=0,i=e.length;tthis.max.x||e.ythis.max.y)},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y},getParameter:function(e,t){return(t||new K.Vector2).set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))},isIntersectionBox:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y)},clampPoint:function(e,t){return(t||new K.Vector2).copy(e).clamp(this.min,this.max)},distanceToPoint:function(){var e=new K.Vector2;return function(t){return e.copy(t).clamp(this.min,this.max).sub(t).length()}}(),intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)},clone:function(){return(new K.Box2).copy(this)}},K.Box3=function(e,t){this.min=void 0!==e?e:new K.Vector3(1/0,1/0,1/0),this.max=void 0!==t?t:new K.Vector3(-1/0,-1/0,-1/0)},K.Box3.prototype={constructor:K.Box3,set:function(e,t){return this.min.copy(e),this.max.copy(t),this},setFromPoints:function(e){this.makeEmpty();for(var t=0,i=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)},containsBox:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z},getParameter:function(e,t){return(t||new K.Vector3).set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))},isIntersectionBox:function(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)},clampPoint:function(e,t){return(t||new K.Vector3).copy(e).clamp(this.min,this.max)},distanceToPoint:function(){var e=new K.Vector3;return function(t){return e.copy(t).clamp(this.min,this.max).sub(t).length()}}(),getBoundingSphere:function(){var e=new K.Vector3;return function(t){var i=t||new K.Sphere;return i.center=this.getCenter(),i.radius=.5*this.size(e).length(),i}}(),intersect:function(e){return this.min.max(e.min),this.max.min(e.max),this},union:function(e){return this.min.min(e.min),this.max.max(e.max),this},applyMatrix4:(d=[new K.Vector3,new K.Vector3,new K.Vector3,new K.Vector3,new K.Vector3,new K.Vector3,new K.Vector3,new K.Vector3],function(e){return d[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),d[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),d[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),d[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),d[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),d[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),d[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),d[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.makeEmpty(),this.setFromPoints(d),this}),translate:function(e){return this.min.add(e),this.max.add(e),this},equals:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)},clone:function(){return(new K.Box3).copy(this)}},K.Matrix3=function(){this.elements=new Float32Array([1,0,0,0,1,0,0,0,1]),arguments.length>0&&K.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")},K.Matrix3.prototype={constructor:K.Matrix3,set:function(e,t,i,n,r,o,s,a,l){var c=this.elements;return c[0]=e,c[3]=t,c[6]=i,c[1]=n,c[4]=r,c[7]=o,c[2]=s,c[5]=a,c[8]=l,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},copy:function(e){var t=e.elements;return this.set(t[0],t[3],t[6],t[1],t[4],t[7],t[2],t[5],t[8]),this},multiplyVector3:function(e){return K.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead."),e.applyMatrix3(this)},multiplyVector3Array:function(e){return K.warn("THREE.Matrix3: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead."),this.applyToVector3Array(e)},applyToVector3Array:function(){var e=new K.Vector3;return function(t,i,n){void 0===i&&(i=0),void 0===n&&(n=t.length);for(var r=0,o=i;r0&&K.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")},K.Matrix4.prototype={constructor:K.Matrix4,set:function(e,t,i,n,r,o,s,a,l,c,h,u,d,f,p,m){var g=this.elements;return g[0]=e,g[4]=t,g[8]=i,g[12]=n,g[1]=r,g[5]=o,g[9]=s,g[13]=a,g[2]=l,g[6]=c,g[10]=h,g[14]=u,g[3]=d,g[7]=f,g[11]=p,g[15]=m,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},copy:function(e){return this.elements.set(e.elements),this},extractPosition:function(e){return K.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(e)},copyPosition:function(e){var t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this},extractBasis:function(e,t,i){var n=this.elements;return e.set(n[0],n[1],n[2]),t.set(n[4],n[5],n[6]),i.set(n[8],n[9],n[10]),this},makeBasis:function(e,t,i){return this.set(e.x,t.x,i.x,0,e.y,t.y,i.y,0,e.z,t.z,i.z,0,0,0,0,1),this},extractRotation:function(){var e=new K.Vector3;return function(t){var i=this.elements,n=t.elements,r=1/e.set(n[0],n[1],n[2]).length(),o=1/e.set(n[4],n[5],n[6]).length(),s=1/e.set(n[8],n[9],n[10]).length();return i[0]=n[0]*r,i[1]=n[1]*r,i[2]=n[2]*r,i[4]=n[4]*o,i[5]=n[5]*o,i[6]=n[6]*o,i[8]=n[8]*s,i[9]=n[9]*s,i[10]=n[10]*s,this}}(),makeRotationFromEuler:function(e){e instanceof K.Euler==!1&&K.error("THREE.Matrix: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var t=this.elements,i=e.x,n=e.y,r=e.z,o=Math.cos(i),s=Math.sin(i),a=Math.cos(n),l=Math.sin(n),c=Math.cos(r),h=Math.sin(r);if("XYZ"===e.order){var u=o*c,d=o*h,f=s*c,p=s*h;t[0]=a*c,t[4]=-a*h,t[8]=l,t[1]=d+f*l,t[5]=u-p*l,t[9]=-s*a,t[2]=p-u*l,t[6]=f+d*l,t[10]=o*a}else if("YXZ"===e.order){var m=a*c,g=a*h,v=l*c,y=l*h;t[0]=m+y*s,t[4]=v*s-g,t[8]=o*l,t[1]=o*h,t[5]=o*c,t[9]=-s,t[2]=g*s-v,t[6]=y+m*s,t[10]=o*a}else if("ZXY"===e.order){m=a*c,g=a*h,v=l*c,y=l*h;t[0]=m-y*s,t[4]=-o*h,t[8]=v+g*s,t[1]=g+v*s,t[5]=o*c,t[9]=y-m*s,t[2]=-o*l,t[6]=s,t[10]=o*a}else if("ZYX"===e.order){u=o*c,d=o*h,f=s*c,p=s*h;t[0]=a*c,t[4]=f*l-d,t[8]=u*l+p,t[1]=a*h,t[5]=p*l+u,t[9]=d*l-f,t[2]=-l,t[6]=s*a,t[10]=o*a}else if("YZX"===e.order){var b=o*a,x=o*l,_=s*a,E=s*l;t[0]=a*c,t[4]=E-b*h,t[8]=_*h+x,t[1]=h,t[5]=o*c,t[9]=-s*c,t[2]=-l*c,t[6]=x*h+_,t[10]=b-E*h}else if("XZY"===e.order){b=o*a,x=o*l,_=s*a,E=s*l;t[0]=a*c,t[4]=-h,t[8]=l*c,t[1]=b*h+E,t[5]=o*c,t[9]=x*h-_,t[2]=_*h-x,t[6]=s*c,t[10]=E*h+b}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},setRotationFromQuaternion:function(e){return K.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion()."),this.makeRotationFromQuaternion(e)},makeRotationFromQuaternion:function(e){var t=this.elements,i=e.x,n=e.y,r=e.z,o=e.w,s=i+i,a=n+n,l=r+r,c=i*s,h=i*a,u=i*l,d=n*a,f=n*l,p=r*l,m=o*s,g=o*a,v=o*l;return t[0]=1-(d+p),t[4]=h-v,t[8]=u+g,t[1]=h+v,t[5]=1-(c+p),t[9]=f-m,t[2]=u-g,t[6]=f+m,t[10]=1-(c+d),t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this},lookAt:function(){var e=new K.Vector3,t=new K.Vector3,i=new K.Vector3;return function(n,r,o){var s=this.elements;return i.subVectors(n,r).normalize(),0===i.length()&&(i.z=1),e.crossVectors(o,i).normalize(),0===e.length()&&(i.x+=1e-4,e.crossVectors(o,i).normalize()),t.crossVectors(i,e),s[0]=e.x,s[4]=t.x,s[8]=i.x,s[1]=e.y,s[5]=t.y,s[9]=i.y,s[2]=e.z,s[6]=t.z,s[10]=i.z,this}}(),multiply:function(e,t){return void 0!==t?(K.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(e,t)):this.multiplyMatrices(this,e)},multiplyMatrices:function(e,t){var i=e.elements,n=t.elements,r=this.elements,o=i[0],s=i[4],a=i[8],l=i[12],c=i[1],h=i[5],u=i[9],d=i[13],f=i[2],p=i[6],m=i[10],g=i[14],v=i[3],y=i[7],b=i[11],x=i[15],_=n[0],E=n[4],S=n[8],A=n[12],w=n[1],T=n[5],M=n[9],C=n[13],P=n[2],D=n[6],L=n[10],I=n[14],R=n[3],O=n[7],N=n[11],F=n[15];return r[0]=o*_+s*w+a*P+l*R,r[4]=o*E+s*T+a*D+l*O,r[8]=o*S+s*M+a*L+l*N,r[12]=o*A+s*C+a*I+l*F,r[1]=c*_+h*w+u*P+d*R,r[5]=c*E+h*T+u*D+d*O,r[9]=c*S+h*M+u*L+d*N,r[13]=c*A+h*C+u*I+d*F,r[2]=f*_+p*w+m*P+g*R,r[6]=f*E+p*T+m*D+g*O,r[10]=f*S+p*M+m*L+g*N,r[14]=f*A+p*C+m*I+g*F,r[3]=v*_+y*w+b*P+x*R,r[7]=v*E+y*T+b*D+x*O,r[11]=v*S+y*M+b*L+x*N,r[15]=v*A+y*C+b*I+x*F,this},multiplyToArray:function(e,t,i){var n=this.elements;return this.multiplyMatrices(e,t),i[0]=n[0],i[1]=n[1],i[2]=n[2],i[3]=n[3],i[4]=n[4],i[5]=n[5],i[6]=n[6],i[7]=n[7],i[8]=n[8],i[9]=n[9],i[10]=n[10],i[11]=n[11],i[12]=n[12],i[13]=n[13],i[14]=n[14],i[15]=n[15],this},multiplyScalar:function(e){var t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this},multiplyVector3:function(e){return K.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) or vector.applyProjection( matrix ) instead."),e.applyProjection(this)},multiplyVector4:function(e){return K.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead."),e.applyMatrix4(this)},multiplyVector3Array:function(e){return K.warn("THREE.Matrix4: .multiplyVector3Array() has been renamed. Use matrix.applyToVector3Array( array ) instead."),this.applyToVector3Array(e)},applyToVector3Array:function(){var e=new K.Vector3;return function(t,i,n){void 0===i&&(i=0),void 0===n&&(n=t.length);for(var r=0,o=i;r0)if(o=c*h-u,a=l*f,(r=c*u-h)>=0)if(o>=-a)if(o<=a){var v=1/f;s=(r*=v)*(r+c*(o*=v)+2*h)+o*(c*r+o+2*u)+d}else o=l,s=-(r=Math.max(0,-(c*o+h)))*r+o*(o+2*u)+d;else o=-l,s=-(r=Math.max(0,-(c*o+h)))*r+o*(o+2*u)+d;else o<=-a?s=-(r=Math.max(0,-(-c*l+h)))*r+(o=r>0?-l:Math.min(Math.max(-l,-u),l))*(o+2*u)+d:o<=a?(r=0,s=(o=Math.min(Math.max(-l,-u),l))*(o+2*u)+d):s=-(r=Math.max(0,-(c*l+h)))*r+(o=r>0?l:Math.min(Math.max(-l,-u),l))*(o+2*u)+d;else o=c>0?-l:l,s=-(r=Math.max(0,-(c*o+h)))*r+o*(o+2*u)+d;return i&&i.copy(this.direction).multiplyScalar(r).add(this.origin),n&&n.copy(m).multiplyScalar(o).add(p),s}),isIntersectionSphere:function(e){return this.distanceToPoint(e.center)<=e.radius},intersectSphere:function(){var e=new K.Vector3;return function(t,i){e.subVectors(t.center,this.origin);var n=e.dot(this.direction),r=e.dot(e)-n*n,o=t.radius*t.radius;if(r>o)return null;var s=Math.sqrt(o-r),a=n-s,l=n+s;return a<0&&l<0?null:a<0?this.at(l,i):this.at(a,i)}}(),isIntersectionPlane:function(e){var t=e.distanceToPoint(this.origin);return 0===t||e.normal.dot(this.direction)*t<0},distanceToPlane:function(e){var t=e.normal.dot(this.direction);if(0==t)return 0==e.distanceToPoint(this.origin)?0:null;var i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null},intersectPlane:function(e,t){var i=this.distanceToPlane(e);return null===i?null:this.at(i,t)},isIntersectionBox:(f=new K.Vector3,function(e){return null!==this.intersectBox(e,f)}),intersectBox:function(e,t){var i,n,r,o,s,a,l=1/this.direction.x,c=1/this.direction.y,h=1/this.direction.z,u=this.origin;return l>=0?(i=(e.min.x-u.x)*l,n=(e.max.x-u.x)*l):(i=(e.max.x-u.x)*l,n=(e.min.x-u.x)*l),c>=0?(r=(e.min.y-u.y)*c,o=(e.max.y-u.y)*c):(r=(e.max.y-u.y)*c,o=(e.min.y-u.y)*c),i>o||r>n?null:((r>i||i!=i)&&(i=r),(o=0?(s=(e.min.z-u.z)*h,a=(e.max.z-u.z)*h):(s=(e.max.z-u.z)*h,a=(e.min.z-u.z)*h),i>a||s>n?null:((s>i||i!=i)&&(i=s),(a=0?i:n,t)))},intersectTriangle:function(){var e=new K.Vector3,t=new K.Vector3,i=new K.Vector3,n=new K.Vector3;return function(r,o,s,a,l){t.subVectors(o,r),i.subVectors(s,r),n.crossVectors(t,i);var c,h=this.direction.dot(n);if(h>0){if(a)return null;c=1}else{if(!(h<0))return null;c=-1,h=-h}e.subVectors(this.origin,r);var u=c*this.direction.dot(i.crossVectors(e,i));if(u<0)return null;var d=c*this.direction.dot(t.cross(e));if(d<0)return null;if(u+d>h)return null;var f=-c*e.dot(n);return f<0?null:this.at(f/h,l)}}(),applyMatrix4:function(e){return this.direction.add(this.origin).applyMatrix4(e),this.origin.applyMatrix4(e),this.direction.sub(this.origin),this.direction.normalize(),this},equals:function(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)},clone:function(){return(new K.Ray).copy(this)}},K.Sphere=function(e,t){this.center=void 0!==e?e:new K.Vector3,this.radius=void 0!==t?t:0},K.Sphere.prototype={constructor:K.Sphere,set:function(e,t){return this.center.copy(e),this.radius=t,this},setFromPoints:(v=new K.Box3,function(e,t){var i=this.center;void 0!==t?i.copy(t):v.setFromPoints(e).getCenter(i);for(var n=0,r=0,o=e.length;rthis.radius*this.radius&&(n.sub(this.center).normalize(),n.multiplyScalar(this.radius).add(this.center)),n},getBoundingBox:function(e){var t=e||new K.Box3;return t.set(this.center,this.center),t.expandByScalar(this.radius),t},applyMatrix4:function(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this},translate:function(e){return this.center.add(e),this},equals:function(e){return e.center.equals(this.center)&&e.radius===this.radius},clone:function(){return(new K.Sphere).copy(this)}},K.Frustum=function(e,t,i,n,r,o){this.planes=[void 0!==e?e:new K.Plane,void 0!==t?t:new K.Plane,void 0!==i?i:new K.Plane,void 0!==n?n:new K.Plane,void 0!==r?r:new K.Plane,void 0!==o?o:new K.Plane]},K.Frustum.prototype={constructor:K.Frustum,set:function(e,t,i,n,r,o){var s=this.planes;return s[0].copy(e),s[1].copy(t),s[2].copy(i),s[3].copy(n),s[4].copy(r),s[5].copy(o),this},copy:function(e){for(var t=this.planes,i=0;i<6;i++)t[i].copy(e.planes[i]);return this},setFromMatrix:function(e){var t=this.planes,i=e.elements,n=i[0],r=i[1],o=i[2],s=i[3],a=i[4],l=i[5],c=i[6],h=i[7],u=i[8],d=i[9],f=i[10],p=i[11],m=i[12],g=i[13],v=i[14],y=i[15];return t[0].setComponents(s-n,h-a,p-u,y-m).normalize(),t[1].setComponents(s+n,h+a,p+u,y+m).normalize(),t[2].setComponents(s+r,h+l,p+d,y+g).normalize(),t[3].setComponents(s-r,h-l,p-d,y-g).normalize(),t[4].setComponents(s-o,h-c,p-f,y-v).normalize(),t[5].setComponents(s+o,h+c,p+f,y+v).normalize(),this},intersectsObject:(x=new K.Sphere,function(e){var t=e.geometry;return null===t.boundingSphere&&t.computeBoundingSphere(),x.copy(t.boundingSphere),x.applyMatrix4(e.matrixWorld),this.intersectsSphere(x)}),intersectsSphere:function(e){for(var t=this.planes,i=e.center,n=-e.radius,r=0;r<6;r++){if(t[r].distanceToPoint(i)0?e.min.x:e.max.x,b.x=n.normal.x>0?e.max.x:e.min.x,y.y=n.normal.y>0?e.min.y:e.max.y,b.y=n.normal.y>0?e.max.y:e.min.y,y.z=n.normal.z>0?e.min.z:e.max.z,b.z=n.normal.z>0?e.max.z:e.min.z;var r=n.distanceToPoint(y),o=n.distanceToPoint(b);if(r<0&&o<0)return!1}return!0}),containsPoint:function(e){for(var t=this.planes,i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0},clone:function(){return(new K.Frustum).copy(this)}},K.Plane=function(e,t){this.normal=void 0!==e?e:new K.Vector3(1,0,0),this.constant=void 0!==t?t:0},K.Plane.prototype={constructor:K.Plane,set:function(e,t){return this.normal.copy(e),this.constant=t,this},setComponents:function(e,t,i,n){return this.normal.set(e,t,i),this.constant=n,this},setFromNormalAndCoplanarPoint:function(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this},setFromCoplanarPoints:function(){var e=new K.Vector3,t=new K.Vector3;return function(i,n,r){var o=e.subVectors(r,n).cross(t.subVectors(i,n)).normalize();return this.setFromNormalAndCoplanarPoint(o,i),this}}(),copy:function(e){return this.normal.copy(e.normal),this.constant=e.constant,this},normalize:function(){var e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this},negate:function(){return this.constant*=-1,this.normal.negate(),this},distanceToPoint:function(e){return this.normal.dot(e)+this.constant},distanceToSphere:function(e){return this.distanceToPoint(e.center)-e.radius},projectPoint:function(e,t){return this.orthoPoint(e,t).sub(e).negate()},orthoPoint:function(e,t){var i=this.distanceToPoint(e);return(t||new K.Vector3).copy(this.normal).multiplyScalar(i)},isIntersectionLine:function(e){var t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0},intersectLine:function(){var e=new K.Vector3;return function(t,i){var n=i||new K.Vector3,r=t.delta(e),o=this.normal.dot(r);if(0==o)return 0==this.distanceToPoint(t.start)?n.copy(t.start):void 0;var s=-(t.start.dot(this.normal)+this.constant)/o;return s<0||s>1?void 0:n.copy(r).multiplyScalar(s).add(t.start)}}(),coplanarPoint:function(e){return(e||new K.Vector3).copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(){var e=new K.Vector3,t=new K.Vector3,i=new K.Matrix3;return function(n,r){var o=r||i.getNormalMatrix(n),s=e.copy(this.normal).applyMatrix3(o);s.normalize();var a=this.coplanarPoint(t);return a.applyMatrix4(n),this.setFromNormalAndCoplanarPoint(s,a),this}}(),translate:function(e){return this.constant=this.constant-e.dot(this.normal),this},equals:function(e){return e.normal.equals(this.normal)&&e.constant==this.constant},clone:function(){return(new K.Plane).copy(this)}},K.Math={generateUUID:function(){var e,t="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),i=new Array(36),n=0;return function(){for(var r=0;r<36;r++)8==r||13==r||18==r||23==r?i[r]="-":14==r?i[r]="4":(n<=2&&(n=33554432+16777216*Math.random()|0),e=15&n,n>>=4,i[r]=t[19==r?3&e|8:e]);return i.join("")}}(),clamp:function(e,t,i){return ei?i:e},clampBottom:function(e,t){return e=i?1:(e=(e-t)/(i-t))*e*(3-2*e)},smootherstep:function(e,t,i){return e<=t?0:e>=i?1:(e=(e-t)/(i-t))*e*e*(e*(6*e-15)+10)},random16:function(){return(65280*Math.random()+255*Math.random())/65535},randInt:function(e,t){return Math.floor(this.randFloat(e,t))},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},degToRad:(E=Math.PI/180,function(e){return e*E}),radToDeg:(_=180/Math.PI,function(e){return e*_}),isPowerOfTwo:function(e){return!(e&e-1)&&0!==e},nextPowerOfTwo:function(e){return e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e}},K.Spline=function(e){this.points=e;var t,i,n,r,o,s,a,l,c,h=[],u={x:0,y:0,z:0};function d(e,t,i,n,r,o,s){var a=.5*(i-e),l=.5*(n-t);return(2*(t-i)+a+l)*s+(-3*(t-i)-2*a-l)*o+a*r+t}this.initFromArray=function(e){this.points=[];for(var t=0;tthis.points.length-2?this.points.length-1:i+1,h[3]=i>this.points.length-3?this.points.length-1:i+2,s=this.points[h[0]],a=this.points[h[1]],l=this.points[h[2]],c=this.points[h[3]],o=n*(r=n*n),u.x=d(s.x,a.x,l.x,c.x,n,r,o),u.y=d(s.y,a.y,l.y,c.y,n,r,o),u.z=d(s.z,a.z,l.z,c.z,n,r,o),u},this.getControlPointsArray=function(){var e,t,i=this.points.length,n=[];for(e=0;e0?r.multiplyScalar(1/Math.sqrt(o)):r.set(0,0,0)}),K.Triangle.barycoordFromPoint=function(){var e=new K.Vector3,t=new K.Vector3,i=new K.Vector3;return function(n,r,o,s,a){e.subVectors(s,r),t.subVectors(o,r),i.subVectors(n,r);var l=e.dot(e),c=e.dot(t),h=e.dot(i),u=t.dot(t),d=t.dot(i),f=l*u-c*c,p=a||new K.Vector3;if(0==f)return p.set(-2,-1,-1);var m=1/f,g=(u*h-c*d)*m,v=(l*d-c*h)*m;return p.set(1-g-v,v,g)}}(),K.Triangle.containsPoint=function(){var e=new K.Vector3;return function(t,i,n,r){var o=K.Triangle.barycoordFromPoint(t,i,n,r,e);return o.x>=0&&o.y>=0&&o.x+o.y<=1}}(),K.Triangle.prototype={constructor:K.Triangle,set:function(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this},setFromPointsAndIndices:function(e,t,i,n){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[n]),this},copy:function(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this},area:function(){var e=new K.Vector3,t=new K.Vector3;return function(){return e.subVectors(this.c,this.b),t.subVectors(this.a,this.b),.5*e.cross(t).length()}}(),midpoint:function(e){return(e||new K.Vector3).addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},normal:function(e){return K.Triangle.normal(this.a,this.b,this.c,e)},plane:function(e){return(e||new K.Plane).setFromCoplanarPoints(this.a,this.b,this.c)},barycoordFromPoint:function(e,t){return K.Triangle.barycoordFromPoint(e,this.a,this.b,this.c,t)},containsPoint:function(e){return K.Triangle.containsPoint(e,this.a,this.b,this.c)},equals:function(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)},clone:function(){return(new K.Triangle).copy(this)}},K.Clock=function(e){this.autoStart=void 0===e||e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1},K.Clock.prototype={constructor:K.Clock,start:function(){this.startTime=void 0!==self.performance&&void 0!==self.performance.now?self.performance.now():Date.now(),this.oldTime=this.startTime,this.running=!0},stop:function(){this.getElapsedTime(),this.running=!1},getElapsedTime:function(){return this.getDelta(),this.elapsedTime},getDelta:function(){var e=0;if(this.autoStart&&!this.running&&this.start(),this.running){var t=void 0!==self.performance&&void 0!==self.performance.now?self.performance.now():Date.now();e=.001*(t-this.oldTime),this.oldTime=t,this.elapsedTime+=e}return e}},K.EventDispatcher=function(){},K.EventDispatcher.prototype={constructor:K.EventDispatcher,apply:function(e){e.addEventListener=K.EventDispatcher.prototype.addEventListener,e.hasEventListener=K.EventDispatcher.prototype.hasEventListener,e.removeEventListener=K.EventDispatcher.prototype.removeEventListener,e.dispatchEvent=K.EventDispatcher.prototype.dispatchEvent},addEventListener:function(e,t){void 0===this._listeners&&(this._listeners={});var i=this._listeners;void 0===i[e]&&(i[e]=[]),-1===i[e].indexOf(t)&&i[e].push(t)},hasEventListener:function(e,t){if(void 0===this._listeners)return!1;var i=this._listeners;return void 0!==i[e]&&-1!==i[e].indexOf(t)},removeEventListener:function(e,t){if(void 0!==this._listeners){var i=this._listeners[e];if(void 0!==i){var n=i.indexOf(t);-1!==n&&i.splice(n,1)}}},dispatchEvent:function(e){if(void 0!==this._listeners){var t=this._listeners[e.type];if(void 0!==t){e.target=this;for(var i=[],n=t.length,r=0;r1){for(var t=0;t1)for(var t=0;t0){o.children=[];for(var s=0;s0,a=3==n[0].vertexNormals.length,l=new Float32Array(3*n.length*3);this.setAttribute("position",new K.BufferAttribute(l,3));var c=new Float32Array(3*n.length*3);if(this.setAttribute("normal",new K.BufferAttribute(c,3)),o!==K.NoColors){var h=new Float32Array(3*n.length*3);this.setAttribute("color",new K.BufferAttribute(h,3))}if(!0===s){var u=new Float32Array(3*n.length*2);this.setAttribute("uv",new K.BufferAttribute(u,2))}for(var d=0,f=0,p=0;d0?this.offsets:[{start:0,count:f.length,index:0}],m=0,g=p.length;ml.index+e){var g={start:o,count:0,index:s};a.push(g),l=g;for(var v=0;v<6;v+=2){(y=h[v+1])>-1&&y0&&(e.data.offsets=JSON.parse(JSON.stringify(i))),null!==n&&(e.data.boundingSphere={center:n.center.toArray(),radius:n.radius}),e},clone:function(){var e=new K.BufferGeometry;for(var t in this.attributes){var i=this.attributes[t];e.setAttribute(t,i.clone())}for(var n=0,r=this.offsets.length;n0)for(h=0;h0&&(e+=t[i].distanceTo(t[i-1])),this.lineDistances[i]=e},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new K.Box3),this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new K.Sphere),this.boundingSphere.setFromPoints(this.vertices)},merge:function(e,t,i){if(e instanceof K.Geometry!=!1){var n,r=this.vertices.length,o=this.vertices,s=e.vertices,a=this.faces,l=e.faces,c=this.faceVertexUvs[0],h=e.faceVertexUvs[0];void 0===i&&(i=0),void 0!==t&&(n=(new K.Matrix3).getNormalMatrix(t));for(var u=0,d=s.length;u=0;i--){var p=d[i];for(this.faces.splice(p,1),s=0,a=this.faceVertexUvs.length;s0,g=f.vertexNormals.length>0,v=1!==f.color.r||1!==f.color.g||1!==f.color.b,y=f.vertexColors.length>0,b=0;if(b=S(b,0,0),b=S(b,1,!1),b=S(b,2,!1),b=S(b,3,p),b=S(b,4,m),b=S(b,5,g),b=S(b,6,v),b=S(b,7,y),s.push(b),s.push(f.a,f.b,f.c),p){var x=this.faceVertexUvs[0][r];s.push(T(x[0]),T(x[1]),T(x[2]))}if(m&&s.push(A(f.normal)),g){var _=f.vertexNormals;s.push(A(_[0]),A(_[1]),A(_[2]))}if(v&&s.push(w(f.color)),y){var E=f.vertexColors;s.push(w(E[0]),w(E[1]),w(E[2]))}}function S(e,t,i){return i?e|1<0&&(e.data.colors=c),u.length>0&&(e.data.uvs=[u]),e.data.faces=s,e},clone:function(){for(var e=new K.Geometry,t=this.vertices,i=0,n=t.length;i1?e.skinWeights[n+1]:0,a=t>2?e.skinWeights[n+2]:0,l=t>3?e.skinWeights[n+3]:0;i.skinWeights.push(new K.Vector4(o,s,a,l))}if(e.skinIndices)for(n=0,r=e.skinIndices.length;n1?e.skinIndices[n+1]:0,u=t>2?e.skinIndices[n+2]:0,d=t>3?e.skinIndices[n+3]:0;i.skinIndices.push(new K.Vector4(c,h,u,d))}i.bones=e.bones,i.bones&&i.bones.length>0&&(i.skinWeights.length!==i.skinIndices.length||i.skinIndices.length!==i.vertices.length)&&K.warn("THREE.JSONLoader: When skinning, number of vertices ("+i.vertices.length+"), skinIndices ("+i.skinIndices.length+"), and skinWeights ("+i.skinWeights.length+") should match.");i.animation=e.animation,i.animations=e.animations}(),function(t){var n,r,o,s,a,l,c,h,u,d,f;if(void 0!==e.morphTargets)for(a=0,l=e.morphTargets.length;a0){var r=new K.LoadingManager(t),o=new K.ImageLoader(r);o.setCrossOrigin(this.crossOrigin);for(var s=function(e){return i.manager.itemStart(e),o.load(e,(function(){i.manager.itemEnd(e)}))},a=0,l=e.length;as))(T=t.origin.distanceTo(u))n.far||r.push({distance:T,point:h.clone().applyMatrix4(this.matrixWorld),index:_,offsetIndex:v,face:null,faceIndex:null,object:this})}}else for(m=f.position.array,_=0;_s))(T=t.origin.distanceTo(u))n.far||r.push({distance:T,point:h.clone().applyMatrix4(this.matrixWorld),index:_,face:null,faceIndex:null,object:this})}}else if(a instanceof K.Geometry){var A=a.vertices,w=A.length;for(_=0;_s))(T=t.origin.distanceTo(u))n.far||r.push({distance:T,point:h.clone().applyMatrix4(this.matrixWorld),index:_,face:null,faceIndex:null,object:this})}}}}}(),K.Line.prototype.clone=function(e){return void 0===e&&(e=new K.Line(this.geometry,this.material,this.mode)),K.Object3D.prototype.clone.call(this,e),e},K.Mesh=function(e,t){K.Object3D.call(this),this.type="Mesh",this.geometry=void 0!==e?e:new K.Geometry,this.material=void 0!==t?t:new K.MeshBasicMaterial({color:16777215*Math.random()}),this.updateMorphTargets()},K.Mesh.prototype=Object.create(K.Object3D.prototype),K.Mesh.prototype.constructor=K.Mesh,K.Mesh.prototype.updateMorphTargets=function(){if(void 0!==this.geometry.morphTargets&&this.geometry.morphTargets.length>0){this.morphTargetBase=-1,this.morphTargetForcedOrder=[],this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var e=0,t=this.geometry.morphTargets.length;es.far||a.push({distance:k,point:_,face:new K.Face3(S,A,w,K.Triangle.normal(n,r,o)),faceIndex:null,object:this})}}else{b=0;var E=0;for(x=(d=c.position.array).length;bs.far||a.push({distance:k,point:_,face:new K.Face3(S,A,w,K.Triangle.normal(n,r,o)),faceIndex:null,object:this})}}}else if(l instanceof K.Geometry)for(var S,A,w,T=this.material instanceof K.MeshFaceMaterial,M=!0===T?this.material.materials:null,C=(h=s.precision,l.vertices),P=0,D=l.faces.length;Ps.far||a.push({distance:k,point:_,face:I,faceIndex:P,object:this})}}}}(),K.Mesh.prototype.clone=function(e,t){return void 0===e&&(e=new K.Mesh(this.geometry,this.material)),K.Object3D.prototype.clone.call(this,e,t),e},K.Bone=function(e){K.Object3D.call(this),this.type="Bone",this.skin=e},K.Bone.prototype=Object.create(K.Object3D.prototype),K.Bone.prototype.constructor=K.Bone,K.Skeleton=function(e,t,i){var n;(this.useVertexTexture=void 0===i||i,this.identityMatrix=new K.Matrix4,e=e||[],this.bones=e.slice(0),this.useVertexTexture)?(n=this.bones.length>256?64:this.bones.length>64?32:this.bones.length>16?16:8,this.boneTextureWidth=n,this.boneTextureHeight=n,this.boneMatrices=new Float32Array(this.boneTextureWidth*this.boneTextureHeight*4),this.boneTexture=new K.DataTexture(this.boneMatrices,this.boneTextureWidth,this.boneTextureHeight,K.RGBAFormat,K.FloatType),this.boneTexture.minFilter=K.NearestFilter,this.boneTexture.magFilter=K.NearestFilter,this.boneTexture.generateMipmaps=!1,this.boneTexture.flipY=!1):this.boneMatrices=new Float32Array(16*this.bones.length);if(void 0===t)this.calculateInverses();else if(this.bones.length===t.length)this.boneInverses=t.slice(0);else{K.warn("THREE.Skeleton bonInverses is the wrong length."),this.boneInverses=[];for(var r=0,o=this.bones.length;r1){var a=s[1];i[a]||(i[a]={start:1/0,end:-1/0});var l=i[a];rl.end&&(l.end=r),t||(t=a)}}e.firstAnimation=t},K.MorphAnimMesh.prototype.setAnimationLabel=function(e,t,i){this.geometry.animations||(this.geometry.animations={}),this.geometry.animations[e]={start:t,end:i}},K.MorphAnimMesh.prototype.playAnimation=function(e,t){var i=this.geometry.animations[e];i?(this.setFrameRange(i.start,i.end),this.duration=(i.end-i.start)/t*1e3,this.time=0):K.warn("THREE.MorphAnimMesh: animation["+e+"] undefined in .playAnimation()")},K.MorphAnimMesh.prototype.updateAnimation=function(e){var t=this.duration/this.length;this.time+=this.direction*e,this.mirroredLoop?(this.time>this.duration||this.time<0)&&(this.direction*=-1,this.time>this.duration&&(this.time=this.duration,this.directionBackwards=!0),this.time<0&&(this.time=0,this.directionBackwards=!1)):(this.time=this.time%this.duration,this.time<0&&(this.time+=this.duration));var i=this.startKeyframe+K.Math.clamp(Math.floor(this.time/t),0,this.length-1);i!==this.currentKeyframe&&(this.morphTargetInfluences[this.lastKeyframe]=0,this.morphTargetInfluences[this.currentKeyframe]=1,this.morphTargetInfluences[i]=0,this.lastKeyframe=this.currentKeyframe,this.currentKeyframe=i);var n=this.time%t/t;this.directionBackwards&&(n=1-n),this.morphTargetInfluences[this.currentKeyframe]=n,this.morphTargetInfluences[this.lastKeyframe]=1-n},K.MorphAnimMesh.prototype.interpolateTargets=function(e,t,i){for(var n=this.morphTargetInfluences,r=0,o=n.length;r-1&&(n[e]=1-i),t>-1&&(n[t]=i)},K.MorphAnimMesh.prototype.clone=function(e){return void 0===e&&(e=new K.MorphAnimMesh(this.geometry,this.material)),e.duration=this.duration,e.mirroredLoop=this.mirroredLoop,e.time=this.time,e.lastKeyframe=this.lastKeyframe,e.currentKeyframe=this.currentKeyframe,e.direction=this.direction,e.directionBackwards=this.directionBackwards,K.Mesh.prototype.clone.call(this,e),e},K.LOD=function(){K.Object3D.call(this),this.objects=[]},K.LOD.prototype=Object.create(K.Object3D.prototype),K.LOD.prototype.constructor=K.LOD,K.LOD.prototype.addLevel=function(e,t){void 0===t&&(t=0),t=Math.abs(t);for(var i=0;i1){e.setFromMatrixPosition(i.matrixWorld),t.setFromMatrixPosition(this.matrixWorld);var n=e.distanceTo(t);this.objects[0].object.visible=!0;for(var r=1,o=this.objects.length;r=this.objects[r].distance;r++)this.objects[r-1].object.visible=!1,this.objects[r].object.visible=!0;for(;rthis.scale.x||i.push({distance:n,point:this.position,face:null,object:this})}}(),K.Sprite.prototype.clone=function(e){return void 0===e&&(e=new K.Sprite(this.material)),K.Object3D.prototype.clone.call(this,e),e},K.Particle=K.Sprite,K.LensFlare=function(e,t,i,n,r){K.Object3D.call(this),this.lensFlares=[],this.positionScreen=new K.Vector3,this.customUpdateCallback=void 0,void 0!==e&&this.add(e,t,i,n,r)},K.LensFlare.prototype=Object.create(K.Object3D.prototype),K.LensFlare.prototype.constructor=K.LensFlare,K.LensFlare.prototype.add=function(e,t,i,n,r,o){void 0===t&&(t=-1),void 0===i&&(i=0),void 0===o&&(o=1),void 0===r&&(r=new K.Color(16777215)),void 0===n&&(n=K.NormalBlending),i=Math.min(i,Math.max(0,i)),this.lensFlares.push({texture:e,size:t,distance:i,x:0,y:0,z:0,scale:1,rotation:1,opacity:o,color:r,blending:n})},K.LensFlare.prototype.updateLensFlares=function(){var e,t,i=this.lensFlares.length,n=2*-this.positionScreen.x,r=2*-this.positionScreen.y;for(e=0;e 0.0 ) {\n\t return pow( saturate( 1.0 - lightDistance / cutoffDistance ), decayExponent );\n\t}\n\treturn 1.0;\n}\n\nvec3 inputToLinear( in vec3 a ) {\n#ifdef GAMMA_INPUT\n\treturn pow( a, vec3( float( GAMMA_FACTOR ) ) );\n#else\n\treturn a;\n#endif\n}\nvec3 linearToOutput( in vec3 a ) {\n#ifdef GAMMA_OUTPUT\n\treturn pow( a, vec3( 1.0 / float( GAMMA_FACTOR ) ) );\n#else\n\treturn a;\n#endif\n}\n",K.ShaderChunk.alphatest_fragment="#ifdef ALPHATEST\n\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n\n#endif\n",K.ShaderChunk.lights_lambert_vertex="vLightFront = vec3( 0.0 );\n\n#ifdef DOUBLE_SIDED\n\n\tvLightBack = vec3( 0.0 );\n\n#endif\n\ntransformedNormal = normalize( transformedNormal );\n\n#if MAX_DIR_LIGHTS > 0\n\nfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\n\n\tvec3 dirVector = transformDirection( directionalLightDirection[ i ], viewMatrix );\n\n\tfloat dotProduct = dot( transformedNormal, dirVector );\n\tvec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n\t#ifdef DOUBLE_SIDED\n\n\t\tvec3 directionalLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tvec3 directionalLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n\t\t#endif\n\n\t#endif\n\n\t#ifdef WRAP_AROUND\n\n\t\tvec3 directionalLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n\t\tdirectionalLightWeighting = mix( directionalLightWeighting, directionalLightWeightingHalf, wrapRGB );\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tdirectionalLightWeightingBack = mix( directionalLightWeightingBack, directionalLightWeightingHalfBack, wrapRGB );\n\n\t\t#endif\n\n\t#endif\n\n\tvLightFront += directionalLightColor[ i ] * directionalLightWeighting;\n\n\t#ifdef DOUBLE_SIDED\n\n\t\tvLightBack += directionalLightColor[ i ] * directionalLightWeightingBack;\n\n\t#endif\n\n}\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz - mvPosition.xyz;\n\n\t\tfloat attenuation = calcLightAttenuation( length( lVector ), pointLightDistance[ i ], pointLightDecay[ i ] );\n\n\t\tlVector = normalize( lVector );\n\t\tfloat dotProduct = dot( transformedNormal, lVector );\n\n\t\tvec3 pointLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tvec3 pointLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\tvec3 pointLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n\t\t\t#endif\n\n\t\t#endif\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tvec3 pointLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n\t\t\tpointLightWeighting = mix( pointLightWeighting, pointLightWeightingHalf, wrapRGB );\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\tpointLightWeightingBack = mix( pointLightWeightingBack, pointLightWeightingHalfBack, wrapRGB );\n\n\t\t\t#endif\n\n\t\t#endif\n\n\t\tvLightFront += pointLightColor[ i ] * pointLightWeighting * attenuation;\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tvLightBack += pointLightColor[ i ] * pointLightWeightingBack * attenuation;\n\n\t\t#endif\n\n\t}\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz - mvPosition.xyz;\n\n\t\tfloat spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - worldPosition.xyz ) );\n\n\t\tif ( spotEffect > spotLightAngleCos[ i ] ) {\n\n\t\t\tspotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );\n\n\t\t\tfloat attenuation = calcLightAttenuation( length( lVector ), spotLightDistance[ i ], spotLightDecay[ i ] );\n\n\t\t\tlVector = normalize( lVector );\n\n\t\t\tfloat dotProduct = dot( transformedNormal, lVector );\n\t\t\tvec3 spotLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\tvec3 spotLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n\t\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\t\tvec3 spotLightWeightingHalfBack = vec3( max( -0.5 * dotProduct + 0.5, 0.0 ) );\n\n\t\t\t\t#endif\n\n\t\t\t#endif\n\n\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\tvec3 spotLightWeightingHalf = vec3( max( 0.5 * dotProduct + 0.5, 0.0 ) );\n\t\t\t\tspotLightWeighting = mix( spotLightWeighting, spotLightWeightingHalf, wrapRGB );\n\n\t\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\t\tspotLightWeightingBack = mix( spotLightWeightingBack, spotLightWeightingHalfBack, wrapRGB );\n\n\t\t\t\t#endif\n\n\t\t\t#endif\n\n\t\t\tvLightFront += spotLightColor[ i ] * spotLightWeighting * attenuation * spotEffect;\n\n\t\t\t#ifdef DOUBLE_SIDED\n\n\t\t\t\tvLightBack += spotLightColor[ i ] * spotLightWeightingBack * attenuation * spotEffect;\n\n\t\t\t#endif\n\n\t\t}\n\n\t}\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {\n\n\t\tvec3 lVector = transformDirection( hemisphereLightDirection[ i ], viewMatrix );\n\n\t\tfloat dotProduct = dot( transformedNormal, lVector );\n\n\t\tfloat hemiDiffuseWeight = 0.5 * dotProduct + 0.5;\n\t\tfloat hemiDiffuseWeightBack = -0.5 * dotProduct + 0.5;\n\n\t\tvLightFront += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );\n\n\t\t#ifdef DOUBLE_SIDED\n\n\t\t\tvLightBack += mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeightBack );\n\n\t\t#endif\n\n\t}\n\n#endif\n\nvLightFront += ambientLightColor;\n\n#ifdef DOUBLE_SIDED\n\n\tvLightBack += ambientLightColor;\n\n#endif\n",K.ShaderChunk.map_particle_pars_fragment="#ifdef USE_MAP\n\n\tuniform vec4 offsetRepeat;\n\tuniform sampler2D map;\n\n#endif\n",K.ShaderChunk.default_vertex="#ifdef USE_SKINNING\n\n\tvec4 mvPosition = modelViewMatrix * skinned;\n\n#elif defined( USE_MORPHTARGETS )\n\n\tvec4 mvPosition = modelViewMatrix * vec4( morphed, 1.0 );\n\n#else\n\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\n#endif\n\ngl_Position = projectionMatrix * mvPosition;\n",K.ShaderChunk.map_pars_fragment="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )\n\n\tvarying vec2 vUv;\n\n#endif\n\n#ifdef USE_MAP\n\n\tuniform sampler2D map;\n\n#endif",K.ShaderChunk.skinnormal_vertex="#ifdef USE_SKINNING\n\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\n\t#ifdef USE_MORPHNORMALS\n\n\tvec4 skinnedNormal = skinMatrix * vec4( morphedNormal, 0.0 );\n\n\t#else\n\n\tvec4 skinnedNormal = skinMatrix * vec4( normal, 0.0 );\n\n\t#endif\n\n#endif\n",K.ShaderChunk.logdepthbuf_pars_vertex="#ifdef USE_LOGDEPTHBUF\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\tvarying float vFragDepth;\n\n\t#endif\n\n\tuniform float logDepthBufFC;\n\n#endif",K.ShaderChunk.lightmap_pars_vertex="#ifdef USE_LIGHTMAP\n\n\tvarying vec2 vUv2;\n\n#endif",K.ShaderChunk.lights_phong_fragment="#ifndef FLAT_SHADED\n\n\tvec3 normal = normalize( vNormal );\n\n\t#ifdef DOUBLE_SIDED\n\n\t\tnormal = normal * ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n\n\t#endif\n\n#else\n\n\tvec3 fdx = dFdx( vViewPosition );\n\tvec3 fdy = dFdy( vViewPosition );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n\n#endif\n\nvec3 viewPosition = normalize( vViewPosition );\n\n#ifdef USE_NORMALMAP\n\n\tnormal = perturbNormal2Arb( -vViewPosition, normal );\n\n#elif defined( USE_BUMPMAP )\n\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n\n#endif\n\nvec3 totalDiffuseLight = vec3( 0.0 );\nvec3 totalSpecularLight = vec3( 0.0 );\n\n#if MAX_POINT_LIGHTS > 0\n\n\tfor ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz + vViewPosition.xyz;\n\n\t\tfloat attenuation = calcLightAttenuation( length( lVector ), pointLightDistance[ i ], pointLightDecay[ i ] );\n\n\t\tlVector = normalize( lVector );\n\n\t\t// diffuse\n\n\t\tfloat dotProduct = dot( normal, lVector );\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tfloat pointDiffuseWeightFull = max( dotProduct, 0.0 );\n\t\t\tfloat pointDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n\t\t\tvec3 pointDiffuseWeight = mix( vec3( pointDiffuseWeightFull ), vec3( pointDiffuseWeightHalf ), wrapRGB );\n\n\t\t#else\n\n\t\t\tfloat pointDiffuseWeight = max( dotProduct, 0.0 );\n\n\t\t#endif\n\n\t\ttotalDiffuseLight += pointLightColor[ i ] * pointDiffuseWeight * attenuation;\n\n\t\t\t\t// specular\n\n\t\tvec3 pointHalfVector = normalize( lVector + viewPosition );\n\t\tfloat pointDotNormalHalf = max( dot( normal, pointHalfVector ), 0.0 );\n\t\tfloat pointSpecularWeight = specularStrength * max( pow( pointDotNormalHalf, shininess ), 0.0 );\n\n\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\tvec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, pointHalfVector ), 0.0 ), 5.0 );\n\t\ttotalSpecularLight += schlick * pointLightColor[ i ] * pointSpecularWeight * pointDiffuseWeight * attenuation * specularNormalization;\n\n\t}\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tfor ( int i = 0; i < MAX_SPOT_LIGHTS; i ++ ) {\n\n\t\tvec4 lPosition = viewMatrix * vec4( spotLightPosition[ i ], 1.0 );\n\t\tvec3 lVector = lPosition.xyz + vViewPosition.xyz;\n\n\t\tfloat attenuation = calcLightAttenuation( length( lVector ), spotLightDistance[ i ], spotLightDecay[ i ] );\n\n\t\tlVector = normalize( lVector );\n\n\t\tfloat spotEffect = dot( spotLightDirection[ i ], normalize( spotLightPosition[ i ] - vWorldPosition ) );\n\n\t\tif ( spotEffect > spotLightAngleCos[ i ] ) {\n\n\t\t\tspotEffect = max( pow( max( spotEffect, 0.0 ), spotLightExponent[ i ] ), 0.0 );\n\n\t\t\t// diffuse\n\n\t\t\tfloat dotProduct = dot( normal, lVector );\n\n\t\t\t#ifdef WRAP_AROUND\n\n\t\t\t\tfloat spotDiffuseWeightFull = max( dotProduct, 0.0 );\n\t\t\t\tfloat spotDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n\t\t\t\tvec3 spotDiffuseWeight = mix( vec3( spotDiffuseWeightFull ), vec3( spotDiffuseWeightHalf ), wrapRGB );\n\n\t\t\t#else\n\n\t\t\t\tfloat spotDiffuseWeight = max( dotProduct, 0.0 );\n\n\t\t\t#endif\n\n\t\t\ttotalDiffuseLight += spotLightColor[ i ] * spotDiffuseWeight * attenuation * spotEffect;\n\n\t\t\t// specular\n\n\t\t\tvec3 spotHalfVector = normalize( lVector + viewPosition );\n\t\t\tfloat spotDotNormalHalf = max( dot( normal, spotHalfVector ), 0.0 );\n\t\t\tfloat spotSpecularWeight = specularStrength * max( pow( spotDotNormalHalf, shininess ), 0.0 );\n\n\t\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\t\tvec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, spotHalfVector ), 0.0 ), 5.0 );\n\t\t\ttotalSpecularLight += schlick * spotLightColor[ i ] * spotSpecularWeight * spotDiffuseWeight * attenuation * specularNormalization * spotEffect;\n\n\t\t}\n\n\t}\n\n#endif\n\n#if MAX_DIR_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\n\n\t\tvec3 dirVector = transformDirection( directionalLightDirection[ i ], viewMatrix );\n\n\t\t// diffuse\n\n\t\tfloat dotProduct = dot( normal, dirVector );\n\n\t\t#ifdef WRAP_AROUND\n\n\t\t\tfloat dirDiffuseWeightFull = max( dotProduct, 0.0 );\n\t\t\tfloat dirDiffuseWeightHalf = max( 0.5 * dotProduct + 0.5, 0.0 );\n\n\t\t\tvec3 dirDiffuseWeight = mix( vec3( dirDiffuseWeightFull ), vec3( dirDiffuseWeightHalf ), wrapRGB );\n\n\t\t#else\n\n\t\t\tfloat dirDiffuseWeight = max( dotProduct, 0.0 );\n\n\t\t#endif\n\n\t\ttotalDiffuseLight += directionalLightColor[ i ] * dirDiffuseWeight;\n\n\t\t// specular\n\n\t\tvec3 dirHalfVector = normalize( dirVector + viewPosition );\n\t\tfloat dirDotNormalHalf = max( dot( normal, dirHalfVector ), 0.0 );\n\t\tfloat dirSpecularWeight = specularStrength * max( pow( dirDotNormalHalf, shininess ), 0.0 );\n\n\t\t/*\n\t\t// fresnel term from skin shader\n\t\tconst float F0 = 0.128;\n\n\t\tfloat base = 1.0 - dot( viewPosition, dirHalfVector );\n\t\tfloat exponential = pow( base, 5.0 );\n\n\t\tfloat fresnel = exponential + F0 * ( 1.0 - exponential );\n\t\t*/\n\n\t\t/*\n\t\t// fresnel term from fresnel shader\n\t\tconst float mFresnelBias = 0.08;\n\t\tconst float mFresnelScale = 0.3;\n\t\tconst float mFresnelPower = 5.0;\n\n\t\tfloat fresnel = mFresnelBias + mFresnelScale * pow( 1.0 + dot( normalize( -viewPosition ), normal ), mFresnelPower );\n\t\t*/\n\n\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\t// \t\tdirSpecular += specular * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization * fresnel;\n\n\t\tvec3 schlick = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( dirVector, dirHalfVector ), 0.0 ), 5.0 );\n\t\ttotalSpecularLight += schlick * directionalLightColor[ i ] * dirSpecularWeight * dirDiffuseWeight * specularNormalization;\n\n\n\t}\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tfor( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {\n\n\t\tvec3 lVector = transformDirection( hemisphereLightDirection[ i ], viewMatrix );\n\n\t\t// diffuse\n\n\t\tfloat dotProduct = dot( normal, lVector );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotProduct + 0.5;\n\n\t\tvec3 hemiColor = mix( hemisphereLightGroundColor[ i ], hemisphereLightSkyColor[ i ], hemiDiffuseWeight );\n\n\t\ttotalDiffuseLight += hemiColor;\n\n\t\t// specular (sky light)\n\n\t\tvec3 hemiHalfVectorSky = normalize( lVector + viewPosition );\n\t\tfloat hemiDotNormalHalfSky = 0.5 * dot( normal, hemiHalfVectorSky ) + 0.5;\n\t\tfloat hemiSpecularWeightSky = specularStrength * max( pow( max( hemiDotNormalHalfSky, 0.0 ), shininess ), 0.0 );\n\n\t\t// specular (ground light)\n\n\t\tvec3 lVectorGround = -lVector;\n\n\t\tvec3 hemiHalfVectorGround = normalize( lVectorGround + viewPosition );\n\t\tfloat hemiDotNormalHalfGround = 0.5 * dot( normal, hemiHalfVectorGround ) + 0.5;\n\t\tfloat hemiSpecularWeightGround = specularStrength * max( pow( max( hemiDotNormalHalfGround, 0.0 ), shininess ), 0.0 );\n\n\t\tfloat dotProductGround = dot( normal, lVectorGround );\n\n\t\tfloat specularNormalization = ( shininess + 2.0 ) / 8.0;\n\n\t\tvec3 schlickSky = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVector, hemiHalfVectorSky ), 0.0 ), 5.0 );\n\t\tvec3 schlickGround = specular + vec3( 1.0 - specular ) * pow( max( 1.0 - dot( lVectorGround, hemiHalfVectorGround ), 0.0 ), 5.0 );\n\t\ttotalSpecularLight += hemiColor * specularNormalization * ( schlickSky * hemiSpecularWeightSky * max( dotProduct, 0.0 ) + schlickGround * hemiSpecularWeightGround * max( dotProductGround, 0.0 ) );\n\n\t}\n\n#endif\n\n#ifdef METAL\n\n\toutgoingLight += diffuseColor.rgb * ( totalDiffuseLight + ambientLightColor ) * specular + totalSpecularLight + emissive;\n\n#else\n\n\toutgoingLight += diffuseColor.rgb * ( totalDiffuseLight + ambientLightColor ) + totalSpecularLight + emissive;\n\n#endif\n",K.ShaderChunk.fog_pars_fragment="#ifdef USE_FOG\n\n\tuniform vec3 fogColor;\n\n\t#ifdef FOG_EXP2\n\n\t\tuniform float fogDensity;\n\n\t#else\n\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n\n#endif",K.ShaderChunk.morphnormal_vertex="#ifdef USE_MORPHNORMALS\n\n\tvec3 morphedNormal = vec3( 0.0 );\n\n\tmorphedNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n\tmorphedNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n\tmorphedNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n\tmorphedNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n\n\tmorphedNormal += normal;\n\n#endif",K.ShaderChunk.envmap_pars_fragment="#ifdef USE_ENVMAP\n\n\tuniform float reflectivity;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\tuniform float flipEnvMap;\n\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\n\t\tuniform float refractionRatio;\n\n\t#else\n\n\t\tvarying vec3 vReflect;\n\n\t#endif\n\n#endif\n",K.ShaderChunk.logdepthbuf_fragment="#if defined(USE_LOGDEPTHBUF) && defined(USE_LOGDEPTHBUF_EXT)\n\n\tgl_FragDepthEXT = log2(vFragDepth) * logDepthBufFC * 0.5;\n\n#endif",K.ShaderChunk.normalmap_pars_fragment="#ifdef USE_NORMALMAP\n\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n\n\t// Per-Pixel Tangent Space Normal Mapping\n\t// http://hacksoflife.blogspot.ch/2009/11/per-pixel-tangent-space-normal-mapping.html\n\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\n\t\tvec3 S = normalize( q0 * st1.t - q1 * st0.t );\n\t\tvec3 T = normalize( -q0 * st1.s + q1 * st0.s );\n\t\tvec3 N = normalize( surf_norm );\n\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\tmapN.xy = normalScale * mapN.xy;\n\t\tmat3 tsn = mat3( S, T, N );\n\t\treturn normalize( tsn * mapN );\n\n\t}\n\n#endif\n",K.ShaderChunk.lights_phong_pars_vertex="#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP ) || defined( USE_ENVMAP )\n\n\tvarying vec3 vWorldPosition;\n\n#endif\n",K.ShaderChunk.lightmap_pars_fragment="#ifdef USE_LIGHTMAP\n\n\tvarying vec2 vUv2;\n\tuniform sampler2D lightMap;\n\n#endif",K.ShaderChunk.shadowmap_vertex="#ifdef USE_SHADOWMAP\n\n\tfor( int i = 0; i < MAX_SHADOWS; i ++ ) {\n\n\t\tvShadowCoord[ i ] = shadowMatrix[ i ] * worldPosition;\n\n\t}\n\n#endif",K.ShaderChunk.lights_phong_vertex="#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP ) || defined( USE_ENVMAP )\n\n\tvWorldPosition = worldPosition.xyz;\n\n#endif",K.ShaderChunk.map_fragment="#ifdef USE_MAP\n\n\tvec4 texelColor = texture2D( map, vUv );\n\n\ttexelColor.xyz = inputToLinear( texelColor.xyz );\n\n\tdiffuseColor *= texelColor;\n\n#endif",K.ShaderChunk.lightmap_vertex="#ifdef USE_LIGHTMAP\n\n\tvUv2 = uv2;\n\n#endif",K.ShaderChunk.map_particle_fragment="#ifdef USE_MAP\n\n\tdiffuseColor *= texture2D( map, vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y ) * offsetRepeat.zw + offsetRepeat.xy );\n\n#endif\n",K.ShaderChunk.color_pars_fragment="#ifdef USE_COLOR\n\n\tvarying vec3 vColor;\n\n#endif\n",K.ShaderChunk.color_vertex="#ifdef USE_COLOR\n\n\tvColor.xyz = inputToLinear( color.xyz );\n\n#endif",K.ShaderChunk.skinning_vertex="#ifdef USE_SKINNING\n\n\t#ifdef USE_MORPHTARGETS\n\n\tvec4 skinVertex = bindMatrix * vec4( morphed, 1.0 );\n\n\t#else\n\n\tvec4 skinVertex = bindMatrix * vec4( position, 1.0 );\n\n\t#endif\n\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\tskinned = bindMatrixInverse * skinned;\n\n#endif\n",K.ShaderChunk.envmap_pars_vertex="#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP ) && ! defined( PHONG )\n\n\tvarying vec3 vReflect;\n\n\tuniform float refractionRatio;\n\n#endif\n",K.ShaderChunk.linear_to_gamma_fragment="\n\toutgoingLight = linearToOutput( outgoingLight );\n",K.ShaderChunk.color_pars_vertex="#ifdef USE_COLOR\n\n\tvarying vec3 vColor;\n\n#endif",K.ShaderChunk.lights_lambert_pars_vertex="uniform vec3 ambientLightColor;\n\n#if MAX_DIR_LIGHTS > 0\n\n\tuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\n\tuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tuniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n\tuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\n\tuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\n\tuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n\tuniform float pointLightDecay[ MAX_POINT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tuniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightDecay[ MAX_SPOT_LIGHTS ];\n\n#endif\n\n#ifdef WRAP_AROUND\n\n\tuniform vec3 wrapRGB;\n\n#endif\n",K.ShaderChunk.map_pars_vertex="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )\n\n\tvarying vec2 vUv;\n\tuniform vec4 offsetRepeat;\n\n#endif\n",K.ShaderChunk.envmap_fragment="#ifdef USE_ENVMAP\n\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\n\t\t// Transforming Normal Vectors with the Inverse Transformation\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\n\t\t#else\n\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\n\t\t#endif\n\n\t#else\n\n\t\tvec3 reflectVec = vReflect;\n\n\t#endif\n\n\t#ifdef DOUBLE_SIDED\n\t\tfloat flipNormal = ( -1.0 + 2.0 * float( gl_FrontFacing ) );\n\t#else\n\t\tfloat flipNormal = 1.0;\n\t#endif\n\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\tsampleUV.y = saturate( flipNormal * reflectVec.y * 0.5 + 0.5 );\n\t\tsampleUV.x = atan( flipNormal * reflectVec.z, flipNormal * reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\tvec3 reflectView = flipNormal * normalize((viewMatrix * vec4( reflectVec, 0.0 )).xyz + vec3(0.0,0.0,1.0));\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#endif\n\n\tenvColor.xyz = inputToLinear( envColor.xyz );\n\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\n\t#endif\n\n#endif\n",K.ShaderChunk.specularmap_pars_fragment="#ifdef USE_SPECULARMAP\n\n\tuniform sampler2D specularMap;\n\n#endif",K.ShaderChunk.logdepthbuf_vertex="#ifdef USE_LOGDEPTHBUF\n\n\tgl_Position.z = log2(max( EPSILON, gl_Position.w + 1.0 )) * logDepthBufFC;\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\n#else\n\n\t\tgl_Position.z = (gl_Position.z - 1.0) * gl_Position.w;\n\n\t#endif\n\n#endif",K.ShaderChunk.morphtarget_pars_vertex="#ifdef USE_MORPHTARGETS\n\n\t#ifndef USE_MORPHNORMALS\n\n\tuniform float morphTargetInfluences[ 8 ];\n\n\t#else\n\n\tuniform float morphTargetInfluences[ 4 ];\n\n\t#endif\n\n#endif",K.ShaderChunk.specularmap_fragment="float specularStrength;\n\n#ifdef USE_SPECULARMAP\n\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n\n#else\n\n\tspecularStrength = 1.0;\n\n#endif",K.ShaderChunk.fog_fragment="#ifdef USE_FOG\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\tfloat depth = gl_FragDepthEXT / gl_FragCoord.w;\n\n\t#else\n\n\t\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n\n\t#endif\n\n\t#ifdef FOG_EXP2\n\n\t\tfloat fogFactor = exp2( - square( fogDensity ) * square( depth ) * LOG2 );\n\t\tfogFactor = whiteCompliment( fogFactor );\n\n\t#else\n\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, depth );\n\n\t#endif\n\t\n\toutgoingLight = mix( outgoingLight, fogColor, fogFactor );\n\n#endif",K.ShaderChunk.bumpmap_pars_fragment="#ifdef USE_BUMPMAP\n\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\n\t// Derivative maps - bump mapping unparametrized surfaces by Morten Mikkelsen\n\t// http://mmikkelsen3d.blogspot.sk/2011/07/derivative-maps.html\n\n\t// Evaluate the derivative of the height w.r.t. screen-space using forward differencing (listing 2)\n\n\tvec2 dHdxy_fwd() {\n\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\n\t\treturn vec2( dBx, dBy );\n\n\t}\n\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\n\t\tvec3 vSigmaX = dFdx( surf_pos );\n\t\tvec3 vSigmaY = dFdy( surf_pos );\n\t\tvec3 vN = surf_norm;\t\t// normalized\n\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\n\t}\n\n#endif\n",K.ShaderChunk.defaultnormal_vertex="#ifdef USE_SKINNING\n\n\tvec3 objectNormal = skinnedNormal.xyz;\n\n#elif defined( USE_MORPHNORMALS )\n\n\tvec3 objectNormal = morphedNormal;\n\n#else\n\n\tvec3 objectNormal = normal;\n\n#endif\n\n#ifdef FLIP_SIDED\n\n\tobjectNormal = -objectNormal;\n\n#endif\n\nvec3 transformedNormal = normalMatrix * objectNormal;\n",K.ShaderChunk.lights_phong_pars_fragment="uniform vec3 ambientLightColor;\n\n#if MAX_DIR_LIGHTS > 0\n\n\tuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\n\tuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n\n#endif\n\n#if MAX_HEMI_LIGHTS > 0\n\n\tuniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];\n\tuniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];\n\n#endif\n\n#if MAX_POINT_LIGHTS > 0\n\n\tuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\n\n\tuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\n\tuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n\tuniform float pointLightDecay[ MAX_POINT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0\n\n\tuniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];\n\tuniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightExponent[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightDistance[ MAX_SPOT_LIGHTS ];\n\tuniform float spotLightDecay[ MAX_SPOT_LIGHTS ];\n\n#endif\n\n#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP ) || defined( USE_ENVMAP )\n\n\tvarying vec3 vWorldPosition;\n\n#endif\n\n#ifdef WRAP_AROUND\n\n\tuniform vec3 wrapRGB;\n\n#endif\n\nvarying vec3 vViewPosition;\n\n#ifndef FLAT_SHADED\n\n\tvarying vec3 vNormal;\n\n#endif\n",K.ShaderChunk.skinbase_vertex="#ifdef USE_SKINNING\n\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n\n#endif",K.ShaderChunk.map_vertex="#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )\n\n\tvUv = uv * offsetRepeat.zw + offsetRepeat.xy;\n\n#endif",K.ShaderChunk.lightmap_fragment="#ifdef USE_LIGHTMAP\n\n\toutgoingLight *= diffuseColor.xyz * texture2D( lightMap, vUv2 ).xyz;\n\n#endif",K.ShaderChunk.shadowmap_pars_vertex="#ifdef USE_SHADOWMAP\n\n\tvarying vec4 vShadowCoord[ MAX_SHADOWS ];\n\tuniform mat4 shadowMatrix[ MAX_SHADOWS ];\n\n#endif",K.ShaderChunk.color_fragment="#ifdef USE_COLOR\n\n\tdiffuseColor.rgb *= vColor;\n\n#endif",K.ShaderChunk.morphtarget_vertex="#ifdef USE_MORPHTARGETS\n\n\tvec3 morphed = vec3( 0.0 );\n\tmorphed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\tmorphed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\tmorphed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\tmorphed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\n\t#ifndef USE_MORPHNORMALS\n\n\tmorphed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\tmorphed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\tmorphed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\tmorphed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\n\t#endif\n\n\tmorphed += position;\n\n#endif",K.ShaderChunk.envmap_vertex="#if defined( USE_ENVMAP ) && ! defined( USE_BUMPMAP ) && ! defined( USE_NORMALMAP ) && ! defined( PHONG )\n\n\tvec3 worldNormal = transformDirection( objectNormal, modelMatrix );\n\n\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\n\t#ifdef ENVMAP_MODE_REFLECTION\n\n\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\n\t#else\n\n\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\n\t#endif\n\n#endif\n",K.ShaderChunk.shadowmap_fragment="#ifdef USE_SHADOWMAP\n\n\t#ifdef SHADOWMAP_DEBUG\n\n\t\tvec3 frustumColors[3];\n\t\tfrustumColors[0] = vec3( 1.0, 0.5, 0.0 );\n\t\tfrustumColors[1] = vec3( 0.0, 1.0, 0.8 );\n\t\tfrustumColors[2] = vec3( 0.0, 0.5, 1.0 );\n\n\t#endif\n\n\t#ifdef SHADOWMAP_CASCADE\n\n\t\tint inFrustumCount = 0;\n\n\t#endif\n\n\tfloat fDepth;\n\tvec3 shadowColor = vec3( 1.0 );\n\n\tfor( int i = 0; i < MAX_SHADOWS; i ++ ) {\n\n\t\tvec3 shadowCoord = vShadowCoord[ i ].xyz / vShadowCoord[ i ].w;\n\n\t\t\t\t// if ( something && something ) breaks ATI OpenGL shader compiler\n\t\t\t\t// if ( all( something, something ) ) using this instead\n\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\n\t\t\t\t// don't shadow pixels outside of light frustum\n\t\t\t\t// use just first frustum (for cascades)\n\t\t\t\t// don't shadow pixels behind far plane of light frustum\n\n\t\t#ifdef SHADOWMAP_CASCADE\n\n\t\t\tinFrustumCount += int( inFrustum );\n\t\t\tbvec3 frustumTestVec = bvec3( inFrustum, inFrustumCount == 1, shadowCoord.z <= 1.0 );\n\n\t\t#else\n\n\t\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\n\t\t#endif\n\n\t\tbool frustumTest = all( frustumTestVec );\n\n\t\tif ( frustumTest ) {\n\n\t\t\tshadowCoord.z += shadowBias[ i ];\n\n\t\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\n\t\t\t\t\t\t// Percentage-close filtering\n\t\t\t\t\t\t// (9 pixel kernel)\n\t\t\t\t\t\t// http://fabiensanglard.net/shadowmappingPCF/\n\n\t\t\t\tfloat shadow = 0.0;\n\n\t\t/*\n\t\t\t\t\t\t// nested loops breaks shader compiler / validator on some ATI cards when using OpenGL\n\t\t\t\t\t\t// must enroll loop manually\n\n\t\t\t\tfor ( float y = -1.25; y <= 1.25; y += 1.25 )\n\t\t\t\t\tfor ( float x = -1.25; x <= 1.25; x += 1.25 ) {\n\n\t\t\t\t\t\tvec4 rgbaDepth = texture2D( shadowMap[ i ], vec2( x * xPixelOffset, y * yPixelOffset ) + shadowCoord.xy );\n\n\t\t\t\t\t\t\t\t// doesn't seem to produce any noticeable visual difference compared to simple texture2D lookup\n\t\t\t\t\t\t\t\t//vec4 rgbaDepth = texture2DProj( shadowMap[ i ], vec4( vShadowCoord[ i ].w * ( vec2( x * xPixelOffset, y * yPixelOffset ) + shadowCoord.xy ), 0.05, vShadowCoord[ i ].w ) );\n\n\t\t\t\t\t\tfloat fDepth = unpackDepth( rgbaDepth );\n\n\t\t\t\t\t\tif ( fDepth < shadowCoord.z )\n\t\t\t\t\t\t\tshadow += 1.0;\n\n\t\t\t\t}\n\n\t\t\t\tshadow /= 9.0;\n\n\t\t*/\n\n\t\t\t\tconst float shadowDelta = 1.0 / 9.0;\n\n\t\t\t\tfloat xPixelOffset = 1.0 / shadowMapSize[ i ].x;\n\t\t\t\tfloat yPixelOffset = 1.0 / shadowMapSize[ i ].y;\n\n\t\t\t\tfloat dx0 = -1.25 * xPixelOffset;\n\t\t\t\tfloat dy0 = -1.25 * yPixelOffset;\n\t\t\t\tfloat dx1 = 1.25 * xPixelOffset;\n\t\t\t\tfloat dy1 = 1.25 * yPixelOffset;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tfDepth = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );\n\t\t\t\tif ( fDepth < shadowCoord.z ) shadow += shadowDelta;\n\n\t\t\t\tshadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );\n\n\t\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\n\t\t\t\t\t\t// Percentage-close filtering\n\t\t\t\t\t\t// (9 pixel kernel)\n\t\t\t\t\t\t// http://fabiensanglard.net/shadowmappingPCF/\n\n\t\t\t\tfloat shadow = 0.0;\n\n\t\t\t\tfloat xPixelOffset = 1.0 / shadowMapSize[ i ].x;\n\t\t\t\tfloat yPixelOffset = 1.0 / shadowMapSize[ i ].y;\n\n\t\t\t\tfloat dx0 = -1.0 * xPixelOffset;\n\t\t\t\tfloat dy0 = -1.0 * yPixelOffset;\n\t\t\t\tfloat dx1 = 1.0 * xPixelOffset;\n\t\t\t\tfloat dy1 = 1.0 * yPixelOffset;\n\n\t\t\t\tmat3 shadowKernel;\n\t\t\t\tmat3 depthKernel;\n\n\t\t\t\tdepthKernel[0][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy0 ) ) );\n\t\t\t\tdepthKernel[0][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, 0.0 ) ) );\n\t\t\t\tdepthKernel[0][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx0, dy1 ) ) );\n\t\t\t\tdepthKernel[1][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy0 ) ) );\n\t\t\t\tdepthKernel[1][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy ) );\n\t\t\t\tdepthKernel[1][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( 0.0, dy1 ) ) );\n\t\t\t\tdepthKernel[2][0] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy0 ) ) );\n\t\t\t\tdepthKernel[2][1] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, 0.0 ) ) );\n\t\t\t\tdepthKernel[2][2] = unpackDepth( texture2D( shadowMap[ i ], shadowCoord.xy + vec2( dx1, dy1 ) ) );\n\n\t\t\t\tvec3 shadowZ = vec3( shadowCoord.z );\n\t\t\t\tshadowKernel[0] = vec3(lessThan(depthKernel[0], shadowZ ));\n\t\t\t\tshadowKernel[0] *= vec3(0.25);\n\n\t\t\t\tshadowKernel[1] = vec3(lessThan(depthKernel[1], shadowZ ));\n\t\t\t\tshadowKernel[1] *= vec3(0.25);\n\n\t\t\t\tshadowKernel[2] = vec3(lessThan(depthKernel[2], shadowZ ));\n\t\t\t\tshadowKernel[2] *= vec3(0.25);\n\n\t\t\t\tvec2 fractionalCoord = 1.0 - fract( shadowCoord.xy * shadowMapSize[i].xy );\n\n\t\t\t\tshadowKernel[0] = mix( shadowKernel[1], shadowKernel[0], fractionalCoord.x );\n\t\t\t\tshadowKernel[1] = mix( shadowKernel[2], shadowKernel[1], fractionalCoord.x );\n\n\t\t\t\tvec4 shadowValues;\n\t\t\t\tshadowValues.x = mix( shadowKernel[0][1], shadowKernel[0][0], fractionalCoord.y );\n\t\t\t\tshadowValues.y = mix( shadowKernel[0][2], shadowKernel[0][1], fractionalCoord.y );\n\t\t\t\tshadowValues.z = mix( shadowKernel[1][1], shadowKernel[1][0], fractionalCoord.y );\n\t\t\t\tshadowValues.w = mix( shadowKernel[1][2], shadowKernel[1][1], fractionalCoord.y );\n\n\t\t\t\tshadow = dot( shadowValues, vec4( 1.0 ) );\n\n\t\t\t\tshadowColor = shadowColor * vec3( ( 1.0 - shadowDarkness[ i ] * shadow ) );\n\n\t\t\t#else\n\n\t\t\t\tvec4 rgbaDepth = texture2D( shadowMap[ i ], shadowCoord.xy );\n\t\t\t\tfloat fDepth = unpackDepth( rgbaDepth );\n\n\t\t\t\tif ( fDepth < shadowCoord.z )\n\n\t\t// spot with multiple shadows is darker\n\n\t\t\t\t\tshadowColor = shadowColor * vec3( 1.0 - shadowDarkness[ i ] );\n\n\t\t// spot with multiple shadows has the same color as single shadow spot\n\n\t\t// \t\t\t\t\tshadowColor = min( shadowColor, vec3( shadowDarkness[ i ] ) );\n\n\t\t\t#endif\n\n\t\t}\n\n\n\t\t#ifdef SHADOWMAP_DEBUG\n\n\t\t\t#ifdef SHADOWMAP_CASCADE\n\n\t\t\t\tif ( inFrustum && inFrustumCount == 1 ) outgoingLight *= frustumColors[ i ];\n\n\t\t\t#else\n\n\t\t\t\tif ( inFrustum ) outgoingLight *= frustumColors[ i ];\n\n\t\t\t#endif\n\n\t\t#endif\n\n\t}\n\n\t// NOTE: I am unsure if this is correct in linear space. -bhouston, Dec 29, 2014\n\tshadowColor = inputToLinear( shadowColor );\n\n\toutgoingLight = outgoingLight * shadowColor;\n\n#endif\n",K.ShaderChunk.worldpos_vertex="#if defined( USE_ENVMAP ) || defined( PHONG ) || defined( LAMBERT ) || defined ( USE_SHADOWMAP )\n\n\t#ifdef USE_SKINNING\n\n\t\tvec4 worldPosition = modelMatrix * skinned;\n\n\t#elif defined( USE_MORPHTARGETS )\n\n\t\tvec4 worldPosition = modelMatrix * vec4( morphed, 1.0 );\n\n\t#else\n\n\t\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n\n\t#endif\n\n#endif\n",K.ShaderChunk.shadowmap_pars_fragment="#ifdef USE_SHADOWMAP\n\n\tuniform sampler2D shadowMap[ MAX_SHADOWS ];\n\tuniform vec2 shadowMapSize[ MAX_SHADOWS ];\n\n\tuniform float shadowDarkness[ MAX_SHADOWS ];\n\tuniform float shadowBias[ MAX_SHADOWS ];\n\n\tvarying vec4 vShadowCoord[ MAX_SHADOWS ];\n\n\tfloat unpackDepth( const in vec4 rgba_depth ) {\n\n\t\tconst vec4 bit_shift = vec4( 1.0 / ( 256.0 * 256.0 * 256.0 ), 1.0 / ( 256.0 * 256.0 ), 1.0 / 256.0, 1.0 );\n\t\tfloat depth = dot( rgba_depth, bit_shift );\n\t\treturn depth;\n\n\t}\n\n#endif",K.ShaderChunk.skinning_pars_vertex="#ifdef USE_SKINNING\n\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\n\t#ifdef BONE_TEXTURE\n\n\t\tuniform sampler2D boneTexture;\n\t\tuniform int boneTextureWidth;\n\t\tuniform int boneTextureHeight;\n\n\t\tmat4 getBoneMatrix( const in float i ) {\n\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureWidth ) );\n\t\t\tfloat y = floor( j / float( boneTextureWidth ) );\n\n\t\t\tfloat dx = 1.0 / float( boneTextureWidth );\n\t\t\tfloat dy = 1.0 / float( boneTextureHeight );\n\n\t\t\ty = dy * ( y + 0.5 );\n\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\n\t\t\treturn bone;\n\n\t\t}\n\n\t#else\n\n\t\tuniform mat4 boneGlobalMatrices[ MAX_BONES ];\n\n\t\tmat4 getBoneMatrix( const in float i ) {\n\n\t\t\tmat4 bone = boneGlobalMatrices[ int(i) ];\n\t\t\treturn bone;\n\n\t\t}\n\n\t#endif\n\n#endif\n",K.ShaderChunk.logdepthbuf_pars_fragment="#ifdef USE_LOGDEPTHBUF\n\n\tuniform float logDepthBufFC;\n\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\n\t\t#extension GL_EXT_frag_depth : enable\n\t\tvarying float vFragDepth;\n\n\t#endif\n\n#endif",K.ShaderChunk.alphamap_fragment="#ifdef USE_ALPHAMAP\n\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n\n#endif\n",K.ShaderChunk.alphamap_pars_fragment="#ifdef USE_ALPHAMAP\n\n\tuniform sampler2D alphaMap;\n\n#endif\n",K.UniformsUtils={merge:function(e){for(var t={},i=0;i dashSize ) {","\t\tdiscard;","\t}","\tvec3 outgoingLight = vec3( 0.0 );","\tvec4 diffuseColor = vec4( diffuse, opacity );",K.ShaderChunk.logdepthbuf_fragment,K.ShaderChunk.color_fragment,"\toutgoingLight = diffuseColor.rgb;",K.ShaderChunk.fog_fragment,"\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );","}"].join("\n")},depth:{uniforms:{mNear:{type:"f",value:1},mFar:{type:"f",value:2e3},opacity:{type:"f",value:1}},vertexShader:[K.ShaderChunk.common,K.ShaderChunk.morphtarget_pars_vertex,K.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",K.ShaderChunk.morphtarget_vertex,K.ShaderChunk.default_vertex,K.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform float mNear;","uniform float mFar;","uniform float opacity;",K.ShaderChunk.common,K.ShaderChunk.logdepthbuf_pars_fragment,"void main() {",K.ShaderChunk.logdepthbuf_fragment,"\t#ifdef USE_LOGDEPTHBUF_EXT","\t\tfloat depth = gl_FragDepthEXT / gl_FragCoord.w;","\t#else","\t\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;","\t#endif","\tfloat color = 1.0 - smoothstep( mNear, mFar, depth );","\tgl_FragColor = vec4( vec3( color ), opacity );","}"].join("\n")},normal:{uniforms:{opacity:{type:"f",value:1}},vertexShader:["varying vec3 vNormal;",K.ShaderChunk.common,K.ShaderChunk.morphtarget_pars_vertex,K.ShaderChunk.logdepthbuf_pars_vertex,"void main() {","\tvNormal = normalize( normalMatrix * normal );",K.ShaderChunk.morphtarget_vertex,K.ShaderChunk.default_vertex,K.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform float opacity;","varying vec3 vNormal;",K.ShaderChunk.common,K.ShaderChunk.logdepthbuf_pars_fragment,"void main() {","\tgl_FragColor = vec4( 0.5 * normalize( vNormal ) + 0.5, opacity );",K.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")},cube:{uniforms:{tCube:{type:"t",value:null},tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;",K.ShaderChunk.common,K.ShaderChunk.logdepthbuf_pars_vertex,"void main() {","\tvWorldPosition = transformDirection( position, modelMatrix );","\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",K.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform samplerCube tCube;","uniform float tFlip;","varying vec3 vWorldPosition;",K.ShaderChunk.common,K.ShaderChunk.logdepthbuf_pars_fragment,"void main() {","\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );",K.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")},equirect:{uniforms:{tEquirect:{type:"t",value:null},tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;",K.ShaderChunk.common,K.ShaderChunk.logdepthbuf_pars_vertex,"void main() {","\tvWorldPosition = transformDirection( position, modelMatrix );","\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",K.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform sampler2D tEquirect;","uniform float tFlip;","varying vec3 vWorldPosition;",K.ShaderChunk.common,K.ShaderChunk.logdepthbuf_pars_fragment,"void main() {","vec3 direction = normalize( vWorldPosition );","vec2 sampleUV;","sampleUV.y = saturate( tFlip * direction.y * -0.5 + 0.5 );","sampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;","gl_FragColor = texture2D( tEquirect, sampleUV );",K.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")},depthRGBA:{uniforms:{},vertexShader:[K.ShaderChunk.common,K.ShaderChunk.morphtarget_pars_vertex,K.ShaderChunk.skinning_pars_vertex,K.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",K.ShaderChunk.skinbase_vertex,K.ShaderChunk.morphtarget_vertex,K.ShaderChunk.skinning_vertex,K.ShaderChunk.default_vertex,K.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:[K.ShaderChunk.common,K.ShaderChunk.logdepthbuf_pars_fragment,"vec4 pack_depth( const in float depth ) {","\tconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );","\tconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );","\tvec4 res = mod( depth * bit_shift * vec4( 255 ), vec4( 256 ) ) / vec4( 255 );","\tres -= res.xxyz * bit_mask;","\treturn res;","}","void main() {",K.ShaderChunk.logdepthbuf_fragment,"\t#ifdef USE_LOGDEPTHBUF_EXT","\t\tgl_FragData[ 0 ] = pack_depth( gl_FragDepthEXT );","\t#else","\t\tgl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );","\t#endif","}"].join("\n")}},K.WebGLRenderer=function(e){console.log("THREE.WebGLRenderer",K.REVISION);var t=void 0!==(e=e||{}).canvas?e.canvas:document.createElement("canvas"),i=void 0!==e.context?e.context:null,n=1,r=void 0!==e.precision?e.precision:"highp",o=void 0!==e.alpha&&e.alpha,s=void 0===e.depth||e.depth,a=void 0===e.stencil||e.stencil,l=void 0!==e.antialias&&e.antialias,c=void 0===e.premultipliedAlpha||e.premultipliedAlpha,h=void 0!==e.preserveDrawingBuffer&&e.preserveDrawingBuffer,u=void 0!==e.logarithmicDepthBuffer&&e.logarithmicDepthBuffer,d=new K.Color(0),f=0,p=[],m={},g=[],v=[],y=[],b=[],x=[];this.domElement=t,this.context=null,this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.gammaFactor=2,this.gammaInput=!1,this.gammaOutput=!1,this.shadowMapEnabled=!1,this.shadowMapType=K.PCFShadowMap,this.shadowMapCullFace=K.CullFaceFront,this.shadowMapDebug=!1,this.shadowMapCascade=!1,this.maxMorphTargets=8,this.maxMorphNormals=4,this.autoScaleCubemaps=!0,this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var _,E=this,S=[],A=null,w=null,T=-1,M="",C=null,P=0,D=0,L=0,I=t.width,R=t.height,O=0,N=0,F=new K.Frustum,U=new K.Matrix4,B=new K.Vector3,k=new K.Vector3,V=!0,G={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[],decays:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[],decays:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}};try{var z={alpha:o,depth:s,stencil:a,antialias:l,premultipliedAlpha:c,preserveDrawingBuffer:h};if(null===(_=i||t.getContext("webgl",z)||t.getContext("experimental-webgl",z)))throw null!==t.getContext("webgl")?"Error creating WebGL context with your selected attributes.":"Error creating WebGL context.";t.addEventListener("webglcontextlost",(function(e){e.preventDefault(),X(),q(),m={}}),!1)}catch(e){K.error("THREE.WebGLRenderer: "+e)}var H=new K.WebGLState(_,st);void 0===_.getShaderPrecisionFormat&&(_.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});var W=new K.WebGLExtensions(_);W.get("OES_texture_float"),W.get("OES_texture_float_linear"),W.get("OES_texture_half_float"),W.get("OES_texture_half_float_linear"),W.get("OES_standard_derivatives"),u&&W.get("EXT_frag_depth");var j=function(e,t,i,n){!0===c&&(e*=n,t*=n,i*=n),_.clearColor(e,t,i,n)},q=function(){_.clearColor(0,0,0,1),_.clearDepth(1),_.clearStencil(0),_.enable(_.DEPTH_TEST),_.depthFunc(_.LEQUAL),_.frontFace(_.CCW),_.cullFace(_.BACK),_.enable(_.CULL_FACE),_.enable(_.BLEND),_.blendEquation(_.FUNC_ADD),_.blendFunc(_.SRC_ALPHA,_.ONE_MINUS_SRC_ALPHA),_.viewport(D,L,I,R),j(d.r,d.g,d.b,f)},X=function(){A=null,C=null,M="",T=-1,V=!0,H.reset()};q(),this.context=_,this.state=H;var Y,Q=_.getParameter(_.MAX_TEXTURE_IMAGE_UNITS),Z=_.getParameter(_.MAX_VERTEX_TEXTURE_IMAGE_UNITS),$=_.getParameter(_.MAX_TEXTURE_SIZE),J=_.getParameter(_.MAX_CUBE_MAP_TEXTURE_SIZE),ee=Z>0,te=ee&&W.get("OES_texture_float"),ie=_.getShaderPrecisionFormat(_.VERTEX_SHADER,_.HIGH_FLOAT),ne=_.getShaderPrecisionFormat(_.VERTEX_SHADER,_.MEDIUM_FLOAT),re=_.getShaderPrecisionFormat(_.FRAGMENT_SHADER,_.HIGH_FLOAT),oe=_.getShaderPrecisionFormat(_.FRAGMENT_SHADER,_.MEDIUM_FLOAT),se=function(){if(void 0!==Y)return Y;if(Y=[],W.get("WEBGL_compressed_texture_pvrtc")||W.get("WEBGL_compressed_texture_s3tc"))for(var e=_.getParameter(_.COMPRESSED_TEXTURE_FORMATS),t=0;t0&&re.precision>0,le=ne.precision>0&&oe.precision>0;"highp"!==r||ae||(le?(r="mediump",K.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(r="lowp",K.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp."))),"mediump"!==r||le||(r="lowp",K.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));var ce,he=new K.ShadowMapPlugin(this,p,m,g),ue=new K.SpritePlugin(this,b),de=new K.LensFlarePlugin(this,x);function fe(e){e.__webglVertexBuffer=_.createBuffer(),e.__webglNormalBuffer=_.createBuffer(),e.__webglTangentBuffer=_.createBuffer(),e.__webglColorBuffer=_.createBuffer(),e.__webglUVBuffer=_.createBuffer(),e.__webglUV2Buffer=_.createBuffer(),e.__webglSkinIndicesBuffer=_.createBuffer(),e.__webglSkinWeightsBuffer=_.createBuffer(),e.__webglFaceBuffer=_.createBuffer(),e.__webglLineBuffer=_.createBuffer();var t=e.numMorphTargets;if(t){e.__webglMorphTargetsBuffers=[];for(var i=0,n=t;i=0;i--)e[i].object===t&&e.splice(i,1)}(g,e);delete e.__webglInit,delete e._modelViewMatrix,delete e._normalMatrix,delete e.__webglActive}(e)}))},me=function(e){var t=e.target;t.removeEventListener("dispose",me),xe(t)},ge=function(e){var t=e.target;t.removeEventListener("dispose",ge),_e(t),E.info.memory.textures--},ve=function(e){var t=e.target;t.removeEventListener("dispose",ve),Ee(t),E.info.memory.textures--},ye=function(e){var t=e.target;t.removeEventListener("dispose",ye),Se(t)},be=function(e){for(var t=["__webglVertexBuffer","__webglNormalBuffer","__webglTangentBuffer","__webglColorBuffer","__webglUVBuffer","__webglUV2Buffer","__webglSkinIndicesBuffer","__webglSkinWeightsBuffer","__webglFaceBuffer","__webglLineBuffer","__webglLineDistanceBuffer"],i=0,n=t.length;i1&&(e.__uv2Array=new Float32Array(2*r)),i.hasTangents&&(e.__tangentArray=new Float32Array(4*r)),t.geometry.skinWeights.length&&t.geometry.skinIndices.length&&(e.__skinIndexArray=new Float32Array(4*r),e.__skinWeightArray=new Float32Array(4*r));var l=null!==W.get("OES_element_index_uint")&&o>21845?Uint32Array:Uint16Array;e.__typeArray=l,e.__faceArray=new l(3*o),e.__lineArray=new l(2*s);var c=e.numMorphTargets;if(c){e.__morphTargetsArrays=[];for(var h=0,u=c;h0&&(_.bindBuffer(_.ARRAY_BUFFER,e.__webglSkinIndicesBuffer),_.bufferData(_.ARRAY_BUFFER,fe,i),_.bindBuffer(_.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),_.bufferData(_.ARRAY_BUFFER,pe,i))}if(Te){for(o=0,s=Pe.length;o0&&(_.bindBuffer(_.ARRAY_BUFFER,e.__webglColorBuffer),_.bufferData(_.ARRAY_BUFFER,de,i))}if(we&&xe.hasTangents){for(o=0,s=Pe.length;o0&&(_.bindBuffer(_.ARRAY_BUFFER,e.__webglUVBuffer),_.bufferData(_.ARRAY_BUFFER,le,i))}if(Se&&Ie){for(o=0,s=Pe.length;o0&&(_.bindBuffer(_.ARRAY_BUFFER,e.__webglUV2Buffer),_.bufferData(_.ARRAY_BUFFER,ce,i))}if(Ee){for(o=0,s=Pe.length;o=0){var u=r[c];if(void 0!==u){var d=u.itemSize;_.bindBuffer(_.ARRAY_BUFFER,u.buffer),H.enableAttribute(h),_.vertexAttribPointer(h,d,_.FLOAT,!1,0,n*d*4)}else void 0!==e.defaultAttributeValues&&(2===e.defaultAttributeValues[c].length?_.vertexAttrib2fv(h,e.defaultAttributeValues[c]):3===e.defaultAttributeValues[c].length&&_.vertexAttrib3fv(h,e.defaultAttributeValues[c]))}}H.disableUnusedAttributes()}function Pe(e,t){return e.object.renderOrder!==t.object.renderOrder?e.object.renderOrder-t.object.renderOrder:e.material.id!==t.material.id?e.material.id-t.material.id:e.z!==t.z?e.z-t.z:e.id-t.id}function De(e,t){return e.object.renderOrder!==t.object.renderOrder?e.object.renderOrder-t.object.renderOrder:e.z!==t.z?t.z-e.z:e.id-t.id}function Le(e,t){return t[0]-e[0]}function Ie(e){if(!1!==e.visible){if(e instanceof K.Scene||e instanceof K.Group);else if(function(e){void 0===e.__webglInit&&(e.__webglInit=!0,e._modelViewMatrix=new K.Matrix4,e._normalMatrix=new K.Matrix3,e.addEventListener("removed",pe));var t=e.geometry;void 0===t||void 0===t.__webglInit&&(t.__webglInit=!0,t.addEventListener("dispose",me),t instanceof K.BufferGeometry?E.info.memory.geometries++:e instanceof K.Mesh?ke(e,t):e instanceof K.Line?void 0===t.__webglVertexBuffer&&(!function(e){e.__webglVertexBuffer=_.createBuffer(),e.__webglColorBuffer=_.createBuffer(),e.__webglLineDistanceBuffer=_.createBuffer(),E.info.memory.geometries++}(t),function(e,t){var i=e.vertices.length;e.__vertexArray=new Float32Array(3*i),e.__colorArray=new Float32Array(3*i),e.__lineDistanceArray=new Float32Array(1*i),e.__webglLineCount=i,Ae(t)}(t,e),t.verticesNeedUpdate=!0,t.colorsNeedUpdate=!0,t.lineDistancesNeedUpdate=!0):e instanceof K.PointCloud&&void 0===t.__webglVertexBuffer&&(!function(e){e.__webglVertexBuffer=_.createBuffer(),e.__webglColorBuffer=_.createBuffer(),E.info.memory.geometries++}(t),function(e,t){var i=e.vertices.length;e.__vertexArray=new Float32Array(3*i),e.__colorArray=new Float32Array(3*i),e.__webglParticleCount=i,Ae(t)}(t,e),t.verticesNeedUpdate=!0,t.colorsNeedUpdate=!0));if(void 0===e.__webglActive)if(e.__webglActive=!0,e instanceof K.Mesh){if(t instanceof K.BufferGeometry)Ve(m,t,e);else if(t instanceof K.Geometry)for(var i=Ue[t.id],n=0,r=i.length;n1&&(l=!0);for(d=0,f=b.length;d1&&(l=!0);for(d=0,f=b.length;d=0?c&&(_.bindBuffer(_.ARRAY_BUFFER,o.__webglVertexBuffer),H.enableAttribute(l.position),_.vertexAttribPointer(l.position,3,_.FLOAT,!1,0,0)):s.morphTargetBase&&function(e,t,i){var n=e.program.attributes;-1!==i.morphTargetBase&&n.position>=0?(_.bindBuffer(_.ARRAY_BUFFER,t.__webglMorphTargetsBuffers[i.morphTargetBase]),H.enableAttribute(n.position),_.vertexAttribPointer(n.position,3,_.FLOAT,!1,0,0)):n.position>=0&&(_.bindBuffer(_.ARRAY_BUFFER,t.__webglVertexBuffer),H.enableAttribute(n.position),_.vertexAttribPointer(n.position,3,_.FLOAT,!1,0,0));if(i.morphTargetForcedOrder.length)for(var r=0,o=i.morphTargetForcedOrder,s=i.morphTargetInfluences;r=0&&(_.bindBuffer(_.ARRAY_BUFFER,t.__webglMorphTargetsBuffers[o[r]]),H.enableAttribute(a),_.vertexAttribPointer(a,3,_.FLOAT,!1,0,0)),(a=n["morphNormal"+r])>=0&&e.morphNormals&&(_.bindBuffer(_.ARRAY_BUFFER,t.__webglMorphNormalsBuffers[o[r]]),H.enableAttribute(a),_.vertexAttribPointer(a,3,_.FLOAT,!1,0,0)),i.__webglMorphTargetInfluences[r]=s[o[r]],r++;else{var a,l=[],c=(s=i.morphTargetInfluences,i.geometry.morphTargets);s.length>c.length&&(console.warn("THREE.WebGLRenderer: Influences array is bigger than morphTargets array."),s.length=c.length);for(var h=0,u=s.length;he.numSupportedMorphTargets?(l.sort(Le),l.length=e.numSupportedMorphTargets):l.length>e.numSupportedMorphNormals?l.sort(Le):0===l.length&&l.push([0,0]);r=0;for(var f=e.numSupportedMorphTargets;r=0&&(_.bindBuffer(_.ARRAY_BUFFER,t.__webglMorphTargetsBuffers[p]),H.enableAttribute(a),_.vertexAttribPointer(a,3,_.FLOAT,!1,0,0)),(a=n["morphNormal"+r])>=0&&e.morphNormals&&(_.bindBuffer(_.ARRAY_BUFFER,t.__webglMorphNormalsBuffers[p]),H.enableAttribute(a),_.vertexAttribPointer(a,3,_.FLOAT,!1,0,0)),i.__webglMorphTargetInfluences[r]=s[p]}else i.__webglMorphTargetInfluences[r]=0}null!==e.program.uniforms.morphTargetInfluences&&_.uniform1fv(e.program.uniforms.morphTargetInfluences,i.__webglMorphTargetInfluences)}(r,o,s),c){if(o.__webglCustomAttributesList)for(var d=0,f=o.__webglCustomAttributesList.length;d=0&&(_.bindBuffer(_.ARRAY_BUFFER,p.buffer),H.enableAttribute(l[p.buffer.belongsToAttribute]),_.vertexAttribPointer(l[p.buffer.belongsToAttribute],p.size,_.FLOAT,!1,0,0))}l.color>=0&&(s.geometry.colors.length>0||s.geometry.faces.length>0?(_.bindBuffer(_.ARRAY_BUFFER,o.__webglColorBuffer),H.enableAttribute(l.color),_.vertexAttribPointer(l.color,3,_.FLOAT,!1,0,0)):void 0!==r.defaultAttributeValues&&_.vertexAttrib3fv(l.color,r.defaultAttributeValues.color)),l.normal>=0&&(_.bindBuffer(_.ARRAY_BUFFER,o.__webglNormalBuffer),H.enableAttribute(l.normal),_.vertexAttribPointer(l.normal,3,_.FLOAT,!1,0,0)),l.tangent>=0&&(_.bindBuffer(_.ARRAY_BUFFER,o.__webglTangentBuffer),H.enableAttribute(l.tangent),_.vertexAttribPointer(l.tangent,4,_.FLOAT,!1,0,0)),l.uv>=0&&(s.geometry.faceVertexUvs[0]?(_.bindBuffer(_.ARRAY_BUFFER,o.__webglUVBuffer),H.enableAttribute(l.uv),_.vertexAttribPointer(l.uv,2,_.FLOAT,!1,0,0)):void 0!==r.defaultAttributeValues&&_.vertexAttrib2fv(l.uv,r.defaultAttributeValues.uv)),l.uv2>=0&&(s.geometry.faceVertexUvs[1]?(_.bindBuffer(_.ARRAY_BUFFER,o.__webglUV2Buffer),H.enableAttribute(l.uv2),_.vertexAttribPointer(l.uv2,2,_.FLOAT,!1,0,0)):void 0!==r.defaultAttributeValues&&_.vertexAttrib2fv(l.uv2,r.defaultAttributeValues.uv2)),r.skinning&&l.skinIndex>=0&&l.skinWeight>=0&&(_.bindBuffer(_.ARRAY_BUFFER,o.__webglSkinIndicesBuffer),H.enableAttribute(l.skinIndex),_.vertexAttribPointer(l.skinIndex,4,_.FLOAT,!1,0,0),_.bindBuffer(_.ARRAY_BUFFER,o.__webglSkinWeightsBuffer),H.enableAttribute(l.skinWeight),_.vertexAttribPointer(l.skinWeight,4,_.FLOAT,!1,0,0)),l.lineDistance>=0&&(_.bindBuffer(_.ARRAY_BUFFER,o.__webglLineDistanceBuffer),H.enableAttribute(l.lineDistance),_.vertexAttribPointer(l.lineDistance,1,_.FLOAT,!1,0,0))}if(H.disableUnusedAttributes(),s instanceof K.Mesh){var m=o.__typeArray===Uint32Array?_.UNSIGNED_INT:_.UNSIGNED_SHORT;r.wireframe?(H.setLineWidth(r.wireframeLinewidth*n),c&&_.bindBuffer(_.ELEMENT_ARRAY_BUFFER,o.__webglLineBuffer),_.drawElements(_.LINES,o.__webglLineCount,m,0)):(c&&_.bindBuffer(_.ELEMENT_ARRAY_BUFFER,o.__webglFaceBuffer),_.drawElements(_.TRIANGLES,o.__webglFaceCount,m,0)),E.info.render.calls++,E.info.render.vertices+=o.__webglFaceCount,E.info.render.faces+=o.__webglFaceCount/3}else if(s instanceof K.Line){var g=s.mode===K.LineStrip?_.LINE_STRIP:_.LINES;H.setLineWidth(r.linewidth*n),_.drawArrays(g,0,o.__webglLineCount),E.info.render.calls++}else s instanceof K.PointCloud&&(_.drawArrays(_.POINTS,0,o.__webglParticleCount),E.info.render.calls++,E.info.render.points+=o.__webglParticleCount)}},this.render=function(e,t,i,n){if(t instanceof K.Camera!=!1){var r=e.fog;M="",T=-1,C=null,V=!0,!0===e.autoUpdate&&e.updateMatrixWorld(),void 0===t.parent&&t.updateMatrixWorld(),e.traverse((function(e){e instanceof K.SkinnedMesh&&e.skeleton.update()})),t.matrixWorldInverse.getInverse(t.matrixWorld),U.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),F.setFromMatrix(U),p.length=0,v.length=0,y.length=0,b.length=0,x.length=0,Ie(e),!0===E.sortObjects&&(v.sort(Pe),y.sort(De)),he.render(e,t),E.info.render.calls=0,E.info.render.vertices=0,E.info.render.faces=0,E.info.render.points=0,this.setRenderTarget(i),(this.autoClear||n)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);for(var o=0,s=g.length;or&&(o[f].counter+=1,(i=o[f].hash+"_"+o[f].counter)in l||(n={id:Be++,faces3:[],materialIndex:f,vertices:0,numMorphTargets:s,numMorphNormals:a},l[i]=n,c.push(n))),l[i].faces3.push(h),l[i].vertices+=3}return c}(t,i instanceof K.MeshFaceMaterial),t.groupsNeedUpdate=!1);for(var r=Ue[t.id],o=0,s=r.length;o0,shadowMapType:E.shadowMapType,shadowMapDebug:E.shadowMapDebug,shadowMapCascade:E.shadowMapCascade,alphaTest:e.alphaTest,metal:e.metal,wrapAround:e.wrapAround,doubleSided:e.side===K.DoubleSide,flipSided:e.side===K.BackSide},d=[];if(o?d.push(o):(d.push(e.fragmentShader),d.push(e.vertexShader)),void 0!==e.defines)for(var f in e.defines)d.push(f),d.push(e.defines[f]);for(var f in h)d.push(f),d.push(h[f]);for(var p,m=d.join(),g=0,v=S.length;g=0&&e.numSupportedMorphTargets++}if(e.morphNormals){e.numSupportedMorphNormals=0;x="morphNormal";for(A=0;A=0&&e.numSupportedMorphNormals++}for(var w in e.uniformsList=[],e.__webglShader.uniforms){var T=e.program.uniforms[w];T&&e.uniformsList.push([e.__webglShader.uniforms[w],T])}}function qe(e){!0===e.transparent?H.setBlending(e.blending,e.blendEquation,e.blendSrc,e.blendDst,e.blendEquationAlpha,e.blendSrcAlpha,e.blendDstAlpha):H.setBlending(K.NoBlending),H.setDepthTest(e.depthTest),H.setDepthWrite(e.depthWrite),H.setColorWrite(e.colorWrite),H.setPolygonOffset(e.polygonOffset,e.polygonOffsetFactor,e.polygonOffsetUnits)}function Xe(e,i,n,r,o){P=0,r.needsUpdate&&(r.program&&Se(r),je(r,i,n,o),r.needsUpdate=!1),r.morphTargets&&(o.__webglMorphTargetInfluences||(o.__webglMorphTargetInfluences=new Float32Array(E.maxMorphTargets)));var s=!1,a=!1,l=!1,c=r.program,h=c.uniforms,d=r.__webglShader.uniforms;if(c.id!==A&&(_.useProgram(c.program),A=c.id,s=!0,a=!0,l=!0),r.id!==T&&(-1===T&&(l=!0),T=r.id,a=!0),(s||e!==C)&&(_.uniformMatrix4fv(h.projectionMatrix,!1,e.projectionMatrix.elements),u&&_.uniform1f(h.logDepthBufFC,2/(Math.log(e.far+1)/Math.LN2)),e!==C&&(C=e),(r instanceof K.ShaderMaterial||r instanceof K.MeshPhongMaterial||r.envMap)&&null!==h.cameraPosition&&(B.setFromMatrixPosition(e.matrixWorld),_.uniform3f(h.cameraPosition,B.x,B.y,B.z)),(r instanceof K.MeshPhongMaterial||r instanceof K.MeshLambertMaterial||r instanceof K.MeshBasicMaterial||r instanceof K.ShaderMaterial||r.skinning)&&null!==h.viewMatrix&&_.uniformMatrix4fv(h.viewMatrix,!1,e.matrixWorldInverse.elements)),r.skinning)if(o.bindMatrix&&null!==h.bindMatrix&&_.uniformMatrix4fv(h.bindMatrix,!1,o.bindMatrix.elements),o.bindMatrixInverse&&null!==h.bindMatrixInverse&&_.uniformMatrix4fv(h.bindMatrixInverse,!1,o.bindMatrixInverse.elements),te&&o.skeleton&&o.skeleton.useVertexTexture){if(null!==h.boneTexture){var f=Qe();_.uniform1i(h.boneTexture,f),E.setTexture(o.skeleton.boneTexture,f)}null!==h.boneTextureWidth&&_.uniform1i(h.boneTextureWidth,o.skeleton.boneTextureWidth),null!==h.boneTextureHeight&&_.uniform1i(h.boneTextureHeight,o.skeleton.boneTextureHeight)}else o.skeleton&&o.skeleton.boneMatrices&&null!==h.boneGlobalMatrices&&_.uniformMatrix4fv(h.boneGlobalMatrices,!1,o.skeleton.boneMatrices);return a&&(n&&r.fog&&function(e,t){e.fogColor.value=t.color,t instanceof K.Fog?(e.fogNear.value=t.near,e.fogFar.value=t.far):t instanceof K.FogExp2&&(e.fogDensity.value=t.density)}(d,n),(r instanceof K.MeshPhongMaterial||r instanceof K.MeshLambertMaterial||r.lights)&&(V&&(l=!0,function(e){var t,i,n,r,o,s,a,l,c=0,h=0,u=0,d=G,f=d.directional.colors,p=d.directional.positions,m=d.point.colors,g=d.point.positions,v=d.point.distances,y=d.point.decays,b=d.spot.colors,x=d.spot.positions,_=d.spot.distances,E=d.spot.directions,S=d.spot.anglesCos,A=d.spot.exponents,w=d.spot.decays,T=d.hemi.skyColors,M=d.hemi.groundColors,C=d.hemi.positions,P=0,D=0,L=0,I=0,R=0,O=0,N=0,F=0,U=0,V=0,z=0,H=0;for(t=0,i=e.length;t=Q&&K.warn("WebGLRenderer: trying to use "+e+" texture units while this GPU supports only "+Q),P+=1,e}function Ze(e,t){e._modelViewMatrix.multiplyMatrices(t.matrixWorldInverse,e.matrixWorld),e._normalMatrix.getNormalMatrix(e._modelViewMatrix)}function $e(e,t,i,n){e[t]=i.r*n,e[t+1]=i.g*n,e[t+2]=i.b*n}function Je(e,t,i){var n;i?(_.texParameteri(e,_.TEXTURE_WRAP_S,st(t.wrapS)),_.texParameteri(e,_.TEXTURE_WRAP_T,st(t.wrapT)),_.texParameteri(e,_.TEXTURE_MAG_FILTER,st(t.magFilter)),_.texParameteri(e,_.TEXTURE_MIN_FILTER,st(t.minFilter))):(_.texParameteri(e,_.TEXTURE_WRAP_S,_.CLAMP_TO_EDGE),_.texParameteri(e,_.TEXTURE_WRAP_T,_.CLAMP_TO_EDGE),t.wrapS===K.ClampToEdgeWrapping&&t.wrapT===K.ClampToEdgeWrapping||K.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping. ( "+t.sourceFile+" )"),_.texParameteri(e,_.TEXTURE_MAG_FILTER,ot(t.magFilter)),_.texParameteri(e,_.TEXTURE_MIN_FILTER,ot(t.minFilter)),t.minFilter!==K.NearestFilter&&t.minFilter!==K.LinearFilter&&K.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter. ( "+t.sourceFile+" )")),(n=W.get("EXT_texture_filter_anisotropic"))&&t.type!==K.FloatType&&t.type!==K.HalfFloatType&&(t.anisotropy>1||t.__currentAnisotropy)&&(_.texParameterf(e,n.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(t.anisotropy,E.getMaxAnisotropy())),t.__currentAnisotropy=t.anisotropy)}function et(e,t){if(e.width>t||e.height>t){var i=t/Math.max(e.width,e.height),n=document.createElement("canvas");return n.width=Math.floor(e.width*i),n.height=Math.floor(e.height*i),n.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,n.width,n.height),K.warn("THREE.WebGLRenderer: image is too big ("+e.width+"x"+e.height+"). Resized to "+n.width+"x"+n.height,e),n}return e}function tt(e,t){if(6===e.image.length)if(e.needsUpdate){e.image.__webglTextureCube||(e.addEventListener("dispose",ge),e.image.__webglTextureCube=_.createTexture(),E.info.memory.textures++),_.activeTexture(_.TEXTURE0+t),_.bindTexture(_.TEXTURE_CUBE_MAP,e.image.__webglTextureCube),_.pixelStorei(_.UNPACK_FLIP_Y_WEBGL,e.flipY);for(var i=e instanceof K.CompressedTexture,n=e.image[0]instanceof K.DataTexture,r=[],o=0;o<6;o++)!E.autoScaleCubemaps||i||n?r[o]=n?e.image[o].image:e.image[o]:r[o]=et(e.image[o],J);var s=r[0],a=K.Math.isPowerOfTwo(s.width)&&K.Math.isPowerOfTwo(s.height),l=st(e.format),c=st(e.type);Je(_.TEXTURE_CUBE_MAP,e,a);for(o=0;o<6;o++)if(i)for(var h,u=r[o].mipmaps,d=0,f=u.length;d-1?_.compressedTexImage2D(_.TEXTURE_CUBE_MAP_POSITIVE_X+o,d,l,h.width,h.height,0,h.data):K.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()"):_.texImage2D(_.TEXTURE_CUBE_MAP_POSITIVE_X+o,d,l,h.width,h.height,0,l,c,h.data);else n?_.texImage2D(_.TEXTURE_CUBE_MAP_POSITIVE_X+o,0,l,r[o].width,r[o].height,0,l,c,r[o].data):_.texImage2D(_.TEXTURE_CUBE_MAP_POSITIVE_X+o,0,l,l,c,r[o]);e.generateMipmaps&&a&&_.generateMipmap(_.TEXTURE_CUBE_MAP),e.needsUpdate=!1,e.onUpdate&&e.onUpdate()}else _.activeTexture(_.TEXTURE0+t),_.bindTexture(_.TEXTURE_CUBE_MAP,e.image.__webglTextureCube)}function it(e,t){_.activeTexture(_.TEXTURE0+t),_.bindTexture(_.TEXTURE_CUBE_MAP,e.__webglTexture)}function nt(e,t,i){_.bindFramebuffer(_.FRAMEBUFFER,e),_.framebufferTexture2D(_.FRAMEBUFFER,_.COLOR_ATTACHMENT0,i,t.__webglTexture,0)}function rt(e,t){_.bindRenderbuffer(_.RENDERBUFFER,e),t.depthBuffer&&!t.stencilBuffer?(_.renderbufferStorage(_.RENDERBUFFER,_.DEPTH_COMPONENT16,t.width,t.height),_.framebufferRenderbuffer(_.FRAMEBUFFER,_.DEPTH_ATTACHMENT,_.RENDERBUFFER,e)):t.depthBuffer&&t.stencilBuffer?(_.renderbufferStorage(_.RENDERBUFFER,_.DEPTH_STENCIL,t.width,t.height),_.framebufferRenderbuffer(_.FRAMEBUFFER,_.DEPTH_STENCIL_ATTACHMENT,_.RENDERBUFFER,e)):_.renderbufferStorage(_.RENDERBUFFER,_.RGBA4,t.width,t.height)}function ot(e){return e===K.NearestFilter||e===K.NearestMipMapNearestFilter||e===K.NearestMipMapLinearFilter?_.NEAREST:_.LINEAR}function st(e){var t;if(e===K.RepeatWrapping)return _.REPEAT;if(e===K.ClampToEdgeWrapping)return _.CLAMP_TO_EDGE;if(e===K.MirroredRepeatWrapping)return _.MIRRORED_REPEAT;if(e===K.NearestFilter)return _.NEAREST;if(e===K.NearestMipMapNearestFilter)return _.NEAREST_MIPMAP_NEAREST;if(e===K.NearestMipMapLinearFilter)return _.NEAREST_MIPMAP_LINEAR;if(e===K.LinearFilter)return _.LINEAR;if(e===K.LinearMipMapNearestFilter)return _.LINEAR_MIPMAP_NEAREST;if(e===K.LinearMipMapLinearFilter)return _.LINEAR_MIPMAP_LINEAR;if(e===K.UnsignedByteType)return _.UNSIGNED_BYTE;if(e===K.UnsignedShort4444Type)return _.UNSIGNED_SHORT_4_4_4_4;if(e===K.UnsignedShort5551Type)return _.UNSIGNED_SHORT_5_5_5_1;if(e===K.UnsignedShort565Type)return _.UNSIGNED_SHORT_5_6_5;if(e===K.ByteType)return _.BYTE;if(e===K.ShortType)return _.SHORT;if(e===K.UnsignedShortType)return _.UNSIGNED_SHORT;if(e===K.IntType)return _.INT;if(e===K.UnsignedIntType)return _.UNSIGNED_INT;if(e===K.FloatType)return _.FLOAT;if(null!==(t=W.get("OES_texture_half_float"))&&e===K.HalfFloatType)return t.HALF_FLOAT_OES;if(e===K.AlphaFormat)return _.ALPHA;if(e===K.RGBFormat)return _.RGB;if(e===K.RGBAFormat)return _.RGBA;if(e===K.LuminanceFormat)return _.LUMINANCE;if(e===K.LuminanceAlphaFormat)return _.LUMINANCE_ALPHA;if(e===K.AddEquation)return _.FUNC_ADD;if(e===K.SubtractEquation)return _.FUNC_SUBTRACT;if(e===K.ReverseSubtractEquation)return _.FUNC_REVERSE_SUBTRACT;if(e===K.ZeroFactor)return _.ZERO;if(e===K.OneFactor)return _.ONE;if(e===K.SrcColorFactor)return _.SRC_COLOR;if(e===K.OneMinusSrcColorFactor)return _.ONE_MINUS_SRC_COLOR;if(e===K.SrcAlphaFactor)return _.SRC_ALPHA;if(e===K.OneMinusSrcAlphaFactor)return _.ONE_MINUS_SRC_ALPHA;if(e===K.DstAlphaFactor)return _.DST_ALPHA;if(e===K.OneMinusDstAlphaFactor)return _.ONE_MINUS_DST_ALPHA;if(e===K.DstColorFactor)return _.DST_COLOR;if(e===K.OneMinusDstColorFactor)return _.ONE_MINUS_DST_COLOR;if(e===K.SrcAlphaSaturateFactor)return _.SRC_ALPHA_SATURATE;if(null!==(t=W.get("WEBGL_compressed_texture_s3tc"))){if(e===K.RGB_S3TC_DXT1_Format)return t.COMPRESSED_RGB_S3TC_DXT1_EXT;if(e===K.RGBA_S3TC_DXT1_Format)return t.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(e===K.RGBA_S3TC_DXT3_Format)return t.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(e===K.RGBA_S3TC_DXT5_Format)return t.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(null!==(t=W.get("WEBGL_compressed_texture_pvrtc"))){if(e===K.RGB_PVRTC_4BPPV1_Format)return t.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(e===K.RGB_PVRTC_2BPPV1_Format)return t.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(e===K.RGBA_PVRTC_4BPPV1_Format)return t.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(e===K.RGBA_PVRTC_2BPPV1_Format)return t.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(null!==(t=W.get("EXT_blend_minmax"))){if(e===K.MinEquation)return t.MIN_EXT;if(e===K.MaxEquation)return t.MAX_EXT}return 0}this.setFaceCulling=function(e,t){e===K.CullFaceNone?_.disable(_.CULL_FACE):(t===K.FrontFaceDirectionCW?_.frontFace(_.CW):_.frontFace(_.CCW),e===K.CullFaceBack?_.cullFace(_.BACK):e===K.CullFaceFront?_.cullFace(_.FRONT):_.cullFace(_.FRONT_AND_BACK),_.enable(_.CULL_FACE))},this.setMaterialFaces=function(e){H.setDoubleSided(e.side===K.DoubleSide),H.setFlipSided(e.side===K.BackSide)},this.uploadTexture=function(e){void 0===e.__webglInit&&(e.__webglInit=!0,e.addEventListener("dispose",ge),e.__webglTexture=_.createTexture(),E.info.memory.textures++),_.bindTexture(_.TEXTURE_2D,e.__webglTexture),_.pixelStorei(_.UNPACK_FLIP_Y_WEBGL,e.flipY),_.pixelStorei(_.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.premultiplyAlpha),_.pixelStorei(_.UNPACK_ALIGNMENT,e.unpackAlignment),e.image=et(e.image,$);var t=e.image,i=K.Math.isPowerOfTwo(t.width)&&K.Math.isPowerOfTwo(t.height),n=st(e.format),r=st(e.type);Je(_.TEXTURE_2D,e,i);var o,s=e.mipmaps;if(e instanceof K.DataTexture)if(s.length>0&&i){for(var a=0,l=s.length;a-1?_.compressedTexImage2D(_.TEXTURE_2D,a,n,o.width,o.height,0,o.data):K.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):_.texImage2D(_.TEXTURE_2D,a,n,o.width,o.height,0,n,r,o.data);else if(s.length>0&&i){for(a=0,l=s.length;a0?e.gammaFactor:1,b=function(e){var t,i,n=[];for(var r in e)!1!==(t=e[r])&&(i="#define "+r+" "+t,n.push(i));return n.join("\n")}(s),x=o.createProgram();i instanceof K.RawShaderMaterial?(g="",v=""):(g=["precision "+n.precision+" float;","precision "+n.precision+" int;",b,n.supportsVertexTextures?"#define VERTEX_TEXTURES":"",r.gammaInput?"#define GAMMA_INPUT":"",r.gammaOutput?"#define GAMMA_OUTPUT":"","#define GAMMA_FACTOR "+y,"#define MAX_DIR_LIGHTS "+n.maxDirLights,"#define MAX_POINT_LIGHTS "+n.maxPointLights,"#define MAX_SPOT_LIGHTS "+n.maxSpotLights,"#define MAX_HEMI_LIGHTS "+n.maxHemiLights,"#define MAX_SHADOWS "+n.maxShadows,"#define MAX_BONES "+n.maxBones,n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+p:"",n.lightMap?"#define USE_LIGHTMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.vertexColors?"#define USE_COLOR":"",n.flatShading?"#define FLAT_SHADED":"",n.skinning?"#define USE_SKINNING":"",n.useVertexTexture?"#define BONE_TEXTURE":"",n.morphTargets?"#define USE_MORPHTARGETS":"",n.morphNormals?"#define USE_MORPHNORMALS":"",n.wrapAround?"#define WRAP_AROUND":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+d:"",n.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",n.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",n.sizeAttenuation?"#define USE_SIZEATTENUATION":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","attribute vec2 uv2;","#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif",""].join("\n"),v=["precision "+n.precision+" float;","precision "+n.precision+" int;",n.bumpMap||n.normalMap||n.flatShading?"#extension GL_OES_standard_derivatives : enable":"",b,"#define MAX_DIR_LIGHTS "+n.maxDirLights,"#define MAX_POINT_LIGHTS "+n.maxPointLights,"#define MAX_SPOT_LIGHTS "+n.maxSpotLights,"#define MAX_HEMI_LIGHTS "+n.maxHemiLights,"#define MAX_SHADOWS "+n.maxShadows,n.alphaTest?"#define ALPHATEST "+n.alphaTest:"",r.gammaInput?"#define GAMMA_INPUT":"",r.gammaOutput?"#define GAMMA_OUTPUT":"","#define GAMMA_FACTOR "+y,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+f:"",n.envMap?"#define "+p:"",n.envMap?"#define "+m:"",n.lightMap?"#define USE_LIGHTMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.vertexColors?"#define USE_COLOR":"",n.flatShading?"#define FLAT_SHADED":"",n.metal?"#define METAL":"",n.wrapAround?"#define WRAP_AROUND":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+d:"",n.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",n.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;",""].join("\n"));var _=new K.WebGLShader(o,o.VERTEX_SHADER,g+c),E=new K.WebGLShader(o,o.FRAGMENT_SHADER,v+h);o.attachShader(x,_),o.attachShader(x,E),void 0!==u&&o.bindAttribLocation(x,0,u),o.linkProgram(x);var S=o.getProgramInfoLog(x);!1===o.getProgramParameter(x,o.LINK_STATUS)&&K.error("THREE.WebGLProgram: shader error: "+o.getError(),"gl.VALIDATE_STATUS",o.getProgramParameter(x,o.VALIDATE_STATUS),"gl.getPRogramInfoLog",S),""!==S&&K.warn("THREE.WebGLProgram: gl.getProgramInfoLog()"+S),o.deleteShader(_),o.deleteShader(E);var A=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","modelMatrix","cameraPosition","morphTargetInfluences","bindMatrix","bindMatrixInverse"];for(var w in n.useVertexTexture?(A.push("boneTexture"),A.push("boneTextureWidth"),A.push("boneTextureHeight")):A.push("boneGlobalMatrices"),n.logarithmicDepthBuffer&&A.push("logDepthBufFC"),a)A.push(w);this.uniforms=function(e,t,i){for(var n={},r=0,o=i.length;r0)?{vertexShader:["uniform lowp int renderType;","uniform vec3 screenPosition;","uniform vec2 scale;","uniform float rotation;","uniform sampler2D occlusionMap;","attribute vec2 position;","attribute vec2 uv;","varying vec2 vUV;","varying float vVisibility;","void main() {","vUV = uv;","vec2 pos = position;","if( renderType == 2 ) {","vec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );","visibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );","visibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );","visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );","visibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );","visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );","visibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );","visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );","visibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );","vVisibility = visibility.r / 9.0;","vVisibility *= 1.0 - visibility.g / 9.0;","vVisibility *= visibility.b / 9.0;","vVisibility *= 1.0 - visibility.a / 9.0;","pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;","pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;","}","gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );","}"].join("\n"),fragmentShader:["uniform lowp int renderType;","uniform sampler2D map;","uniform float opacity;","uniform vec3 color;","varying vec2 vUV;","varying float vVisibility;","void main() {","if( renderType == 0 ) {","gl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );","} else if( renderType == 1 ) {","gl_FragColor = texture2D( map, vUV );","} else {","vec4 texture = texture2D( map, vUV );","texture.a *= opacity * vVisibility;","gl_FragColor = texture;","gl_FragColor.rgb *= color;","}","}"].join("\n")}:{vertexShader:["uniform lowp int renderType;","uniform vec3 screenPosition;","uniform vec2 scale;","uniform float rotation;","attribute vec2 position;","attribute vec2 uv;","varying vec2 vUV;","void main() {","vUV = uv;","vec2 pos = position;","if( renderType == 2 ) {","pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;","pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;","}","gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );","}"].join("\n"),fragmentShader:["precision mediump float;","uniform lowp int renderType;","uniform sampler2D map;","uniform sampler2D occlusionMap;","uniform float opacity;","uniform vec3 color;","varying vec2 vUV;","void main() {","if( renderType == 0 ) {","gl_FragColor = vec4( texture2D( map, vUV ).rgb, 0.0 );","} else if( renderType == 1 ) {","gl_FragColor = texture2D( map, vUV );","} else {","float visibility = texture2D( occlusionMap, vec2( 0.5, 0.1 ) ).a;","visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) ).a;","visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) ).a;","visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) ).a;","visibility = ( 1.0 - visibility / 4.0 );","vec4 texture = texture2D( map, vUV );","texture.a *= opacity * visibility;","gl_FragColor = texture;","gl_FragColor.rgb *= color;","}","}"].join("\n")},r=function(t){var i=h.createProgram(),n=h.createShader(h.FRAGMENT_SHADER),r=h.createShader(h.VERTEX_SHADER),o="precision "+e.getPrecision()+" float;\n";return h.shaderSource(n,o+t.fragmentShader),h.shaderSource(r,o+t.vertexShader),h.compileShader(n),h.compileShader(r),h.attachShader(i,n),h.attachShader(i,r),h.linkProgram(i),i}(t),o={vertex:h.getAttribLocation(r,"position"),uv:h.getAttribLocation(r,"uv")},s={renderType:h.getUniformLocation(r,"renderType"),map:h.getUniformLocation(r,"map"),occlusionMap:h.getUniformLocation(r,"occlusionMap"),opacity:h.getUniformLocation(r,"opacity"),color:h.getUniformLocation(r,"color"),scale:h.getUniformLocation(r,"scale"),rotation:h.getUniformLocation(r,"rotation"),screenPosition:h.getUniformLocation(r,"screenPosition")}};this.render=function(d,f,p,m){if(0!==t.length){var g=new K.Vector3,v=m/p,y=.5*p,b=.5*m,x=16/m,_=new K.Vector2(x*v,x),E=new K.Vector3(1,1,0),S=new K.Vector2(1,1);void 0===r&&u(),h.useProgram(r),h.enableVertexAttribArray(o.vertex),h.enableVertexAttribArray(o.uv),h.uniform1i(s.occlusionMap,0),h.uniform1i(s.map,1),h.bindBuffer(h.ARRAY_BUFFER,i),h.vertexAttribPointer(o.vertex,2,h.FLOAT,!1,16,0),h.vertexAttribPointer(o.uv,2,h.FLOAT,!1,16,8),h.bindBuffer(h.ELEMENT_ARRAY_BUFFER,n),h.disable(h.CULL_FACE),h.depthMask(!1);for(var A=0,w=t.length;A0&&S.x0&&S.y.001&&P.scale>.001&&(E.x=P.x,E.y=P.y,E.z=P.z,x=P.size*P.scale/m,_.x=x*v,_.y=x,h.uniform3f(s.screenPosition,E.x,E.y,E.z),h.uniform2f(s.scale,_.x,_.y),h.uniform1f(s.rotation,P.rotation),h.uniform1f(s.opacity,P.opacity),h.uniform3f(s.color,P.color.r,P.color.g,P.color.b),e.state.setBlending(P.blending,P.blendEquation,P.blendSrc,P.blendDst),e.setTexture(P.texture,1),h.drawElements(h.TRIANGLES,6,h.UNSIGNED_SHORT,0))}}}h.enable(h.CULL_FACE),h.enable(h.DEPTH_TEST),h.depthMask(!0),e.resetGLState()}}},K.ShadowMapPlugin=function(e,t,i,n){var r,o,s,a,l=e.context,c=new K.Frustum,h=new K.Matrix4,u=new K.Vector3,d=new K.Vector3,f=new K.Vector3,p=[],m=K.ShaderLib.depthRGBA,g=K.UniformsUtils.clone(m.uniforms);function v(e,t,n){if(t.visible){var r=i[t.id];if(r&&t.castShadow&&(!1===t.frustumCulled||!0===c.intersectsObject(t)))for(var o=0,s=r.length;od.x&&(d.x=s.x),s.yd.y&&(d.y=s.y),s.zd.z&&(d.z=s.z)}i.left=u.x,i.right=d.x,i.top=d.y,i.bottom=u.y,i.updateProjectionMatrix()}function _(e){return e.material instanceof K.MeshFaceMaterial?e.material.materials[0]:e.material}r=new K.ShaderMaterial({uniforms:g,vertexShader:m.vertexShader,fragmentShader:m.fragmentShader}),o=new K.ShaderMaterial({uniforms:g,vertexShader:m.vertexShader,fragmentShader:m.fragmentShader,morphTargets:!0}),s=new K.ShaderMaterial({uniforms:g,vertexShader:m.vertexShader,fragmentShader:m.fragmentShader,skinning:!0}),a=new K.ShaderMaterial({uniforms:g,vertexShader:m.vertexShader,fragmentShader:m.fragmentShader,morphTargets:!0,skinning:!0}),r._shadowPass=!0,o._shadowPass=!0,s._shadowPass=!0,a._shadowPass=!0,this.render=function(i,u){if(!1!==e.shadowMapEnabled){var d,m,g,E,S,A,w,T,M,C,P,D,L,I=[],R=0,O=null;for(l.clearColor(1,1,1,1),l.disable(l.BLEND),l.enable(l.CULL_FACE),l.frontFace(l.CCW),e.shadowMapCullFace===K.CullFaceFront?l.cullFace(l.FRONT):l.cullFace(l.BACK),e.state.setDepthTest(!0),d=0,m=t.length;d0&&k.morphTargets,G=D instanceof K.SkinnedMesh&&k.skinning,C=D.customDepthMaterial?D.customDepthMaterial:G?V?a:s:V?o:r,e.setMaterialFaces(k),M instanceof K.BufferGeometry?e.renderBufferDirect(T,t,O,C,M,D):e.renderBuffer(T,t,O,C,M,D);for(g=0,E=n.length;g 0 ) {","float depth = gl_FragCoord.z / gl_FragCoord.w;","float fogFactor = 0.0;","if ( fogType == 1 ) {","fogFactor = smoothstep( fogNear, fogFar, depth );","} else {","const float LOG2 = 1.442695;","float fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );","fogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );","}","gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );","}","}"].join("\n")),l.compileShader(i),l.compileShader(n),l.attachShader(t,i),l.attachShader(t,n),l.linkProgram(t),t}(),o={position:l.getAttribLocation(r,"position"),uv:l.getAttribLocation(r,"uv")},s={uvOffset:l.getUniformLocation(r,"uvOffset"),uvScale:l.getUniformLocation(r,"uvScale"),rotation:l.getUniformLocation(r,"rotation"),scale:l.getUniformLocation(r,"scale"),color:l.getUniformLocation(r,"color"),map:l.getUniformLocation(r,"map"),opacity:l.getUniformLocation(r,"opacity"),modelViewMatrix:l.getUniformLocation(r,"modelViewMatrix"),projectionMatrix:l.getUniformLocation(r,"projectionMatrix"),fogType:l.getUniformLocation(r,"fogType"),fogDensity:l.getUniformLocation(r,"fogDensity"),fogNear:l.getUniformLocation(r,"fogNear"),fogFar:l.getUniformLocation(r,"fogFar"),fogColor:l.getUniformLocation(r,"fogColor"),alphaTest:l.getUniformLocation(r,"alphaTest")};var h=document.createElement("canvas");h.width=8,h.height=8;var u=h.getContext("2d");u.fillStyle="white",u.fillRect(0,0,8,8),(a=new K.Texture(h)).needsUpdate=!0};function f(e,t){return e.z!==t.z?t.z-e.z:t.id-e.id}this.render=function(p,m){if(0!==t.length){void 0===r&&d(),l.useProgram(r),l.enableVertexAttribArray(o.position),l.enableVertexAttribArray(o.uv),l.disable(l.CULL_FACE),l.enable(l.BLEND),l.bindBuffer(l.ARRAY_BUFFER,i),l.vertexAttribPointer(o.position,2,l.FLOAT,!1,16,0),l.vertexAttribPointer(o.uv,2,l.FLOAT,!1,16,8),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,n),l.uniformMatrix4fv(s.projectionMatrix,!1,m.projectionMatrix.elements),l.activeTexture(l.TEXTURE0),l.uniform1i(s.map,0);var g=0,v=0,y=p.fog;y?(l.uniform3f(s.fogColor,y.color.r,y.color.g,y.color.b),y instanceof K.Fog?(l.uniform1f(s.fogNear,y.near),l.uniform1f(s.fogFar,y.far),l.uniform1i(s.fogType,1),g=1,v=1):y instanceof K.FogExp2&&(l.uniform1f(s.fogDensity,y.density),l.uniform1i(s.fogType,2),g=2,v=2)):(l.uniform1i(s.fogType,0),g=0,v=0);for(var b=0,x=t.length;bo-1?o-1:p+1,v=f-1<0?0:f-1,y=f+1>r-1?r-1:f+1,b=[],x=[0,0,h[4*(p*r+f)]/255*t];b.push([-1,0,h[4*(p*r+v)]/255*t]),b.push([-1,-1,h[4*(m*r+v)]/255*t]),b.push([0,-1,h[4*(m*r+f)]/255*t]),b.push([1,-1,h[4*(m*r+y)]/255*t]),b.push([1,0,h[4*(p*r+y)]/255*t]),b.push([1,1,h[4*(g*r+y)]/255*t]),b.push([0,1,h[4*(g*r+f)]/255*t]),b.push([-1,1,h[4*(g*r+v)]/255*t]);for(var _=[],E=b.length,S=0;S(c-a)*(d-l)-(h-l)*(u-a))return!1;for(m=u-c,g=d-h,v=a-u,y=l-d,b=c-a,x=h-l,s=0;s=-1e-10&&v*(p-d)-y*(f-u)>=-1e-10&&b*(p-l)-x*(f-a)>=-1e-10)return!1;return!0},U.Triangulate=function(e,t){var i=e.length;if(i<3)return null;var n,r,o,s=[],a=[],l=[];if(k(e)>0)for(r=0;r2;){if(h--<=0)return K.warn("THREE.FontUtils: Warning, unable to triangulate polygon! in Triangulate.process()"),t?l:s;if(c<=(n=r)&&(n=0),c<=(r=n+1)&&(r=0),c<=(o=r+1)&&(o=0),V(e,n,r,o,c,a)){var u,d,f,p,m;for(u=a[n],d=a[r],f=a[o],s.push([e[u],e[d],e[f]]),l.push([a[n],a[r],a[o]]),p=r,m=r+1;m0)){l=r;break}l=r-1}if(n[r=l]==i)return r/(o-1);var c=n[r];return(r+(i-c)/(n[r+1]-c))/(o-1)},K.Curve.prototype.getTangent=function(e){var t=1e-4,i=e-t,n=e+t;i<0&&(i=0),n>1&&(n=1);var r=this.getPoint(i);return this.getPoint(n).clone().sub(r).normalize()},K.Curve.prototype.getTangentAt=function(e){var t=this.getUtoTmapping(e);return this.getTangent(t)},K.Curve.Utils={tangentQuadraticBezier:function(e,t,i,n){return 2*(1-e)*(i-t)+2*e*(n-i)},tangentCubicBezier:function(e,t,i,n,r){return-3*t*(1-e)*(1-e)+3*i*(1-e)*(1-e)-6*e*i*(1-e)+6*e*n*(1-e)-3*e*e*n+3*e*e*r},tangentSpline:function(e,t,i,n,r){return 6*e*e-6*e+(3*e*e-4*e+1)+(-6*e*e+6*e)+(3*e*e-2*e)},interpolate:function(e,t,i,n,r){var o=.5*(i-e),s=.5*(n-t),a=r*r;return(2*t-2*i+o+s)*(r*a)+(-3*t+3*i-2*o-s)*a+o*r+t}},K.Curve.create=function(e,t){return e.prototype=Object.create(K.Curve.prototype),e.prototype.constructor=e,e.prototype.getPoint=t,e},K.CurvePath=function(){this.curves=[],this.bends=[],this.autoClose=!1},K.CurvePath.prototype=Object.create(K.Curve.prototype),K.CurvePath.prototype.constructor=K.CurvePath,K.CurvePath.prototype.add=function(e){this.curves.push(e)},K.CurvePath.prototype.checkConnection=function(){},K.CurvePath.prototype.closePath=function(){var e=this.curves[0].getPoint(0),t=this.curves[this.curves.length-1].getPoint(1);e.equals(t)||this.curves.push(new K.LineCurve(t,e))},K.CurvePath.prototype.getPoint=function(e){for(var t,i=e*this.getLength(),n=this.getCurveLengths(),r=0;r=i){var o=1-(n[r]-i)/(t=this.curves[r]).getLength();return t.getPointAt(o)}r++}return null},K.CurvePath.prototype.getLength=function(){var e=this.getCurveLengths();return e[e.length-1]},K.CurvePath.prototype.getCurveLengths=function(){if(this.cacheLengths&&this.cacheLengths.length==this.curves.length)return this.cacheLengths;var e,t=[],i=0,n=this.curves.length;for(e=0;ee?e=s.x:s.xt?t=s.y:s.yi?i=s.z:s.z0?(f=(m=x[x.length-1]).x,p=m.y):(f=(m=this.actions[i-1].args)[m.length-2],p=m[m.length-1]),g=1;g<=e;g++)v=g/e,y=K.Shape.Utils.b2(v,f,u,a),b=K.Shape.Utils.b2(v,p,d,l),x.push(new K.Vector2(y,b));break;case K.PathActions.BEZIER_CURVE_TO:for(a=s[4],l=s[5],u=s[0],d=s[1],c=s[2],h=s[3],x.length>0?(f=(m=x[x.length-1]).x,p=m.y):(f=(m=this.actions[i-1].args)[m.length-2],p=m[m.length-1]),g=1;g<=e;g++)v=g/e,y=K.Shape.Utils.b3(v,f,u,c,a),b=K.Shape.Utils.b3(v,p,d,h,l),x.push(new K.Vector2(y,b));break;case K.PathActions.CSPLINE_THRU:m=this.actions[i-1].args;var _=[new K.Vector2(m[m.length-2],m[m.length-1])],E=e*s[0].length;_=_.concat(s[0]);var S=new K.SplineCurve(_);for(g=1;g<=E;g++)x.push(S.getPointAt(g/E));break;case K.PathActions.ARC:var A=s[0],w=s[1],T=s[2],M=s[3],C=s[4],P=!!s[5],D=C-M,L=2*e;for(g=1;g<=L;g++)v=g/L,P||(v=1-v),I=M+v*D,y=A+T*Math.cos(I),b=w+T*Math.sin(I),x.push(new K.Vector2(y,b));break;case K.PathActions.ELLIPSE:A=s[0],w=s[1];var I,R=s[2],O=s[3];M=s[4],C=s[5],P=!!s[6],D=C-M,L=2*e;for(g=1;g<=L;g++)v=g/L,P||(v=1-v),I=M+v*D,y=A+R*Math.cos(I),b=w+O*Math.sin(I),x.push(new K.Vector2(y,b))}var N=x[x.length-1];return Math.abs(N.x-x[0].x)<1e-10&&Math.abs(N.y-x[0].y)<1e-10&&x.splice(x.length-1,1),t&&x.push(x[0]),x},K.Path.prototype.toShapes=function(e,t){function i(e){for(var t=[],i=0,n=e.length;i1e-10){if(c<0&&(s=t[o],l=-l,a=t[r],c=-c),e.ya.y)continue;if(e.y==s.y){if(e.x==s.x)return!0}else{var h=c*(e.x-s.x)-l*(e.y-s.y);if(0==h)return!0;if(h<0)continue;n=!n}}else{if(e.y!=s.y)continue;if(a.x<=e.x&&e.x<=s.x||s.x<=e.x&&e.x<=a.x)return!0}}return n}var r=function(e){var t,i,n,r,o,s=[],a=new K.Path;for(t=0,i=e.length;t1){for(var x=!1,_=[],E=0,S=v.length;E0&&(x||(y=g))}for(u=0,d=v.length;u1e-10){var p;if(d>0){if(f<0||f>d)return[];if((p=c*h-l*u)<0||p>d)return[]}else{if(f>0||f0||pS?[]:y==S?o?[]:[g]:b<=S?[g,v]:[g,_])}function r(e,t,i,n){var r=t.x-e.x,o=t.y-e.y,s=i.x-e.x,a=i.y-e.y,l=n.x-e.x,c=n.y-e.y,h=r*a-o*s,u=r*c-o*l;if(Math.abs(h)>1e-10){var d=l*a-c*s;return h>0?u>=0&&d>=0:u>=0||d>=0}return u>0}for(var o,s,a,l,c,h,u={},d=e.concat(),f=0,p=t.length;fn&&(a=0);var l=r(o[e],o[s],o[a],i[t]);if(!l)return!1;var c=i.length-1,h=t-1;h<0&&(h=c);var u=t+1;return u>c&&(u=0),!!(l=r(i[t],i[h],i[u],o[e]))}function a(e,t){var i,r;for(i=0;i0)return!0;return!1}var l=[];function c(e,i){var r,o,s,a;for(r=0;r0)return!0;return!1}for(var h,u,d,f,p,m,g,v,y,b,x=[],_=0,E=t.length;_0;){if(--A<0){console.log("Infinite Loop! Holes left:"+l.length+", Probably Hole outside Shape!");break}for(u=S;u=0)break;x[m]=!0}if(h>=0)break}}return o}(e,t),g=K.FontUtils.Triangulate(m,!1);for(o=0,s=g.length;ot.length-2?t.length-1:n+1],l=t[n>t.length-3?t.length-1:n+2],c=new K.Vector2;return c.x=K.Curve.Utils.interpolate(o.x,s.x,a.x,l.x,r),c.y=K.Curve.Utils.interpolate(o.y,s.y,a.y,l.y,r),c},K.EllipseCurve=function(e,t,i,n,r,o,s){this.aX=e,this.aY=t,this.xRadius=i,this.yRadius=n,this.aStartAngle=r,this.aEndAngle=o,this.aClockwise=s},K.EllipseCurve.prototype=Object.create(K.Curve.prototype),K.EllipseCurve.prototype.constructor=K.EllipseCurve,K.EllipseCurve.prototype.getPoint=function(e){var t,i=this.aEndAngle-this.aStartAngle;i<0&&(i+=2*Math.PI),i>2*Math.PI&&(i-=2*Math.PI),t=!0===this.aClockwise?this.aEndAngle+(1-e)*(2*Math.PI-i):this.aStartAngle+e*i;var n=new K.Vector2;return n.x=this.aX+this.xRadius*Math.cos(t),n.y=this.aY+this.yRadius*Math.sin(t),n},K.ArcCurve=function(e,t,i,n,r,o){K.EllipseCurve.call(this,e,t,i,i,n,r,o)},K.ArcCurve.prototype=Object.create(K.EllipseCurve.prototype),K.ArcCurve.prototype.constructor=K.ArcCurve,K.LineCurve3=K.Curve.create((function(e,t){this.v1=e,this.v2=t}),(function(e){var t=new K.Vector3;return t.subVectors(this.v2,this.v1),t.multiplyScalar(e),t.add(this.v1),t})),K.QuadraticBezierCurve3=K.Curve.create((function(e,t,i){this.v0=e,this.v1=t,this.v2=i}),(function(e){var t=new K.Vector3;return t.x=K.Shape.Utils.b2(e,this.v0.x,this.v1.x,this.v2.x),t.y=K.Shape.Utils.b2(e,this.v0.y,this.v1.y,this.v2.y),t.z=K.Shape.Utils.b2(e,this.v0.z,this.v1.z,this.v2.z),t})),K.CubicBezierCurve3=K.Curve.create((function(e,t,i,n){this.v0=e,this.v1=t,this.v2=i,this.v3=n}),(function(e){var t=new K.Vector3;return t.x=K.Shape.Utils.b3(e,this.v0.x,this.v1.x,this.v2.x,this.v3.x),t.y=K.Shape.Utils.b3(e,this.v0.y,this.v1.y,this.v2.y,this.v3.y),t.z=K.Shape.Utils.b3(e,this.v0.z,this.v1.z,this.v2.z,this.v3.z),t})),K.SplineCurve3=K.Curve.create((function(e){this.points=null==e?[]:e}),(function(e){var t=this.points,i=(t.length-1)*e,n=Math.floor(i),r=i-n,o=t[0==n?n:n-1],s=t[n],a=t[n>t.length-2?t.length-1:n+1],l=t[n>t.length-3?t.length-1:n+2],c=new K.Vector3;return c.x=K.Curve.Utils.interpolate(o.x,s.x,a.x,l.x,r),c.y=K.Curve.Utils.interpolate(o.y,s.y,a.y,l.y,r),c.z=K.Curve.Utils.interpolate(o.z,s.z,a.z,l.z,r),c})),K.ClosedSplineCurve3=K.Curve.create((function(e){this.points=null==e?[]:e}),(function(e){var t=this.points,i=(t.length-0)*e,n=Math.floor(i),r=i-n,o=t[((n+=n>0?0:(Math.floor(Math.abs(n)/t.length)+1)*t.length)-1)%t.length],s=t[n%t.length],a=t[(n+1)%t.length],l=t[(n+2)%t.length],c=new K.Vector3;return c.x=K.Curve.Utils.interpolate(o.x,s.x,a.x,l.x,r),c.y=K.Curve.Utils.interpolate(o.y,s.y,a.y,l.y,r),c.z=K.Curve.Utils.interpolate(o.z,s.z,a.z,l.z,r),c})),K.AnimationHandler={LINEAR:0,CATMULLROM:1,CATMULLROM_FORWARD:2,add:function(){K.warn("THREE.AnimationHandler.add() has been deprecated.")},get:function(){K.warn("THREE.AnimationHandler.get() has been deprecated.")},remove:function(){K.warn("THREE.AnimationHandler.remove() has been deprecated.")},animations:[],init:function(e){if(!0===e.initialized)return e;for(var t=0;tl.index;)l=c,c=this.getNextKeyWith(a,e,c.index+1);o.prevKey[a]=l,o.nextKey[a]=c}}},resetBlendWeights:function(){for(var e=0,t=this.hierarchy.length;ee.length-2?n:n+1,d[3]=n>e.length-3?n:n+2,l=e[d[0]],c=e[d[1]],h=e[d[2]],u=e[d[3]],a=r*(s=r*r),f[0]=o(l[0],c[0],h[0],u[0],r,s,a),f[1]=o(l[1],c[1],h[1],u[1],r,s,a),f[2]=o(l[2],c[2],h[2],u[2],r,s,a),f},o=function(e,t,i,n,r,o,s){var a=.5*(i-e),l=.5*(n-t);return(2*(t-i)+a+l)*s+(-3*(t-i)-2*a-l)*o+a*r+t};return function(o){if(!1!==this.isPlaying&&(this.currentTime+=o*this.timeScale,0!==this.weight)){var s=this.data.length;(this.currentTime>s||this.currentTime<0)&&(this.loop?(this.currentTime%=s,this.currentTime<0&&(this.currentTime+=s),this.reset()):this.stop());for(var a=0,l=this.hierarchy.length;a0&&m.time<=this.currentTime||this.timeScale<0&&p.time>=this.currentTime){for(p=this.data.hierarchy[a].keys[0],m=this.getNextKeyWith(f,a,1);m.timep.index;)p=m,m=this.getNextKeyWith(f,a,m.index+1);h.prevKey[f]=p,h.nextKey[f]=m}var g=(this.currentTime-p.time)/(m.time-p.time),v=p[f],y=m[f];if(g<0&&(g=0),g>1&&(g=1),"pos"===f){if(this.interpolationType===K.AnimationHandler.LINEAR){i.x=v[0]+(y[0]-v[0])*g,i.y=v[1]+(y[1]-v[1])*g,i.z=v[2]+(y[2]-v[2])*g;var b=this.weight/(this.weight+u.positionWeight);c.position.lerp(i,b),u.positionWeight+=this.weight}else if(this.interpolationType===K.AnimationHandler.CATMULLROM||this.interpolationType===K.AnimationHandler.CATMULLROM_FORWARD){e[0]=this.getPrevKeyWith("pos",a,p.index-1).pos,e[1]=v,e[2]=y,e[3]=this.getNextKeyWith("pos",a,m.index+1).pos;var x=r(e,g=.33*g+.33);b=this.weight/(this.weight+u.positionWeight);u.positionWeight+=this.weight;var _=c.position;if(_.x=_.x+(x[0]-_.x)*b,_.y=_.y+(x[1]-_.y)*b,_.z=_.z+(x[2]-_.z)*b,this.interpolationType===K.AnimationHandler.CATMULLROM_FORWARD){var E=r(e,1.01*g);t.set(E[0],E[1],E[2]),t.sub(_),t.y=0,t.normalize();var S=Math.atan2(t.x,t.z);c.rotation.set(0,S,0)}}}else if("rot"===f)if(K.Quaternion.slerp(v,y,n,g),0===u.quaternionWeight)c.quaternion.copy(n),u.quaternionWeight=this.weight;else{b=this.weight/(this.weight+u.quaternionWeight);K.Quaternion.slerp(c.quaternion,n,c.quaternion,b),u.quaternionWeight+=this.weight}else if("scl"===f){i.x=v[0]+(y[0]-v[0])*g,i.y=v[1]+(y[1]-v[1])*g,i.z=v[2]+(y[2]-v[2])*g;b=this.weight/(this.weight+u.scaleWeight);c.scale.lerp(i,b),u.scaleWeight+=this.weight}}return!0}}}(),getNextKeyWith:function(e,t,i){var n=this.data.hierarchy[t].keys;for(this.interpolationType===K.AnimationHandler.CATMULLROM||this.interpolationType===K.AnimationHandler.CATMULLROM_FORWARD?i=i0?i:0:i>=0?i:i+n.length;i>=0;i--)if(void 0!==n[i][e])return n[i];return this.data.hierarchy[t].keys[n.length-1]}},K.KeyFrameAnimation=function(e){this.root=e.node,this.data=K.AnimationHandler.init(e),this.hierarchy=K.AnimationHandler.parse(this.root),this.currentTime=0,this.timeScale=.001,this.isPlaying=!1,this.isPaused=!0,this.loop=!0;for(var t=0,i=this.hierarchy.length;tt&&(this.currentTime%=t),this.currentTime=Math.min(this.currentTime,t);for(var i=0,n=this.hierarchy.length;il.index;)c=s[(l=c).index+1];a.prevKey=l,a.nextKey=c}c.time>=this.currentTime?l.interpolate(c,this.currentTime):l.interpolate(c,c.time),this.data.hierarchy[i].node.updateMatrix(),r.matrixWorldNeedsUpdate=!0}}}},getNextKeyWith:function(e,t,i){var n=this.data.hierarchy[t].keys;for(i%=n.length;i=0?i:i+n.length;i>=0;i--)if(n[i].hasTarget(e))return n[i];return n[n.length-1]}},K.MorphAnimation=function(e){this.mesh=e,this.frames=e.morphTargetInfluences.length,this.currentTime=0,this.duration=1e3,this.loop=!0,this.lastFrame=0,this.currentFrame=0,this.isPlaying=!1},K.MorphAnimation.prototype={constructor:K.MorphAnimation,play:function(){this.isPlaying=!0},pause:function(){this.isPlaying=!1},update:function(e){if(!1!==this.isPlaying){this.currentTime+=e,!0===this.loop&&this.currentTime>this.duration&&(this.currentTime%=this.duration),this.currentTime=Math.min(this.currentTime,this.duration);var t=this.duration/this.frames,i=Math.floor(this.currentTime/t),n=this.mesh.morphTargetInfluences;i!=this.currentFrame&&(n[this.lastFrame]=0,n[this.currentFrame]=1,n[i]=0,this.lastFrame=this.currentFrame,this.currentFrame=i),n[i]=this.currentTime%t/t,n[this.lastFrame]=1-n[i]}}},K.BoxGeometry=function(e,t,i,n,r,o){K.Geometry.call(this),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:i,widthSegments:n,heightSegments:r,depthSegments:o},this.widthSegments=n||1,this.heightSegments=r||1,this.depthSegments=o||1;var s=this,a=e/2,l=t/2,c=i/2;function h(e,t,i,n,r,o,a,l){var c,h,u,d=s.widthSegments,f=s.heightSegments,p=r/2,m=o/2,g=s.vertices.length;"x"===e&&"y"===t||"y"===e&&"x"===t?c="z":"x"===e&&"z"===t||"z"===e&&"x"===t?(c="y",f=s.depthSegments):("z"===e&&"y"===t||"y"===e&&"z"===t)&&(c="x",d=s.depthSegments);var v=d+1,y=f+1,b=r/d,x=o/f,_=new K.Vector3;for(_[c]=a>0?1:-1,u=0;u0)for(this.vertices.push(new K.Vector3(0,h,0)),l=0;l0)for(this.vertices.push(new K.Vector3(0,-h,0)),l=0;lo){var f=Math.sqrt(u),p=Math.sqrt(c*c+h*h),m=t.x-l/f,g=t.y+a/f,v=((i.x-h/p-m)*h-(i.y+c/p-g)*c)/(a*h-l*c),y=(n=m+a*v-e.x)*n+(r=g+l*v-e.y)*r;if(y<=2)return new K.Vector2(n,r);s=Math.sqrt(y/2)}else{var b=!1;a>o?c>o&&(b=!0):a<-1e-10?c<-1e-10&&(b=!0):Math.sign(l)==Math.sign(h)&&(b=!0),b?(n=-l,r=a,s=Math.sqrt(u)):(n=a,r=l,s=Math.sqrt(u/2))}return new K.Vector2(n/s,r/s)}for(var V=[],G=0,z=P.length,H=z-1,W=G+1;G=0;L--){for(O=u*(1-(R=L/f)),I=d*Math.sin(R*Math.PI/2),G=0,z=P.length;G=0;){i=G,(n=G-1)<0&&(n=e.length-1);var r=0,o=g+2*f;for(r=0;r65535?Uint32Array:Uint16Array)(s*a*6);for(v=0;v1e-4&&(p.normalize(),n=Math.acos(K.Math.clamp(u[l-1].dot(u[l]),-1,1)),d[l].applyMatrix4(m.makeRotationAxis(p,n))),f[l].crossVectors(u[l],d[l]);if(i)for(n=Math.acos(K.Math.clamp(d[0].dot(d[g-1]),-1,1)),n/=g-1,u[0].dot(p.crossVectors(d[0],d[g-1]))>0&&(n=-n),l=1;l.9&&b<.1&&(m<.2&&(p[0].x+=1),g<.2&&(p[1].x+=1),v<.2&&(p[2].x+=1))}for(o=0,s=this.vertices.length;o.99999?this.quaternion.set(0,0,0,1):e.y<-.99999?this.quaternion.set(1,0,0,0):(Y.set(e.z,0,-e.x).normalize(),X=Math.acos(e.y),this.quaternion.setFromAxisAngle(Y,X))}),K.ArrowHelper.prototype.setLength=function(e,t,i){void 0===t&&(t=.2*e),void 0===i&&(i=.2*t),this.line.scale.set(1,e-t,1),this.line.updateMatrix(),this.cone.scale.set(i,t,i),this.cone.position.y=e,this.cone.updateMatrix()},K.ArrowHelper.prototype.setColor=function(e){this.line.material.color.set(e),this.cone.material.color.set(e)},K.BoxHelper=function(e){var t=new K.BufferGeometry;t.setAttribute("position",new K.BufferAttribute(new Float32Array(72),3)),K.Line.call(this,t,new K.LineBasicMaterial({color:16776960}),K.LinePieces),void 0!==e&&this.update(e)},K.BoxHelper.prototype=Object.create(K.Line.prototype),K.BoxHelper.prototype.constructor=K.BoxHelper,K.BoxHelper.prototype.update=function(e){var t=e.geometry;null===t.boundingBox&&t.computeBoundingBox();var i=t.boundingBox.min,n=t.boundingBox.max,r=this.geometry.attributes.position.array;r[0]=n.x,r[1]=n.y,r[2]=n.z,r[3]=i.x,r[4]=n.y,r[5]=n.z,r[6]=i.x,r[7]=n.y,r[8]=n.z,r[9]=i.x,r[10]=i.y,r[11]=n.z,r[12]=i.x,r[13]=i.y,r[14]=n.z,r[15]=n.x,r[16]=i.y,r[17]=n.z,r[18]=n.x,r[19]=i.y,r[20]=n.z,r[21]=n.x,r[22]=n.y,r[23]=n.z,r[24]=n.x,r[25]=n.y,r[26]=i.z,r[27]=i.x,r[28]=n.y,r[29]=i.z,r[30]=i.x,r[31]=n.y,r[32]=i.z,r[33]=i.x,r[34]=i.y,r[35]=i.z,r[36]=i.x,r[37]=i.y,r[38]=i.z,r[39]=n.x,r[40]=i.y,r[41]=i.z,r[42]=n.x,r[43]=i.y,r[44]=i.z,r[45]=n.x,r[46]=n.y,r[47]=i.z,r[48]=n.x,r[49]=n.y,r[50]=n.z,r[51]=n.x,r[52]=n.y,r[53]=i.z,r[54]=i.x,r[55]=n.y,r[56]=n.z,r[57]=i.x,r[58]=n.y,r[59]=i.z,r[60]=i.x,r[61]=i.y,r[62]=n.z,r[63]=i.x,r[64]=i.y,r[65]=i.z,r[66]=n.x,r[67]=i.y,r[68]=n.z,r[69]=n.x,r[70]=i.y,r[71]=i.z,this.geometry.attributes.position.needsUpdate=!0,this.geometry.computeBoundingSphere(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1},K.BoundingBoxHelper=function(e,t){var i=void 0!==t?t:8947848;this.object=e,this.box=new K.Box3,K.Mesh.call(this,new K.BoxGeometry(1,1,1),new K.MeshBasicMaterial({color:i,wireframe:!0}))},K.BoundingBoxHelper.prototype=Object.create(K.Mesh.prototype),K.BoundingBoxHelper.prototype.constructor=K.BoundingBoxHelper,K.BoundingBoxHelper.prototype.update=function(){this.box.setFromObject(this.object),this.box.size(this.scale),this.box.getCenter(this.position)},K.CameraHelper=function(e){var t=new K.Geometry,i=new K.LineBasicMaterial({color:16777215,vertexColors:K.FaceColors}),n={},r=16755200,o=16711680,s=43775,a=3355443;function l(e,t,i){c(e,i),c(t,i)}function c(e,i){t.vertices.push(new K.Vector3),t.colors.push(new K.Color(i)),void 0===n[e]&&(n[e]=[]),n[e].push(t.vertices.length-1)}l("n1","n2",r),l("n2","n4",r),l("n4","n3",r),l("n3","n1",r),l("f1","f2",r),l("f2","f4",r),l("f4","f3",r),l("f3","f1",r),l("n1","f1",r),l("n2","f2",r),l("n3","f3",r),l("n4","f4",r),l("p","n1",o),l("p","n2",o),l("p","n3",o),l("p","n4",o),l("u1","u2",s),l("u2","u3",s),l("u3","u1",s),l("c","t",16777215),l("p","c",a),l("cn1","cn2",a),l("cn3","cn4",a),l("cf1","cf2",a),l("cf3","cf4",a),K.Line.call(this,t,i,K.LinePieces),this.camera=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=n,this.update()},K.CameraHelper.prototype=Object.create(K.Line.prototype),K.CameraHelper.prototype.constructor=K.CameraHelper,K.CameraHelper.prototype.update=function(){var e,t,i=new K.Vector3,n=new K.Camera,r=function(r,o,s,a){i.set(o,s,a).unproject(n);var l=t[r];if(void 0!==l)for(var c=0,h=l.length;c1)n[l=a[1]]||(n[l]={start:1/0,end:-1/0}),o<(c=n[l]).start&&(c.start=o),o>c.end&&(c.end=o),t||(t=l)}for(var l in n){var c=n[l];this.createAnimation(l,c.start,c.end,e)}this.firstAnimation=t},K.MorphBlendMesh.prototype.setAnimationDirectionForward=function(e){var t=this.animationsMap[e];t&&(t.direction=1,t.directionBackwards=!1)},K.MorphBlendMesh.prototype.setAnimationDirectionBackward=function(e){var t=this.animationsMap[e];t&&(t.direction=-1,t.directionBackwards=!0)},K.MorphBlendMesh.prototype.setAnimationFPS=function(e,t){var i=this.animationsMap[e];i&&(i.fps=t,i.duration=(i.end-i.start)/i.fps)},K.MorphBlendMesh.prototype.setAnimationDuration=function(e,t){var i=this.animationsMap[e];i&&(i.duration=t,i.fps=(i.end-i.start)/i.duration)},K.MorphBlendMesh.prototype.setAnimationWeight=function(e,t){var i=this.animationsMap[e];i&&(i.weight=t)},K.MorphBlendMesh.prototype.setAnimationTime=function(e,t){var i=this.animationsMap[e];i&&(i.time=t)},K.MorphBlendMesh.prototype.getAnimationTime=function(e){var t=0,i=this.animationsMap[e];return i&&(t=i.time),t},K.MorphBlendMesh.prototype.getAnimationDuration=function(e){var t=-1,i=this.animationsMap[e];return i&&(t=i.duration),t},K.MorphBlendMesh.prototype.playAnimation=function(e){var t=this.animationsMap[e];t?(t.time=0,t.active=!0):K.warn("THREE.MorphBlendMesh: animation["+e+"] undefined in .playAnimation()")},K.MorphBlendMesh.prototype.stopAnimation=function(e){var t=this.animationsMap[e];t&&(t.active=!1)},K.MorphBlendMesh.prototype.update=function(e){for(var t=0,i=this.animationsList.length;tn.duration||n.time<0)&&(n.direction*=-1,n.time>n.duration&&(n.time=n.duration,n.directionBackwards=!0),n.time<0&&(n.time=0,n.directionBackwards=!1)):(n.time=n.time%n.duration,n.time<0&&(n.time+=n.duration));var o=n.startFrame+K.Math.clamp(Math.floor(n.time/r),0,n.length-1),s=n.weight;o!==n.currentFrame&&(this.morphTargetInfluences[n.lastFrame]=0,this.morphTargetInfluences[n.currentFrame]=1*s,this.morphTargetInfluences[o]=0,n.lastFrame=n.currentFrame,n.currentFrame=o);var a=n.time%r/r;n.directionBackwards&&(a=1-a),this.morphTargetInfluences[n.currentFrame]=a*s,this.morphTargetInfluences[n.lastFrame]=(1-a)*s}}};const{polyfillTHREE:Q}=i(63004);Q(K)},67526:(e,t)=>{"use strict";t.byteLength=function(e){var t=a(e),i=t[0],n=t[1];return 3*(i+n)/4-n},t.toByteArray=function(e){var t,i,o=a(e),s=o[0],l=o[1],c=new r(function(e,t,i){return 3*(t+i)/4-i}(0,s,l)),h=0,u=l>0?s-4:s;for(i=0;i>16&255,c[h++]=t>>8&255,c[h++]=255&t;2===l&&(t=n[e.charCodeAt(i)]<<2|n[e.charCodeAt(i+1)]>>4,c[h++]=255&t);1===l&&(t=n[e.charCodeAt(i)]<<10|n[e.charCodeAt(i+1)]<<4|n[e.charCodeAt(i+2)]>>2,c[h++]=t>>8&255,c[h++]=255&t);return c},t.fromByteArray=function(e){for(var t,n=e.length,r=n%3,o=[],s=16383,a=0,c=n-r;ac?c:a+s));1===r?(t=e[n-1],o.push(i[t>>2]+i[t<<4&63]+"==")):2===r&&(t=(e[n-2]<<8)+e[n-1],o.push(i[t>>10]+i[t>>4&63]+i[t<<2&63]+"="));return o.join("")};for(var i=[],n=[],r="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0;s<64;++s)i[s]=o[s],n[o.charCodeAt(s)]=s;function a(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var i=e.indexOf("=");return-1===i&&(i=t),[i,i===t?0:4-i%4]}function l(e,t,n){for(var r,o,s=[],a=t;a>18&63]+i[o>>12&63]+i[o>>6&63]+i[63&o]);return s.join("")}n["-".charCodeAt(0)]=62,n["_".charCodeAt(0)]=63},8939:e=>{e.exports=function(){"use strict";var e=function(){for(var e=3,t=document.createElement("b"),i=t.all||[];t.innerHTML="\x3c!--[if gt IE "+ ++e+"]>4?e:document.documentMode}(),t=navigator.platform.toLowerCase().indexOf("mac")+1,i=function(e){if(!(this instanceof i))return new i(e);var s=this,a={rows_in_block:50,blocks_in_cluster:4,tag:null,show_no_data_row:!0,no_data_class:"clusterize-no-data",no_data_text:"No data",keep_parity:!0,callbacks:{}};s.options={};for(var l,c=["rows_in_block","blocks_in_cluster","show_no_data_row","no_data_class","no_data_text","keep_parity","tag","callbacks"],h=0;l=c[h];h++)s.options[l]=void 0!==e[l]&&null!=e[l]?e[l]:a[l];var u,d=["scroll","content"];for(h=0;u=d[h];h++)if(s[u+"_elem"]=e[u+"Id"]?document.getElementById(e[u+"Id"]):e[u+"Elem"],!s[u+"_elem"])throw new Error("Error! Could not find "+u+" element");s.content_elem.hasAttribute("tabindex")||s.content_elem.setAttribute("tabindex",0);var f=o(e.rows)?e.rows:s.fetchMarkup(),p={},m=s.scroll_elem.scrollTop;s.insertToDOM(f,p),s.scroll_elem.scrollTop=m;var g=!1,v=0,y=!1,b=function(){t&&(y||(s.content_elem.style.pointerEvents="none"),y=!0,clearTimeout(v),v=setTimeout((function(){s.content_elem.style.pointerEvents="auto",y=!1}),50)),g!=(g=s.getClusterNum())&&s.insertToDOM(f,p),s.options.callbacks.scrollingProgress&&s.options.callbacks.scrollingProgress(s.getScrollProgress())},x=0,_=function(){clearTimeout(x),x=setTimeout(s.refresh,100)};n("scroll",s.scroll_elem,b),n("resize",window,_),s.destroy=function(e){r("scroll",s.scroll_elem,b),r("resize",window,_),s.html((e?s.generateEmptyRow():f).join(""))},s.refresh=function(e){(s.getRowsHeight(f)||e)&&s.update(f)},s.update=function(e){f=o(e)?e:[];var t=s.scroll_elem.scrollTop;f.length*s.options.item_height\s/]*)/)[1].toLowerCase()),this.content_elem.children.length<=1&&(i.data=this.html(t[0]+t[0]+t[0])),n.tag||(n.tag=this.content_elem.children[0].tagName.toLowerCase()),this.getRowsHeight(t))},getRowsHeight:function(e){var t=this.options,i=t.item_height;if(t.cluster_height=0,e.length){var n=this.content_elem.children;if(n.length){var r=n[Math.floor(n.length/2)];if(t.item_height=r.offsetHeight,"tr"==t.tag&&"collapse"!=s("borderCollapse",this.content_elem)&&(t.item_height+=parseInt(s("borderSpacing",this.content_elem),10)||0),"tr"!=t.tag){var o=parseInt(s("marginTop",r),10)||0,a=parseInt(s("marginBottom",r),10)||0;t.item_height+=Math.max(o,a)}return t.block_height=t.item_height*t.rows_in_block,t.rows_in_cluster=t.blocks_in_cluster*t.rows_in_block,t.cluster_height=t.blocks_in_cluster*t.block_height,i!=t.item_height}}},getClusterNum:function(){return this.options.scroll_top=this.scroll_elem.scrollTop,Math.floor(this.options.scroll_top/(this.options.cluster_height-this.options.block_height))||0},generateEmptyRow:function(){var e=this.options;if(!e.tag||!e.show_no_data_row)return[];var t,i=document.createElement(e.tag),n=document.createTextNode(e.no_data_text);return i.className=e.no_data_class,"tr"==e.tag&&((t=document.createElement("td")).colSpan=100,t.appendChild(n)),i.appendChild(t||n),[i.outerHTML]},generate:function(e,t){var i=this.options,n=e.length;if(n"+t+"";n=i.lastChild;)i.removeChild(n);for(var o=this.getChildNodes(r.firstChild.firstChild);o.length;)i.appendChild(o.shift())}else i.innerHTML=t},getChildNodes:function(e){for(var t=e.children,i=[],n=0,r=t.length;n{"use strict";var n=i(67526),r=i(251),o="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null; +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */t.hp=l,t.IS=50;var s=2147483647;function a(e){if(e>s)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,l.prototype),t}function l(e,t,i){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return u(e)}return c(e,t,i)}function c(e,t,i){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!l.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var i=0|m(e,t),n=a(i),r=n.write(e,t);r!==i&&(n=n.slice(0,r));return n}(e,t);if(ArrayBuffer.isView(e))return function(e){if(G(e,Uint8Array)){var t=new Uint8Array(e);return f(t.buffer,t.byteOffset,t.byteLength)}return d(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(G(e,ArrayBuffer)||e&&G(e.buffer,ArrayBuffer))return f(e,t,i);if("undefined"!=typeof SharedArrayBuffer&&(G(e,SharedArrayBuffer)||e&&G(e.buffer,SharedArrayBuffer)))return f(e,t,i);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return l.from(n,t,i);var r=function(e){if(l.isBuffer(e)){var t=0|p(e.length),i=a(t);return 0===i.length||e.copy(i,0,0,t),i}if(void 0!==e.length)return"number"!=typeof e.length||z(e.length)?a(0):d(e);if("Buffer"===e.type&&Array.isArray(e.data))return d(e.data)}(e);if(r)return r;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return l.from(e[Symbol.toPrimitive]("string"),t,i);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function h(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function u(e){return h(e),a(e<0?0:0|p(e))}function d(e){for(var t=e.length<0?0:0|p(e.length),i=a(t),n=0;n=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return 0|e}function m(e,t){if(l.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||G(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var i=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===i)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return i;case"utf8":case"utf-8":return B(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*i;case"hex":return i>>>1;case"base64":return k(e).length;default:if(r)return n?-1:B(e).length;t=(""+t).toLowerCase(),r=!0}}function g(e,t,i){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===i||i>this.length)&&(i=this.length),i<=0)return"";if((i>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return D(this,t,i);case"utf8":case"utf-8":return T(this,t,i);case"ascii":return C(this,t,i);case"latin1":case"binary":return P(this,t,i);case"base64":return w(this,t,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,t,i);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function v(e,t,i){var n=e[t];e[t]=e[i],e[i]=n}function y(e,t,i,n,r){if(0===e.length)return-1;if("string"==typeof i?(n=i,i=0):i>2147483647?i=2147483647:i<-2147483648&&(i=-2147483648),z(i=+i)&&(i=r?0:e.length-1),i<0&&(i=e.length+i),i>=e.length){if(r)return-1;i=e.length-1}else if(i<0){if(!r)return-1;i=0}if("string"==typeof t&&(t=l.from(t,n)),l.isBuffer(t))return 0===t.length?-1:b(e,t,i,n,r);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,i):Uint8Array.prototype.lastIndexOf.call(e,t,i):b(e,[t],i,n,r);throw new TypeError("val must be string, number or Buffer")}function b(e,t,i,n,r){var o,s=1,a=e.length,l=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;s=2,a/=2,l/=2,i/=2}function c(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(r){var h=-1;for(o=i;oa&&(i=a-l),o=i;o>=0;o--){for(var u=!0,d=0;dr&&(n=r):n=r;var o=t.length;n>o/2&&(n=o/2);for(var s=0;s>8,r=i%256,o.push(r),o.push(n);return o}(t,e.length-i),e,i,n)}function w(e,t,i){return 0===t&&i===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,i))}function T(e,t,i){i=Math.min(e.length,i);for(var n=[],r=t;r239?4:c>223?3:c>191?2:1;if(r+u<=i)switch(u){case 1:c<128&&(h=c);break;case 2:128==(192&(o=e[r+1]))&&(l=(31&c)<<6|63&o)>127&&(h=l);break;case 3:o=e[r+1],s=e[r+2],128==(192&o)&&128==(192&s)&&(l=(15&c)<<12|(63&o)<<6|63&s)>2047&&(l<55296||l>57343)&&(h=l);break;case 4:o=e[r+1],s=e[r+2],a=e[r+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(l=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&l<1114112&&(h=l)}null===h?(h=65533,u=1):h>65535&&(h-=65536,n.push(h>>>10&1023|55296),h=56320|1023&h),n.push(h),r+=u}return function(e){var t=e.length;if(t<=M)return String.fromCharCode.apply(String,e);var i="",n=0;for(;nn.length?l.from(o).copy(n,r):Uint8Array.prototype.set.call(n,o,r);else{if(!l.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(n,r)}r+=o.length}return n},l.byteLength=m,l.prototype._isBuffer=!0,l.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;ti&&(e+=" ... "),""},o&&(l.prototype[o]=l.prototype.inspect),l.prototype.compare=function(e,t,i,n,r){if(G(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),!l.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===i&&(i=e?e.length:0),void 0===n&&(n=0),void 0===r&&(r=this.length),t<0||i>e.length||n<0||r>this.length)throw new RangeError("out of range index");if(n>=r&&t>=i)return 0;if(n>=r)return-1;if(t>=i)return 1;if(this===e)return 0;for(var o=(r>>>=0)-(n>>>=0),s=(i>>>=0)-(t>>>=0),a=Math.min(o,s),c=this.slice(n,r),h=e.slice(t,i),u=0;u>>=0,isFinite(i)?(i>>>=0,void 0===n&&(n="utf8")):(n=i,i=void 0)}var r=this.length-t;if((void 0===i||i>r)&&(i=r),e.length>0&&(i<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return x(this,e,t,i);case"utf8":case"utf-8":return _(this,e,t,i);case"ascii":case"latin1":case"binary":return E(this,e,t,i);case"base64":return S(this,e,t,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,e,t,i);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var M=4096;function C(e,t,i){var n="";i=Math.min(e.length,i);for(var r=t;rn)&&(i=n);for(var r="",o=t;oi)throw new RangeError("Trying to access beyond buffer length")}function R(e,t,i,n,r,o){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>r||te.length)throw new RangeError("Index out of range")}function O(e,t,i,n,r,o){if(i+n>e.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("Index out of range")}function N(e,t,i,n,o){return t=+t,i>>>=0,o||O(e,0,i,4),r.write(e,t,i,n,23,4),i+4}function F(e,t,i,n,o){return t=+t,i>>>=0,o||O(e,0,i,8),r.write(e,t,i,n,52,8),i+8}l.prototype.slice=function(e,t){var i=this.length;(e=~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),(t=void 0===t?i:~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),t>>=0,t>>>=0,i||I(e,t,this.length);for(var n=this[e],r=1,o=0;++o>>=0,t>>>=0,i||I(e,t,this.length);for(var n=this[e+--t],r=1;t>0&&(r*=256);)n+=this[e+--t]*r;return n},l.prototype.readUint8=l.prototype.readUInt8=function(e,t){return e>>>=0,t||I(e,1,this.length),this[e]},l.prototype.readUint16LE=l.prototype.readUInt16LE=function(e,t){return e>>>=0,t||I(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUint16BE=l.prototype.readUInt16BE=function(e,t){return e>>>=0,t||I(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUint32LE=l.prototype.readUInt32LE=function(e,t){return e>>>=0,t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUint32BE=l.prototype.readUInt32BE=function(e,t){return e>>>=0,t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,i){e>>>=0,t>>>=0,i||I(e,t,this.length);for(var n=this[e],r=1,o=0;++o=(r*=128)&&(n-=Math.pow(2,8*t)),n},l.prototype.readIntBE=function(e,t,i){e>>>=0,t>>>=0,i||I(e,t,this.length);for(var n=t,r=1,o=this[e+--n];n>0&&(r*=256);)o+=this[e+--n]*r;return o>=(r*=128)&&(o-=Math.pow(2,8*t)),o},l.prototype.readInt8=function(e,t){return e>>>=0,t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){e>>>=0,t||I(e,2,this.length);var i=this[e]|this[e+1]<<8;return 32768&i?4294901760|i:i},l.prototype.readInt16BE=function(e,t){e>>>=0,t||I(e,2,this.length);var i=this[e+1]|this[e]<<8;return 32768&i?4294901760|i:i},l.prototype.readInt32LE=function(e,t){return e>>>=0,t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return e>>>=0,t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return e>>>=0,t||I(e,4,this.length),r.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||I(e,4,this.length),r.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||I(e,8,this.length),r.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||I(e,8,this.length),r.read(this,e,!1,52,8)},l.prototype.writeUintLE=l.prototype.writeUIntLE=function(e,t,i,n){(e=+e,t>>>=0,i>>>=0,n)||R(this,e,t,i,Math.pow(2,8*i)-1,0);var r=1,o=0;for(this[t]=255&e;++o>>=0,i>>>=0,n)||R(this,e,t,i,Math.pow(2,8*i)-1,0);var r=i-1,o=1;for(this[t+r]=255&e;--r>=0&&(o*=256);)this[t+r]=e/o&255;return t+i},l.prototype.writeUint8=l.prototype.writeUInt8=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,1,255,0),this[t]=255&e,t+1},l.prototype.writeUint16LE=l.prototype.writeUInt16LE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeUint16BE=l.prototype.writeUInt16BE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeUint32LE=l.prototype.writeUInt32LE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},l.prototype.writeUint32BE=l.prototype.writeUInt32BE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeIntLE=function(e,t,i,n){if(e=+e,t>>>=0,!n){var r=Math.pow(2,8*i-1);R(this,e,t,i,r-1,-r)}var o=0,s=1,a=0;for(this[t]=255&e;++o>>=0,!n){var r=Math.pow(2,8*i-1);R(this,e,t,i,r-1,-r)}var o=i-1,s=1,a=0;for(this[t+o]=255&e;--o>=0&&(s*=256);)e<0&&0===a&&0!==this[t+o+1]&&(a=1),this[t+o]=(e/s|0)-a&255;return t+i},l.prototype.writeInt8=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeInt16BE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeInt32LE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},l.prototype.writeInt32BE=function(e,t,i){return e=+e,t>>>=0,i||R(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeFloatLE=function(e,t,i){return N(this,e,t,!0,i)},l.prototype.writeFloatBE=function(e,t,i){return N(this,e,t,!1,i)},l.prototype.writeDoubleLE=function(e,t,i){return F(this,e,t,!0,i)},l.prototype.writeDoubleBE=function(e,t,i){return F(this,e,t,!1,i)},l.prototype.copy=function(e,t,i,n){if(!l.isBuffer(e))throw new TypeError("argument should be a Buffer");if(i||(i=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t>>=0,i=void 0===i?this.length:i>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&i<57344){if(!r){if(i>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(t-=3)>-1&&o.push(239,191,189);continue}r=i;continue}if(i<56320){(t-=3)>-1&&o.push(239,191,189),r=i;continue}i=65536+(r-55296<<10|i-56320)}else r&&(t-=3)>-1&&o.push(239,191,189);if(r=null,i<128){if((t-=1)<0)break;o.push(i)}else if(i<2048){if((t-=2)<0)break;o.push(i>>6|192,63&i|128)}else if(i<65536){if((t-=3)<0)break;o.push(i>>12|224,i>>6&63|128,63&i|128)}else{if(!(i<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}}return o}function k(e){return n.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(U,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function V(e,t,i,n){for(var r=0;r=t.length||r>=e.length);++r)t[r+i]=e[r];return r}function G(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function z(e){return e!=e}var H=function(){for(var e="0123456789abcdef",t=new Array(256),i=0;i<16;++i)for(var n=16*i,r=0;r<16;++r)t[n+r]=e[i]+e[r];return t}()},84406:function(e,t,i){"use strict";var n=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function s(e){try{l(n.next(e))}catch(e){o(e)}}function a(e){try{l(n.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(s,a)}l((n=n.apply(e,t||[])).next())}))},r=this&&this.__generator||function(e,t){var i,n,r,o,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(i)throw new TypeError("Generator is already executing.");for(;s;)try{if(i=1,n&&(r=2&o[0]?n.return:o[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,o[1])).done)return r;switch(n=0,r&&(o=[2&o[0],r.value]),o[0]){case 0:case 1:r=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,n=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(r=s.trys,(r=r.length>0&&r[r.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]=this.options.numOfAttempts},enumerable:!0,configurable:!0}),e.prototype.applyDelay=function(){return n(this,void 0,void 0,(function(){return r(this,(function(e){switch(e.label){case 0:return[4,s.DelayFactory(this.options,this.attemptNumber).apply()];case 1:return e.sent(),[2]}}))}))},e}()},88348:function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])},n(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)});Object.defineProperty(t,"__esModule",{value:!0});var o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r(t,e),t}(i(36698).Delay);t.AlwaysDelay=o},36698:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(66071),r=function(){function e(e){this.options=e,this.attempt=0}return e.prototype.apply=function(){var e=this;return new Promise((function(t){return setTimeout(t,e.jitteredDelay)}))},e.prototype.setAttemptNumber=function(e){this.attempt=e},Object.defineProperty(e.prototype,"jitteredDelay",{get:function(){return n.JitterFactory(this.options)(this.delay)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"delay",{get:function(){var e=this.options.startingDelay,t=this.options.timeMultiple,i=this.numOfDelayedAttempts,n=e*Math.pow(t,i);return Math.min(n,this.options.maxDelay)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"numOfDelayedAttempts",{get:function(){return this.attempt},enumerable:!0,configurable:!0}),e}();t.Delay=r},65757:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(7510),r=i(88348);t.DelayFactory=function(e,t){var i=function(e){if(!e.delayFirstAttempt)return new n.SkipFirstDelay(e);return new r.AlwaysDelay(e)}(e);return i.setAttemptNumber(t),i}},7510:function(e,t,i){"use strict";var n,r=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)t.hasOwnProperty(i)&&(e[i]=t[i])},n(e,t)},function(e,t){function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),o=this&&this.__awaiter||function(e,t,i,n){return new(i||(i=Promise))((function(r,o){function s(e){try{l(n.next(e))}catch(e){o(e)}}function a(e){try{l(n.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(s,a)}l((n=n.apply(e,t||[])).next())}))},s=this&&this.__generator||function(e,t){var i,n,r,o,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(i)throw new TypeError("Generator is already executing.");for(;s;)try{if(i=1,n&&(r=2&o[0]?n.return:o[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,o[1])).done)return r;switch(n=0,r&&(o=[2&o[0],r.value]),o[0]){case 0:case 1:r=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,n=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(r=s.trys,(r=r.length>0&&r[r.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fullJitter=function(e){var t=Math.random()*e;return Math.round(t)}},66071:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(38500),r=i(14764);t.JitterFactory=function(e){return"full"===e.jitter?n.fullJitter:r.noJitter}},14764:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.noJitter=function(e){return e}},90784:function(e,t){"use strict";var i=this&&this.__assign||function(){return i=Object.assign||function(e){for(var t,i=1,n=arguments.length;i-1};function c(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function h(e){return"string"!=typeof e&&(e=String(e)),e}function u(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return n&&(t[Symbol.iterator]=function(){return t}),t}function d(e){this.map={},e instanceof d?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function f(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function p(e){return new Promise((function(t,i){e.onload=function(){t(e.result)},e.onerror=function(){i(e.error)}}))}function m(e){var t=new FileReader,i=p(t);return t.readAsArrayBuffer(e),i}function g(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function v(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:r&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:o&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:i&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():s&&r&&((t=e)&&DataView.prototype.isPrototypeOf(t))?(this._bodyArrayBuffer=g(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):s&&(ArrayBuffer.prototype.isPrototypeOf(e)||l(e))?this._bodyArrayBuffer=g(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):i&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},r&&(this.blob=function(){var e=f(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?f(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(m)}),this.text=function(){var e,t,i,n=f(this);if(n)return n;if(this._bodyBlob)return e=this._bodyBlob,t=new FileReader,i=p(t),t.readAsText(e),i;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),i=new Array(t.length),n=0;n-1?n:i),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(r)}function x(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var i=e.split("="),n=i.shift().replace(/\+/g," "),r=i.join("=").replace(/\+/g," ");t.append(decodeURIComponent(n),decodeURIComponent(r))}})),t}function _(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new d(t.headers),this.url=t.url||"",this._initBody(e)}b.prototype.clone=function(){return new b(this,{body:this._bodyInit})},v.call(b.prototype),v.call(_.prototype),_.prototype.clone=function(){return new _(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new d(this.headers),url:this.url})},_.error=function(){var e=new _(null,{status:0,statusText:""});return e.type="error",e};var E=[301,302,303,307,308];_.redirect=function(e,t){if(-1===E.indexOf(t))throw new RangeError("Invalid status code");return new _(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var i=Error(e);this.stack=i.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function S(e,i){return new Promise((function(n,o){var s=new b(e,i);if(s.signal&&s.signal.aborted)return o(new t.DOMException("Aborted","AbortError"));var a=new XMLHttpRequest;function l(){a.abort()}a.onload=function(){var e,t,i={status:a.status,statusText:a.statusText,headers:(e=a.getAllResponseHeaders()||"",t=new d,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var i=e.split(":"),n=i.shift().trim();if(n){var r=i.join(":").trim();t.append(n,r)}})),t)};i.url="responseURL"in a?a.responseURL:i.headers.get("X-Request-URL");var r="response"in a?a.response:a.responseText;n(new _(r,i))},a.onerror=function(){o(new TypeError("Network request failed"))},a.ontimeout=function(){o(new TypeError("Network request failed"))},a.onabort=function(){o(new t.DOMException("Aborted","AbortError"))},a.open(s.method,s.url,!0),"include"===s.credentials?a.withCredentials=!0:"omit"===s.credentials&&(a.withCredentials=!1),"responseType"in a&&r&&(a.responseType="blob"),s.headers.forEach((function(e,t){a.setRequestHeader(t,e)})),s.signal&&(s.signal.addEventListener("abort",l),a.onreadystatechange=function(){4===a.readyState&&s.signal.removeEventListener("abort",l)}),a.send(void 0===s._bodyInit?null:s._bodyInit)}))}S.polyfill=!0,e.fetch||(e.fetch=S,e.Headers=d,e.Request=b,e.Response=_),t.Headers=d,t.Request=b,t.Response=_,t.fetch=S,Object.defineProperty(t,"__esModule",{value:!0})}({})}(n),n.fetch.ponyfill=!0,delete n.fetch.polyfill;var r=n;(t=r.fetch).default=r.fetch,t.fetch=r.fetch,t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response,e.exports=t},38842:(e,t,i)=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function r(e){var t=function(e,t){if("object"!=n(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,t||"default");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==n(t)?t:t+""}function o(e,t,i){return(t=r(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function s(e){for(var t=1;tH});var m={type:"logger",log:function(e){this.output("log",e)},warn:function(e){this.output("warn",e)},error:function(e){this.output("error",e)},output:function(e,t){console&&console[e]&&console[e].apply(console,t)}},g=new(function(){function e(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};a(this,e),this.init(t,i)}return c(e,[{key:"init",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.prefix=t.prefix||"i18next:",this.logger=e||m,this.options=t,this.debug=t.debug}},{key:"setDebug",value:function(e){this.debug=e}},{key:"log",value:function(){for(var e=arguments.length,t=new Array(e),i=0;i1?t-1:0),n=1;n-1?e.replace(/###/g,"."):e}function r(){return!e||"string"==typeof e}for(var o="string"!=typeof t?[].concat(t):t.split(".");o.length>1;){if(r())return{};var s=n(o.shift());!e[s]&&i&&(e[s]=new i),e=Object.prototype.hasOwnProperty.call(e,s)?e[s]:{}}return r()?{}:{obj:e,k:n(o.shift())}}function _(e,t,i){var n=x(e,t,Object);n.obj[n.k]=i}function E(e,t){var i=x(e,t),n=i.obj,r=i.k;if(n)return n[r]}function S(e,t,i){var n=E(e,i);return void 0!==n?n:E(t,i)}function A(e,t,i){for(var n in t)"__proto__"!==n&&"constructor"!==n&&(n in e?"string"==typeof e[n]||e[n]instanceof String||"string"==typeof t[n]||t[n]instanceof String?i&&(e[n]=t[n]):A(e[n],t[n],i):e[n]=t[n]);return e}function w(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var T={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function M(e){return"string"==typeof e?e.replace(/[&<>"'\/]/g,(function(e){return T[e]})):e}var C="undefined"!=typeof window&&window.navigator&&window.navigator.userAgent&&window.navigator.userAgent.indexOf("MSIE")>-1;function P(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:".";if(e){if(e[t])return e[t];for(var n=t.split(i),r=e,o=0;oo+s;)s++,l=r[a=n.slice(o,o+s).join(i)];if(void 0===l)return;if("string"==typeof l)return l;if(a&&"string"==typeof l[a])return l[a];var c=n.slice(o+s).join(i);return c?P(l,c,i):void 0}r=r[n[o]]}return r}}var D=function(e){function t(e){var i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{ns:["translation"],defaultNS:"translation"};return a(this,t),i=u(this,d(t).call(this)),C&&v.call(h(i)),i.data=e||{},i.options=n,void 0===i.options.keySeparator&&(i.options.keySeparator="."),void 0===i.options.ignoreJSONStructure&&(i.options.ignoreJSONStructure=!0),i}return p(t,e),c(t,[{key:"addNamespaces",value:function(e){this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}},{key:"removeNamespaces",value:function(e){var t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}},{key:"getResource",value:function(e,t,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},r=void 0!==n.keySeparator?n.keySeparator:this.options.keySeparator,o=void 0!==n.ignoreJSONStructure?n.ignoreJSONStructure:this.options.ignoreJSONStructure,s=[e,t];i&&"string"!=typeof i&&(s=s.concat(i)),i&&"string"==typeof i&&(s=s.concat(r?i.split(r):i)),e.indexOf(".")>-1&&(s=e.split("."));var a=E(this.data,s);return a||!o||"string"!=typeof i?a:P(this.data&&this.data[e]&&this.data[e][t],i,r)}},{key:"addResource",value:function(e,t,i,n){var r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{silent:!1},o=this.options.keySeparator;void 0===o&&(o=".");var s=[e,t];i&&(s=s.concat(o?i.split(o):i)),e.indexOf(".")>-1&&(n=t,t=(s=e.split("."))[1]),this.addNamespaces(t),_(this.data,s,n),r.silent||this.emit("added",e,t,i,n)}},{key:"addResources",value:function(e,t,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{silent:!1};for(var r in i)"string"!=typeof i[r]&&"[object Array]"!==Object.prototype.toString.apply(i[r])||this.addResource(e,t,r,i[r],{silent:!0});n.silent||this.emit("added",e,t,i)}},{key:"addResourceBundle",value:function(e,t,i,n,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{silent:!1},a=[e,t];e.indexOf(".")>-1&&(n=i,i=t,t=(a=e.split("."))[1]),this.addNamespaces(t);var l=E(this.data,a)||{};n?A(l,i,r):l=s({},l,i),_(this.data,a,l),o.silent||this.emit("added",e,t,i)}},{key:"removeResourceBundle",value:function(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)}},{key:"hasResourceBundle",value:function(e,t){return void 0!==this.getResource(e,t)}},{key:"getResourceBundle",value:function(e,t){return t||(t=this.options.defaultNS),"v1"===this.options.compatibilityAPI?s({},{},this.getResource(e,t)):this.getResource(e,t)}},{key:"getDataByLanguage",value:function(e){return this.data[e]}},{key:"toJSON",value:function(){return this.data}}]),t}(v),L={processors:{},addPostProcessor:function(e){this.processors[e.name]=e},handle:function(e,t,i,n,r){var o=this;return e.forEach((function(e){o.processors[e]&&(t=o.processors[e].process(t,i,n,r))})),t}},I={},R=function(e){function t(e){var i,n,r,o,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return a(this,t),i=u(this,d(t).call(this)),C&&v.call(h(i)),n=["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],r=e,o=h(i),n.forEach((function(e){r[e]&&(o[e]=r[e])})),i.options=s,void 0===i.options.keySeparator&&(i.options.keySeparator="."),i.logger=g.create("translator"),i}return p(t,e),c(t,[{key:"changeLanguage",value:function(e){e&&(this.language=e)}},{key:"exists",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}};if(null==e)return!1;var i=this.resolve(e,t);return i&&void 0!==i.res}},{key:"extractFromKey",value:function(e,t){var i=void 0!==t.nsSeparator?t.nsSeparator:this.options.nsSeparator;void 0===i&&(i=":");var n=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,r=t.ns||this.options.defaultNS;if(i&&e.indexOf(i)>-1){var o=e.match(this.interpolator.nestingRegexp);if(o&&o.length>0)return{key:e,namespaces:r};var s=e.split(i);(i!==n||i===n&&this.options.ns.indexOf(s[0])>-1)&&(r=s.shift()),e=s.join(n)}return"string"==typeof r&&(r=[r]),{key:e,namespaces:r}}},{key:"translate",value:function(e,i,r){var o=this;if("object"!==n(i)&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),i||(i={}),null==e)return"";Array.isArray(e)||(e=[String(e)]);var a=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,l=this.extractFromKey(e[e.length-1],i),c=l.key,h=l.namespaces,u=h[h.length-1],d=i.lng||this.language,f=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(d&&"cimode"===d.toLowerCase()){if(f){var p=i.nsSeparator||this.options.nsSeparator;return u+p+c}return c}var m=this.resolve(e,i),g=m&&m.res,v=m&&m.usedKey||c,y=m&&m.exactUsedKey||c,b=Object.prototype.toString.apply(g),x=void 0!==i.joinArrays?i.joinArrays:this.options.joinArrays,_=!this.i18nFormat||this.i18nFormat.handleAsObject;if(_&&g&&("string"!=typeof g&&"boolean"!=typeof g&&"number"!=typeof g)&&["[object Number]","[object Function]","[object RegExp]"].indexOf(b)<0&&("string"!=typeof x||"[object Array]"!==b)){if(!i.returnObjects&&!this.options.returnObjects)return this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!"),this.options.returnedObjectHandler?this.options.returnedObjectHandler(v,g,s({},i,{ns:h})):"key '".concat(c," (").concat(this.language,")' returned an object instead of string.");if(a){var E="[object Array]"===b,S=E?[]:{},A=E?y:v;for(var w in g)if(Object.prototype.hasOwnProperty.call(g,w)){var T="".concat(A).concat(a).concat(w);S[w]=this.translate(T,s({},i,{joinArrays:!1,ns:h})),S[w]===T&&(S[w]=g[w])}g=S}}else if(_&&"string"==typeof x&&"[object Array]"===b)(g=g.join(x))&&(g=this.extendTranslation(g,e,i,r));else{var M=!1,C=!1,P=void 0!==i.count&&"string"!=typeof i.count,D=t.hasDefaultValue(i),L=P?this.pluralResolver.getSuffix(d,i.count):"",I=i["defaultValue".concat(L)]||i.defaultValue;!this.isValidLookup(g)&&D&&(M=!0,g=I),this.isValidLookup(g)||(C=!0,g=c);var R=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&C?void 0:g,O=D&&I!==g&&this.options.updateMissing;if(C||M||O){if(this.logger.log(O?"updateKey":"missingKey",d,u,c,O?I:g),a){var N=this.resolve(c,s({},i,{keySeparator:!1}));N&&N.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}var F=[],U=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if("fallback"===this.options.saveMissingTo&&U&&U[0])for(var B=0;B1&&void 0!==arguments[1]?arguments[1]:{};return"string"==typeof e&&(e=[e]),e.forEach((function(e){if(!s.isValidLookup(t)){var l=s.extractFromKey(e,a),c=l.key;i=c;var h=l.namespaces;s.options.fallbackNS&&(h=h.concat(s.options.fallbackNS));var u=void 0!==a.count&&"string"!=typeof a.count,d=void 0!==a.context&&("string"==typeof a.context||"number"==typeof a.context)&&""!==a.context,f=a.lngs?a.lngs:s.languageUtils.toResolveHierarchy(a.lng||s.language,a.fallbackLng);h.forEach((function(e){s.isValidLookup(t)||(o=e,!I["".concat(f[0],"-").concat(e)]&&s.utils&&s.utils.hasLoadedNamespace&&!s.utils.hasLoadedNamespace(o)&&(I["".concat(f[0],"-").concat(e)]=!0,s.logger.warn('key "'.concat(i,'" for languages "').concat(f.join(", "),'" won\'t get resolved as namespace "').concat(o,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),f.forEach((function(i){if(!s.isValidLookup(t)){r=i;var o,l,h=c,f=[h];if(s.i18nFormat&&s.i18nFormat.addLookupKeys)s.i18nFormat.addLookupKeys(f,c,i,e,a);else u&&(o=s.pluralResolver.getSuffix(i,a.count)),u&&d&&f.push(h+o),d&&f.push(h+="".concat(s.options.contextSeparator).concat(a.context)),u&&f.push(h+=o);for(;l=f.pop();)s.isValidLookup(t)||(n=l,t=s.getResource(i,e,l,a))}})))}))}})),{res:t,usedKey:i,exactUsedKey:n,usedLng:r,usedNS:o}}},{key:"isValidLookup",value:function(e){return!(void 0===e||!this.options.returnNull&&null===e||!this.options.returnEmptyString&&""===e)}},{key:"getResource",value:function(e,t,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(e,t,i,n):this.resourceStore.getResource(e,t,i,n)}}],[{key:"hasDefaultValue",value:function(e){var t="defaultValue";for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)&&t===i.substring(0,12)&&void 0!==e[i])return!0;return!1}}]),t}(v);function O(e){return e.charAt(0).toUpperCase()+e.slice(1)}var N=function(){function e(t){a(this,e),this.options=t,this.whitelist=this.options.supportedLngs||!1,this.supportedLngs=this.options.supportedLngs||!1,this.logger=g.create("languageUtils")}return c(e,[{key:"getScriptPartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return null;var t=e.split("-");return 2===t.length?null:(t.pop(),"x"===t[t.length-1].toLowerCase()?null:this.formatLanguageCode(t.join("-")))}},{key:"getLanguagePartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return e;var t=e.split("-");return this.formatLanguageCode(t[0])}},{key:"formatLanguageCode",value:function(e){if("string"==typeof e&&e.indexOf("-")>-1){var t=["hans","hant","latn","cyrl","cans","mong","arab"],i=e.split("-");return this.options.lowerCaseLng?i=i.map((function(e){return e.toLowerCase()})):2===i.length?(i[0]=i[0].toLowerCase(),i[1]=i[1].toUpperCase(),t.indexOf(i[1].toLowerCase())>-1&&(i[1]=O(i[1].toLowerCase()))):3===i.length&&(i[0]=i[0].toLowerCase(),2===i[1].length&&(i[1]=i[1].toUpperCase()),"sgn"!==i[0]&&2===i[2].length&&(i[2]=i[2].toUpperCase()),t.indexOf(i[1].toLowerCase())>-1&&(i[1]=O(i[1].toLowerCase())),t.indexOf(i[2].toLowerCase())>-1&&(i[2]=O(i[2].toLowerCase()))),i.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}},{key:"isWhitelisted",value:function(e){return this.logger.deprecate("languageUtils.isWhitelisted",'function "isWhitelisted" will be renamed to "isSupportedCode" in the next major - please make sure to rename it\'s usage asap.'),this.isSupportedCode(e)}},{key:"isSupportedCode",value:function(e){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}},{key:"getBestMatchFromCodes",value:function(e){var t,i=this;return e?(e.forEach((function(e){if(!t){var n=i.formatLanguageCode(e);i.options.supportedLngs&&!i.isSupportedCode(n)||(t=n)}})),!t&&this.options.supportedLngs&&e.forEach((function(e){if(!t){var n=i.getLanguagePartFromCode(e);if(i.isSupportedCode(n))return t=n;t=i.options.supportedLngs.find((function(e){if(0===e.indexOf(n))return e}))}})),t||(t=this.getFallbackCodes(this.options.fallbackLng)[0]),t):null}},{key:"getFallbackCodes",value:function(e,t){if(!e)return[];if("function"==typeof e&&(e=e(t)),"string"==typeof e&&(e=[e]),"[object Array]"===Object.prototype.toString.apply(e))return e;if(!t)return e.default||[];var i=e[t];return i||(i=e[this.getScriptPartFromCode(t)]),i||(i=e[this.formatLanguageCode(t)]),i||(i=e[this.getLanguagePartFromCode(t)]),i||(i=e.default),i||[]}},{key:"toResolveHierarchy",value:function(e,t){var i=this,n=this.getFallbackCodes(t||this.options.fallbackLng||[],e),r=[],o=function(e){e&&(i.isSupportedCode(e)?r.push(e):i.logger.warn("rejecting language code not found in supportedLngs: ".concat(e)))};return"string"==typeof e&&e.indexOf("-")>-1?("languageOnly"!==this.options.load&&o(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&o(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&o(this.getLanguagePartFromCode(e))):"string"==typeof e&&o(this.formatLanguageCode(e)),n.forEach((function(e){r.indexOf(e)<0&&o(i.formatLanguageCode(e))})),r}}]),e}(),F=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],U={1:function(e){return Number(e>1)},2:function(e){return Number(1!=e)},3:function(e){return 0},4:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},5:function(e){return Number(0==e?0:1==e?1:2==e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5)},6:function(e){return Number(1==e?0:e>=2&&e<=4?1:2)},7:function(e){return Number(1==e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},8:function(e){return Number(1==e?0:2==e?1:8!=e&&11!=e?2:3)},9:function(e){return Number(e>=2)},10:function(e){return Number(1==e?0:2==e?1:e<7?2:e<11?3:4)},11:function(e){return Number(1==e||11==e?0:2==e||12==e?1:e>2&&e<20?2:3)},12:function(e){return Number(e%10!=1||e%100==11)},13:function(e){return Number(0!==e)},14:function(e){return Number(1==e?0:2==e?1:3==e?2:3)},15:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2)},16:function(e){return Number(e%10==1&&e%100!=11?0:0!==e?1:2)},17:function(e){return Number(1==e||e%10==1&&e%100!=11?0:1)},18:function(e){return Number(0==e?0:1==e?1:2)},19:function(e){return Number(1==e?0:0==e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3)},20:function(e){return Number(1==e?0:0==e||e%100>0&&e%100<20?1:2)},21:function(e){return Number(e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0)},22:function(e){return Number(1==e?0:2==e?1:(e<0||e>10)&&e%10==0?2:3)}};var B=function(){function e(t){var i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};a(this,e),this.languageUtils=t,this.options=n,this.logger=g.create("pluralResolver"),this.rules=(i={},F.forEach((function(e){e.lngs.forEach((function(t){i[t]={numbers:e.nr,plurals:U[e.fc]}}))})),i)}return c(e,[{key:"addRule",value:function(e,t){this.rules[e]=t}},{key:"getRule",value:function(e){return this.rules[e]||this.rules[this.languageUtils.getLanguagePartFromCode(e)]}},{key:"needsPlural",value:function(e){var t=this.getRule(e);return t&&t.numbers.length>1}},{key:"getPluralFormsOfKey",value:function(e,t){return this.getSuffixes(e).map((function(e){return t+e}))}},{key:"getSuffixes",value:function(e){var t=this,i=this.getRule(e);return i?i.numbers.map((function(i){return t.getSuffix(e,i)})):[]}},{key:"getSuffix",value:function(e,t){var i=this,n=this.getRule(e);if(n){var r=n.noAbs?n.plurals(t):n.plurals(Math.abs(t)),o=n.numbers[r];this.options.simplifyPluralSuffix&&2===n.numbers.length&&1===n.numbers[0]&&(2===o?o="plural":1===o&&(o=""));var s=function(){return i.options.prepend&&o.toString()?i.options.prepend+o.toString():o.toString()};return"v1"===this.options.compatibilityJSON?1===o?"":"number"==typeof o?"_plural_".concat(o.toString()):s():"v2"===this.options.compatibilityJSON||this.options.simplifyPluralSuffix&&2===n.numbers.length&&1===n.numbers[0]?s():this.options.prepend&&r.toString()?this.options.prepend+r.toString():r.toString()}return this.logger.warn("no plural rule found for: ".concat(e)),""}}]),e}(),k=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};a(this,e),this.logger=g.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||function(e){return e},this.init(t)}return c(e,[{key:"init",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.interpolation||(e.interpolation={escapeValue:!0});var t=e.interpolation;this.escape=void 0!==t.escape?t.escape:M,this.escapeValue=void 0===t.escapeValue||t.escapeValue,this.useRawValueToEscape=void 0!==t.useRawValueToEscape&&t.useRawValueToEscape,this.prefix=t.prefix?w(t.prefix):t.prefixEscaped||"{{",this.suffix=t.suffix?w(t.suffix):t.suffixEscaped||"}}",this.formatSeparator=t.formatSeparator?t.formatSeparator:t.formatSeparator||",",this.unescapePrefix=t.unescapeSuffix?"":t.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":t.unescapeSuffix||"",this.nestingPrefix=t.nestingPrefix?w(t.nestingPrefix):t.nestingPrefixEscaped||w("$t("),this.nestingSuffix=t.nestingSuffix?w(t.nestingSuffix):t.nestingSuffixEscaped||w(")"),this.nestingOptionsSeparator=t.nestingOptionsSeparator?t.nestingOptionsSeparator:t.nestingOptionsSeparator||",",this.maxReplaces=t.maxReplaces?t.maxReplaces:1e3,this.alwaysFormat=void 0!==t.alwaysFormat&&t.alwaysFormat,this.resetRegExp()}},{key:"reset",value:function(){this.options&&this.init(this.options)}},{key:"resetRegExp",value:function(){var e="".concat(this.prefix,"(.+?)").concat(this.suffix);this.regexp=new RegExp(e,"g");var t="".concat(this.prefix).concat(this.unescapePrefix,"(.+?)").concat(this.unescapeSuffix).concat(this.suffix);this.regexpUnescape=new RegExp(t,"g");var i="".concat(this.nestingPrefix,"(.+?)").concat(this.nestingSuffix);this.nestingRegexp=new RegExp(i,"g")}},{key:"interpolate",value:function(e,t,i,n){var r,o,a,l=this,c=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function h(e){return e.replace(/\$/g,"$$$$")}var u=function(e){if(e.indexOf(l.formatSeparator)<0){var r=S(t,c,e);return l.alwaysFormat?l.format(r,void 0,i,s({},n,t,{interpolationkey:e})):r}var o=e.split(l.formatSeparator),a=o.shift().trim(),h=o.join(l.formatSeparator).trim();return l.format(S(t,c,a),h,i,s({},n,t,{interpolationkey:a}))};this.resetRegExp();var d=n&&n.missingInterpolationHandler||this.options.missingInterpolationHandler,f=n&&n.interpolation&&n.interpolation.skipOnVariables||this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:function(e){return h(e)}},{regex:this.regexp,safeValue:function(e){return l.escapeValue?h(l.escape(e)):h(e)}}].forEach((function(t){for(a=0;r=t.regex.exec(e);){if(void 0===(o=u(r[1].trim())))if("function"==typeof d){var i=d(e,r,n);o="string"==typeof i?i:""}else{if(f){o=r[0];continue}l.logger.warn("missed to pass in variable ".concat(r[1]," for interpolating ").concat(e)),o=""}else"string"==typeof o||l.useRawValueToEscape||(o=b(o));var s=t.safeValue(o);if(e=e.replace(r[0],s),f?(t.regex.lastIndex+=s.length,t.regex.lastIndex-=r[0].length):t.regex.lastIndex=0,++a>=l.maxReplaces)break}})),e}},{key:"nest",value:function(e,t){var i,n,r=this,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=s({},o);function l(e,t){var i=this.nestingOptionsSeparator;if(e.indexOf(i)<0)return e;var n=e.split(new RegExp("".concat(i,"[ ]*{"))),r="{".concat(n[1]);e=n[0],r=(r=this.interpolate(r,a)).replace(/'/g,'"');try{a=JSON.parse(r),t&&(a=s({},t,a))}catch(t){return this.logger.warn("failed parsing options string in nesting for key ".concat(e),t),"".concat(e).concat(i).concat(r)}return delete a.defaultValue,e}for(a.applyPostProcessor=!1,delete a.defaultValue;i=this.nestingRegexp.exec(e);){var c=[],h=!1;if(-1!==i[0].indexOf(this.formatSeparator)&&!/{.*}/.test(i[1])){var u=i[1].split(this.formatSeparator).map((function(e){return e.trim()}));i[1]=u.shift(),c=u,h=!0}if((n=t(l.call(this,i[1].trim(),a),a))&&i[0]===e&&"string"!=typeof n)return n;"string"!=typeof n&&(n=b(n)),n||(this.logger.warn("missed to resolve ".concat(i[1]," for nesting ").concat(e)),n=""),h&&(n=c.reduce((function(e,t){return r.format(e,t,o.lng,s({},o,{interpolationkey:i[1].trim()}))}),n.trim())),e=e.replace(i[0],n),this.regexp.lastIndex=0}return e}}]),e}();var V=function(e){function t(e,i,n){var r,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return a(this,t),r=u(this,d(t).call(this)),C&&v.call(h(r)),r.backend=e,r.store=i,r.services=n,r.languageUtils=n.languageUtils,r.options=o,r.logger=g.create("backendConnector"),r.state={},r.queue=[],r.backend&&r.backend.init&&r.backend.init(n,o.backend,o),r}return p(t,e),c(t,[{key:"queueLoad",value:function(e,t,i,n){var r=this,o=[],s=[],a=[],l=[];return e.forEach((function(e){var n=!0;t.forEach((function(t){var a="".concat(e,"|").concat(t);!i.reload&&r.store.hasResourceBundle(e,t)?r.state[a]=2:r.state[a]<0||(1===r.state[a]?s.indexOf(a)<0&&s.push(a):(r.state[a]=1,n=!1,s.indexOf(a)<0&&s.push(a),o.indexOf(a)<0&&o.push(a),l.indexOf(t)<0&&l.push(t)))})),n||a.push(e)})),(o.length||s.length)&&this.queue.push({pending:s,loaded:{},errors:[],callback:n}),{toLoad:o,pending:s,toLoadLanguages:a,toLoadNamespaces:l}}},{key:"loaded",value:function(e,t,i){var n=e.split("|"),r=n[0],o=n[1];t&&this.emit("failedLoading",r,o,t),i&&this.store.addResourceBundle(r,o,i),this.state[e]=t?-1:2;var s={};this.queue.forEach((function(i){var n,a,l,c,h,u;n=i.loaded,a=o,c=x(n,[r],Object),h=c.obj,u=c.k,h[u]=h[u]||[],l&&(h[u]=h[u].concat(a)),l||h[u].push(a),function(e,t){for(var i=e.indexOf(t);-1!==i;)e.splice(i,1),i=e.indexOf(t)}(i.pending,e),t&&i.errors.push(t),0!==i.pending.length||i.done||(Object.keys(i.loaded).forEach((function(e){s[e]||(s[e]=[]),i.loaded[e].length&&i.loaded[e].forEach((function(t){s[e].indexOf(t)<0&&s[e].push(t)}))})),i.done=!0,i.errors.length?i.callback(i.errors):i.callback())})),this.emit("loaded",s),this.queue=this.queue.filter((function(e){return!e.done}))}},{key:"read",value:function(e,t,i){var n=this,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:350,s=arguments.length>5?arguments[5]:void 0;return e.length?this.backend[i](e,t,(function(a,l){a&&l&&r<5?setTimeout((function(){n.read.call(n,e,t,i,r+1,2*o,s)}),o):s(a,l)})):s(null,{})}},{key:"prepareLoading",value:function(e,t){var i=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),r&&r();"string"==typeof e&&(e=this.languageUtils.toResolveHierarchy(e)),"string"==typeof t&&(t=[t]);var o=this.queueLoad(e,t,n,r);if(!o.toLoad.length)return o.pending.length||r(),null;o.toLoad.forEach((function(e){i.loadOne(e)}))}},{key:"load",value:function(e,t,i){this.prepareLoading(e,t,{},i)}},{key:"reload",value:function(e,t,i){this.prepareLoading(e,t,{reload:!0},i)}},{key:"loadOne",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=e.split("|"),r=n[0],o=n[1];this.read(r,o,"read",void 0,void 0,(function(n,s){n&&t.logger.warn("".concat(i,"loading namespace ").concat(o," for language ").concat(r," failed"),n),!n&&s&&t.logger.log("".concat(i,"loaded namespace ").concat(o," for language ").concat(r),s),t.loaded(e,n,s)}))}},{key:"saveMissing",value:function(e,t,i,n,r){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(t)?this.logger.warn('did not save key "'.concat(i,'" as the namespace "').concat(t,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!"):null!=i&&""!==i&&(this.backend&&this.backend.create&&this.backend.create(e,t,i,n,null,s({},o,{isUpdate:r})),e&&e[0]&&this.store.addResource(e[0],t,i,n))}}]),t}(v);function G(e){return"string"==typeof e.ns&&(e.ns=[e.ns]),"string"==typeof e.fallbackLng&&(e.fallbackLng=[e.fallbackLng]),"string"==typeof e.fallbackNS&&(e.fallbackNS=[e.fallbackNS]),e.whitelist&&(e.whitelist&&e.whitelist.indexOf("cimode")<0&&(e.whitelist=e.whitelist.concat(["cimode"])),e.supportedLngs=e.whitelist),e.nonExplicitWhitelist&&(e.nonExplicitSupportedLngs=e.nonExplicitWhitelist),e.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e}function z(){}const H=new(function(e){function t(){var e,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(a(this,t),e=u(this,d(t).call(this)),C&&v.call(h(e)),e.options=G(i),e.services={},e.logger=g,e.modules={external:[]},n&&!e.isInitialized&&!i.isClone){if(!e.options.initImmediate)return e.init(i,n),u(e,h(e));setTimeout((function(){e.init(i,n)}),0)}return e}return p(t,e),c(t,[{key:"init",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1?arguments[1]:void 0;function r(e){return e?"function"==typeof e?new e:e:null}if("function"==typeof t&&(i=t,t={}),t.whitelist&&!t.supportedLngs&&this.logger.deprecate("whitelist",'option "whitelist" will be renamed to "supportedLngs" in the next major - please make sure to rename this option asap.'),t.nonExplicitWhitelist&&!t.nonExplicitSupportedLngs&&this.logger.deprecate("whitelist",'options "nonExplicitWhitelist" will be renamed to "nonExplicitSupportedLngs" in the next major - please make sure to rename this option asap.'),this.options=s({},{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,whitelist:!1,nonExplicitWhitelist:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!0,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(e){var t={};if("object"===n(e[1])&&(t=e[1]),"string"==typeof e[1]&&(t.defaultValue=e[1]),"string"==typeof e[2]&&(t.tDescription=e[2]),"object"===n(e[2])||"object"===n(e[3])){var i=e[3]||e[2];Object.keys(i).forEach((function(e){t[e]=i[e]}))}return t},interpolation:{escapeValue:!0,format:function(e,t,i,n){return e},prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!1}},this.options,G(t)),this.format=this.options.interpolation.format,i||(i=z),!this.options.isClone){this.modules.logger?g.init(r(this.modules.logger),this.options):g.init(null,this.options);var o=new N(this.options);this.store=new D(this.options.resources,this.options);var a=this.services;a.logger=g,a.resourceStore=this.store,a.languageUtils=o,a.pluralResolver=new B(o,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),a.interpolator=new k(this.options),a.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},a.backendConnector=new V(r(this.modules.backend),a.resourceStore,a,this.options),a.backendConnector.on("*",(function(t){for(var i=arguments.length,n=new Array(i>1?i-1:0),r=1;r1?i-1:0),r=1;r0&&"dev"!==l[0]&&(this.options.lng=l[0])}this.services.languageDetector||this.options.lng||this.logger.warn("init: no languageDetector is used and no lng is defined");["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach((function(t){e[t]=function(){var i;return(i=e.store)[t].apply(i,arguments)}}));["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach((function(t){e[t]=function(){var i;return(i=e.store)[t].apply(i,arguments),e}}));var c=y(),h=function(){var t=function(t,n){e.isInitialized&&!e.initializedStoreOnce&&e.logger.warn("init: i18next is already initialized. You should call init just once!"),e.isInitialized=!0,e.options.isClone||e.logger.log("initialized",e.options),e.emit("initialized",e.options),c.resolve(n),i(t,n)};if(e.languages&&"v1"!==e.options.compatibilityAPI&&!e.isInitialized)return t(null,e.t.bind(e));e.changeLanguage(e.options.lng,t)};return this.options.resources||!this.options.initImmediate?h():setTimeout(h,0),c}},{key:"loadResources",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:z,n="string"==typeof e?e:this.language;if("function"==typeof e&&(i=e),!this.options.resources||this.options.partialBundledLanguages){if(n&&"cimode"===n.toLowerCase())return i();var r=[],o=function(e){e&&t.services.languageUtils.toResolveHierarchy(e).forEach((function(e){r.indexOf(e)<0&&r.push(e)}))};if(n)o(n);else this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach((function(e){return o(e)}));this.options.preload&&this.options.preload.forEach((function(e){return o(e)})),this.services.backendConnector.load(r,this.options.ns,i)}else i(null)}},{key:"reloadResources",value:function(e,t,i){var n=y();return e||(e=this.languages),t||(t=this.options.ns),i||(i=z),this.services.backendConnector.reload(e,t,(function(e){n.resolve(),i(e)})),n}},{key:"use",value:function(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&L.addPostProcessor(e),"3rdParty"===e.type&&this.modules.external.push(e),this}},{key:"changeLanguage",value:function(e,t){var i=this;this.isLanguageChangingTo=e;var n=y();this.emit("languageChanging",e);var r=function(r){e||r||!i.services.languageDetector||(r=[]);var o="string"==typeof r?r:i.services.languageUtils.getBestMatchFromCodes(r);o&&(i.language||(i.language=o,i.languages=i.services.languageUtils.toResolveHierarchy(o)),i.translator.language||i.translator.changeLanguage(o),i.services.languageDetector&&i.services.languageDetector.cacheUserLanguage(o)),i.loadResources(o,(function(e){!function(e,r){r?(i.language=r,i.languages=i.services.languageUtils.toResolveHierarchy(r),i.translator.changeLanguage(r),i.isLanguageChangingTo=void 0,i.emit("languageChanged",r),i.logger.log("languageChanged",r)):i.isLanguageChangingTo=void 0,n.resolve((function(){return i.t.apply(i,arguments)})),t&&t(e,(function(){return i.t.apply(i,arguments)}))}(e,o)}))};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect(r):r(e):r(this.services.languageDetector.detect()),n}},{key:"getFixedT",value:function(e,t,i){var r=this,o=function e(t,o){var a;if("object"!==n(o)){for(var l=arguments.length,c=new Array(l>2?l-2:0),h=2;h1&&void 0!==arguments[1]?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;var n=this.languages[0],r=!!this.options&&this.options.fallbackLng,o=this.languages[this.languages.length-1];if("cimode"===n.toLowerCase())return!0;var s=function(e,i){var n=t.services.backendConnector.state["".concat(e,"|").concat(i)];return-1===n||2===n};if(i.precheck){var a=i.precheck(this,s);if(void 0!==a)return a}return!!this.hasResourceBundle(n,e)||(!this.services.backendConnector.backend||!(!s(n,e)||r&&!s(o,e)))}},{key:"loadNamespaces",value:function(e,t){var i=this,n=y();return this.options.ns?("string"==typeof e&&(e=[e]),e.forEach((function(e){i.options.ns.indexOf(e)<0&&i.options.ns.push(e)})),this.loadResources((function(e){n.resolve(),t&&t(e)})),n):(t&&t(),Promise.resolve())}},{key:"loadLanguages",value:function(e,t){var i=y();"string"==typeof e&&(e=[e]);var n=this.options.preload||[],r=e.filter((function(e){return n.indexOf(e)<0}));return r.length?(this.options.preload=n.concat(r),this.loadResources((function(e){i.resolve(),t&&t(e)})),i):(t&&t(),Promise.resolve())}},{key:"dir",value:function(e){if(e||(e=this.languages&&this.languages.length>0?this.languages[0]:this.language),!e)return"rtl";return["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam"].indexOf(this.services.languageUtils.getLanguagePartFromCode(e))>=0?"rtl":"ltr"}},{key:"createInstance",value:function(){return new t(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1?arguments[1]:void 0)}},{key:"cloneInstance",value:function(){var e=this,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:z,r=s({},this.options,i,{isClone:!0}),o=new t(r);return["store","services","language"].forEach((function(t){o[t]=e[t]})),o.services=s({},this.services),o.services.utils={hasLoadedNamespace:o.hasLoadedNamespace.bind(o)},o.translator=new R(o.services,o.options),o.translator.on("*",(function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n{t.read=function(e,t,i,n,r){var o,s,a=8*r-n-1,l=(1<>1,h=-7,u=i?r-1:0,d=i?-1:1,f=e[t+u];for(u+=d,o=f&(1<<-h)-1,f>>=-h,h+=a;h>0;o=256*o+e[t+u],u+=d,h-=8);for(s=o&(1<<-h)-1,o>>=-h,h+=n;h>0;s=256*s+e[t+u],u+=d,h-=8);if(0===o)o=1-c;else{if(o===l)return s?NaN:1/0*(f?-1:1);s+=Math.pow(2,n),o-=c}return(f?-1:1)*s*Math.pow(2,o-n)},t.write=function(e,t,i,n,r,o){var s,a,l,c=8*o-r-1,h=(1<>1,d=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:o-1,p=n?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=h):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),(t+=s+u>=1?d/l:d*Math.pow(2,1-u))*l>=2&&(s++,l/=2),s+u>=h?(a=0,s=h):s+u>=1?(a=(t*l-1)*Math.pow(2,r),s+=u):(a=t*Math.pow(2,u-1)*Math.pow(2,r),s=0));r>=8;e[i+f]=255&a,f+=p,a/=256,r-=8);for(s=s<0;e[i+f]=255&s,f+=p,s/=256,c-=8);e[i+f-p]|=128*m}},55580:(e,t,i)=>{var n=i(56110)(i(9325),"DataView");e.exports=n},21549:(e,t,i)=>{var n=i(22032),r=i(63862),o=i(66721),s=i(12749),a=i(35749);function l(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t{var n=i(63702),r=i(70080),o=i(24739),s=i(48655),a=i(31175);function l(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t{var n=i(56110)(i(9325),"Map");e.exports=n},53661:(e,t,i)=>{var n=i(63040),r=i(17670),o=i(90289),s=i(4509),a=i(72949);function l(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t{var n=i(56110)(i(9325),"Promise");e.exports=n},76545:(e,t,i)=>{var n=i(56110)(i(9325),"Set");e.exports=n},38859:(e,t,i)=>{var n=i(53661),r=i(31380),o=i(51459);function s(e){var t=-1,i=null==e?0:e.length;for(this.__data__=new n;++t{var n=i(80079),r=i(51420),o=i(90938),s=i(63605),a=i(29817),l=i(80945);function c(e){var t=this.__data__=new n(e);this.size=t.size}c.prototype.clear=r,c.prototype.delete=o,c.prototype.get=s,c.prototype.has=a,c.prototype.set=l,e.exports=c},51873:(e,t,i)=>{var n=i(9325).Symbol;e.exports=n},37828:(e,t,i)=>{var n=i(9325).Uint8Array;e.exports=n},28303:(e,t,i)=>{var n=i(56110)(i(9325),"WeakMap");e.exports=n},79770:e=>{e.exports=function(e,t){for(var i=-1,n=null==e?0:e.length,r=0,o=[];++i{var n=i(78096),r=i(72428),o=i(56449),s=i(3656),a=i(30361),l=i(37167),c=Object.prototype.hasOwnProperty;e.exports=function(e,t){var i=o(e),h=!i&&r(e),u=!i&&!h&&s(e),d=!i&&!h&&!u&&l(e),f=i||h||u||d,p=f?n(e.length,String):[],m=p.length;for(var g in e)!t&&!c.call(e,g)||f&&("length"==g||u&&("offset"==g||"parent"==g)||d&&("buffer"==g||"byteLength"==g||"byteOffset"==g)||a(g,m))||p.push(g);return p}},14528:e=>{e.exports=function(e,t){for(var i=-1,n=t.length,r=e.length;++i{e.exports=function(e,t){for(var i=-1,n=null==e?0:e.length;++i{var n=i(75288);e.exports=function(e,t){for(var i=e.length;i--;)if(n(e[i][0],t))return i;return-1}},82199:(e,t,i)=>{var n=i(14528),r=i(56449);e.exports=function(e,t,i){var o=t(e);return r(e)?o:n(o,i(e))}},72552:(e,t,i)=>{var n=i(51873),r=i(659),o=i(59350),s=n?n.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":s&&s in Object(e)?r(e):o(e)}},27534:(e,t,i)=>{var n=i(72552),r=i(40346);e.exports=function(e){return r(e)&&"[object Arguments]"==n(e)}},60270:(e,t,i)=>{var n=i(87068),r=i(40346);e.exports=function e(t,i,o,s,a){return t===i||(null==t||null==i||!r(t)&&!r(i)?t!=t&&i!=i:n(t,i,o,s,e,a))}},87068:(e,t,i)=>{var n=i(37217),r=i(25911),o=i(21986),s=i(50689),a=i(5861),l=i(56449),c=i(3656),h=i(37167),u="[object Arguments]",d="[object Array]",f="[object Object]",p=Object.prototype.hasOwnProperty;e.exports=function(e,t,i,m,g,v){var y=l(e),b=l(t),x=y?d:a(e),_=b?d:a(t),E=(x=x==u?f:x)==f,S=(_=_==u?f:_)==f,A=x==_;if(A&&c(e)){if(!c(t))return!1;y=!0,E=!1}if(A&&!E)return v||(v=new n),y||h(e)?r(e,t,i,m,g,v):o(e,t,x,i,m,g,v);if(!(1&i)){var w=E&&p.call(e,"__wrapped__"),T=S&&p.call(t,"__wrapped__");if(w||T){var M=w?e.value():e,C=T?t.value():t;return v||(v=new n),g(M,C,i,m,v)}}return!!A&&(v||(v=new n),s(e,t,i,m,g,v))}},45083:(e,t,i)=>{var n=i(1882),r=i(87296),o=i(23805),s=i(47473),a=/^\[object .+?Constructor\]$/,l=Function.prototype,c=Object.prototype,h=l.toString,u=c.hasOwnProperty,d=RegExp("^"+h.call(u).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!o(e)||r(e))&&(n(e)?d:a).test(s(e))}},4901:(e,t,i)=>{var n=i(72552),r=i(30294),o=i(40346),s={};s["[object Float32Array]"]=s["[object Float64Array]"]=s["[object Int8Array]"]=s["[object Int16Array]"]=s["[object Int32Array]"]=s["[object Uint8Array]"]=s["[object Uint8ClampedArray]"]=s["[object Uint16Array]"]=s["[object Uint32Array]"]=!0,s["[object Arguments]"]=s["[object Array]"]=s["[object ArrayBuffer]"]=s["[object Boolean]"]=s["[object DataView]"]=s["[object Date]"]=s["[object Error]"]=s["[object Function]"]=s["[object Map]"]=s["[object Number]"]=s["[object Object]"]=s["[object RegExp]"]=s["[object Set]"]=s["[object String]"]=s["[object WeakMap]"]=!1,e.exports=function(e){return o(e)&&r(e.length)&&!!s[n(e)]}},88984:(e,t,i)=>{var n=i(55527),r=i(3650),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!n(e))return r(e);var t=[];for(var i in Object(e))o.call(e,i)&&"constructor"!=i&&t.push(i);return t}},78096:e=>{e.exports=function(e,t){for(var i=-1,n=Array(e);++i{var n=i(31800),r=/^\s+/;e.exports=function(e){return e?e.slice(0,n(e)+1).replace(r,""):e}},27301:e=>{e.exports=function(e){return function(t){return e(t)}}},19219:e=>{e.exports=function(e,t){return e.has(t)}},55481:(e,t,i)=>{var n=i(9325)["__core-js_shared__"];e.exports=n},25911:(e,t,i)=>{var n=i(38859),r=i(14248),o=i(19219);e.exports=function(e,t,i,s,a,l){var c=1&i,h=e.length,u=t.length;if(h!=u&&!(c&&u>h))return!1;var d=l.get(e),f=l.get(t);if(d&&f)return d==t&&f==e;var p=-1,m=!0,g=2&i?new n:void 0;for(l.set(e,t),l.set(t,e);++p{var n=i(51873),r=i(37828),o=i(75288),s=i(25911),a=i(20317),l=i(84247),c=n?n.prototype:void 0,h=c?c.valueOf:void 0;e.exports=function(e,t,i,n,c,u,d){switch(i){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!u(new r(e),new r(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return o(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var f=a;case"[object Set]":var p=1&n;if(f||(f=l),e.size!=t.size&&!p)return!1;var m=d.get(e);if(m)return m==t;n|=2,d.set(e,t);var g=s(f(e),f(t),n,c,u,d);return d.delete(e),g;case"[object Symbol]":if(h)return h.call(e)==h.call(t)}return!1}},50689:(e,t,i)=>{var n=i(50002),r=Object.prototype.hasOwnProperty;e.exports=function(e,t,i,o,s,a){var l=1&i,c=n(e),h=c.length;if(h!=n(t).length&&!l)return!1;for(var u=h;u--;){var d=c[u];if(!(l?d in t:r.call(t,d)))return!1}var f=a.get(e),p=a.get(t);if(f&&p)return f==t&&p==e;var m=!0;a.set(e,t),a.set(t,e);for(var g=l;++u{var n="object"==typeof i.g&&i.g&&i.g.Object===Object&&i.g;e.exports=n},50002:(e,t,i)=>{var n=i(82199),r=i(4664),o=i(95950);e.exports=function(e){return n(e,o,r)}},12651:(e,t,i)=>{var n=i(74218);e.exports=function(e,t){var i=e.__data__;return n(t)?i["string"==typeof t?"string":"hash"]:i.map}},56110:(e,t,i)=>{var n=i(45083),r=i(10392);e.exports=function(e,t){var i=r(e,t);return n(i)?i:void 0}},659:(e,t,i)=>{var n=i(51873),r=Object.prototype,o=r.hasOwnProperty,s=r.toString,a=n?n.toStringTag:void 0;e.exports=function(e){var t=o.call(e,a),i=e[a];try{e[a]=void 0;var n=!0}catch(e){}var r=s.call(e);return n&&(t?e[a]=i:delete e[a]),r}},4664:(e,t,i)=>{var n=i(79770),r=i(63345),o=Object.prototype.propertyIsEnumerable,s=Object.getOwnPropertySymbols,a=s?function(e){return null==e?[]:(e=Object(e),n(s(e),(function(t){return o.call(e,t)})))}:r;e.exports=a},5861:(e,t,i)=>{var n=i(55580),r=i(68223),o=i(32804),s=i(76545),a=i(28303),l=i(72552),c=i(47473),h="[object Map]",u="[object Promise]",d="[object Set]",f="[object WeakMap]",p="[object DataView]",m=c(n),g=c(r),v=c(o),y=c(s),b=c(a),x=l;(n&&x(new n(new ArrayBuffer(1)))!=p||r&&x(new r)!=h||o&&x(o.resolve())!=u||s&&x(new s)!=d||a&&x(new a)!=f)&&(x=function(e){var t=l(e),i="[object Object]"==t?e.constructor:void 0,n=i?c(i):"";if(n)switch(n){case m:return p;case g:return h;case v:return u;case y:return d;case b:return f}return t}),e.exports=x},10392:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},22032:(e,t,i)=>{var n=i(81042);e.exports=function(){this.__data__=n?n(null):{},this.size=0}},63862:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},66721:(e,t,i)=>{var n=i(81042),r=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(n){var i=t[e];return"__lodash_hash_undefined__"===i?void 0:i}return r.call(t,e)?t[e]:void 0}},12749:(e,t,i)=>{var n=i(81042),r=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return n?void 0!==t[e]:r.call(t,e)}},35749:(e,t,i)=>{var n=i(81042);e.exports=function(e,t){var i=this.__data__;return this.size+=this.has(e)?0:1,i[e]=n&&void 0===t?"__lodash_hash_undefined__":t,this}},30361:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,i){var n=typeof e;return!!(i=null==i?9007199254740991:i)&&("number"==n||"symbol"!=n&&t.test(e))&&e>-1&&e%1==0&&e{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},87296:(e,t,i)=>{var n,r=i(55481),o=(n=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"";e.exports=function(e){return!!o&&o in e}},55527:e=>{var t=Object.prototype;e.exports=function(e){var i=e&&e.constructor;return e===("function"==typeof i&&i.prototype||t)}},63702:e=>{e.exports=function(){this.__data__=[],this.size=0}},70080:(e,t,i)=>{var n=i(26025),r=Array.prototype.splice;e.exports=function(e){var t=this.__data__,i=n(t,e);return!(i<0)&&(i==t.length-1?t.pop():r.call(t,i,1),--this.size,!0)}},24739:(e,t,i)=>{var n=i(26025);e.exports=function(e){var t=this.__data__,i=n(t,e);return i<0?void 0:t[i][1]}},48655:(e,t,i)=>{var n=i(26025);e.exports=function(e){return n(this.__data__,e)>-1}},31175:(e,t,i)=>{var n=i(26025);e.exports=function(e,t){var i=this.__data__,r=n(i,e);return r<0?(++this.size,i.push([e,t])):i[r][1]=t,this}},63040:(e,t,i)=>{var n=i(21549),r=i(80079),o=i(68223);e.exports=function(){this.size=0,this.__data__={hash:new n,map:new(o||r),string:new n}}},17670:(e,t,i)=>{var n=i(12651);e.exports=function(e){var t=n(this,e).delete(e);return this.size-=t?1:0,t}},90289:(e,t,i)=>{var n=i(12651);e.exports=function(e){return n(this,e).get(e)}},4509:(e,t,i)=>{var n=i(12651);e.exports=function(e){return n(this,e).has(e)}},72949:(e,t,i)=>{var n=i(12651);e.exports=function(e,t){var i=n(this,e),r=i.size;return i.set(e,t),this.size+=i.size==r?0:1,this}},20317:e=>{e.exports=function(e){var t=-1,i=Array(e.size);return e.forEach((function(e,n){i[++t]=[n,e]})),i}},81042:(e,t,i)=>{var n=i(56110)(Object,"create");e.exports=n},3650:(e,t,i)=>{var n=i(74335)(Object.keys,Object);e.exports=n},86009:(e,t,i)=>{e=i.nmd(e);var n=i(34840),r=t&&!t.nodeType&&t,o=r&&e&&!e.nodeType&&e,s=o&&o.exports===r&&n.process,a=function(){try{var e=o&&o.require&&o.require("util").types;return e||s&&s.binding&&s.binding("util")}catch(e){}}();e.exports=a},59350:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},74335:e=>{e.exports=function(e,t){return function(i){return e(t(i))}}},9325:(e,t,i)=>{var n=i(34840),r="object"==typeof self&&self&&self.Object===Object&&self,o=n||r||Function("return this")();e.exports=o},31380:e=>{e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},51459:e=>{e.exports=function(e){return this.__data__.has(e)}},84247:e=>{e.exports=function(e){var t=-1,i=Array(e.size);return e.forEach((function(e){i[++t]=e})),i}},51420:(e,t,i)=>{var n=i(80079);e.exports=function(){this.__data__=new n,this.size=0}},90938:e=>{e.exports=function(e){var t=this.__data__,i=t.delete(e);return this.size=t.size,i}},63605:e=>{e.exports=function(e){return this.__data__.get(e)}},29817:e=>{e.exports=function(e){return this.__data__.has(e)}},80945:(e,t,i)=>{var n=i(80079),r=i(68223),o=i(53661);e.exports=function(e,t){var i=this.__data__;if(i instanceof n){var s=i.__data__;if(!r||s.length<199)return s.push([e,t]),this.size=++i.size,this;i=this.__data__=new o(s)}return i.set(e,t),this.size=i.size,this}},47473:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},31800:e=>{var t=/\s/;e.exports=function(e){for(var i=e.length;i--&&t.test(e.charAt(i)););return i}},38221:(e,t,i)=>{var n=i(23805),r=i(10124),o=i(99374),s=Math.max,a=Math.min;e.exports=function(e,t,i){var l,c,h,u,d,f,p=0,m=!1,g=!1,v=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function y(t){var i=l,n=c;return l=c=void 0,p=t,u=e.apply(n,i)}function b(e){var i=e-f;return void 0===f||i>=t||i<0||g&&e-p>=h}function x(){var e=r();if(b(e))return _(e);d=setTimeout(x,function(e){var i=t-(e-f);return g?a(i,h-(e-p)):i}(e))}function _(e){return d=void 0,v&&l?y(e):(l=c=void 0,u)}function E(){var e=r(),i=b(e);if(l=arguments,c=this,f=e,i){if(void 0===d)return function(e){return p=e,d=setTimeout(x,t),m?y(e):u}(f);if(g)return clearTimeout(d),d=setTimeout(x,t),y(f)}return void 0===d&&(d=setTimeout(x,t)),u}return t=o(t)||0,n(i)&&(m=!!i.leading,h=(g="maxWait"in i)?s(o(i.maxWait)||0,t):h,v="trailing"in i?!!i.trailing:v),E.cancel=function(){void 0!==d&&clearTimeout(d),p=0,l=f=c=d=void 0},E.flush=function(){return void 0===d?u:_(r())},E}},75288:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},72428:(e,t,i)=>{var n=i(27534),r=i(40346),o=Object.prototype,s=o.hasOwnProperty,a=o.propertyIsEnumerable,l=n(function(){return arguments}())?n:function(e){return r(e)&&s.call(e,"callee")&&!a.call(e,"callee")};e.exports=l},56449:e=>{var t=Array.isArray;e.exports=t},64894:(e,t,i)=>{var n=i(1882),r=i(30294);e.exports=function(e){return null!=e&&r(e.length)&&!n(e)}},3656:(e,t,i)=>{e=i.nmd(e);var n=i(9325),r=i(89935),o=t&&!t.nodeType&&t,s=o&&e&&!e.nodeType&&e,a=s&&s.exports===o?n.Buffer:void 0,l=(a?a.isBuffer:void 0)||r;e.exports=l},2404:(e,t,i)=>{var n=i(60270);e.exports=function(e,t){return n(e,t)}},1882:(e,t,i)=>{var n=i(72552),r=i(23805);e.exports=function(e){if(!r(e))return!1;var t=n(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},30294:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},23805:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},40346:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},44394:(e,t,i)=>{var n=i(72552),r=i(40346);e.exports=function(e){return"symbol"==typeof e||r(e)&&"[object Symbol]"==n(e)}},37167:(e,t,i)=>{var n=i(4901),r=i(27301),o=i(86009),s=o&&o.isTypedArray,a=s?r(s):n;e.exports=a},95950:(e,t,i)=>{var n=i(70695),r=i(88984),o=i(64894);e.exports=function(e){return o(e)?n(e):r(e)}},10124:(e,t,i)=>{var n=i(9325);e.exports=function(){return n.Date.now()}},63345:e=>{e.exports=function(){return[]}},89935:e=>{e.exports=function(){return!1}},99374:(e,t,i)=>{var n=i(54128),r=i(23805),o=i(44394),s=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(o(e))return NaN;if(r(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=r(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=n(e);var i=a.test(e);return i||l.test(e)?c(e.slice(2),i?2:8):s.test(e)?NaN:+e}},51436:e=>{function t(){this.pending=0,this.max=1/0,this.listeners=[],this.waiting=[],this.error=null}function i(e){e.pending+=1;var t=!1;return function(r){if(t)throw new Error("callback called twice");if(t=!0,e.error=e.error||r,e.pending-=1,e.waiting.length>0&&e.pending{"use strict";i.r(t),i.d(t,{UniformGroup:()=>h,getDefaultSampler:()=>c});var n,r=i(19698),o=i(26027);function s(e){switch(e){case n.f32:case n.i32:return 1;case n.vec2f:return 2;case n.vec3f:return 3;case n.vec4f:return 4;case n.mat3x3f:return 12;default:throw new Error(`Unknown uniform type: ${e}`)}}function a(e,t,i,r){switch(i){case n.f32:e.setFloat(t,r);break;case n.i32:e.setInt(t,r);break;case n.vec2f:e.setFloat2(t,r.x,r.y);break;case n.vec3f:e.setVector3(t,r);break;case n.vec4f:e.setVector4(t,r);break;case n.mat3x3f:e.setMatrix3x3(t,r);break;default:throw new Error(`Unknown uniform type: ${i}`)}}function l(e,t){const i={},n=function(e,t){let i=0;for(const n in e){const r=e[n];t&&(t[n]=i),i+=s(r)}return i}(e,i),o=Boolean(t&GPUShaderStage.FRAGMENT),a=Boolean(t&GPUShaderStage.VERTEX);return{buffer:new r.D(void 0,n,o,a),offsets:i}}function c(){return{addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",addressModeW:"clamp-to-edge",magFilter:"linear",minFilter:"linear",mipmapFilter:"linear",lodMinClamp:0,lodMaxClamp:10,maxAnisotropy:16}}!function(e){e.f32="f32",e.i32="i32",e.vec2f="vec2f",e.vec3f="vec3f",e.vec4f="vec4f",e.mat3x3f="mat3x3f"}(n||(n={}));class h{#oo=new Map;#so=new Map;#ao=new Map;#lo;#wt;#Lt;#co;#Pt;#ho;#uo=!1;constructor(){}setDefaultTexture(e){const t=e?.createView();e!=this.#Pt&&(this.#so.forEach((e=>{!e.texture&&e.bindGroupEntry?.resource&&(e.bindGroupEntry.resource=t,this.#Lt=null)})),(0,o.el)(this.#Pt),(0,o.rL)(e),this.#Pt=e||null,this.#ho=t||null)}addUniformBuffer(e,t,i=GPUShaderStage.FRAGMENT|GPUShaderStage.VERTEX){if(this.#do(e))return;const n={uniformBufferLayout:t,uniformBufferValues:{},layoutEntry:{binding:e,visibility:i,buffer:{}},needsUpload:!0,bindGroupEntry:null,uniformBuffer:null,offsets:null};this.#oo.set(e,n),this.#fo()}addTexture(e,t,i=GPUShaderStage.FRAGMENT,n="float"){if(this.#do(e))return;const r={binding:e,visibility:i,texture:{sampleType:n}},o={texture:t,textureView:t?.createView()||null,layoutEntry:r,bindGroupEntry:null};this.#so.set(e,o),this.#fo()}addSampler(e,t=GPUShaderStage.FRAGMENT,i={addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",addressModeW:"clamp-to-edge",magFilter:"linear",minFilter:"linear",mipmapFilter:"linear",lodMinClamp:0,lodMaxClamp:10,maxAnisotropy:16},n={}){if(this.#do(e))return;const r={samplerDesc:i,layoutEntry:{binding:e,visibility:t,sampler:n},sampler:null,bindGroupEntry:null};this.#ao.set(e,r),this.#fo()}setUniformBufferValues(e,t=0){const i=this.#oo.get(t);if(i){for(const t in e){const n=i.uniformBufferLayout[t];n?(i.uniformBufferValues[t]=e[t],i.uniformBuffer&&a(i.uniformBuffer,i.offsets[t],n,e[t])):console.error("Uniform name not found in the UniformBufferLayout: ",t)}i.needsUpload=!0,this.#uo=!0}else console.error("Uniform buffer not found for binding: ",t)}setTexture(e,t){const i=this.#so.get(t);i?((0,o.el)(i.texture),(0,o.rL)(e),i.texture=e,i.textureView=e?.createView()||this.#ho,i.bindGroupEntry&&(i.bindGroupEntry.resource=i.textureView),this.#Lt=null):console.error("Texture not found for binding: ",t)}isAssigned(e){return void 0!==this.#po(e)}update(e){this.#wt||(this.#mo(e),this.#go(e),this.#vo(e)),this.#yo(e),this.#bo()}get layout(){return this.#wt}get bindGroup(){return this.#Lt}#go(e){for(const t of this.#oo.values()){(!t.uniformBuffer||!t.offsets)&&(this.#xo(e,t),this.#_o(t))}}#xo(e,t){const{buffer:i,offsets:n}=l(t.uniformBufferLayout,t.layoutEntry.visibility);i.setDevice(e),t.uniformBuffer=i,t.offsets=n}#_o(e){for(const t in e.uniformBufferValues){const i=e.uniformBufferLayout[t];a(e.uniformBuffer,e.offsets[t],i,e.uniformBufferValues[t]),e.uniformBuffer.upload(),e.needsUpload=!1}}#vo(e){this.#ao.forEach((t=>{t.sampler||(t.sampler=e.createSampler(t.samplerDesc))}))}#mo(e){const t=[];for(const e of this.#oo.values())t.push(e.layoutEntry);for(const e of this.#so.values())t.push(e.layoutEntry);for(const e of this.#ao.values())t.push(e.layoutEntry);this.#lo={entries:t},this.#wt=e.createBindGroupLayout(this.#lo)}#yo(e){this.#co||this.#Eo(),this.#Lt||(this.#Lt=e.createBindGroup({layout:this.#wt,entries:this.#co}))}#So(e){const t=e.uniformBuffer?.getBuffer(),i=e.textureView,n=e.sampler;return t?{buffer:t}:i||(n||null)}#Ao(e){const t={binding:e.layoutEntry.binding,resource:this.#So(e)};this.#co.push(t),e.bindGroupEntry=t}#Eo(){this.#co=[];for(const e of this.#oo.values())this.#Ao(e);for(const e of this.#so.values())e.textureView||this.#ho||console.error(`Texture is missing for binding: ${e.layoutEntry.binding}. Null textures are only allowed if a default texture is provided`),this.#Ao(e);for(const e of this.#ao.values())this.#Ao(e)}#wo(){this.#lo=null,this.#wt=null,this.#Lt=null,this.#oo.forEach((e=>{e.bindGroupEntry=null,e.uniformBuffer=null,e.offsets=null})),this.#so.forEach((e=>{e.bindGroupEntry=null})),this.#ao.forEach((e=>{e.bindGroupEntry=null}))}#fo(){this.#wo()}#po(e){const t=this.#oo.get(e),i=this.#so.get(e),n=this.#ao.get(e);return t||i||n}#do(e){return!!this.#po(e)&&(console.error("Binding ",e," is assigned."),!0)}#bo(){if(this.#uo){for(const e of this.#oo.values())e.needsUpload&&e.uniformBuffer.upload();this.#uo=!1}}}},65796:e=>{"use strict";e.exports="\n//https://www.shadertoy.com/view/ltc3zl\n//https://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/\n\n//Packs a float in the range 0-1 to an RGBA8\nfn packDepth( depth: f32 ) -> vec4f {\n var enc = vec4f(1.0, 255.0, 65025.0, 16581375.0) * depth;\n enc = fract(enc);\n enc -= enc.yzww * vec4(1.0/255.0,1.0/255.0,1.0/255.0,0.0);\n return enc;\n}\n\n//Used to unpack depth value when input depth texture is RGBA8\nfn unpackDepth( rgba_depth: vec4f ) -> f32 {\n return dot( rgba_depth, vec4(1.0, 1.0/255.0, 1.0/65025.0, 1.0/16581375.0) );\n}\n\n//Packs a float in the range 0-1 to an RGB8\nfn packDepth3( depth: f32 ) -> vec3f {\n var enc = vec3f(1.0, 255.0, 65025.0) * depth;\n enc = fract(enc);\n enc -= vec3f(enc.yz, 0.0) * vec3f(1.0/255.0 ,1.0/255.0, 0.0);\n return enc;\n}\n\n//Used to unpack depth value when input depth texture is RGB8\nfn unpackDepth3( rgba_depth: vec3f ) -> f32 {\n return dot( rgba_depth, vec3f(1.0, 1.0/255.0, 1.0/65025.0) );\n}\n\n//Packs depth in the range 0-1 in an RGB10\nfn packDepth10( depth: f32 ) -> vec3f {\n var enc = vec3f(1.0, 1023.0, 1023.0 * 1023.0) * depth;\n enc = fract(enc);\n enc -= vec3f(enc.yz, 0.0) * vec3f(1.0/1023.0 ,1.0/1023.0, 0.0);\n return enc;\n}\n\n//Used to unpack depth value when input depth texture is RGB10A2\nfn unpackDepth10( rgba_depth: vec3f ) -> f32 {\n return dot( rgba_depth, vec3f(1.0, 1.0/1023.0, 1.0/(1023.0*1023.0)) );\n}\n\n//Pack view space normal for use in rgb10unorm target\n//Packing the sign bits into the spare B component gives us\n//an extra bit of precision, until we need to pack something else into\n//that component. The difference in the SSAO output is not really visible\nfn packNormal10( normal: vec3f) -> vec3f {\n/*\n\t//we keep the absolute values of the x and y components (z is derived)\n\tvar res = abs(normal);\n\n\t//pack the sign bits of the x and y components into the z component\n\tvar sxIsNeg = clamp(-sign(res.x), 0.0, 1.0);\n\tvar syIsNeg = clamp(-sign(res.y), 0.0, 1.0);\n\tres.z = (sxIsNeg + 2.0 * syIsNeg) * 0.25;\n*/\n\tvar res = normal * 0.5 + vec3f(0.5);\n\n\treturn res;\n}\n\nfn unpackNormal10( value: vec3f) -> vec3f {\n/*\n\tvar res = value;\n\tvar signs = value.z * 4.0;\n\t//There's probably more efficient way to retrieve this\n\tif (signs >= 2.0) {\n\t\tres.y = -res.y;\n\t}\n\tif (signs == 1.0 || signs == 3.0) {\n\t\tres.x = -res.x;\n\t}\n\tres.z = sqrt(1.0 - dot(res.xy, res.xy));\n*/\n\tvar res = (value - vec3f(0.5)) * 2.0;\n\n\treturn res;\n}\n"},43851:e=>{"use strict";e.exports="\nstruct VertexOutput {\n\t@builtin(position) position: vec4f,\n\t@location(0) @interpolate(linear) vUv: vec2f\n}\n\n@vertex\nfn main(\n @builtin(vertex_index) VertexIndex : u32\n) -> VertexOutput {\n\n\t//Instead of using a screen quad we use a large triangle -- this is slightly\n\t//faster (~6% measured in our specific case), due to better cache coherency. See this article:\n\t//http://michaldrobot.com/2014/04/01/gcn-execution-patterns-in-full-screen-passes/\n\n\tconst pos = array(\n\t\tvec2f(-1.0, -1.0),\n\t\tvec2f( 3.0, -1.0),\n\t\tvec2f(-1.0, 3.0),\n\t);\n\tconst uv = array(\n\t\tvec2f(0.0, 0.0),\n\t\tvec2f(2.0, 0.0),\n\t\tvec2f(0.0, 2.0),\n\t);\n\n\tvar output: VertexOutput;\n\toutput.position = vec4f(pos[VertexIndex], 0.0, 1.0);\n\toutput.vUv = uv[VertexIndex];\n\n\treturn output;\n}\n\n@vertex\nfn mainFlipY(\n @builtin(vertex_index) VertexIndex : u32\n) -> VertexOutput {\n\n\t//Instead of using a screen quad we use a large triangle -- this is slightly\n\t//faster (~6% measured in our specific case), due to better cache coherency. See this article:\n\t//http://michaldrobot.com/2014/04/01/gcn-execution-patterns-in-full-screen-passes/\n\n\tconst pos = array(\n\t\tvec2f(-1.0, -1.0),\n\t\tvec2f( 3.0, -1.0),\n\t\tvec2f(-1.0, 3.0),\n\t);\n\tconst uv = array(\n\t\tvec2f(0.0, 1.0),\n\t\tvec2f(2.0, 1.0),\n\t\tvec2f(0.0, -1.0),\n\t);\n\n\tvar output: VertexOutput;\n\toutput.position = vec4f(pos[VertexIndex], 0.0, 1.0);\n\toutput.vUv = uv[VertexIndex];\n\n\treturn output;\n}"},86059:e=>{"use strict";e.exports="DELETED_WORKERNODE"},39709:()=>{},50684:()=>{},9631:()=>{},18215:()=>{},90315:()=>{},79306:(e,t,i)=>{"use strict";var n=i(94901),r=i(16823),o=TypeError;e.exports=function(e){if(n(e))return e;throw new o(r(e)+" is not a function")}},36194:(e,t,i)=>{"use strict";var n=i(72248).has;e.exports=function(e){return n(e),e}},73506:(e,t,i)=>{"use strict";var n=i(13925),r=String,o=TypeError;e.exports=function(e){if(n(e))return e;throw new o("Can't set "+r(e)+" as a prototype")}},97080:(e,t,i)=>{"use strict";var n=i(94402).has;e.exports=function(e){return n(e),e}},76557:(e,t,i)=>{"use strict";var n=i(44995).has;e.exports=function(e){return n(e),e}},23755:(e,t,i)=>{"use strict";var n=i(88205).has;e.exports=function(e){return n(e),e}},6469:(e,t,i)=>{"use strict";var n=i(78227),r=i(2360),o=i(24913).f,s=n("unscopables"),a=Array.prototype;void 0===a[s]&&o(a,s,{configurable:!0,value:r(null)}),e.exports=function(e){a[s][e]=!0}},90679:(e,t,i)=>{"use strict";var n=i(1625),r=TypeError;e.exports=function(e,t){if(n(t,e))return e;throw new r("Incorrect invocation")}},28551:(e,t,i)=>{"use strict";var n=i(20034),r=String,o=TypeError;e.exports=function(e){if(n(e))return e;throw new o(r(e)+" is not an object")}},77811:e=>{"use strict";e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},15652:(e,t,i)=>{"use strict";var n=i(79039);e.exports=n((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}}))},94644:(e,t,i)=>{"use strict";var n,r,o,s=i(77811),a=i(43724),l=i(24475),c=i(94901),h=i(20034),u=i(39297),d=i(36955),f=i(16823),p=i(66699),m=i(36840),g=i(62106),v=i(1625),y=i(42787),b=i(52967),x=i(78227),_=i(33392),E=i(91181),S=E.enforce,A=E.get,w=l.Int8Array,T=w&&w.prototype,M=l.Uint8ClampedArray,C=M&&M.prototype,P=w&&y(w),D=T&&y(T),L=Object.prototype,I=l.TypeError,R=x("toStringTag"),O=_("TYPED_ARRAY_TAG"),N="TypedArrayConstructor",F=s&&!!b&&"Opera"!==d(l.opera),U=!1,B={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},k={BigInt64Array:8,BigUint64Array:8},V=function(e){var t=y(e);if(h(t)){var i=A(t);return i&&u(i,N)?i[N]:V(t)}},G=function(e){if(!h(e))return!1;var t=d(e);return u(B,t)||u(k,t)};for(n in B)(o=(r=l[n])&&r.prototype)?S(o)[N]=r:F=!1;for(n in k)(o=(r=l[n])&&r.prototype)&&(S(o)[N]=r);if((!F||!c(P)||P===Function.prototype)&&(P=function(){throw new I("Incorrect invocation")},F))for(n in B)l[n]&&b(l[n],P);if((!F||!D||D===L)&&(D=P.prototype,F))for(n in B)l[n]&&b(l[n].prototype,D);if(F&&y(C)!==D&&b(C,D),a&&!u(D,R))for(n in U=!0,g(D,R,{configurable:!0,get:function(){return h(this)?this[O]:void 0}}),B)l[n]&&p(l[n],O,n);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:F,TYPED_ARRAY_TAG:U&&O,aTypedArray:function(e){if(G(e))return e;throw new I("Target is not a typed array")},aTypedArrayConstructor:function(e){if(c(e)&&(!b||v(P,e)))return e;throw new I(f(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,i,n){if(a){if(i)for(var r in B){var o=l[r];if(o&&u(o.prototype,e))try{delete o.prototype[e]}catch(i){try{o.prototype[e]=t}catch(e){}}}D[e]&&!i||m(D,e,i?t:F&&T[e]||t,n)}},exportTypedArrayStaticMethod:function(e,t,i){var n,r;if(a){if(b){if(i)for(n in B)if((r=l[n])&&u(r,e))try{delete r[e]}catch(e){}if(P[e]&&!i)return;try{return m(P,e,i?t:F&&P[e]||t)}catch(e){}}for(n in B)!(r=l[n])||r[e]&&!i||m(r,e,t)}},getTypedArrayConstructor:V,isView:function(e){if(!h(e))return!1;var t=d(e);return"DataView"===t||u(B,t)||u(k,t)},isTypedArray:G,TypedArray:P,TypedArrayPrototype:D}},19617:(e,t,i)=>{"use strict";var n=i(25397),r=i(35610),o=i(26198),s=function(e){return function(t,i,s){var a=n(t),l=o(a);if(0===l)return!e&&-1;var c,h=r(s,l);if(e&&i!=i){for(;l>h;)if((c=a[h++])!=c)return!0}else for(;l>h;h++)if((e||h in a)&&a[h]===i)return e||h||0;return!e&&-1}};e.exports={includes:s(!0),indexOf:s(!1)}},59213:(e,t,i)=>{"use strict";var n=i(76080),r=i(79504),o=i(47055),s=i(48981),a=i(26198),l=i(1469),c=r([].push),h=function(e){var t=1===e,i=2===e,r=3===e,h=4===e,u=6===e,d=7===e,f=5===e||u;return function(p,m,g,v){for(var y,b,x=s(p),_=o(x),E=a(_),S=n(m,g),A=0,w=v||l,T=t?w(p,E):i||d?w(p,0):void 0;E>A;A++)if((f||A in _)&&(b=S(y=_[A],A,x),e))if(t)T[A]=b;else if(b)switch(e){case 3:return!0;case 5:return y;case 6:return A;case 2:c(T,y)}else switch(e){case 4:return!1;case 7:c(T,y)}return u?-1:r||h?h:T}};e.exports={forEach:h(0),map:h(1),filter:h(2),some:h(3),every:h(4),find:h(5),findIndex:h(6),filterReject:h(7)}},67680:(e,t,i)=>{"use strict";var n=i(79504);e.exports=n([].slice)},87433:(e,t,i)=>{"use strict";var n=i(34376),r=i(33517),o=i(20034),s=i(78227)("species"),a=Array;e.exports=function(e){var t;return n(e)&&(t=e.constructor,(r(t)&&(t===a||n(t.prototype))||o(t)&&null===(t=t[s]))&&(t=void 0)),void 0===t?a:t}},1469:(e,t,i)=>{"use strict";var n=i(87433);e.exports=function(e,t){return new(n(e))(0===t?0:t)}},79565:(e,t,i)=>{"use strict";var n=i(79504),r=i(79306),o=i(64117),s=i(26198),a=i(48981),l=i(72248),c=i(26223),h=l.Map,u=l.has,d=l.set,f=n([].push);e.exports=function(e){var t,i,n,l=a(this),p=s(l),m=[],g=new h,v=o(e)?function(e){return e}:r(e);for(t=0;t{"use strict";var n=i(78227)("iterator"),r=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){r=!0}};s[n]=function(){return this},Array.from(s,(function(){throw 2}))}catch(e){}e.exports=function(e,t){try{if(!t&&!r)return!1}catch(e){return!1}var i=!1;try{var o={};o[n]=function(){return{next:function(){return{done:i=!0}}}},e(o)}catch(e){}return i}},44576:(e,t,i)=>{"use strict";var n=i(79504),r=n({}.toString),o=n("".slice);e.exports=function(e){return o(r(e),8,-1)}},36955:(e,t,i)=>{"use strict";var n=i(92140),r=i(94901),o=i(44576),s=i(78227)("toStringTag"),a=Object,l="Arguments"===o(function(){return arguments}());e.exports=n?o:function(e){var t,i,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(i=function(e,t){try{return e[t]}catch(e){}}(t=a(e),s))?i:l?o(t):"Object"===(n=o(t))&&r(t.callee)?"Arguments":n}},70933:(e,t,i)=>{"use strict";var n=i(76080),r=i(28551),o=i(48981),s=i(72652);e.exports=function(e,t,i){return function(a){var l=o(a),c=arguments.length,h=c>1?arguments[1]:void 0,u=void 0!==h,d=u?n(h,c>2?arguments[2]:void 0):void 0,f=new e,p=0;return s(l,(function(e){var n=u?d(e,p++):e;i?t(f,r(n)[0],n[1]):t(f,n)})),f}}},87500:(e,t,i)=>{"use strict";var n=i(28551);e.exports=function(e,t,i){return function(){for(var r=new e,o=arguments.length,s=0;s{"use strict";var n=i(2360),r=i(62106),o=i(56279),s=i(76080),a=i(90679),l=i(64117),c=i(72652),h=i(51088),u=i(62529),d=i(87633),f=i(43724),p=i(3451).fastKey,m=i(91181),g=m.set,v=m.getterFor;e.exports={getConstructor:function(e,t,i,h){var u=e((function(e,r){a(e,d),g(e,{type:t,index:n(null),first:void 0,last:void 0,size:0}),f||(e.size=0),l(r)||c(r,e[h],{that:e,AS_ENTRIES:i})})),d=u.prototype,m=v(t),y=function(e,t,i){var n,r,o=m(e),s=b(e,t);return s?s.value=i:(o.last=s={index:r=p(t,!0),key:t,value:i,previous:n=o.last,next:void 0,removed:!1},o.first||(o.first=s),n&&(n.next=s),f?o.size++:e.size++,"F"!==r&&(o.index[r]=s)),e},b=function(e,t){var i,n=m(e),r=p(t);if("F"!==r)return n.index[r];for(i=n.first;i;i=i.next)if(i.key===t)return i};return o(d,{clear:function(){for(var e=m(this),t=e.first;t;)t.removed=!0,t.previous&&(t.previous=t.previous.next=void 0),t=t.next;e.first=e.last=void 0,e.index=n(null),f?e.size=0:this.size=0},delete:function(e){var t=this,i=m(t),n=b(t,e);if(n){var r=n.next,o=n.previous;delete i.index[n.index],n.removed=!0,o&&(o.next=r),r&&(r.previous=o),i.first===n&&(i.first=r),i.last===n&&(i.last=o),f?i.size--:t.size--}return!!n},forEach:function(e){for(var t,i=m(this),n=s(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:i.first;)for(n(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!b(this,e)}}),o(d,i?{get:function(e){var t=b(this,e);return t&&t.value},set:function(e,t){return y(this,0===e?0:e,t)}}:{add:function(e){return y(this,e=0===e?0:e,e)}}),f&&r(d,"size",{configurable:!0,get:function(){return m(this).size}}),u},setStrong:function(e,t,i){var n=t+" Iterator",r=v(t),o=v(n);h(e,t,(function(e,t){g(this,{type:n,target:e,state:r(e),kind:t,last:void 0})}),(function(){for(var e=o(this),t=e.kind,i=e.last;i&&i.removed;)i=i.previous;return e.target&&(e.last=i=i?i.next:e.state.first)?u("keys"===t?i.key:"values"===t?i.value:[i.key,i.value],!1):(e.target=void 0,u(void 0,!0))}),i?"entries":"values",!i,!0),d(t)}}},91625:(e,t,i)=>{"use strict";var n=i(79504),r=i(56279),o=i(3451).getWeakData,s=i(90679),a=i(28551),l=i(64117),c=i(20034),h=i(72652),u=i(59213),d=i(39297),f=i(91181),p=f.set,m=f.getterFor,g=u.find,v=u.findIndex,y=n([].splice),b=0,x=function(e){return e.frozen||(e.frozen=new _)},_=function(){this.entries=[]},E=function(e,t){return g(e.entries,(function(e){return e[0]===t}))};_.prototype={get:function(e){var t=E(this,e);if(t)return t[1]},has:function(e){return!!E(this,e)},set:function(e,t){var i=E(this,e);i?i[1]=t:this.entries.push([e,t])},delete:function(e){var t=v(this.entries,(function(t){return t[0]===e}));return~t&&y(this.entries,t,1),!!~t}},e.exports={getConstructor:function(e,t,i,n){var u=e((function(e,r){s(e,f),p(e,{type:t,id:b++,frozen:void 0}),l(r)||h(r,e[n],{that:e,AS_ENTRIES:i})})),f=u.prototype,g=m(t),v=function(e,t,i){var n=g(e),r=o(a(t),!0);return!0===r?x(n).set(t,i):r[n.id]=i,e};return r(f,{delete:function(e){var t=g(this);if(!c(e))return!1;var i=o(e);return!0===i?x(t).delete(e):i&&d(i,t.id)&&delete i[t.id]},has:function(e){var t=g(this);if(!c(e))return!1;var i=o(e);return!0===i?x(t).has(e):i&&d(i,t.id)}}),r(f,i?{get:function(e){var t=g(this);if(c(e)){var i=o(e);return!0===i?x(t).get(e):i?i[t.id]:void 0}},set:function(e,t){return v(this,e,t)}}:{add:function(e){return v(this,e,!0)}}),u}}},16468:(e,t,i)=>{"use strict";var n=i(46518),r=i(24475),o=i(79504),s=i(92796),a=i(36840),l=i(3451),c=i(72652),h=i(90679),u=i(94901),d=i(64117),f=i(20034),p=i(79039),m=i(84428),g=i(10687),v=i(23167);e.exports=function(e,t,i){var y=-1!==e.indexOf("Map"),b=-1!==e.indexOf("Weak"),x=y?"set":"add",_=r[e],E=_&&_.prototype,S=_,A={},w=function(e){var t=o(E[e]);a(E,e,"add"===e?function(e){return t(this,0===e?0:e),this}:"delete"===e?function(e){return!(b&&!f(e))&&t(this,0===e?0:e)}:"get"===e?function(e){return b&&!f(e)?void 0:t(this,0===e?0:e)}:"has"===e?function(e){return!(b&&!f(e))&&t(this,0===e?0:e)}:function(e,i){return t(this,0===e?0:e,i),this})};if(s(e,!u(_)||!(b||E.forEach&&!p((function(){(new _).entries().next()})))))S=i.getConstructor(t,e,y,x),l.enable();else if(s(e,!0)){var T=new S,M=T[x](b?{}:-0,1)!==T,C=p((function(){T.has(1)})),P=m((function(e){new _(e)})),D=!b&&p((function(){for(var e=new _,t=5;t--;)e[x](t,t);return!e.has(-0)}));P||((S=t((function(e,t){h(e,E);var i=v(new _,e,S);return d(t)||c(t,i[x],{that:i,AS_ENTRIES:y}),i}))).prototype=E,E.constructor=S),(C||D)&&(w("delete"),w("has"),y&&w("get")),(D||M)&&w(x),b&&E.clear&&delete E.clear}return A[e]=S,n({global:!0,constructor:!0,forced:S!==_},A),g(S,e),b||i.setStrong(S,e,y),S}},59323:(e,t,i)=>{"use strict";i(36033),i(73772);var n=i(97751),r=i(2360),o=i(20034),s=Object,a=TypeError,l=n("Map"),c=n("WeakMap"),h=function(){this.object=null,this.symbol=null,this.primitives=null,this.objectsByIndex=r(null)};h.prototype.get=function(e,t){return this[e]||(this[e]=t())},h.prototype.next=function(e,t,i){var n=i?this.objectsByIndex[e]||(this.objectsByIndex[e]=new c):this.primitives||(this.primitives=new l),r=n.get(t);return r||n.set(t,r=new h),r};var u=new h;e.exports=function(){var e,t,i=u,n=arguments.length;for(e=0;e{"use strict";var n=i(39297),r=i(35031),o=i(77347),s=i(24913);e.exports=function(e,t,i){for(var a=r(t),l=s.f,c=o.f,h=0;h{"use strict";var n=i(79039);e.exports=!n((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},62529:e=>{"use strict";e.exports=function(e,t){return{value:e,done:t}}},66699:(e,t,i)=>{"use strict";var n=i(43724),r=i(24913),o=i(6980);e.exports=n?function(e,t,i){return r.f(e,t,o(1,i))}:function(e,t,i){return e[t]=i,e}},6980:e=>{"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},62106:(e,t,i)=>{"use strict";var n=i(50283),r=i(24913);e.exports=function(e,t,i){return i.get&&n(i.get,t,{getter:!0}),i.set&&n(i.set,t,{setter:!0}),r.f(e,t,i)}},36840:(e,t,i)=>{"use strict";var n=i(94901),r=i(24913),o=i(50283),s=i(39433);e.exports=function(e,t,i,a){a||(a={});var l=a.enumerable,c=void 0!==a.name?a.name:t;if(n(i)&&o(i,c,a),a.global)l?e[t]=i:s(t,i);else{try{a.unsafe?e[t]&&(l=!0):delete e[t]}catch(e){}l?e[t]=i:r.f(e,t,{value:i,enumerable:!1,configurable:!a.nonConfigurable,writable:!a.nonWritable})}return e}},56279:(e,t,i)=>{"use strict";var n=i(36840);e.exports=function(e,t,i){for(var r in t)n(e,r,t[r],i);return e}},39433:(e,t,i)=>{"use strict";var n=i(24475),r=Object.defineProperty;e.exports=function(e,t){try{r(n,e,{value:t,configurable:!0,writable:!0})}catch(i){n[e]=t}return t}},43724:(e,t,i)=>{"use strict";var n=i(79039);e.exports=!n((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},4055:(e,t,i)=>{"use strict";var n=i(24475),r=i(20034),o=n.document,s=r(o)&&r(o.createElement);e.exports=function(e){return s?o.createElement(e):{}}},6763:e=>{"use strict";e.exports="function"==typeof Bun&&Bun&&"string"==typeof Bun.version},48119:(e,t,i)=>{"use strict";var n=i(79392);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},19088:(e,t,i)=>{"use strict";var n=i(24475),r=i(44576);e.exports="process"===r(n.process)},79392:e=>{"use strict";e.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},77388:(e,t,i)=>{"use strict";var n,r,o=i(24475),s=i(79392),a=o.process,l=o.Deno,c=a&&a.versions||l&&l.version,h=c&&c.v8;h&&(r=(n=h.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!r&&s&&(!(n=s.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=s.match(/Chrome\/(\d+)/))&&(r=+n[1]),e.exports=r},88727:e=>{"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},46518:(e,t,i)=>{"use strict";var n=i(24475),r=i(77347).f,o=i(66699),s=i(36840),a=i(39433),l=i(77740),c=i(92796);e.exports=function(e,t){var i,h,u,d,f,p=e.target,m=e.global,g=e.stat;if(i=m?n:g?n[p]||a(p,{}):n[p]&&n[p].prototype)for(h in t){if(d=t[h],u=e.dontCallGetSet?(f=r(i,h))&&f.value:i[h],!c(m?h:p+(g?".":"#")+h,e.forced)&&void 0!==u){if(typeof d==typeof u)continue;l(d,u)}(e.sham||u&&u.sham)&&o(d,"sham",!0),s(i,h,d,e)}}},79039:e=>{"use strict";e.exports=function(e){try{return!!e()}catch(e){return!0}}},92744:(e,t,i)=>{"use strict";var n=i(79039);e.exports=!n((function(){return Object.isExtensible(Object.preventExtensions({}))}))},18745:(e,t,i)=>{"use strict";var n=i(40616),r=Function.prototype,o=r.apply,s=r.call;e.exports="object"==typeof Reflect&&Reflect.apply||(n?s.bind(o):function(){return s.apply(o,arguments)})},76080:(e,t,i)=>{"use strict";var n=i(27476),r=i(79306),o=i(40616),s=n(n.bind);e.exports=function(e,t){return r(e),void 0===t?e:o?s(e,t):function(){return e.apply(t,arguments)}}},40616:(e,t,i)=>{"use strict";var n=i(79039);e.exports=!n((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},69565:(e,t,i)=>{"use strict";var n=i(40616),r=Function.prototype.call;e.exports=n?r.bind(r):function(){return r.apply(r,arguments)}},10350:(e,t,i)=>{"use strict";var n=i(43724),r=i(39297),o=Function.prototype,s=n&&Object.getOwnPropertyDescriptor,a=r(o,"name"),l=a&&"something"===function(){}.name,c=a&&(!n||n&&s(o,"name").configurable);e.exports={EXISTS:a,PROPER:l,CONFIGURABLE:c}},46706:(e,t,i)=>{"use strict";var n=i(79504),r=i(79306);e.exports=function(e,t,i){try{return n(r(Object.getOwnPropertyDescriptor(e,t)[i]))}catch(e){}}},27476:(e,t,i)=>{"use strict";var n=i(44576),r=i(79504);e.exports=function(e){if("Function"===n(e))return r(e)}},79504:(e,t,i)=>{"use strict";var n=i(40616),r=Function.prototype,o=r.call,s=n&&r.bind.bind(o,o);e.exports=n?s:function(e){return function(){return o.apply(e,arguments)}}},97751:(e,t,i)=>{"use strict";var n=i(24475),r=i(94901);e.exports=function(e,t){return arguments.length<2?(i=n[e],r(i)?i:void 0):n[e]&&n[e][t];var i}},1767:e=>{"use strict";e.exports=function(e){return{iterator:e,next:e.next,done:!1}}},50851:(e,t,i)=>{"use strict";var n=i(36955),r=i(55966),o=i(64117),s=i(26269),a=i(78227)("iterator");e.exports=function(e){if(!o(e))return r(e,a)||r(e,"@@iterator")||s[n(e)]}},70081:(e,t,i)=>{"use strict";var n=i(69565),r=i(79306),o=i(28551),s=i(16823),a=i(50851),l=TypeError;e.exports=function(e,t){var i=arguments.length<2?a(e):t;if(r(i))return o(n(i,e));throw new l(s(e)+" is not iterable")}},55966:(e,t,i)=>{"use strict";var n=i(79306),r=i(64117);e.exports=function(e,t){var i=e[t];return r(i)?void 0:n(i)}},83789:(e,t,i)=>{"use strict";var n=i(79306),r=i(28551),o=i(69565),s=i(91291),a=i(1767),l="Invalid size",c=RangeError,h=TypeError,u=Math.max,d=function(e,t){this.set=e,this.size=u(t,0),this.has=n(e.has),this.keys=n(e.keys)};d.prototype={getIterator:function(){return a(r(o(this.keys,this.set)))},includes:function(e){return o(this.has,this.set,e)}},e.exports=function(e){r(e);var t=+e.size;if(t!=t)throw new h(l);var i=s(t);if(i<0)throw new c(l);return new d(e,i)}},24475:function(e,t,i){"use strict";var n=function(e){return e&&e.Math===Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof i.g&&i.g)||n("object"==typeof this&&this)||function(){return this}()||Function("return this")()},39297:(e,t,i)=>{"use strict";var n=i(79504),r=i(48981),o=n({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return o(r(e),t)}},30421:e=>{"use strict";e.exports={}},90757:e=>{"use strict";e.exports=function(e,t){try{1===arguments.length?console.error(e):console.error(e,t)}catch(e){}}},20397:(e,t,i)=>{"use strict";var n=i(97751);e.exports=n("document","documentElement")},35917:(e,t,i)=>{"use strict";var n=i(43724),r=i(79039),o=i(4055);e.exports=!n&&!r((function(){return 7!==Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a}))},47055:(e,t,i)=>{"use strict";var n=i(79504),r=i(79039),o=i(44576),s=Object,a=n("".split);e.exports=r((function(){return!s("z").propertyIsEnumerable(0)}))?function(e){return"String"===o(e)?a(e,""):s(e)}:s},23167:(e,t,i)=>{"use strict";var n=i(94901),r=i(20034),o=i(52967);e.exports=function(e,t,i){var s,a;return o&&n(s=t.constructor)&&s!==i&&r(a=s.prototype)&&a!==i.prototype&&o(e,a),e}},33706:(e,t,i)=>{"use strict";var n=i(79504),r=i(94901),o=i(77629),s=n(Function.toString);r(o.inspectSource)||(o.inspectSource=function(e){return s(e)}),e.exports=o.inspectSource},3451:(e,t,i)=>{"use strict";var n=i(46518),r=i(79504),o=i(30421),s=i(20034),a=i(39297),l=i(24913).f,c=i(38480),h=i(10298),u=i(34124),d=i(33392),f=i(92744),p=!1,m=d("meta"),g=0,v=function(e){l(e,m,{value:{objectID:"O"+g++,weakData:{}}})},y=e.exports={enable:function(){y.enable=function(){},p=!0;var e=c.f,t=r([].splice),i={};i[m]=1,e(i).length&&(c.f=function(i){for(var n=e(i),r=0,o=n.length;r{"use strict";var n,r,o,s=i(58622),a=i(24475),l=i(20034),c=i(66699),h=i(39297),u=i(77629),d=i(66119),f=i(30421),p="Object already initialized",m=a.TypeError,g=a.WeakMap;if(s||u.state){var v=u.state||(u.state=new g);v.get=v.get,v.has=v.has,v.set=v.set,n=function(e,t){if(v.has(e))throw new m(p);return t.facade=e,v.set(e,t),t},r=function(e){return v.get(e)||{}},o=function(e){return v.has(e)}}else{var y=d("state");f[y]=!0,n=function(e,t){if(h(e,y))throw new m(p);return t.facade=e,c(e,y,t),t},r=function(e){return h(e,y)?e[y]:{}},o=function(e){return h(e,y)}}e.exports={set:n,get:r,has:o,enforce:function(e){return o(e)?r(e):n(e,{})},getterFor:function(e){return function(t){var i;if(!l(t)||(i=r(t)).type!==e)throw new m("Incompatible receiver, "+e+" required");return i}}}},44209:(e,t,i)=>{"use strict";var n=i(78227),r=i(26269),o=n("iterator"),s=Array.prototype;e.exports=function(e){return void 0!==e&&(r.Array===e||s[o]===e)}},34376:(e,t,i)=>{"use strict";var n=i(44576);e.exports=Array.isArray||function(e){return"Array"===n(e)}},94901:e=>{"use strict";var t="object"==typeof document&&document.all;e.exports=void 0===t&&void 0!==t?function(e){return"function"==typeof e||e===t}:function(e){return"function"==typeof e}},33517:(e,t,i)=>{"use strict";var n=i(79504),r=i(79039),o=i(94901),s=i(36955),a=i(97751),l=i(33706),c=function(){},h=a("Reflect","construct"),u=/^\s*(?:class|function)\b/,d=n(u.exec),f=!u.test(c),p=function(e){if(!o(e))return!1;try{return h(c,[],e),!0}catch(e){return!1}},m=function(e){if(!o(e))return!1;switch(s(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return f||!!d(u,l(e))}catch(e){return!0}};m.sham=!0,e.exports=!h||r((function(){var e;return p(p.call)||!p(Object)||!p((function(){e=!0}))||e}))?m:p},92796:(e,t,i)=>{"use strict";var n=i(79039),r=i(94901),o=/#|\.prototype\./,s=function(e,t){var i=l[a(e)];return i===h||i!==c&&(r(t)?n(t):!!t)},a=s.normalize=function(e){return String(e).replace(o,".").toLowerCase()},l=s.data={},c=s.NATIVE="N",h=s.POLYFILL="P";e.exports=s},31563:(e,t,i)=>{"use strict";var n=i(36955),r=i(39297),o=i(64117),s=i(78227),a=i(26269),l=s("iterator"),c=Object;e.exports=function(e){if(o(e))return!1;var t=c(e);return void 0!==t[l]||"@@iterator"in t||r(a,n(t))}},64117:e=>{"use strict";e.exports=function(e){return null==e}},20034:(e,t,i)=>{"use strict";var n=i(94901);e.exports=function(e){return"object"==typeof e?null!==e:n(e)}},13925:(e,t,i)=>{"use strict";var n=i(20034);e.exports=function(e){return n(e)||null===e}},96395:e=>{"use strict";e.exports=!1},10757:(e,t,i)=>{"use strict";var n=i(97751),r=i(94901),o=i(1625),s=i(7040),a=Object;e.exports=s?function(e){return"symbol"==typeof e}:function(e){var t=n("Symbol");return r(t)&&o(t.prototype,a(e))}},40507:(e,t,i)=>{"use strict";var n=i(69565);e.exports=function(e,t,i){for(var r,o,s=i?e:e.iterator,a=e.next;!(r=n(a,s)).done;)if(void 0!==(o=t(r.value)))return o}},72652:(e,t,i)=>{"use strict";var n=i(76080),r=i(69565),o=i(28551),s=i(16823),a=i(44209),l=i(26198),c=i(1625),h=i(70081),u=i(50851),d=i(9539),f=TypeError,p=function(e,t){this.stopped=e,this.result=t},m=p.prototype;e.exports=function(e,t,i){var g,v,y,b,x,_,E,S=i&&i.that,A=!(!i||!i.AS_ENTRIES),w=!(!i||!i.IS_RECORD),T=!(!i||!i.IS_ITERATOR),M=!(!i||!i.INTERRUPTED),C=n(t,S),P=function(e){return g&&d(g,"normal",e),new p(!0,e)},D=function(e){return A?(o(e),M?C(e[0],e[1],P):C(e[0],e[1])):M?C(e,P):C(e)};if(w)g=e.iterator;else if(T)g=e;else{if(!(v=u(e)))throw new f(s(e)+" is not iterable");if(a(v)){for(y=0,b=l(e);b>y;y++)if((x=D(e[y]))&&c(m,x))return x;return new p(!1)}g=h(e,v)}for(_=w?e.next:g.next;!(E=r(_,g)).done;){try{x=D(E.value)}catch(e){d(g,"throw",e)}if("object"==typeof x&&x&&c(m,x))return x}return new p(!1)}},9539:(e,t,i)=>{"use strict";var n=i(69565),r=i(28551),o=i(55966);e.exports=function(e,t,i){var s,a;r(e);try{if(!(s=o(e,"return"))){if("throw"===t)throw i;return i}s=n(s,e)}catch(e){a=!0,s=e}if("throw"===t)throw i;if(a)throw s;return r(s),i}},33994:(e,t,i)=>{"use strict";var n=i(57657).IteratorPrototype,r=i(2360),o=i(6980),s=i(10687),a=i(26269),l=function(){return this};e.exports=function(e,t,i,c){var h=t+" Iterator";return e.prototype=r(n,{next:o(+!c,i)}),s(e,h,!1,!0),a[h]=l,e}},51088:(e,t,i)=>{"use strict";var n=i(46518),r=i(69565),o=i(96395),s=i(10350),a=i(94901),l=i(33994),c=i(42787),h=i(52967),u=i(10687),d=i(66699),f=i(36840),p=i(78227),m=i(26269),g=i(57657),v=s.PROPER,y=s.CONFIGURABLE,b=g.IteratorPrototype,x=g.BUGGY_SAFARI_ITERATORS,_=p("iterator"),E="keys",S="values",A="entries",w=function(){return this};e.exports=function(e,t,i,s,p,g,T){l(i,t,s);var M,C,P,D=function(e){if(e===p&&N)return N;if(!x&&e&&e in R)return R[e];switch(e){case E:case S:case A:return function(){return new i(this,e)}}return function(){return new i(this)}},L=t+" Iterator",I=!1,R=e.prototype,O=R[_]||R["@@iterator"]||p&&R[p],N=!x&&O||D(p),F="Array"===t&&R.entries||O;if(F&&(M=c(F.call(new e)))!==Object.prototype&&M.next&&(o||c(M)===b||(h?h(M,b):a(M[_])||f(M,_,w)),u(M,L,!0,!0),o&&(m[L]=w)),v&&p===S&&O&&O.name!==S&&(!o&&y?d(R,"name",S):(I=!0,N=function(){return r(O,this)})),p)if(C={values:D(S),keys:g?N:D(E),entries:D(A)},T)for(P in C)(x||I||!(P in R))&&f(R,P,C[P]);else n({target:t,proto:!0,forced:x||I},C);return o&&!T||R[_]===N||f(R,_,N,{name:p}),m[t]=N,C}},57657:(e,t,i)=>{"use strict";var n,r,o,s=i(79039),a=i(94901),l=i(20034),c=i(2360),h=i(42787),u=i(36840),d=i(78227),f=i(96395),p=d("iterator"),m=!1;[].keys&&("next"in(o=[].keys())?(r=h(h(o)))!==Object.prototype&&(n=r):m=!0),!l(n)||s((function(){var e={};return n[p].call(e)!==e}))?n={}:f&&(n=c(n)),a(n[p])||u(n,p,(function(){return this})),e.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:m}},26269:e=>{"use strict";e.exports={}},26198:(e,t,i)=>{"use strict";var n=i(18014);e.exports=function(e){return n(e.length)}},50283:(e,t,i)=>{"use strict";var n=i(79504),r=i(79039),o=i(94901),s=i(39297),a=i(43724),l=i(10350).CONFIGURABLE,c=i(33706),h=i(91181),u=h.enforce,d=h.get,f=String,p=Object.defineProperty,m=n("".slice),g=n("".replace),v=n([].join),y=a&&!r((function(){return 8!==p((function(){}),"length",{value:8}).length})),b=String(String).split("String"),x=e.exports=function(e,t,i){"Symbol("===m(f(t),0,7)&&(t="["+g(f(t),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),i&&i.getter&&(t="get "+t),i&&i.setter&&(t="set "+t),(!s(e,"name")||l&&e.name!==t)&&(a?p(e,"name",{value:t,configurable:!0}):e.name=t),y&&i&&s(i,"arity")&&e.length!==i.arity&&p(e,"length",{value:i.arity});try{i&&s(i,"constructor")&&i.constructor?a&&p(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var n=u(e);return s(n,"source")||(n.source=v(b,"string"==typeof t?t:"")),e};Function.prototype.toString=x((function(){return o(this)&&d(this).source||c(this)}),"toString")},72248:(e,t,i)=>{"use strict";var n=i(79504),r=Map.prototype;e.exports={Map,set:n(r.set),get:n(r.get),has:n(r.has),remove:n(r.delete),proto:r}},26223:(e,t,i)=>{"use strict";var n=i(79504),r=i(40507),o=i(72248),s=o.Map,a=o.proto,l=n(a.forEach),c=n(a.entries),h=c(new s).next;e.exports=function(e,t,i){return i?r({iterator:c(e),next:h},(function(e){return t(e[1],e[0])})):l(e,t)}},33164:(e,t,i)=>{"use strict";var n=i(77782),r=Math.abs,o=2220446049250313e-31,s=1/o;e.exports=function(e,t,i,a){var l=+e,c=r(l),h=n(l);if(ci||d!=d?h*(1/0):h*d}},15617:(e,t,i)=>{"use strict";var n=i(33164);e.exports=Math.fround||function(e){return n(e,1.1920928955078125e-7,34028234663852886e22,11754943508222875e-54)}},77905:e=>{"use strict";e.exports=Math.scale||function(e,t,i,n,r){var o=+e,s=+t,a=+i,l=+n,c=+r;return o!=o||s!=s||a!=a||l!=l||c!=c?NaN:o===1/0||o===-1/0?o:(o-s)*(c-l)/(a-s)+l}},77782:e=>{"use strict";e.exports=Math.sign||function(e){var t=+e;return 0===t||t!=t?t:t<0?-1:1}},80741:e=>{"use strict";var t=Math.ceil,i=Math.floor;e.exports=Math.trunc||function(e){var n=+e;return(n>0?i:t)(n)}},36043:(e,t,i)=>{"use strict";var n=i(79306),r=TypeError,o=function(e){var t,i;this.promise=new e((function(e,n){if(void 0!==t||void 0!==i)throw new r("Bad Promise constructor");t=e,i=n})),this.resolve=n(t),this.reject=n(i)};e.exports.f=function(e){return new o(e)}},50360:(e,t,i)=>{"use strict";var n=i(24475).isFinite;e.exports=Number.isFinite||function(e){return"number"==typeof e&&n(e)}},2360:(e,t,i)=>{"use strict";var n,r=i(28551),o=i(96801),s=i(88727),a=i(30421),l=i(20397),c=i(4055),h=i(66119),u="prototype",d="script",f=h("IE_PROTO"),p=function(){},m=function(e){return"<"+d+">"+e+""},g=function(e){e.write(m("")),e.close();var t=e.parentWindow.Object;return e=null,t},v=function(){try{n=new ActiveXObject("htmlfile")}catch(e){}var e,t,i;v="undefined"!=typeof document?document.domain&&n?g(n):(t=c("iframe"),i="java"+d+":",t.style.display="none",l.appendChild(t),t.src=String(i),(e=t.contentWindow.document).open(),e.write(m("document.F=Object")),e.close(),e.F):g(n);for(var r=s.length;r--;)delete v[u][s[r]];return v()};a[f]=!0,e.exports=Object.create||function(e,t){var i;return null!==e?(p[u]=r(e),i=new p,p[u]=null,i[f]=e):i=v(),void 0===t?i:o.f(i,t)}},96801:(e,t,i)=>{"use strict";var n=i(43724),r=i(48686),o=i(24913),s=i(28551),a=i(25397),l=i(71072);t.f=n&&!r?Object.defineProperties:function(e,t){s(e);for(var i,n=a(t),r=l(t),c=r.length,h=0;c>h;)o.f(e,i=r[h++],n[i]);return e}},24913:(e,t,i)=>{"use strict";var n=i(43724),r=i(35917),o=i(48686),s=i(28551),a=i(56969),l=TypeError,c=Object.defineProperty,h=Object.getOwnPropertyDescriptor,u="enumerable",d="configurable",f="writable";t.f=n?o?function(e,t,i){if(s(e),t=a(t),s(i),"function"==typeof e&&"prototype"===t&&"value"in i&&f in i&&!i[f]){var n=h(e,t);n&&n[f]&&(e[t]=i.value,i={configurable:d in i?i[d]:n[d],enumerable:u in i?i[u]:n[u],writable:!1})}return c(e,t,i)}:c:function(e,t,i){if(s(e),t=a(t),s(i),r)try{return c(e,t,i)}catch(e){}if("get"in i||"set"in i)throw new l("Accessors not supported");return"value"in i&&(e[t]=i.value),e}},77347:(e,t,i)=>{"use strict";var n=i(43724),r=i(69565),o=i(48773),s=i(6980),a=i(25397),l=i(56969),c=i(39297),h=i(35917),u=Object.getOwnPropertyDescriptor;t.f=n?u:function(e,t){if(e=a(e),t=l(t),h)try{return u(e,t)}catch(e){}if(c(e,t))return s(!r(o.f,e,t),e[t])}},10298:(e,t,i)=>{"use strict";var n=i(44576),r=i(25397),o=i(38480).f,s=i(67680),a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&"Window"===n(e)?function(e){try{return o(e)}catch(e){return s(a)}}(e):o(r(e))}},38480:(e,t,i)=>{"use strict";var n=i(61828),r=i(88727).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,r)}},33717:(e,t)=>{"use strict";t.f=Object.getOwnPropertySymbols},42787:(e,t,i)=>{"use strict";var n=i(39297),r=i(94901),o=i(48981),s=i(66119),a=i(12211),l=s("IE_PROTO"),c=Object,h=c.prototype;e.exports=a?c.getPrototypeOf:function(e){var t=o(e);if(n(t,l))return t[l];var i=t.constructor;return r(i)&&t instanceof i?i.prototype:t instanceof c?h:null}},34124:(e,t,i)=>{"use strict";var n=i(79039),r=i(20034),o=i(44576),s=i(15652),a=Object.isExtensible,l=n((function(){a(1)}));e.exports=l||s?function(e){return!!r(e)&&((!s||"ArrayBuffer"!==o(e))&&(!a||a(e)))}:a},1625:(e,t,i)=>{"use strict";var n=i(79504);e.exports=n({}.isPrototypeOf)},61828:(e,t,i)=>{"use strict";var n=i(79504),r=i(39297),o=i(25397),s=i(19617).indexOf,a=i(30421),l=n([].push);e.exports=function(e,t){var i,n=o(e),c=0,h=[];for(i in n)!r(a,i)&&r(n,i)&&l(h,i);for(;t.length>c;)r(n,i=t[c++])&&(~s(h,i)||l(h,i));return h}},71072:(e,t,i)=>{"use strict";var n=i(61828),r=i(88727);e.exports=Object.keys||function(e){return n(e,r)}},48773:(e,t)=>{"use strict";var i={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,r=n&&!i.call({1:2},1);t.f=r?function(e){var t=n(this,e);return!!t&&t.enumerable}:i},52967:(e,t,i)=>{"use strict";var n=i(46706),r=i(20034),o=i(67750),s=i(73506);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,i={};try{(e=n(Object.prototype,"__proto__","set"))(i,[]),t=i instanceof Array}catch(e){}return function(i,n){return o(i),s(n),r(i)?(t?e(i,n):i.__proto__=n,i):i}}():void 0)},84270:(e,t,i)=>{"use strict";var n=i(69565),r=i(94901),o=i(20034),s=TypeError;e.exports=function(e,t){var i,a;if("string"===t&&r(i=e.toString)&&!o(a=n(i,e)))return a;if(r(i=e.valueOf)&&!o(a=n(i,e)))return a;if("string"!==t&&r(i=e.toString)&&!o(a=n(i,e)))return a;throw new s("Can't convert object to primitive value")}},35031:(e,t,i)=>{"use strict";var n=i(97751),r=i(79504),o=i(38480),s=i(33717),a=i(28551),l=r([].concat);e.exports=n("Reflect","ownKeys")||function(e){var t=o.f(a(e)),i=s.f;return i?l(t,i(e)):t}},19167:(e,t,i)=>{"use strict";var n=i(24475);e.exports=n},1103:e=>{"use strict";e.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},18449:(e,t,i)=>{"use strict";i(36033),i(73772);var n=i(97751),r=i(79504),o=i(25745),s=n("Map"),a=n("WeakMap"),l=r([].push),c=o("metadata"),h=c.store||(c.store=new a),u=function(e,t,i){var n=h.get(e);if(!n){if(!i)return;h.set(e,n=new s)}var r=n.get(t);if(!r){if(!i)return;n.set(t,r=new s)}return r};e.exports={store:h,getMap:u,has:function(e,t,i){var n=u(t,i,!1);return void 0!==n&&n.has(e)},get:function(e,t,i){var n=u(t,i,!1);return void 0===n?void 0:n.get(e)},set:function(e,t,i,n){u(i,n,!0).set(e,t)},keys:function(e,t){var i=u(e,t,!1),n=[];return i&&i.forEach((function(e,t){l(n,t)})),n},toKey:function(e){return void 0===e||"symbol"==typeof e?e:String(e)}}},67979:(e,t,i)=>{"use strict";var n=i(28551);e.exports=function(){var e=n(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.unicodeSets&&(t+="v"),e.sticky&&(t+="y"),t}},67750:(e,t,i)=>{"use strict";var n=i(64117),r=TypeError;e.exports=function(e){if(n(e))throw new r("Can't call method on "+e);return e}},33317:e=>{"use strict";e.exports=function(e,t){return e===t||e!=e&&t!=t}},79472:(e,t,i)=>{"use strict";var n,r=i(24475),o=i(18745),s=i(94901),a=i(6763),l=i(79392),c=i(67680),h=i(22812),u=r.Function,d=/MSIE .\./.test(l)||a&&((n=r.Bun.version.split(".")).length<3||"0"===n[0]&&(n[1]<3||"3"===n[1]&&"0"===n[2]));e.exports=function(e,t){var i=t?2:1;return d?function(n,r){var a=h(arguments.length,1)>i,l=s(n)?n:u(n),d=a?c(arguments,i):[],f=a?function(){o(l,this,d)}:l;return t?e(f,r):e(f)}:e}},89286:(e,t,i)=>{"use strict";var n=i(94402),r=i(38469),o=n.Set,s=n.add;e.exports=function(e){var t=new o;return r(e,(function(e){s(t,e)})),t}},83440:(e,t,i)=>{"use strict";var n=i(97080),r=i(94402),o=i(89286),s=i(25170),a=i(83789),l=i(38469),c=i(40507),h=r.has,u=r.remove;e.exports=function(e){var t=n(this),i=a(e),r=o(t);return s(t)<=i.size?l(t,(function(e){i.includes(e)&&u(r,e)})):c(i.getIterator(),(function(e){h(t,e)&&u(r,e)})),r}},94402:(e,t,i)=>{"use strict";var n=i(79504),r=Set.prototype;e.exports={Set,add:n(r.add),has:n(r.has),remove:n(r.delete),proto:r}},68750:(e,t,i)=>{"use strict";var n=i(97080),r=i(94402),o=i(25170),s=i(83789),a=i(38469),l=i(40507),c=r.Set,h=r.add,u=r.has;e.exports=function(e){var t=n(this),i=s(e),r=new c;return o(t)>i.size?l(i.getIterator(),(function(e){u(t,e)&&h(r,e)})):a(t,(function(e){i.includes(e)&&h(r,e)})),r}},64449:(e,t,i)=>{"use strict";var n=i(97080),r=i(94402).has,o=i(25170),s=i(83789),a=i(38469),l=i(40507),c=i(9539);e.exports=function(e){var t=n(this),i=s(e);if(o(t)<=i.size)return!1!==a(t,(function(e){if(i.includes(e))return!1}),!0);var h=i.getIterator();return!1!==l(h,(function(e){if(r(t,e))return c(h,"normal",!1)}))}},53838:(e,t,i)=>{"use strict";var n=i(97080),r=i(25170),o=i(38469),s=i(83789);e.exports=function(e){var t=n(this),i=s(e);return!(r(t)>i.size)&&!1!==o(t,(function(e){if(!i.includes(e))return!1}),!0)}},28527:(e,t,i)=>{"use strict";var n=i(97080),r=i(94402).has,o=i(25170),s=i(83789),a=i(40507),l=i(9539);e.exports=function(e){var t=n(this),i=s(e);if(o(t){"use strict";var n=i(79504),r=i(40507),o=i(94402),s=o.Set,a=o.proto,l=n(a.forEach),c=n(a.keys),h=c(new s).next;e.exports=function(e,t,i){return i?r({iterator:c(e),next:h},t):l(e,t)}},25170:(e,t,i)=>{"use strict";var n=i(46706),r=i(94402);e.exports=n(r.proto,"size","get")||function(e){return e.size}},87633:(e,t,i)=>{"use strict";var n=i(97751),r=i(62106),o=i(78227),s=i(43724),a=o("species");e.exports=function(e){var t=n(e);s&&t&&!t[a]&&r(t,a,{configurable:!0,get:function(){return this}})}},83650:(e,t,i)=>{"use strict";var n=i(97080),r=i(94402),o=i(89286),s=i(83789),a=i(40507),l=r.add,c=r.has,h=r.remove;e.exports=function(e){var t=n(this),i=s(e).getIterator(),r=o(t);return a(i,(function(e){c(t,e)?h(r,e):l(r,e)})),r}},10687:(e,t,i)=>{"use strict";var n=i(24913).f,r=i(39297),o=i(78227)("toStringTag");e.exports=function(e,t,i){e&&!i&&(e=e.prototype),e&&!r(e,o)&&n(e,o,{configurable:!0,value:t})}},44204:(e,t,i)=>{"use strict";var n=i(97080),r=i(94402).add,o=i(89286),s=i(83789),a=i(40507);e.exports=function(e){var t=n(this),i=s(e).getIterator(),l=o(t);return a(i,(function(e){r(l,e)})),l}},66119:(e,t,i)=>{"use strict";var n=i(25745),r=i(33392),o=n("keys");e.exports=function(e){return o[e]||(o[e]=r(e))}},77629:(e,t,i)=>{"use strict";var n=i(96395),r=i(24475),o=i(39433),s="__core-js_shared__",a=e.exports=r[s]||o(s,{});(a.versions||(a.versions=[])).push({version:"3.36.1",mode:n?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.36.1/LICENSE",source:"https://github.com/zloirock/core-js"})},25745:(e,t,i)=>{"use strict";var n=i(77629);e.exports=function(e,t){return n[e]||(n[e]=t||{})}},68183:(e,t,i)=>{"use strict";var n=i(79504),r=i(91291),o=i(655),s=i(67750),a=n("".charAt),l=n("".charCodeAt),c=n("".slice),h=function(e){return function(t,i){var n,h,u=o(s(t)),d=r(i),f=u.length;return d<0||d>=f?e?"":void 0:(n=l(u,d))<55296||n>56319||d+1===f||(h=l(u,d+1))<56320||h>57343?e?a(u,d):n:e?c(u,d,d+2):h-56320+(n-55296<<10)+65536}};e.exports={codeAt:h(!1),charAt:h(!0)}},4495:(e,t,i)=>{"use strict";var n=i(77388),r=i(79039),o=i(24475).String;e.exports=!!Object.getOwnPropertySymbols&&!r((function(){var e=Symbol("symbol detection");return!o(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},59225:(e,t,i)=>{"use strict";var n,r,o,s,a=i(24475),l=i(18745),c=i(76080),h=i(94901),u=i(39297),d=i(79039),f=i(20397),p=i(67680),m=i(4055),g=i(22812),v=i(48119),y=i(19088),b=a.setImmediate,x=a.clearImmediate,_=a.process,E=a.Dispatch,S=a.Function,A=a.MessageChannel,w=a.String,T=0,M={},C="onreadystatechange";d((function(){n=a.location}));var P=function(e){if(u(M,e)){var t=M[e];delete M[e],t()}},D=function(e){return function(){P(e)}},L=function(e){P(e.data)},I=function(e){a.postMessage(w(e),n.protocol+"//"+n.host)};b&&x||(b=function(e){g(arguments.length,1);var t=h(e)?e:S(e),i=p(arguments,1);return M[++T]=function(){l(t,void 0,i)},r(T),T},x=function(e){delete M[e]},y?r=function(e){_.nextTick(D(e))}:E&&E.now?r=function(e){E.now(D(e))}:A&&!v?(s=(o=new A).port2,o.port1.onmessage=L,r=c(s.postMessage,s)):a.addEventListener&&h(a.postMessage)&&!a.importScripts&&n&&"file:"!==n.protocol&&!d(I)?(r=I,a.addEventListener("message",L,!1)):r=C in m("script")?function(e){f.appendChild(m("script"))[C]=function(){f.removeChild(this),P(e)}}:function(e){setTimeout(D(e),0)}),e.exports={set:b,clear:x}},35610:(e,t,i)=>{"use strict";var n=i(91291),r=Math.max,o=Math.min;e.exports=function(e,t){var i=n(e);return i<0?r(i+t,0):o(i,t)}},25397:(e,t,i)=>{"use strict";var n=i(47055),r=i(67750);e.exports=function(e){return n(r(e))}},91291:(e,t,i)=>{"use strict";var n=i(80741);e.exports=function(e){var t=+e;return t!=t||0===t?0:n(t)}},18014:(e,t,i)=>{"use strict";var n=i(91291),r=Math.min;e.exports=function(e){var t=n(e);return t>0?r(t,9007199254740991):0}},48981:(e,t,i)=>{"use strict";var n=i(67750),r=Object;e.exports=function(e){return r(n(e))}},58229:(e,t,i)=>{"use strict";var n=i(99590),r=RangeError;e.exports=function(e,t){var i=n(e);if(i%t)throw new r("Wrong offset");return i}},99590:(e,t,i)=>{"use strict";var n=i(91291),r=RangeError;e.exports=function(e){var t=n(e);if(t<0)throw new r("The argument can't be less than 0");return t}},72777:(e,t,i)=>{"use strict";var n=i(69565),r=i(20034),o=i(10757),s=i(55966),a=i(84270),l=i(78227),c=TypeError,h=l("toPrimitive");e.exports=function(e,t){if(!r(e)||o(e))return e;var i,l=s(e,h);if(l){if(void 0===t&&(t="default"),i=n(l,e,t),!r(i)||o(i))return i;throw new c("Can't convert object to primitive value")}return void 0===t&&(t="number"),a(e,t)}},56969:(e,t,i)=>{"use strict";var n=i(72777),r=i(10757);e.exports=function(e){var t=n(e,"string");return r(t)?t:t+""}},47650:(e,t,i)=>{"use strict";var n=i(97751),r=i(94901),o=i(31563),s=i(20034),a=n("Set");e.exports=function(e){return function(e){return s(e)&&"number"==typeof e.size&&r(e.has)&&r(e.keys)}(e)?e:o(e)?new a(e):e}},92140:(e,t,i)=>{"use strict";var n={};n[i(78227)("toStringTag")]="z",e.exports="[object z]"===String(n)},655:(e,t,i)=>{"use strict";var n=i(36955),r=String;e.exports=function(e){if("Symbol"===n(e))throw new TypeError("Cannot convert a Symbol value to a string");return r(e)}},16823:e=>{"use strict";var t=String;e.exports=function(e){try{return t(e)}catch(e){return"Object"}}},33392:(e,t,i)=>{"use strict";var n=i(79504),r=0,o=Math.random(),s=n(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+s(++r+o,36)}},7040:(e,t,i)=>{"use strict";var n=i(4495);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},48686:(e,t,i)=>{"use strict";var n=i(43724),r=i(79039);e.exports=n&&r((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},22812:e=>{"use strict";var t=TypeError;e.exports=function(e,i){if(e{"use strict";var n=i(24475),r=i(94901),o=n.WeakMap;e.exports=r(o)&&/native code/.test(String(o))},44995:(e,t,i)=>{"use strict";var n=i(79504),r=WeakMap.prototype;e.exports={WeakMap,set:n(r.set),get:n(r.get),has:n(r.has),remove:n(r.delete)}},88205:(e,t,i)=>{"use strict";var n=i(79504),r=WeakSet.prototype;e.exports={WeakSet,add:n(r.add),has:n(r.has),remove:n(r.delete)}},70511:(e,t,i)=>{"use strict";var n=i(19167),r=i(39297),o=i(1951),s=i(24913).f;e.exports=function(e){var t=n.Symbol||(n.Symbol={});r(t,e)||s(t,e,{value:o.f(e)})}},1951:(e,t,i)=>{"use strict";var n=i(78227);t.f=n},78227:(e,t,i)=>{"use strict";var n=i(24475),r=i(25745),o=i(39297),s=i(33392),a=i(4495),l=i(7040),c=n.Symbol,h=r("wks"),u=l?c.for||c:c&&c.withoutSetter||s;e.exports=function(e){return o(h,e)||(h[e]=a&&o(c,e)?c[e]:u("Symbol."+e)),h[e]}},74423:(e,t,i)=>{"use strict";var n=i(46518),r=i(19617).includes,o=i(79039),s=i(6469);n({target:"Array",proto:!0,forced:o((function(){return!Array(1).includes()}))},{includes:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}}),s("includes")},48523:(e,t,i)=>{"use strict";i(16468)("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),i(86938))},47072:(e,t,i)=>{"use strict";var n=i(46518),r=i(79504),o=i(79306),s=i(67750),a=i(72652),l=i(72248),c=i(96395),h=l.Map,u=l.has,d=l.get,f=l.set,p=r([].push);n({target:"Map",stat:!0,forced:c},{groupBy:function(e,t){s(e),o(t);var i=new h,n=0;return a(e,(function(e){var r=t(e,n++);u(i,r)?p(d(i,r),e):f(i,r,[e])})),i}})},36033:(e,t,i)=>{"use strict";i(48523)},69479:(e,t,i)=>{"use strict";var n=i(24475),r=i(43724),o=i(62106),s=i(67979),a=i(79039),l=n.RegExp,c=l.prototype;r&&a((function(){var e=!0;try{l(".","d")}catch(t){e=!1}var t={},i="",n=e?"dgimsy":"gimsy",r=function(e,n){Object.defineProperty(t,e,{get:function(){return i+=n,!0}})},o={dotAll:"s",global:"g",ignoreCase:"i",multiline:"m",sticky:"y"};for(var s in e&&(o.hasIndices="d"),o)r(s,o[s]);return Object.getOwnPropertyDescriptor(c,"flags").get.call(t)!==n||i!==n}))&&o(c,"flags",{configurable:!0,get:s})},28845:(e,t,i)=>{"use strict";var n=i(24475),r=i(69565),o=i(94644),s=i(26198),a=i(58229),l=i(48981),c=i(79039),h=n.RangeError,u=n.Int8Array,d=u&&u.prototype,f=d&&d.set,p=o.aTypedArray,m=o.exportTypedArrayMethod,g=!c((function(){var e=new Uint8ClampedArray(2);return r(f,e,{length:1,0:3},1),3!==e[1]})),v=g&&o.NATIVE_ARRAY_BUFFER_VIEWS&&c((function(){var e=new u(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]}));m("set",(function(e){p(this);var t=a(arguments.length>1?arguments[1]:void 0,1),i=l(e);if(g)return r(f,this,i,t);var n=this.length,o=s(i),c=0;if(o+t>n)throw new h("Wrong length");for(;c{"use strict";var n,r=i(92744),o=i(24475),s=i(79504),a=i(56279),l=i(3451),c=i(16468),h=i(91625),u=i(20034),d=i(91181).enforce,f=i(79039),p=i(58622),m=Object,g=Array.isArray,v=m.isExtensible,y=m.isFrozen,b=m.isSealed,x=m.freeze,_=m.seal,E=!o.ActiveXObject&&"ActiveXObject"in o,S=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},A=c("WeakMap",S,h),w=A.prototype,T=s(w.set);if(p)if(E){n=h.getConstructor(S,"WeakMap",!0),l.enable();var M=s(w.delete),C=s(w.has),P=s(w.get);a(w,{delete:function(e){if(u(e)&&!v(e)){var t=d(this);return t.frozen||(t.frozen=new n),M(this,e)||t.frozen.delete(e)}return M(this,e)},has:function(e){if(u(e)&&!v(e)){var t=d(this);return t.frozen||(t.frozen=new n),C(this,e)||t.frozen.has(e)}return C(this,e)},get:function(e){if(u(e)&&!v(e)){var t=d(this);return t.frozen||(t.frozen=new n),C(this,e)?P(this,e):t.frozen.get(e)}return P(this,e)},set:function(e,t){if(u(e)&&!v(e)){var i=d(this);i.frozen||(i.frozen=new n),C(this,e)?T(this,e,t):i.frozen.set(e,t)}else T(this,e,t);return this}})}else r&&f((function(){var e=x([]);return T(new A,e,1),!y(e)}))&&a(w,{set:function(e,t){var i;return g(e)&&(y(e)?i=x:b(e)&&(i=_)),T(this,e,t),i&&i(e),this}})},73772:(e,t,i)=>{"use strict";i(65746)},17656:(e,t,i)=>{"use strict";var n=i(43724),r=i(6469),o=i(48981),s=i(26198),a=i(62106);n&&(a(Array.prototype,"lastIndex",{configurable:!0,get:function(){var e=o(this),t=s(e);return 0===t?0:t-1}}),r("lastIndex"))},55105:(e,t,i)=>{"use strict";var n=i(43724),r=i(6469),o=i(48981),s=i(26198),a=i(62106);n&&(a(Array.prototype,"lastItem",{configurable:!0,get:function(){var e=o(this),t=s(e);return 0===t?void 0:e[t-1]},set:function(e){var t=o(this),i=s(t);return t[0===i?0:i-1]=e}}),r("lastItem"))},7467:(e,t,i)=>{"use strict";var n=i(46518),r=i(18745),o=i(59323),s=i(97751),a=i(2360),l=Object,c=function(){var e=s("Object","freeze");return e?e(a(null)):a(null)};n({global:!0,forced:!0},{compositeKey:function(){return r(o,l,arguments).get("object",c)}})},10586:(e,t,i)=>{"use strict";var n=i(46518),r=i(59323),o=i(97751),s=i(18745);n({global:!0,forced:!0},{compositeSymbol:function(){return 1===arguments.length&&"string"==typeof arguments[0]?o("Symbol").for(arguments[0]):s(r,null,arguments).get("symbol",o("Symbol"))}})},71517:(e,t,i)=>{"use strict";var n=i(46518),r=i(36194),o=i(72248).remove;n({target:"Map",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var e,t=r(this),i=!0,n=0,s=arguments.length;n{"use strict";var n=i(46518),r=i(76080),o=i(36194),s=i(26223);n({target:"Map",proto:!0,real:!0,forced:!0},{every:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0);return!1!==s(t,(function(e,n){if(!i(e,n,t))return!1}),!0)}})},14190:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(36194),s=i(72248),a=i(26223),l=s.Map,c=s.set;n({target:"Map",proto:!0,real:!0,forced:!0},{filter:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0),n=new l;return a(t,(function(e,r){i(e,r,t)&&c(n,r,e)})),n}})},86097:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(36194),s=i(26223);n({target:"Map",proto:!0,real:!0,forced:!0},{findKey:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0),n=s(t,(function(e,n){if(i(e,n,t))return{key:n}}),!0);return n&&n.key}})},12359:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(36194),s=i(26223);n({target:"Map",proto:!0,real:!0,forced:!0},{find:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0),n=s(t,(function(e,n){if(i(e,n,t))return{value:e}}),!0);return n&&n.value}})},39172:(e,t,i)=>{"use strict";var n=i(46518),r=i(72248);n({target:"Map",stat:!0,forced:!0},{from:i(70933)(r.Map,r.set,!0)})},57019:(e,t,i)=>{"use strict";i(47072)},17273:(e,t,i)=>{"use strict";var n=i(46518),r=i(33317),o=i(36194),s=i(26223);n({target:"Map",proto:!0,real:!0,forced:!0},{includes:function(e){return!0===s(o(this),(function(t){if(r(t,e))return!0}),!0)}})},81723:(e,t,i)=>{"use strict";var n=i(46518),r=i(69565),o=i(72652),s=i(94901),a=i(79306),l=i(72248).Map;n({target:"Map",stat:!0,forced:!0},{keyBy:function(e,t){var i=new(s(this)?this:l);a(t);var n=a(i.set);return o(e,(function(e){r(n,i,t(e),e)})),i}})},27415:(e,t,i)=>{"use strict";var n=i(46518),r=i(36194),o=i(26223);n({target:"Map",proto:!0,real:!0,forced:!0},{keyOf:function(e){var t=o(r(this),(function(t,i){if(t===e)return{key:i}}),!0);return t&&t.key}})},19929:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(36194),s=i(72248),a=i(26223),l=s.Map,c=s.set;n({target:"Map",proto:!0,real:!0,forced:!0},{mapKeys:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0),n=new l;return a(t,(function(e,r){c(n,i(e,r,t),e)})),n}})},37583:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(36194),s=i(72248),a=i(26223),l=s.Map,c=s.set;n({target:"Map",proto:!0,real:!0,forced:!0},{mapValues:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0),n=new l;return a(t,(function(e,r){c(n,r,i(e,r,t))})),n}})},55122:(e,t,i)=>{"use strict";var n=i(46518),r=i(36194),o=i(72652),s=i(72248).set;n({target:"Map",proto:!0,real:!0,arity:1,forced:!0},{merge:function(e){for(var t=r(this),i=arguments.length,n=0;n{"use strict";var n=i(46518),r=i(72248);n({target:"Map",stat:!0,forced:!0},{of:i(87500)(r.Map,r.set,!0)})},20230:(e,t,i)=>{"use strict";var n=i(46518),r=i(79306),o=i(36194),s=i(26223),a=TypeError;n({target:"Map",proto:!0,real:!0,forced:!0},{reduce:function(e){var t=o(this),i=arguments.length<2,n=i?void 0:arguments[1];if(r(e),s(t,(function(r,o){i?(i=!1,n=r):n=e(n,r,o,t)})),i)throw new a("Reduce of empty map with no initial value");return n}})},57268:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(36194),s=i(26223);n({target:"Map",proto:!0,real:!0,forced:!0},{some:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0);return!0===s(t,(function(e,n){if(i(e,n,t))return!0}),!0)}})},79733:(e,t,i)=>{"use strict";var n=i(46518),r=i(79306),o=i(36194),s=i(72248),a=TypeError,l=s.get,c=s.has,h=s.set;n({target:"Map",proto:!0,real:!0,forced:!0},{update:function(e,t){var i=o(this),n=arguments.length;r(t);var s=c(i,e);if(!s&&n<3)throw new a("Updating absent value");var u=s?l(i,e):r(n>2?arguments[2]:void 0)(e,i);return h(i,e,t(u,e,i)),i}})},58179:(e,t,i)=>{"use strict";var n=i(46518),r=Math.min,o=Math.max;n({target:"Math",stat:!0,forced:!0},{clamp:function(e,t,i){return r(i,o(t,e))}})},30456:(e,t,i)=>{"use strict";i(46518)({target:"Math",stat:!0,nonConfigurable:!0,nonWritable:!0},{DEG_PER_RAD:Math.PI/180})},74017:(e,t,i)=>{"use strict";var n=i(46518),r=180/Math.PI;n({target:"Math",stat:!0,forced:!0},{degrees:function(e){return e*r}})},79310:(e,t,i)=>{"use strict";var n=i(46518),r=i(77905),o=i(15617);n({target:"Math",stat:!0,forced:!0},{fscale:function(e,t,i,n,s){return o(r(e,t,i,n,s))}})},83062:(e,t,i)=>{"use strict";i(46518)({target:"Math",stat:!0,forced:!0},{iaddh:function(e,t,i,n){var r=e>>>0,o=i>>>0;return(t>>>0)+(n>>>0)+((r&o|(r|o)&~(r+o>>>0))>>>31)|0}})},96369:(e,t,i)=>{"use strict";i(46518)({target:"Math",stat:!0,forced:!0},{imulh:function(e,t){var i=65535,n=+e,r=+t,o=n&i,s=r&i,a=n>>16,l=r>>16,c=(a*s>>>0)+(o*s>>>16);return a*l+(c>>16)+((o*l>>>0)+(c&i)>>16)}})},15637:(e,t,i)=>{"use strict";i(46518)({target:"Math",stat:!0,forced:!0},{isubh:function(e,t,i,n){var r=e>>>0,o=i>>>0;return(t>>>0)-(n>>>0)-((~r&o|(r^~o)&r-o>>>0)>>>31)|0}})},2848:(e,t,i)=>{"use strict";i(46518)({target:"Math",stat:!0,nonConfigurable:!0,nonWritable:!0},{RAD_PER_DEG:180/Math.PI})},24842:(e,t,i)=>{"use strict";var n=i(46518),r=Math.PI/180;n({target:"Math",stat:!0,forced:!0},{radians:function(e){return e*r}})},24746:(e,t,i)=>{"use strict";i(46518)({target:"Math",stat:!0,forced:!0},{scale:i(77905)})},33454:(e,t,i)=>{"use strict";var n=i(46518),r=i(28551),o=i(50360),s=i(33994),a=i(62529),l=i(91181),c="Seeded Random",h=c+" Generator",u=l.set,d=l.getterFor(h),f=TypeError,p=s((function(e){u(this,{type:h,seed:e%2147483647})}),c,(function(){var e=d(this),t=e.seed=(1103515245*e.seed+12345)%2147483647;return a((1073741823&t)/1073741823,!1)}));n({target:"Math",stat:!0,forced:!0},{seededPRNG:function(e){var t=r(e).seed;if(!o(t))throw new f('Math.seededPRNG() argument should have a "seed" field with a finite value.');return new p(t)}})},6660:(e,t,i)=>{"use strict";i(46518)({target:"Math",stat:!0,forced:!0},{signbit:function(e){var t=+e;return t==t&&0===t?1/t==-1/0:t<0}})},15941:(e,t,i)=>{"use strict";i(46518)({target:"Math",stat:!0,forced:!0},{umulh:function(e,t){var i=65535,n=+e,r=+t,o=n&i,s=r&i,a=n>>>16,l=r>>>16,c=(a*s>>>0)+(o*s>>>16);return a*l+(c>>>16)+((o*l>>>0)+(c&i)>>>16)}})},82101:(e,t,i)=>{"use strict";var n=i(46518),r=i(79504),o=i(91291),s="Invalid number representation",a=RangeError,l=SyntaxError,c=TypeError,h=parseInt,u=Math.pow,d=/^[\d.a-z]+$/,f=r("".charAt),p=r(d.exec),m=r(1..toString),g=r("".slice),v=r("".split);n({target:"Number",stat:!0,forced:!0},{fromString:function(e,t){var i=1;if("string"!=typeof e)throw new c(s);if(!e.length)throw new l(s);if("-"===f(e,0)&&(i=-1,!(e=g(e,1)).length))throw new l(s);var n=void 0===t?10:o(t);if(n<2||n>36)throw new a("Invalid radix");if(!p(d,e))throw new l(s);var r=v(e,"."),y=h(r[0],n);if(r.length>1&&(y+=h(r[1],n)/u(n,r[1].length)),10===n&&m(y,n)!==e)throw new l(s);return i*y}})},15239:(e,t,i)=>{"use strict";var n=i(46518),r=i(69565),o=i(43724),s=i(87633),a=i(79306),l=i(28551),c=i(90679),h=i(94901),u=i(64117),d=i(20034),f=i(55966),p=i(36840),m=i(56279),g=i(62106),v=i(90757),y=i(78227),b=i(91181),x=y("observable"),_="Observable",E="Subscription",S="SubscriptionObserver",A=b.getterFor,w=b.set,T=A(_),M=A(E),C=A(S),P=function(e){this.observer=l(e),this.cleanup=void 0,this.subscriptionObserver=void 0};P.prototype={type:E,clean:function(){var e=this.cleanup;if(e){this.cleanup=void 0;try{e()}catch(e){v(e)}}},close:function(){if(!o){var e=this.facade,t=this.subscriptionObserver;e.closed=!0,t&&(t.closed=!0)}this.observer=void 0},isClosed:function(){return void 0===this.observer}};var D=function(e,t){var i,n=w(this,new P(e));o||(this.closed=!1);try{(i=f(e,"start"))&&r(i,e,this)}catch(e){v(e)}if(!n.isClosed()){var s=n.subscriptionObserver=new L(n);try{var l=t(s),c=l;u(l)||(n.cleanup=h(l.unsubscribe)?function(){c.unsubscribe()}:a(l))}catch(e){return void s.error(e)}n.isClosed()&&n.clean()}};D.prototype=m({},{unsubscribe:function(){var e=M(this);e.isClosed()||(e.close(),e.clean())}}),o&&g(D.prototype,"closed",{configurable:!0,get:function(){return M(this).isClosed()}});var L=function(e){w(this,{type:S,subscriptionState:e}),o||(this.closed=!1)};L.prototype=m({},{next:function(e){var t=C(this).subscriptionState;if(!t.isClosed()){var i=t.observer;try{var n=f(i,"next");n&&r(n,i,e)}catch(e){v(e)}}},error:function(e){var t=C(this).subscriptionState;if(!t.isClosed()){var i=t.observer;t.close();try{var n=f(i,"error");n?r(n,i,e):v(e)}catch(e){v(e)}t.clean()}},complete:function(){var e=C(this).subscriptionState;if(!e.isClosed()){var t=e.observer;e.close();try{var i=f(t,"complete");i&&r(i,t)}catch(e){v(e)}e.clean()}}}),o&&g(L.prototype,"closed",{configurable:!0,get:function(){return C(this).subscriptionState.isClosed()}});var I=function(e){c(this,R),w(this,{type:_,subscriber:a(e)})},R=I.prototype;m(R,{subscribe:function(e){var t=arguments.length;return new D(h(e)?{next:e,error:t>1?arguments[1]:void 0,complete:t>2?arguments[2]:void 0}:d(e)?e:{},T(this).subscriber)}}),p(R,x,(function(){return this})),n({global:!0,constructor:!0,forced:!0},{Observable:I}),s(_)},9035:(e,t,i)=>{"use strict";var n=i(46518),r=i(97751),o=i(69565),s=i(28551),a=i(33517),l=i(70081),c=i(55966),h=i(72652),u=i(78227)("observable");n({target:"Observable",stat:!0,forced:!0},{from:function(e){var t=a(this)?this:r("Observable"),i=c(s(e),u);if(i){var n=s(o(i,e));return n.constructor===t?n:new t((function(e){return n.subscribe(e)}))}var d=l(e);return new t((function(e){h(d,(function(t,i){if(e.next(t),e.closed)return i()}),{IS_ITERATOR:!0,INTERRUPTED:!0}),e.complete()}))}})},2917:(e,t,i)=>{"use strict";i(15239),i(9035),i(78662)},78662:(e,t,i)=>{"use strict";var n=i(46518),r=i(97751),o=i(33517),s=r("Array");n({target:"Observable",stat:!0,forced:!0},{of:function(){for(var e=o(this)?this:r("Observable"),t=arguments.length,i=s(t),n=0;n{"use strict";var n=i(46518),r=i(36043),o=i(1103);n({target:"Promise",stat:!0,forced:!0},{try:function(e){var t=r.f(this),i=o(e);return(i.error?t.reject:t.resolve)(i.value),t.promise}})},65186:(e,t,i)=>{"use strict";var n=i(46518),r=i(18449),o=i(28551),s=r.toKey,a=r.set;n({target:"Reflect",stat:!0},{defineMetadata:function(e,t,i){var n=arguments.length<4?void 0:s(arguments[3]);a(e,t,o(i),n)}})},42978:(e,t,i)=>{"use strict";var n=i(46518),r=i(18449),o=i(28551),s=r.toKey,a=r.getMap,l=r.store;n({target:"Reflect",stat:!0},{deleteMetadata:function(e,t){var i=arguments.length<3?void 0:s(arguments[2]),n=a(o(t),i,!1);if(void 0===n||!n.delete(e))return!1;if(n.size)return!0;var r=l.get(t);return r.delete(i),!!r.size||l.delete(t)}})},79852:(e,t,i)=>{"use strict";var n=i(46518),r=i(79504),o=i(18449),s=i(28551),a=i(42787),l=r(i(79565)),c=r([].concat),h=o.keys,u=o.toKey,d=function(e,t){var i=h(e,t),n=a(e);if(null===n)return i;var r=d(n,t);return r.length?i.length?l(c(i,r)):r:i};n({target:"Reflect",stat:!0},{getMetadataKeys:function(e){var t=arguments.length<2?void 0:u(arguments[1]);return d(s(e),t)}})},72527:(e,t,i)=>{"use strict";var n=i(46518),r=i(18449),o=i(28551),s=i(42787),a=r.has,l=r.get,c=r.toKey,h=function(e,t,i){if(a(e,t,i))return l(e,t,i);var n=s(t);return null!==n?h(e,n,i):void 0};n({target:"Reflect",stat:!0},{getMetadata:function(e,t){var i=arguments.length<3?void 0:c(arguments[2]);return h(e,o(t),i)}})},40617:(e,t,i)=>{"use strict";var n=i(46518),r=i(18449),o=i(28551),s=r.keys,a=r.toKey;n({target:"Reflect",stat:!0},{getOwnMetadataKeys:function(e){var t=arguments.length<2?void 0:a(arguments[1]);return s(o(e),t)}})},42376:(e,t,i)=>{"use strict";var n=i(46518),r=i(18449),o=i(28551),s=r.get,a=r.toKey;n({target:"Reflect",stat:!0},{getOwnMetadata:function(e,t){var i=arguments.length<3?void 0:a(arguments[2]);return s(e,o(t),i)}})},73067:(e,t,i)=>{"use strict";var n=i(46518),r=i(18449),o=i(28551),s=i(42787),a=r.has,l=r.toKey,c=function(e,t,i){if(a(e,t,i))return!0;var n=s(t);return null!==n&&c(e,n,i)};n({target:"Reflect",stat:!0},{hasMetadata:function(e,t){var i=arguments.length<3?void 0:l(arguments[2]);return c(e,o(t),i)}})},66820:(e,t,i)=>{"use strict";var n=i(46518),r=i(18449),o=i(28551),s=r.has,a=r.toKey;n({target:"Reflect",stat:!0},{hasOwnMetadata:function(e,t){var i=arguments.length<3?void 0:a(arguments[2]);return s(e,o(t),i)}})},8288:(e,t,i)=>{"use strict";var n=i(46518),r=i(18449),o=i(28551),s=r.toKey,a=r.set;n({target:"Reflect",stat:!0},{metadata:function(e,t){return function(i,n){a(e,t,o(i),s(n))}}})},25509:(e,t,i)=>{"use strict";var n=i(46518),r=i(97080),o=i(94402).add;n({target:"Set",proto:!0,real:!0,forced:!0},{addAll:function(){for(var e=r(this),t=0,i=arguments.length;t{"use strict";var n=i(46518),r=i(97080),o=i(94402).remove;n({target:"Set",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var e,t=r(this),i=!0,n=0,s=arguments.length;n{"use strict";var n=i(46518),r=i(69565),o=i(47650),s=i(83440);n({target:"Set",proto:!0,real:!0,forced:!0},{difference:function(e){return r(s,this,o(e))}})},41927:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(97080),s=i(38469);n({target:"Set",proto:!0,real:!0,forced:!0},{every:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0);return!1!==s(t,(function(e){if(!i(e,e,t))return!1}),!0)}})},11632:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(97080),s=i(94402),a=i(38469),l=s.Set,c=s.add;n({target:"Set",proto:!0,real:!0,forced:!0},{filter:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0),n=new l;return a(t,(function(e){i(e,e,t)&&c(n,e)})),n}})},64377:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(97080),s=i(38469);n({target:"Set",proto:!0,real:!0,forced:!0},{find:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0),n=s(t,(function(e){if(i(e,e,t))return{value:e}}),!0);return n&&n.value}})},49522:(e,t,i)=>{"use strict";var n=i(46518),r=i(94402);n({target:"Set",stat:!0,forced:!0},{from:i(70933)(r.Set,r.add,!1)})},66771:(e,t,i)=>{"use strict";var n=i(46518),r=i(69565),o=i(47650),s=i(68750);n({target:"Set",proto:!0,real:!0,forced:!0},{intersection:function(e){return r(s,this,o(e))}})},12516:(e,t,i)=>{"use strict";var n=i(46518),r=i(69565),o=i(47650),s=i(64449);n({target:"Set",proto:!0,real:!0,forced:!0},{isDisjointFrom:function(e){return r(s,this,o(e))}})},68931:(e,t,i)=>{"use strict";var n=i(46518),r=i(69565),o=i(47650),s=i(53838);n({target:"Set",proto:!0,real:!0,forced:!0},{isSubsetOf:function(e){return r(s,this,o(e))}})},52514:(e,t,i)=>{"use strict";var n=i(46518),r=i(69565),o=i(47650),s=i(28527);n({target:"Set",proto:!0,real:!0,forced:!0},{isSupersetOf:function(e){return r(s,this,o(e))}})},35694:(e,t,i)=>{"use strict";var n=i(46518),r=i(79504),o=i(97080),s=i(38469),a=i(655),l=r([].join),c=r([].push);n({target:"Set",proto:!0,real:!0,forced:!0},{join:function(e){var t=o(this),i=void 0===e?",":a(e),n=[];return s(t,(function(e){c(n,e)})),l(n,i)}})},52774:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(97080),s=i(94402),a=i(38469),l=s.Set,c=s.add;n({target:"Set",proto:!0,real:!0,forced:!0},{map:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0),n=new l;return a(t,(function(e){c(n,i(e,e,t))})),n}})},23283:(e,t,i)=>{"use strict";var n=i(46518),r=i(94402);n({target:"Set",stat:!0,forced:!0},{of:i(87500)(r.Set,r.add,!1)})},49536:(e,t,i)=>{"use strict";var n=i(46518),r=i(79306),o=i(97080),s=i(38469),a=TypeError;n({target:"Set",proto:!0,real:!0,forced:!0},{reduce:function(e){var t=o(this),i=arguments.length<2,n=i?void 0:arguments[1];if(r(e),s(t,(function(r){i?(i=!1,n=r):n=e(n,r,r,t)})),i)throw new a("Reduce of empty set with no initial value");return n}})},21926:(e,t,i)=>{"use strict";var n=i(46518),r=i(76080),o=i(97080),s=i(38469);n({target:"Set",proto:!0,real:!0,forced:!0},{some:function(e){var t=o(this),i=r(e,arguments.length>1?arguments[1]:void 0);return!0===s(t,(function(e){if(i(e,e,t))return!0}),!0)}})},94483:(e,t,i)=>{"use strict";var n=i(46518),r=i(69565),o=i(47650),s=i(83650);n({target:"Set",proto:!0,real:!0,forced:!0},{symmetricDifference:function(e){return r(s,this,o(e))}})},16215:(e,t,i)=>{"use strict";var n=i(46518),r=i(69565),o=i(47650),s=i(44204);n({target:"Set",proto:!0,real:!0,forced:!0},{union:function(e){return r(s,this,o(e))}})},78898:(e,t,i)=>{"use strict";var n=i(46518),r=i(68183).charAt,o=i(67750),s=i(91291),a=i(655);n({target:"String",proto:!0,forced:!0},{at:function(e){var t=a(o(this)),i=t.length,n=s(e),l=n>=0?n:i+n;return l<0||l>=i?void 0:r(t,l)}})},74176:(e,t,i)=>{"use strict";var n=i(46518),r=i(33994),o=i(62529),s=i(67750),a=i(655),l=i(91181),c=i(68183),h=c.codeAt,u=c.charAt,d="String Iterator",f=l.set,p=l.getterFor(d),m=r((function(e){f(this,{type:d,string:e,index:0})}),"String",(function(){var e,t=p(this),i=t.string,n=t.index;return n>=i.length?o(void 0,!0):(e=u(i,n),t.index+=e.length,o({codePoint:h(e,0),position:n},!1))}));n({target:"String",proto:!0,forced:!0},{codePoints:function(){return new m(a(s(this)))}})},43275:(e,t,i)=>{"use strict";var n=i(24475),r=i(70511),o=i(24913).f,s=i(77347).f,a=n.Symbol;if(r("dispose"),a){var l=s(a,"dispose");l.enumerable&&l.configurable&&l.writable&&o(a,"dispose",{value:l.value,enumerable:!1,configurable:!1,writable:!1})}},42793:(e,t,i)=>{"use strict";i(70511)("observable")},77208:(e,t,i)=>{"use strict";i(70511)("patternMatch")},67348:(e,t,i)=>{"use strict";var n=i(46518),r=i(76557),o=i(44995).remove;n({target:"WeakMap",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var e,t=r(this),i=!0,n=0,s=arguments.length;n{"use strict";var n=i(46518),r=i(44995);n({target:"WeakMap",stat:!0,forced:!0},{from:i(70933)(r.WeakMap,r.set,!0)})},79732:(e,t,i)=>{"use strict";var n=i(46518),r=i(44995);n({target:"WeakMap",stat:!0,forced:!0},{of:i(87500)(r.WeakMap,r.set,!0)})},83742:(e,t,i)=>{"use strict";var n=i(46518),r=i(23755),o=i(88205).add;n({target:"WeakSet",proto:!0,real:!0,forced:!0},{addAll:function(){for(var e=r(this),t=0,i=arguments.length;t{"use strict";var n=i(46518),r=i(23755),o=i(88205).remove;n({target:"WeakSet",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var e,t=r(this),i=!0,n=0,s=arguments.length;n{"use strict";var n=i(46518),r=i(88205);n({target:"WeakSet",stat:!0,forced:!0},{from:i(70933)(r.WeakSet,r.add,!1)})},46270:(e,t,i)=>{"use strict";var n=i(46518),r=i(88205);n({target:"WeakSet",stat:!0,forced:!0},{of:i(87500)(r.WeakSet,r.add,!1)})},86368:(e,t,i)=>{"use strict";var n=i(46518),r=i(24475),o=i(59225).clear;n({global:!0,bind:!0,enumerable:!0,forced:r.clearImmediate!==o},{clearImmediate:o})},59848:(e,t,i)=>{"use strict";i(86368),i(29309)},29309:(e,t,i)=>{"use strict";var n=i(46518),r=i(24475),o=i(59225).set,s=i(79472),a=r.setImmediate?s(o,!1):o;n({global:!0,bind:!0,enumerable:!0,forced:r.setImmediate!==a},{setImmediate:a})},85178:(e,t,i)=>{var n;if("function"==typeof fetch&&(n=void 0!==i.g&&i.g.fetch?i.g.fetch:"undefined"!=typeof window&&window.fetch?window.fetch:fetch),"undefined"==typeof window||void 0===window.document){var r=n||i(95204);r.default&&(r=r.default),t.default=r,e.exports=t.default}},92467:e=>{"use strict";e.exports=JSON.parse('{"globals":{"dimension":{},"factor":{"factor":1},"factor.derived":{"parentFactors":{}},"quantity":{"units":[]},"symbol":{"doc":"http://docs.adskunits.apiary.io/#introduction/definitions/unit-symbols","unit":{"typeid":"unit","description":"Measurement unit this symbol applies to."}},"symbol.placement":{"Prefix":{"value":0},"Suffix":1},"symbol.prefixOrSuffix":{"text":{"typeid":"String","description":"Text to annotate the value."},"placement":{"typeid":"symbol.placement","description":"Placement of the annotation text."},"space":{"typeid":"Bool","description":"Specifies whether the annotation should be separated from the value by a space."}},"system":{"Metric":{"value":0,"description":"Metric system of measurement units."},"Imperial":1},"unit":{"doc":"http://docs.adskunits.apiary.io/#introduction/definitions/measurement-units","unitSystem":{"typeid":"system"}},"unit.absolute":{"parentUnit":{"typeid":"unit.relative","description":"Relative unit from which this absolute unit is derived."},"offset":{"typeid":"Float64","value":0,"description":"An offset used to position an absolute scale of measurement on the number line."}},"unit.derived":{"parentFactors":{},"parentUnits":{}},"unit.primitive":{},"unit.primitive.dimensional":{"dimension":{"typeid":"dimension"}},"unit.relative":{}},"factor":{"nineFifths":{"factor":1.8},"pi":{"factor":3.14159265358979},"atto":{"parentFactors":{"ten":-18}},"centi":{"parentFactors":{"ten":-2}},"deci":{"parentFactors":{"ten":-1}},"deka":{"parentFactors":{"ten":1}},"exa":{"parentFactors":{"ten":18}},"femto":{"parentFactors":{"ten":-15}},"giga":{"parentFactors":{"ten":9}},"hecto":{"parentFactors":{"ten":2}},"kilo":{"parentFactors":{"ten":3}},"mega":{"parentFactors":{"ten":6}},"micro":{"parentFactors":{"ten":-6}},"milli":{"parentFactors":{"ten":-3}},"nano":{"parentFactors":{"ten":-9}},"peta":{"parentFactors":{"ten":15}},"pico":{"parentFactors":{"ten":-12}},"tera":{"parentFactors":{"ten":12}},"yocto":{"parentFactors":{"ten":-24}},"yotta":{"parentFactors":{"ten":24}},"zepto":{"parentFactors":{"ten":-21}},"zetta":{"parentFactors":{"ten":21}},"ten":{"factor":10},"threeHundredSixty":{"factor":360},"threeThousandNineHundredThirtySeven":{"factor":3937},"twelve":{"factor":12}},"dimension":{"currency":{},"electricCurrent":{},"length":{},"luminousIntensity":{},"mass":{},"temperature":{},"time":{}},"unit":{"1ToRatio":{"unitSystem":"Metric","parentUnits":{"ratioTo1":-1},"symbols":{"1Colon":{"text":"1:","placement":"Prefix","space":false}}},"acres":{"unitSystem":"Imperial","factor":4840,"parentUnits":{"squareYards":1},"symbols":{"acres":{"text":"acres","placement":"Suffix","space":true}}},"ampereHours":{"unitSystem":"Metric","parentUnits":{"amperes":1,"hours":1},"symbols":{"aDashH":{"text":"A-h","placement":"Suffix","space":true}}},"ampereSeconds":{"unitSystem":"Metric","parentUnits":{"amperes":1,"seconds":1},"symbols":{"aDashS":{"text":"A-s","placement":"Suffix","space":true}}},"amperes":{"unitSystem":"Metric","dimension":"electricCurrent","symbols":{"ampere":{"text":"A","placement":"Suffix","space":true}}},"atmospheres":{"unitSystem":"Imperial","factor":101325,"parentUnits":{"pascals":1},"symbols":{"atm":{"text":"atm","placement":"Suffix","space":true}}},"bars":{"unitSystem":"Metric","factor":100,"parentUnits":{"kilopascals":1},"symbols":{"bar":{"text":"bar","placement":"Suffix","space":true}}},"britishThermalUnits":{"unitSystem":"Imperial","factor":1055.05585262,"parentUnits":{"joules":1},"symbols":{"btu":{"text":"Btu","placement":"Suffix","space":true}}},"britishThermalUnitsPerDegreeFahrenheit":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnits":1,"fahrenheitInterval":-1},"symbols":{"btuPerDegreeF":{"text":"BTU/°F","placement":"Suffix","space":true}}},"britishThermalUnitsPerHour":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnits":1,"hours":-1},"symbols":{"btuPerH":{"text":"Btu/h","placement":"Suffix","space":true}}},"britishThermalUnitsPerHourCubicFoot":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnitsPerHour":1,"cubicFeet":-1},"symbols":{"btuPerHFtSup3":{"text":"Btu/(h·ft³)","placement":"Suffix","space":true}}},"britishThermalUnitsPerHourFootDegreeFahrenheit":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnitsPerHour":1,"feet":-1,"fahrenheitInterval":-1},"symbols":{"btuPerHFtDegreeF":{"text":"BTU/(h·ft·°F)","placement":"Suffix","space":true}}},"britishThermalUnitsPerHourSquareFoot":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnitsPerHour":1,"squareFeet":-1},"symbols":{"btuPerHFtSup2":{"text":"Btu/(h·ft²)","placement":"Suffix","space":true}}},"britishThermalUnitsPerHourSquareFootDegreeFahrenheit":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnitsPerHourSquareFoot":1,"fahrenheitInterval":-1},"symbols":{"btuPerHFtSup2DegreeF":{"text":"BTU/(h·ft²·°F)","placement":"Suffix","space":true}}},"britishThermalUnitsPerPound":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnits":1,"poundsMass":-1},"symbols":{"btuPerLb":{"text":"BTU/lb","placement":"Suffix","space":true}}},"britishThermalUnitsPerPoundDegreeFahrenheit":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnitsPerPound":1,"fahrenheitInterval":-1},"symbols":{"btuPerLbDegreeF":{"text":"BTU/(lb·°F)","placement":"Suffix","space":true}}},"britishThermalUnitsPerSecond":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnits":1,"seconds":-1},"symbols":{"btuPerS":{"text":"Btu/s","placement":"Suffix","space":true}}},"britishThermalUnitsPerSquareFootDegreeFahrenheit":{"unitSystem":"Imperial","parentUnits":{"britishThermalUnits":1,"squareFeet":-1,"fahrenheitInterval":-1},"symbols":{"btuPerFtSup2DegreeF":{"text":"BTU/(ft²·°F)","placement":"Suffix","space":true}}},"calories":{"unitSystem":"Metric","factor":4.1868,"parentUnits":{"joules":1},"symbols":{"cal":{"text":"cal","placement":"Suffix","space":true}}},"caloriesPerSecond":{"unitSystem":"Metric","parentUnits":{"calories":1,"seconds":-1},"symbols":{"calPerS":{"text":"cal/s","placement":"Suffix","space":true}}},"candelas":{"unitSystem":"Metric","dimension":"luminousIntensity","symbols":{"cd":{"text":"cd","placement":"Suffix","space":true}}},"candelasPerSquareFoot":{"unitSystem":"Imperial","parentUnits":{"candelas":1,"squareFeet":-1},"symbols":{"cdPerFtSup2":{"text":"cd/ft²","placement":"Suffix","space":true}}},"candelasPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"candelas":1,"squareMeters":-1},"symbols":{"cdPerMSup2":{"text":"cd/m²","placement":"Suffix","space":true}}},"celsius":{"unitSystem":"Metric","parentUnit":"celsiusInterval","offset":273.15,"symbols":{"degreeC":{"text":"°C","placement":"Suffix","space":true}}},"celsiusInterval":{"unitSystem":"Metric","parentUnits":{"kelvinInterval":1},"symbols":{"degreeCInterval":{"text":"°C","placement":"Suffix","space":true},"deltaDegreeC":{"text":"delta°C","placement":"Suffix","space":true}}},"centimeters":{"unitSystem":"Metric","parentFactors":{"centi":1},"parentUnits":{"meters":1},"symbols":{"cm":{"text":"cm","placement":"Suffix","space":true}}},"centimetersPerMinute":{"unitSystem":"Metric","parentUnits":{"centimeters":1,"minutes":-1},"symbols":{"cmPerMin":{"text":"cm/min","placement":"Suffix","space":true}}},"centimetersToTheFourthPower":{"unitSystem":"Metric","parentUnits":{"centimeters":4},"symbols":{"cmSup4":{"text":"cm⁴","placement":"Suffix","space":true}}},"centimetersToTheSixthPower":{"unitSystem":"Metric","parentUnits":{"centimeters":6},"symbols":{"cmSup6":{"text":"cm⁶","placement":"Suffix","space":true}}},"centipoises":{"unitSystem":"Metric","parentFactors":{"centi":1},"parentUnits":{"poises":1},"symbols":{"cP":{"text":"cP","placement":"Suffix","space":true}}},"circularMils":{"unitSystem":"Imperial","factor":0.25,"parentFactors":{"pi":1},"parentUnits":{"squareMils":1},"symbols":{"cMil":{"text":"cmil","placement":"Suffix","space":true}}},"coulombs":{"unitSystem":"Metric","parentUnits":{"ampereSeconds":1},"symbols":{"coulomb":{"text":"C","placement":"Suffix","space":true}}},"cubicCentimeters":{"defaultSymbol":"cmSup3","unitSystem":"Metric","parentUnits":{"centimeters":3},"symbols":{"cmCaret3":{"text":"cm^3","placement":"Suffix","space":true},"cmSup3":{"text":"cm³","placement":"Suffix","space":true}}},"cubicFeet":{"defaultSymbol":"ftSup3","unitSystem":"Imperial","parentUnits":{"feet":3},"symbols":{"cf":{"text":"CF","placement":"Suffix","space":true},"ftCaret3":{"text":"ft^3","placement":"Suffix","space":true},"ftSup3":{"text":"ft³","placement":"Suffix","space":true}}},"cubicFeetPerHour":{"defaultSymbol":"ftSup3PerHour","unitSystem":"Imperial","parentUnits":{"cubicFeet":1,"hours":-1},"symbols":{"cfh":{"text":"CFH","placement":"Suffix","space":true},"ftSup3PerH":{"text":"ft³/h","placement":"Suffix","space":true}}},"cubicFeetPerKip":{"unitSystem":"Imperial","parentUnits":{"cubicFeet":1,"kips":-1},"symbols":{"ftSup3PerKip":{"text":"ft³/kip","placement":"Suffix","space":true}}},"cubicFeetPerMinute":{"defaultSymbol":"ftSup3PerMin","unitSystem":"Imperial","parentUnits":{"cubicFeet":1,"minutes":-1},"symbols":{"cfm":{"text":"CFM","placement":"Suffix","space":true},"ftSup3PerMin":{"text":"ft³/min","placement":"Suffix","space":true}}},"cubicFeetPerMinuteCubicFoot":{"defaultSymbol":"cfmPerFtSup3","unitSystem":"Imperial","parentUnits":{"cubicFeetPerMinute":1,"cubicFeet":-1},"symbols":{"cfmPerCf":{"text":"CFM/CF","placement":"Suffix","space":true},"cfmPerFtSup3":{"text":"CFM/ft³","placement":"Suffix","space":true}}},"cubicFeetPerMinutePerBritishThermalUnitPerHour":{"unitSystem":"Imperial","parentUnits":{"cubicFeetPerMinute":1,"britishThermalUnitsPerHour":-1},"symbols":{"ftSup3HPerMinBtu":{"text":"ft³·h/(min·Btu)","placement":"Suffix","space":true}}},"cubicFeetPerMinuteSquareFoot":{"defaultSymbol":"cfmPerFtSup2","unitSystem":"Imperial","parentUnits":{"cubicFeetPerMinute":1,"squareFeet":-1},"symbols":{"cfmPerFtSup2":{"text":"CFM/ft²","placement":"Suffix","space":true},"cfmPerSf":{"text":"CFM/SF","placement":"Suffix","space":true}}},"cubicFeetPerMinuteSquareMeter":{"unitSystem":"Metric","parentUnits":{"cubicFeetPerMinute":1,"squareMeters":-1}},"cubicFeetPerMinuteTonOfRefrigeration":{"unitSystem":"Imperial","parentUnits":{"cubicFeetPerMinute":1,"tonsOfRefrigeration":-1},"symbols":{"cfmPerTon":{"text":"CFM/ton","placement":"Suffix","space":true}}},"cubicFeetPerPoundMass":{"unitSystem":"Imperial","parentUnits":{"cubicFeet":1,"poundsMass":-1},"symbols":{"ftSup3PerLbMass":{"text":"ft³/lb","placement":"Suffix","space":true}}},"cubicInches":{"defaultSymbol":"inSup3","unitSystem":"Imperial","parentUnits":{"inches":3},"symbols":{"inCaret3":{"text":"in^3","placement":"Suffix","space":true},"inSup3":{"text":"in³","placement":"Suffix","space":true}}},"cubicMeters":{"defaultSymbol":"mSup3","unitSystem":"Metric","parentUnits":{"meters":3},"symbols":{"mCaret3":{"text":"m^3","placement":"Suffix","space":true},"mSup3":{"text":"m³","placement":"Suffix","space":true}}},"cubicMetersPerHour":{"defaultSymbol":"mSup3PerH","unitSystem":"Metric","parentUnits":{"cubicMeters":1,"hours":-1},"symbols":{"cmh":{"text":"CMH","placement":"Suffix","space":true},"mSup3PerH":{"text":"m³/h","placement":"Suffix","space":true}}},"cubicMetersPerHourCubicMeter":{"unitSystem":"Metric","parentUnits":{"cubicMetersPerHour":1,"cubicMeters":-1},"symbols":{"mSup3PerHMSup3":{"text":"m³/(h·m³)","placement":"Suffix","space":true}}},"cubicMetersPerHourSquareMeter":{"unitSystem":"Metric","parentUnits":{"cubicMetersPerHour":1,"squareMeters":-1},"symbols":{"mSup3PerHMSup2":{"text":"m³/(h·m²)","placement":"Suffix","space":true}}},"cubicMetersPerKilogram":{"unitSystem":"Metric","parentUnits":{"cubicMeters":1,"kilograms":-1},"symbols":{"mSup3PerKg":{"text":"m³/kg","placement":"Suffix","space":true}}},"cubicMetersPerKilonewton":{"unitSystem":"Metric","parentUnits":{"cubicMeters":1,"kilonewtons":-1},"symbols":{"mSup3PerKN":{"text":"m³/kN","placement":"Suffix","space":true}}},"cubicMetersPerSecond":{"defaultSymbol":"mSup3PerS","unitSystem":"Metric","parentUnits":{"cubicMeters":1,"seconds":-1},"symbols":{"cms":{"text":"CMS","placement":"Suffix","space":true},"mSup3PerS":{"text":"m³/s","placement":"Suffix","space":true}}},"cubicMetersPerWattSecond":{"unitSystem":"Metric","parentUnits":{"cubicMeters":1,"watts":-1,"seconds":-1},"symbols":{"mSup3PerWS":{"text":"m³/(W·s)","placement":"Suffix","space":true}}},"cubicMillimeters":{"defaultSymbol":"mmSup3","unitSystem":"Metric","parentUnits":{"millimeters":3},"symbols":{"mmCaret3":{"text":"mm^3","placement":"Suffix","space":true},"mmSup3":{"text":"mm³","placement":"Suffix","space":true}}},"cubicYards":{"unitSystem":"Imperial","parentUnits":{"yards":3},"symbols":{"cy":{"text":"CY","placement":"Suffix","space":true}}},"currency":{"defaultSymbol":"usDollar","unitSystem":"Imperial","dimension":"currency","symbols":{"baht":{"description":"Baht is the official currency of Thailand.","text":"฿","placement":"Prefix","space":false},"chineseHongKongDollar":{"description":"Hong Kong Dollar is the official currency of Hong Kong..","text":"HK$","placement":"Prefix","space":false},"dong":{"description":"Dong is the official currency of Vietnam.","text":"₫","placement":"Suffix","space":false},"euroPrefix":{"text":"€","placement":"Prefix","space":false},"euroSuffix":{"text":"€","placement":"Suffix","space":false},"krone":{"description":"Krone is the official currency of Denmark, Greenland, and the Faroe Islands.","text":"kr","placement":"Suffix","space":true},"shekel":{"description":"Shekel is the official currency of Israel.","text":"₪","placement":"Prefix","space":false},"ukPound":{"text":"£","placement":"Prefix","space":false},"usDollar":{"text":"$","placement":"Prefix","space":false},"won":{"description":"Won is the official currency of South Korea.","text":"₩","placement":"Prefix","space":false},"yen":{"text":"¥","placement":"Prefix","space":false}}},"currencyPerBritishThermalUnit":{"unitSystem":"Imperial","parentUnits":{"currency":1,"britishThermalUnits":-1},"symbols":{"dollarPerBtu":{"text":"$/Btu","placement":"Suffix","space":true}}},"currencyPerBritishThermalUnitPerHour":{"unitSystem":"Imperial","parentUnits":{"currency":1,"britishThermalUnitsPerHour":-1},"symbols":{"dollarHPerBtu":{"text":"$·h/Btu","placement":"Suffix","space":true}}},"currencyPerSquareFoot":{"unitSystem":"Imperial","parentUnits":{"currency":1,"squareFeet":-1},"symbols":{"dollarPerFtSup2":{"text":"$/ft²","placement":"Suffix","space":true}}},"currencyPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"currency":1,"squareMeters":-1},"symbols":{"dollarPerMSup2":{"text":"$/m²","placement":"Suffix","space":true}}},"currencyPerWatt":{"unitSystem":"Metric","parentUnits":{"currency":1,"watts":-1},"symbols":{"dollarPerW":{"text":"$/W","placement":"Suffix","space":true}}},"currencyPerWattHour":{"unitSystem":"Metric","parentUnits":{"currency":1,"watts":-1,"hours":-1},"symbols":{"dollarPerWH":{"text":"$/(W·h)","placement":"Suffix","space":true}}},"cyclesPerSecond":{"unitSystem":"Metric","parentUnits":{"seconds":-1},"symbols":{"cps":{"text":"cps","placement":"Suffix","space":true}}},"decimeters":{"unitSystem":"Metric","parentFactors":{"deci":1},"parentUnits":{"meters":1},"symbols":{"dm":{"text":"dm","placement":"Suffix","space":true}}},"degrees":{"defaultSymbol":"degree","unitSystem":"Metric","parentFactors":{"threeHundredSixty":-1},"parentUnits":{"turns":1},"symbols":{"degree":{"text":"°","placement":"Suffix","space":false},"degreesMinutesSeconds":{"inherits":"symbol"}}},"dekanewtonMeters":{"unitSystem":"Metric","parentUnits":{"dekanewtons":1,"meters":1},"symbols":{"daNDashM":{"text":"daN-m","placement":"Suffix","space":true}}},"dekanewtonMetersPerMeter":{"unitSystem":"Metric","parentUnits":{"dekanewtonMeters":1,"meters":-1},"symbols":{"daNDashMPerM":{"text":"daN-m/m","placement":"Suffix","space":true}}},"dekanewtons":{"unitSystem":"Metric","parentFactors":{"deka":1},"parentUnits":{"newtons":1},"symbols":{"daN":{"text":"daN","placement":"Suffix","space":true}}},"dekanewtonsPerMeter":{"unitSystem":"Metric","parentUnits":{"dekanewtons":1,"meters":-1},"symbols":{"daNPerM":{"text":"daN/m","placement":"Suffix","space":true}}},"dekanewtonsPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"dekanewtons":1,"squareMeters":-1},"symbols":{"daNPerMSup2":{"text":"daN/m²","placement":"Suffix","space":true}}},"dynes":{"unitSystem":"Metric","factor":10,"parentFactors":{"micro":1},"parentUnits":{"newtons":1},"symbols":{"dyn":{"text":"dyn","placement":"Suffix","space":true}}},"ergs":{"unitSystem":"Metric","parentFactors":{"ten":-7},"parentUnits":{"joules":1},"symbols":{"erg":{"text":"erg","placement":"Suffix","space":true}}},"fahrenheit":{"unitSystem":"Imperial","parentUnit":"fahrenheitInterval","offset":459.67,"symbols":{"degreeF":{"text":"°F","placement":"Suffix","space":true}}},"fahrenheitInterval":{"defaultSymbol":"degreeFInterval","unitSystem":"Imperial","parentUnits":{"rankineInterval":1},"symbols":{"degreeFInterval":{"text":"°F","placement":"Suffix","space":true},"deltaDegreeF":{"text":"delta°F","placement":"Suffix","space":true}}},"farads":{"unitSystem":"Metric","parentUnits":{"coulombs":1,"volts":-1},"symbols":{"farad":{"text":"F","placement":"Suffix","space":true}}},"feet":{"defaultSymbol":"feetAndInches","unitSystem":"Imperial","factor":12,"parentUnits":{"inches":1},"symbols":{"feetAndInches":{"inherits":"symbol"},"footSingleQuote":{"text":"\'","placement":"Suffix","space":false},"ft":{"text":"ft","placement":"Suffix","space":true},"lf":{"text":"LF","placement":"Suffix","space":true}}},"feetOfWater39.2DegreesFahrenheit":{"defaultSymbol":"feetOfWater","unitSystem":"Imperial","factor":2988.98,"parentUnits":{"pascals":1},"symbols":{"feetOfWater":{"text":"Feet","placement":"Suffix","space":true},"ftH2O":{"text":"ftH2O","placement":"Suffix","space":true},"ftOfWater":{"text":"FT","placement":"Suffix","space":true}}},"feetOfWater39.2DegreesFahrenheitPer100Feet":{"defaultSymbol":"feetOfWaterPer100ft","unitSystem":"Imperial","factor":0.01,"parentUnits":{"feetOfWater39.2DegreesFahrenheit":1,"feet":-1},"symbols":{"feetOfWaterPer100ft":{"text":"Feet/100ft","placement":"Suffix","space":true},"ftH2OPer100ft":{"text":"ftH2O/100ft","placement":"Suffix","space":true},"ftOfWaterPer100ft":{"text":"FT/100ft","placement":"Suffix","space":true}}},"feetPerKip":{"unitSystem":"Imperial","parentUnits":{"feet":1,"kips":-1},"symbols":{"ftPerKip":{"text":"ft/kip","placement":"Suffix","space":true}}},"feetPerKipFoot":{"unitSystem":"Imperial","parentUnits":{"feet":1,"kipFeet":-1},"symbols":{"ftPerKipDashFt":{"text":"ft/kip-ft","placement":"Suffix","space":true}}},"feetPerMinute":{"defaultSymbol":"fpm","unitSystem":"Imperial","parentUnits":{"feet":1,"minutes":-1},"symbols":{"fpm":{"text":"FPM","placement":"Suffix","space":true},"ftPerMin":{"text":"ft/min","placement":"Suffix","space":true}}},"feetPerSecond":{"defaultSymbol":"fps","unitSystem":"Imperial","parentUnits":{"feet":1,"seconds":-1},"symbols":{"fps":{"text":"FPS","placement":"Suffix","space":true},"ftPerS":{"text":"ft/s","placement":"Suffix","space":true}}},"feetPerSecondSquared":{"unitSystem":"Imperial","parentUnits":{"feetPerSecond":1,"seconds":-1},"symbols":{"ftPerSSup2":{"text":"ft/s²","placement":"Suffix","space":true}}},"feetToTheFourthPower":{"unitSystem":"Imperial","parentUnits":{"feet":4},"symbols":{"ftSup4":{"text":"ft⁴","placement":"Suffix","space":true}}},"feetToTheSixthPower":{"unitSystem":"Imperial","parentUnits":{"feet":6},"symbols":{"ftSup6":{"text":"ft⁶","placement":"Suffix","space":true}}},"fixed":{"unitSystem":"Metric","parentUnits":{"ratioTo1":1}},"footcandles":{"defaultSymbol":"fc","unitSystem":"Imperial","parentUnits":{"lumens":1,"squareFeet":-1},"symbols":{"fc":{"text":"fc","placement":"Suffix","space":true},"ftc":{"text":"Ftc","placement":"Suffix","space":true}}},"footlamberts":{"defaultSymbol":"fL","unitSystem":"Imperial","parentFactors":{"pi":-1},"parentUnits":{"candelas":1,"squareFeet":-1},"symbols":{"fL":{"text":"fL","placement":"Suffix","space":true},"flLowercase":{"text":"fl","placement":"Suffix","space":true},"ftL":{"text":"ftL","placement":"Suffix","space":true}}},"gammas":{"unitSystem":"Metric","parentFactors":{"nano":1},"parentUnits":{"teslas":1},"symbols":{"gamma":{"text":"gamma","placement":"Suffix","space":true}}},"gauss":{"unitSystem":"Metric","parentFactors":{"ten":-4},"parentUnits":{"teslas":1},"symbols":{"gs":{"text":"Gs","placement":"Suffix","space":true}}},"general":{"unitSystem":"Metric","parentUnits":{"ratioTo1":1}},"gigajoules":{"unitSystem":"Metric","parentFactors":{"giga":1},"parentUnits":{"joules":1}},"gradians":{"unitSystem":"Metric","factor":0.9,"parentUnits":{"degrees":1},"symbols":{"grad":{"text":"grad","placement":"Suffix","space":true}}},"grains":{"unitSystem":"Imperial","factor":64.79891,"parentUnits":{"milligrams":1},"symbols":{"gr":{"text":"gr","placement":"Suffix","space":true}}},"grainsPerHourSquareFootInchMercury":{"unitSystem":"Imperial","parentUnits":{"grains":1,"hours":-1,"squareFeet":-1,"inchesOfMercury32DegreesFahrenheit":-1},"symbols":{"grPerHFtSup2InHg":{"text":"gr/(h·ft²·inHg)","placement":"Suffix","space":true}}},"grams":{"unitSystem":"Metric","factor":0.001,"parentUnits":{"kilograms":1},"symbols":{"gram":{"text":"g","placement":"Suffix","space":true}}},"hectares":{"unitSystem":"Metric","parentUnits":{"squareHectometers":1},"symbols":{"hectare":{"text":"hectare","placement":"Suffix","space":true}}},"hectometers":{"unitSystem":"Metric","parentFactors":{"hecto":1},"parentUnits":{"meters":1},"symbols":{"hm":{"text":"hm","placement":"Suffix","space":true}}},"henries":{"unitSystem":"Metric","parentUnits":{"ohms":1,"seconds":1},"symbols":{"henry":{"text":"H","placement":"Suffix","space":true}}},"hertz":{"unitSystem":"Metric","parentUnits":{"cyclesPerSecond":1},"symbols":{"hz":{"text":"Hz","placement":"Suffix","space":true}}},"horsepower":{"unitSystem":"Imperial","factor":33000,"parentUnits":{"poundForceFeet":1,"minutes":-1},"symbols":{"hp":{"text":"hp","placement":"Suffix","space":true}}},"hourSquareFootDegreesFahrenheitPerBritishThermalUnit":{"unitSystem":"Imperial","parentUnits":{"hours":1,"squareFeet":1,"fahrenheitInterval":1,"britishThermalUnits":-1},"symbols":{"hFtSup2DegreeFPerBtu":{"text":"(h·ft²·°F)/BTU","placement":"Suffix","space":true}}},"hours":{"unitSystem":"Metric","factor":60,"parentUnits":{"minutes":1},"symbols":{"hour":{"text":"h","placement":"Suffix","space":true}}},"inches":{"defaultSymbol":"in","unitSystem":"Imperial","factor":2.54,"parentUnits":{"centimeters":1},"symbols":{"in":{"text":"in","placement":"Suffix","space":true},"inchDoubleQuote":{"text":"\\"","placement":"Suffix","space":false}}},"inchesOfMercury32DegreesFahrenheit":{"unitSystem":"Imperial","factor":3386.389,"parentUnits":{"pascals":1},"symbols":{"inHg":{"text":"inHg","placement":"Suffix","space":true}}},"inchesOfWater60DegreesFahrenheit":{"unitSystem":"Imperial","factor":248.84,"parentUnits":{"pascals":1},"symbols":{"inDashWg":{"text":"in-wg","placement":"Suffix","space":true}}},"inchesOfWater60DegreesFahrenheitPer100Feet":{"unitSystem":"Imperial","factor":0.01,"parentUnits":{"inchesOfWater60DegreesFahrenheit":1,"feet":-1},"symbols":{"inDashWgPer100ft":{"text":"in-wg/100ft","placement":"Suffix","space":true}}},"inchesPerSecond":{"unitSystem":"Imperial","parentUnits":{"inches":1,"seconds":-1},"symbols":{"inPerS":{"text":"in/s","placement":"Suffix","space":true}}},"inchesPerSecondSquared":{"unitSystem":"Imperial","parentUnits":{"inchesPerSecond":1,"seconds":-1},"symbols":{"inPerSSup2":{"text":"in/s²","placement":"Suffix","space":true}}},"inchesToTheFourthPower":{"unitSystem":"Imperial","parentUnits":{"inches":4},"symbols":{"inSup4":{"text":"in⁴","placement":"Suffix","space":true}}},"inchesToTheSixthPower":{"unitSystem":"Imperial","parentUnits":{"inches":6},"symbols":{"inSup6":{"text":"in⁶","placement":"Suffix","space":true}}},"inverseDegreesCelsius":{"unitSystem":"Metric","parentUnits":{"celsiusInterval":-1},"symbols":{"invDegreeC":{"text":"1/°C","placement":"Suffix","space":true}}},"inverseDegreesFahrenheit":{"unitSystem":"Imperial","parentUnits":{"fahrenheitInterval":-1},"symbols":{"invDegreeF":{"text":"1/°F","placement":"Suffix","space":true}}},"inverseKilonewtons":{"unitSystem":"Metric","parentUnits":{"kilonewtons":-1},"symbols":{"invKN":{"text":"1/kN","placement":"Suffix","space":true}}},"inverseKips":{"unitSystem":"Imperial","parentUnits":{"kips":-1},"symbols":{"invKip":{"text":"1/kip","placement":"Suffix","space":true}}},"joules":{"unitSystem":"Metric","parentUnits":{"newtonMeters":1},"symbols":{"joule":{"text":"J","placement":"Suffix","space":true}}},"joulesPerGram":{"unitSystem":"Metric","parentUnits":{"joules":1,"grams":-1},"symbols":{"jPerG":{"text":"J/g","placement":"Suffix","space":true}}},"joulesPerGramDegreeCelsius":{"unitSystem":"Metric","parentUnits":{"joulesPerGram":1,"celsiusInterval":-1},"symbols":{"jPerGDegreeC":{"text":"J/(g·°C)","placement":"Suffix","space":true}}},"joulesPerKelvin":{"unitSystem":"Metric","parentUnits":{"joules":1,"kelvinInterval":-1},"symbols":{"jPerK":{"text":"J/K","placement":"Suffix","space":true}}},"joulesPerKilogram":{"unitSystem":"Metric","parentUnits":{"joules":1,"kilograms":-1},"symbols":{"jPerKg":{"text":"J/kg","placement":"Suffix","space":true}}},"joulesPerKilogramDegreeCelsius":{"unitSystem":"Metric","parentUnits":{"joulesPerKilogram":1,"celsiusInterval":-1},"symbols":{"jPerKgDegreeC":{"text":"J/(kg·°C)","placement":"Suffix","space":true}}},"joulesPerSquareMeterKelvin":{"unitSystem":"Metric","parentUnits":{"joules":1,"squareMeters":-1,"kelvinInterval":-1},"symbols":{"jPerMSup2K":{"text":"J/(m²·K)","placement":"Suffix","space":true}}},"kelvin":{"unitSystem":"Metric","parentUnit":"kelvinInterval","symbols":{"kelvin":{"text":"K","placement":"Suffix","space":true}}},"kelvinInterval":{"defaultSymbol":"deltaK","unitSystem":"Metric","dimension":"temperature","symbols":{"deltaK":{"text":"deltaK","placement":"Suffix","space":true},"kelvinInterval":{"text":"K","placement":"Suffix","space":true}}},"kiloamperes":{"unitSystem":"Metric","parentFactors":{"kilo":1},"parentUnits":{"amperes":1},"symbols":{"kA":{"text":"kA","placement":"Suffix","space":true}}},"kilocalories":{"unitSystem":"Metric","parentFactors":{"kilo":1},"parentUnits":{"calories":1},"symbols":{"kcal":{"text":"kcal","placement":"Suffix","space":true}}},"kilocaloriesPerSecond":{"unitSystem":"Metric","parentUnits":{"kilocalories":1,"seconds":-1},"symbols":{"kcalPerS":{"text":"kcal/s","placement":"Suffix","space":true}}},"kilogramForceMeters":{"unitSystem":"Metric","parentUnits":{"kilogramsForce":1,"meters":1},"symbols":{"kgfDashM":{"text":"kgf-m","placement":"Suffix","space":true}}},"kilogramForceMetersPerMeter":{"unitSystem":"Metric","parentUnits":{"kilogramForceMeters":1,"meters":-1},"symbols":{"kgfDashMPerM":{"text":"kgf-m/m","placement":"Suffix","space":true}}},"kilogramKelvins":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"kelvinInterval":1},"symbols":{"kgK":{"text":"kg·K","placement":"Suffix","space":true}}},"kilograms":{"unitSystem":"Metric","dimension":"mass","symbols":{"kg":{"text":"kg","placement":"Suffix","space":true}}},"kilogramsForce":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"standardGravity":1},"symbols":{"kgf":{"text":"kgf","placement":"Suffix","space":true}}},"kilogramsForcePerMeter":{"unitSystem":"Metric","parentUnits":{"kilogramsForce":1,"meters":-1},"symbols":{"kgfPerM":{"text":"kgf/m","placement":"Suffix","space":true}}},"kilogramsForcePerSquareMeter":{"unitSystem":"Metric","parentUnits":{"kilogramsForce":1,"squareMeters":-1},"symbols":{"kgfPerMSup2":{"text":"kgf/m²","placement":"Suffix","space":true}}},"kilogramsPerCubicCentimeter":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"cubicCentimeters":-1}},"kilogramsPerCubicMeter":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"cubicMeters":-1},"symbols":{"kgPerMSup3":{"text":"kg/m³","placement":"Suffix","space":true}}},"kilogramsPerHour":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"hours":-1},"symbols":{"kgPerH":{"text":"kg/h","placement":"Suffix","space":true}}},"kilogramsPerKilogramKelvin":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"kilogramKelvins":-1},"symbols":{"kgPerKgK":{"text":"kg/(kg·K)","placement":"Suffix","space":true}}},"kilogramsPerMeter":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"meters":-1},"symbols":{"kgPerM":{"text":"kg/m","placement":"Suffix","space":true}}},"kilogramsPerMeterHour":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"meters":-1,"hours":-1},"symbols":{"kgPerMH":{"text":"kg/(m·h)","placement":"Suffix","space":true}}},"kilogramsPerMeterSecond":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"meters":-1,"seconds":-1},"symbols":{"kgPerMS":{"text":"kg/(m·s)","placement":"Suffix","space":true}}},"kilogramsPerMinute":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"minutes":-1},"symbols":{"kgPerMin":{"text":"kg/min","placement":"Suffix","space":true}}},"kilogramsPerSecond":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"seconds":-1},"symbols":{"kgPerS":{"text":"kg/s","placement":"Suffix","space":true}}},"kilogramsPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"squareMeters":-1},"symbols":{"kgPerMSup2":{"text":"kg/m²","placement":"Suffix","space":true}}},"kilojoules":{"unitSystem":"Metric","parentFactors":{"kilo":1},"parentUnits":{"joules":1},"symbols":{"kJ":{"text":"kJ","placement":"Suffix","space":true}}},"kilojoulesPerKelvin":{"unitSystem":"Metric","parentUnits":{"kilojoules":1,"kelvinInterval":-1},"symbols":{"kJPerK":{"text":"kJ/K","placement":"Suffix","space":true}}},"kilojoulesPerSquareMeterKelvin":{"unitSystem":"Metric","parentUnits":{"kilojoules":1,"squareMeters":-1,"kelvinInterval":-1},"symbols":{"kJPerMSup2K":{"text":"kJ/(m²·K)","placement":"Suffix","space":true}}},"kilometers":{"unitSystem":"Metric","parentFactors":{"kilo":1},"parentUnits":{"meters":1},"symbols":{"km":{"text":"km","placement":"Suffix","space":true}}},"kilometersPerHour":{"unitSystem":"Metric","parentUnits":{"kilometers":1,"hours":-1},"symbols":{"kmPerH":{"text":"km/h","placement":"Suffix","space":true}}},"kilometersPerSecond":{"unitSystem":"Metric","parentUnits":{"kilometers":1,"seconds":-1},"symbols":{"kmPerS":{"text":"km/s","placement":"Suffix","space":true}}},"kilometersPerSecondSquared":{"unitSystem":"Metric","parentUnits":{"kilometersPerSecond":1,"seconds":-1},"symbols":{"kmPerSSup2":{"text":"km/s²","placement":"Suffix","space":true}}},"kilonewtonMeters":{"unitSystem":"Metric","parentUnits":{"kilonewtons":1,"meters":1},"symbols":{"kNDashM":{"text":"kN-m","placement":"Suffix","space":true}}},"kilonewtonMetersPerDegree":{"unitSystem":"Metric","parentUnits":{"kilonewtonMeters":1,"degrees":-1},"symbols":{"kNDashMPerDegree":{"text":"kN-m/°","placement":"Suffix","space":true}}},"kilonewtonMetersPerDegreePerMeter":{"unitSystem":"Metric","parentUnits":{"kilonewtonMetersPerDegree":1,"meters":-1},"symbols":{"kNDashMPerDegreePerM":{"text":"kN-m/°/m","placement":"Suffix","space":true}}},"kilonewtonMetersPerMeter":{"unitSystem":"Metric","parentUnits":{"kilonewtonMeters":1,"meters":-1},"symbols":{"kNDashMPerM":{"text":"kN-m/m","placement":"Suffix","space":true}}},"kilonewtons":{"unitSystem":"Metric","parentFactors":{"kilo":1},"parentUnits":{"newtons":1},"symbols":{"kN":{"text":"kN","placement":"Suffix","space":true}}},"kilonewtonsPerCubicMeter":{"unitSystem":"Metric","parentUnits":{"kilonewtons":1,"cubicMeters":-1},"symbols":{"kNPerMSup3":{"text":"kN/m³","placement":"Suffix","space":true}}},"kilonewtonsPerMeter":{"unitSystem":"Metric","parentUnits":{"kilonewtons":1,"meters":-1},"symbols":{"kNPerM":{"text":"kN/m","placement":"Suffix","space":true}}},"kilonewtonsPerSquareCentimeter":{"unitSystem":"Metric","parentUnits":{"kilonewtons":1,"squareCentimeters":-1},"symbols":{"kNPerCmSup2":{"text":"kN/cm²","placement":"Suffix","space":true}}},"kilonewtonsPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"kilonewtons":1,"squareMeters":-1},"symbols":{"kNPerMSup2":{"text":"kN/m²","placement":"Suffix","space":true}}},"kilonewtonsPerSquareMillimeter":{"unitSystem":"Metric","parentUnits":{"kilonewtons":1,"squareMillimeters":-1},"symbols":{"kNPerMmSup2":{"text":"kN/mm²","placement":"Suffix","space":true}}},"kilopascals":{"unitSystem":"Metric","parentFactors":{"kilo":1},"parentUnits":{"pascals":1},"symbols":{"kPa":{"text":"kPa","placement":"Suffix","space":true}}},"kilovoltAmperes":{"unitSystem":"Metric","parentUnits":{"kilovolts":1,"amperes":1},"symbols":{"kVA":{"text":"kVA","placement":"Suffix","space":true}}},"kilovolts":{"unitSystem":"Metric","parentFactors":{"kilo":1},"parentUnits":{"volts":1},"symbols":{"kV":{"text":"kV","placement":"Suffix","space":true}}},"kilowattHours":{"unitSystem":"Metric","parentUnits":{"kilowatts":1,"hours":1},"symbols":{"kWh":{"text":"kWh","placement":"Suffix","space":true}}},"kilowattHoursPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"kilowattHours":1,"squareMeters":-1},"symbols":{"kWhPerMSup2":{"text":"kWh/m²","placement":"Suffix","space":true}}},"kilowatts":{"unitSystem":"Metric","parentFactors":{"kilo":1},"parentUnits":{"watts":1},"symbols":{"kW":{"text":"kW","placement":"Suffix","space":true}}},"kipFeet":{"unitSystem":"Imperial","parentUnits":{"kips":1,"feet":1},"symbols":{"kipDashFt":{"text":"kip-ft","placement":"Suffix","space":true}}},"kipFeetPerDegree":{"unitSystem":"Imperial","parentUnits":{"kipFeet":1,"degrees":-1},"symbols":{"kipDashFtPerDegree":{"text":"kip-ft/°","placement":"Suffix","space":true}}},"kipFeetPerDegreePerFoot":{"unitSystem":"Imperial","parentUnits":{"kipFeetPerDegree":1,"feet":-1},"symbols":{"kipDashFtPerDegreePerFt":{"text":"kip-ft/°/ft","placement":"Suffix","space":true}}},"kipFeetPerFoot":{"unitSystem":"Imperial","parentUnits":{"kipFeet":1,"feet":-1},"symbols":{"kipDashFtPerFt":{"text":"kip-ft/ft","placement":"Suffix","space":true}}},"kips":{"unitSystem":"Imperial","parentFactors":{"kilo":1},"parentUnits":{"poundsForce":1},"symbols":{"kip":{"text":"kip","placement":"Suffix","space":true}}},"kipsPerCubicFoot":{"unitSystem":"Imperial","parentUnits":{"kips":1,"cubicFeet":-1},"symbols":{"kipPerFtSup3":{"text":"kip/ft³","placement":"Suffix","space":true}}},"kipsPerCubicInch":{"unitSystem":"Imperial","parentUnits":{"kips":1,"cubicInches":-1},"symbols":{"kipPerInSup3":{"text":"kip/in³","placement":"Suffix","space":true}}},"kipsPerFoot":{"unitSystem":"Imperial","parentUnits":{"kips":1,"feet":-1},"symbols":{"kipPerFt":{"text":"kip/ft","placement":"Suffix","space":true}}},"kipsPerInch":{"unitSystem":"Imperial","parentUnits":{"kips":1,"inches":-1},"symbols":{"kipPerIn":{"text":"kip/in","placement":"Suffix","space":true}}},"kipsPerSquareFoot":{"defaultSymbol":"kipPerFtSup2","unitSystem":"Imperial","parentUnits":{"kips":1,"squareFeet":-1},"symbols":{"kipPerFtSup2":{"text":"kip/ft²","placement":"Suffix","space":true},"ksf":{"text":"ksf","placement":"Suffix","space":true}}},"kipsPerSquareInch":{"defaultSymbol":"kipPerInSup2","unitSystem":"Imperial","parentUnits":{"kips":1,"squareInches":-1},"symbols":{"kipPerInSup2":{"text":"kip/in²","placement":"Suffix","space":true},"ksi":{"text":"ksi","placement":"Suffix","space":true}}},"liters":{"unitSystem":"Metric","parentUnits":{"decimeters":3},"symbols":{"liter":{"text":"L","placement":"Suffix","space":true}}},"litersPerHour":{"unitSystem":"Metric","parentUnits":{"liters":1,"hours":-1},"symbols":{"lPerH":{"text":"L/h","placement":"Suffix","space":true}}},"litersPerMinute":{"defaultSymbol":"lPerMin","unitSystem":"Metric","parentUnits":{"liters":1,"minutes":-1},"symbols":{"lPerMin":{"text":"L/min","placement":"Suffix","space":true},"lpm":{"text":"LPM","placement":"Suffix","space":true}}},"litersPerSecond":{"defaultSymbol":"lPerS","unitSystem":"Metric","parentUnits":{"liters":1,"seconds":-1},"symbols":{"lPerS":{"text":"L/s","placement":"Suffix","space":true},"lps":{"text":"LPS","placement":"Suffix","space":true}}},"litersPerSecondCubicMeter":{"unitSystem":"Metric","parentUnits":{"litersPerSecond":1,"cubicMeters":-1},"symbols":{"lPerSMSup3":{"text":"L/(s·m³)","placement":"Suffix","space":true}}},"litersPerSecondKilowatt":{"unitSystem":"Metric","parentUnits":{"litersPerSecond":1,"kilowatts":-1},"symbols":{"lPerSKw":{"text":"L/(s·kW)","placement":"Suffix","space":true}}},"litersPerSecondSquareMeter":{"defaultSymbol":"lPerSMSup2","unitSystem":"Metric","parentUnits":{"litersPerSecond":1,"squareMeters":-1},"symbols":{"lPerSMSup2":{"text":"L/(s·m²)","placement":"Suffix","space":true},"lpsPerMSup2":{"text":"LPS/m²","placement":"Suffix","space":true}}},"lumens":{"unitSystem":"Metric","parentUnits":{"candelas":1,"steradians":1},"symbols":{"lm":{"text":"lm","placement":"Suffix","space":true}}},"lumensPerWatt":{"unitSystem":"Metric","parentUnits":{"lumens":1,"watts":-1},"symbols":{"lmPerW":{"text":"lm/W","placement":"Suffix","space":true}}},"lux":{"unitSystem":"Metric","parentUnits":{"lumens":1,"squareMeters":-1},"symbols":{"lx":{"text":"lx","placement":"Suffix","space":true}}},"maxwells":{"unitSystem":"Metric","parentFactors":{"ten":-8},"parentUnits":{"webers":1},"symbols":{"mx":{"text":"Mx","placement":"Suffix","space":true}}},"megajoules":{"unitSystem":"Metric","parentFactors":{"mega":1},"parentUnits":{"joules":1}},"megajoulesPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"megajoules":1,"squareMeters":-1}},"meganewtonMeters":{"unitSystem":"Metric","parentUnits":{"meganewtons":1,"meters":1},"symbols":{"mNDashM":{"text":"MN-m","placement":"Suffix","space":true}}},"meganewtonMetersPerMeter":{"unitSystem":"Metric","parentUnits":{"meganewtonMeters":1,"meters":-1},"symbols":{"mNDashMPerM":{"text":"MN-m/m","placement":"Suffix","space":true}}},"meganewtons":{"unitSystem":"Metric","parentFactors":{"mega":1},"parentUnits":{"newtons":1},"symbols":{"mN":{"text":"MN","placement":"Suffix","space":true}}},"meganewtonsPerMeter":{"unitSystem":"Metric","parentUnits":{"meganewtons":1,"meters":-1},"symbols":{"mNPerM":{"text":"MN/m","placement":"Suffix","space":true}}},"meganewtonsPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"meganewtons":1,"squareMeters":-1},"symbols":{"mNPerMSup2":{"text":"MN/m²","placement":"Suffix","space":true}}},"megapascals":{"unitSystem":"Metric","parentFactors":{"mega":1},"parentUnits":{"pascals":1},"symbols":{"mPa":{"text":"MPa","placement":"Suffix","space":true}}},"megawattHours":{"unitSystem":"Metric","parentUnits":{"megawatts":1,"hours":1},"symbols":{"mWh":{"text":"mWh","placement":"Suffix","space":true}}},"megawatts":{"unitSystem":"Metric","parentFactors":{"mega":1},"parentUnits":{"watts":1}},"meters":{"defaultSymbol":"meter","unitSystem":"Metric","dimension":"length","symbols":{"meter":{"text":"m","placement":"Suffix","space":true},"metersAndCentimeters":{"inherits":"symbol"}}},"metersOfWaterColumn":{"unitSystem":"Metric","parentUnits":{"meters":1,"standardGravity":1,"waterDensity4DegreesCelsius":1},"symbols":{"mH2O":{"text":"mH2O","placement":"Suffix","space":true}}},"metersOfWaterColumnPerMeter":{"unitSystem":"Metric","parentUnits":{"metersOfWaterColumn":1,"meters":-1},"symbols":{"mH2OPerM":{"text":"mH2O/m","placement":"Suffix","space":true}}},"metersPerKilonewton":{"unitSystem":"Metric","parentUnits":{"meters":1,"kilonewtons":-1},"symbols":{"mPerKN":{"text":"m/kN","placement":"Suffix","space":true}}},"metersPerKilonewtonMeter":{"unitSystem":"Metric","parentUnits":{"meters":1,"kilonewtonMeters":-1},"symbols":{"mPerKNDashM":{"text":"m/kN-m","placement":"Suffix","space":true}}},"metersPerSecond":{"unitSystem":"Metric","parentUnits":{"meters":1,"seconds":-1},"symbols":{"mPerS":{"text":"m/s","placement":"Suffix","space":true}}},"metersPerSecondSquared":{"unitSystem":"Metric","parentUnits":{"metersPerSecond":1,"seconds":-1},"symbols":{"mPerSSup2":{"text":"m/s²","placement":"Suffix","space":true}}},"metersToTheFourthPower":{"unitSystem":"Metric","parentUnits":{"meters":4},"symbols":{"mSup4":{"text":"m⁴","placement":"Suffix","space":true}}},"metersToTheSixthPower":{"unitSystem":"Metric","parentUnits":{"meters":6},"symbols":{"mSup6":{"text":"m⁶","placement":"Suffix","space":true}}},"mhos":{"unitSystem":"Metric","parentUnits":{"ohms":-1},"symbols":{"mho":{"text":"mho","placement":"Suffix","space":true}}},"microinches":{"unitSystem":"Imperial","parentFactors":{"micro":1},"parentUnits":{"inches":1},"symbols":{"uin":{"text":"µin","placement":"Suffix","space":true}}},"microinchesPerInchDegreeFahrenheit":{"unitSystem":"Imperial","parentFactors":{"micro":1},"parentUnits":{"inverseDegreesFahrenheit":1},"symbols":{"uinPerInDegreeF":{"text":"µin/(in·°F)","placement":"Suffix","space":true}}},"micrometersPerMeterDegreeCelsius":{"unitSystem":"Metric","parentFactors":{"micro":1},"parentUnits":{"inverseDegreesCelsius":1},"symbols":{"umPerMDegreeC":{"text":"µm/(m·°C)","placement":"Suffix","space":true}}},"microns":{"unitSystem":"Metric","parentFactors":{"micro":1},"parentUnits":{"meters":1},"symbols":{"micron":{"text":"micron","placement":"Suffix","space":true}}},"miles":{"unitSystem":"Imperial","factor":1760,"parentUnits":{"yards":1},"symbols":{"mi":{"text":"mi","placement":"Suffix","space":true}}},"milesPerHour":{"unitSystem":"Imperial","parentUnits":{"miles":1,"hours":-1},"symbols":{"mph":{"text":"mph","placement":"Suffix","space":true}}},"milesPerSecond":{"unitSystem":"Imperial","parentUnits":{"miles":1,"seconds":-1},"symbols":{"miPerS":{"text":"mi/s","placement":"Suffix","space":true}}},"milesPerSecondSquared":{"unitSystem":"Imperial","parentUnits":{"milesPerSecond":1,"seconds":-1},"symbols":{"miPerSSup2":{"text":"mi/s²","placement":"Suffix","space":true}}},"milliamperes":{"unitSystem":"Metric","parentFactors":{"milli":1},"parentUnits":{"amperes":1},"symbols":{"mA":{"text":"mA","placement":"Suffix","space":true}}},"milligrams":{"unitSystem":"Metric","parentFactors":{"milli":1},"parentUnits":{"grams":1},"symbols":{"mg":{"text":"mg","placement":"Suffix","space":true}}},"millimeters":{"unitSystem":"Metric","parentFactors":{"milli":1},"parentUnits":{"meters":1},"symbols":{"mm":{"text":"mm","placement":"Suffix","space":true}}},"millimetersOfMercury":{"unitSystem":"Metric","factor":133.3224,"parentUnits":{"pascals":1},"symbols":{"mmHg":{"text":"mmHg","placement":"Suffix","space":true}}},"millimetersOfWaterColumn":{"unitSystem":"Metric","parentFactors":{"milli":1},"parentUnits":{"metersOfWaterColumn":1},"symbols":{"mmH2O":{"text":"mmH2O","placement":"Suffix","space":true}}},"millimetersOfWaterColumnPerMeter":{"unitSystem":"Metric","parentUnits":{"millimetersOfWaterColumn":1,"meters":-1},"symbols":{"mmH2OPerM":{"text":"mmH2O/m","placement":"Suffix","space":true}}},"millimetersToTheFourthPower":{"unitSystem":"Metric","parentUnits":{"millimeters":4},"symbols":{"mmSup4":{"text":"mm⁴","placement":"Suffix","space":true}}},"millimetersToTheSixthPower":{"unitSystem":"Metric","parentUnits":{"millimeters":6},"symbols":{"mmSup6":{"text":"mm⁶","placement":"Suffix","space":true}}},"milliseconds":{"unitSystem":"Metric","parentFactors":{"milli":1},"parentUnits":{"seconds":1},"symbols":{"ms":{"text":"ms","placement":"Suffix","space":true}}},"millivolts":{"unitSystem":"Metric","parentFactors":{"milli":1},"parentUnits":{"volts":1},"symbols":{"mV":{"text":"mV","placement":"Suffix","space":true}}},"mils":{"unitSystem":"Imperial","parentFactors":{"milli":1},"parentUnits":{"inches":1},"symbols":{"mil":{"text":"mil","placement":"Suffix","space":true}}},"minutes":{"unitSystem":"Metric","factor":60,"parentUnits":{"seconds":1},"symbols":{"min":{"text":"min","placement":"Suffix","space":true}}},"nanograms":{"unitSystem":"Metric","parentFactors":{"nano":1},"parentUnits":{"grams":1},"symbols":{"ng":{"text":"ng","placement":"Suffix","space":true}}},"nanogramsPerPascalSecondSquareMeter":{"unitSystem":"Metric","parentUnits":{"nanograms":1,"seconds":-1,"squareMeters":-1,"pascals":-1},"symbols":{"ngPerPaSMSup2":{"text":"ng/(Pa·s·m²)","placement":"Suffix","space":true}}},"nanometers":{"unitSystem":"Metric","parentFactors":{"nano":1},"parentUnits":{"meters":1},"symbols":{"nm":{"text":"nm","placement":"Suffix","space":true}}},"nauticalMiles":{"unitSystem":"Imperial","factor":1852,"parentUnits":{"meters":1},"symbols":{"nauticalMile":{"text":"M","placement":"Suffix","space":true}}},"newtonMeters":{"unitSystem":"Metric","parentUnits":{"newtons":1,"meters":1},"symbols":{"nDashM":{"text":"N-m","placement":"Suffix","space":true}}},"newtonMetersPerMeter":{"unitSystem":"Metric","parentUnits":{"newtonMeters":1,"meters":-1},"symbols":{"nDashMPerM":{"text":"N-m/m","placement":"Suffix","space":true}}},"newtonSecondsPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"newtons":1,"seconds":1,"squareMeters":-1},"symbols":{"nSPerMSup2":{"text":"N·s/m²","placement":"Suffix","space":true}}},"newtons":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"metersPerSecondSquared":1},"symbols":{"newton":{"text":"N","placement":"Suffix","space":true}}},"newtonsPerMeter":{"unitSystem":"Metric","parentUnits":{"newtons":1,"meters":-1},"symbols":{"nPerM":{"text":"N/m","placement":"Suffix","space":true}}},"newtonsPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"newtons":1,"squareMeters":-1},"symbols":{"nPerMSup2":{"text":"N/m²","placement":"Suffix","space":true}}},"newtonsPerSquareMillimeter":{"unitSystem":"Metric","parentUnits":{"newtons":1,"squareMillimeters":-1},"symbols":{"nPerMmSup2":{"text":"N/mm²","placement":"Suffix","space":true}}},"oersteds":{"unitSystem":"Metric","factor":250,"parentFactors":{"pi":-1},"parentUnits":{"amperes":1,"meters":-1},"symbols":{"oe":{"text":"Oe","placement":"Suffix","space":true}}},"ohmMeters":{"unitSystem":"Metric","parentUnits":{"ohms":1,"meters":1},"symbols":{"ohmM":{"text":"ohm·m","placement":"Suffix","space":true}}},"ohms":{"defaultSymbol":"omega","unitSystem":"Metric","parentUnits":{"volts":1,"amperes":-1},"symbols":{"ohm":{"text":"ohm","placement":"Suffix","space":true},"omega":{"text":"Ω","placement":"Suffix","space":true}}},"ouncesForce":{"unitSystem":"Imperial","factor":0.0625,"parentUnits":{"poundsForce":1},"symbols":{"ozf":{"text":"ozf","placement":"Suffix","space":true}}},"ouncesMass":{"unitSystem":"Imperial","factor":0.0625,"parentUnits":{"poundsMass":1},"symbols":{"oz":{"text":"oz","placement":"Suffix","space":true}}},"pascalSeconds":{"unitSystem":"Metric","parentUnits":{"pascals":1,"seconds":1},"symbols":{"paDashS":{"text":"Pa-s","placement":"Suffix","space":true}}},"pascals":{"unitSystem":"Metric","parentUnits":{"newtonsPerSquareMeter":1},"symbols":{"pa":{"text":"Pa","placement":"Suffix","space":true}}},"pascalsPerMeter":{"unitSystem":"Metric","parentUnits":{"pascals":1,"meters":-1},"symbols":{"paPerM":{"text":"Pa/m","placement":"Suffix","space":true}}},"perMille":{"unitSystem":"Metric","parentFactors":{"milli":1},"parentUnits":{"ratioTo1":1},"symbols":{"perMille":{"text":"‰","placement":"Suffix","space":false}}},"percentage":{"unitSystem":"Metric","parentFactors":{"centi":1},"parentUnits":{"ratioTo1":1},"symbols":{"percent":{"text":"%","placement":"Suffix","space":false}}},"pi":{"unitSystem":"Imperial","parentFactors":{"pi":1},"parentUnits":{"radians":1},"symbols":{"pi":{"text":"π","placement":"Suffix","space":true}}},"poises":{"unitSystem":"Metric","parentUnits":{"grams":1,"centimeters":-1,"seconds":-1},"symbols":{"poise":{"text":"P","placement":"Suffix","space":true}}},"poundForceFeet":{"defaultSymbol":"lbForceDashFt","unitSystem":"Imperial","parentUnits":{"poundsForce":1,"feet":1},"symbols":{"lbForceDashFt":{"text":"lb-ft","placement":"Suffix","space":true},"lbfDashFt":{"text":"lbf-ft","placement":"Suffix","space":true}}},"poundForceFeetPerFoot":{"defaultSymbol":"lbForceDashFtPerFt","unitSystem":"Imperial","parentUnits":{"poundForceFeet":1,"feet":-1},"symbols":{"lbForceDashFtPerFt":{"text":"lb-ft/ft","placement":"Suffix","space":true},"lbfDashFtPerFt":{"text":"lbf-ft/ft","placement":"Suffix","space":true}}},"poundForceSecondsPerSquareFoot":{"unitSystem":"Imperial","parentUnits":{"poundsForce":1,"seconds":1,"squareFeet":-1},"symbols":{"lbForceSPerFtSup2":{"text":"lb·s/ft²","placement":"Suffix","space":true}}},"poundMassDegreesFahrenheit":{"unitSystem":"Imperial","parentUnits":{"poundsMass":1,"fahrenheitInterval":1},"symbols":{"lbMassDegreeF":{"text":"lb·°F","placement":"Suffix","space":true}}},"poundsForce":{"defaultSymbol":"lbForce","unitSystem":"Imperial","parentUnits":{"poundsMass":1,"standardGravity":1},"symbols":{"lbForce":{"text":"lb","placement":"Suffix","space":true},"lbf":{"text":"lbf","placement":"Suffix","space":true}}},"poundsForcePerCubicFoot":{"defaultSymbol":"lbForcePerFtSup3","unitSystem":"Imperial","parentUnits":{"poundsForce":1,"cubicFeet":-1},"symbols":{"lbForcePerFtSup3":{"text":"lb/ft³","placement":"Suffix","space":true},"lbfPerFtSup3":{"text":"lbf/ft³","placement":"Suffix","space":true}}},"poundsForcePerFoot":{"defaultSymbol":"lbForcePerFt","unitSystem":"Imperial","parentUnits":{"poundsForce":1,"feet":-1},"symbols":{"lbForcePerFt":{"text":"lb/ft","placement":"Suffix","space":true},"lbfPerFt":{"text":"lbf/ft","placement":"Suffix","space":true}}},"poundsForcePerSquareFoot":{"defaultSymbol":"lbForcePerFtSup2","unitSystem":"Imperial","parentUnits":{"poundsForce":1,"squareFeet":-1},"symbols":{"lbForcePerFtSup2":{"text":"lb/ft²","placement":"Suffix","space":true},"lbfPerFtSup2":{"text":"lbf/ft²","placement":"Suffix","space":true},"psf":{"text":"psf","placement":"Suffix","space":true}}},"poundsForcePerSquareInch":{"defaultSymbol":"lbForcePerInSup2","unitSystem":"Imperial","parentUnits":{"poundsForce":1,"squareInches":-1},"symbols":{"lbForcePerInSup2":{"text":"lb/in²","placement":"Suffix","space":true},"lbfPerInSup2":{"text":"lbf/in²","placement":"Suffix","space":true},"psi":{"text":"psi","placement":"Suffix","space":true},"psia":{"text":"psia","placement":"Suffix","space":true},"psig":{"text":"psig","placement":"Suffix","space":true}}},"poundsMass":{"defaultSymbol":"lbMass","unitSystem":"Imperial","factor":0.45359237,"parentUnits":{"kilograms":1},"symbols":{"lbMass":{"text":"lb","placement":"Suffix","space":true},"lbm":{"text":"lbm","placement":"Suffix","space":true}}},"poundsMassPerCubicFoot":{"defaultSymbol":"lbMassPerFtSup3","unitSystem":"Imperial","parentUnits":{"poundsMass":1,"cubicFeet":-1},"symbols":{"lbMassPerFtSup3":{"text":"lb/ft³","placement":"Suffix","space":true},"lbmPerFtSup3":{"text":"lbm/ft³","placement":"Suffix","space":true}}},"poundsMassPerCubicInch":{"defaultSymbol":"lbMassPerInSup3","unitSystem":"Imperial","parentUnits":{"poundsMass":1,"cubicInches":-1},"symbols":{"lbMassPerInSup3":{"text":"lb/in³","placement":"Suffix","space":true},"lbmPerInSup3":{"text":"lbm/in³","placement":"Suffix","space":true}}},"poundsMassPerFoot":{"defaultSymbol":"lbMassPerFt","unitSystem":"Imperial","parentUnits":{"poundsMass":1,"feet":-1},"symbols":{"lbMassPerFt":{"text":"lb/ft","placement":"Suffix","space":true},"lbmPerFt":{"text":"lbm/ft","placement":"Suffix","space":true}}},"poundsMassPerFootHour":{"defaultSymbol":"lbMassPerFtDashH","unitSystem":"Imperial","parentUnits":{"poundsMassPerFoot":1,"hours":-1},"symbols":{"lbMassPerFtDashH":{"text":"lb/ft-h","placement":"Suffix","space":true},"lbmPerFtDashH":{"text":"lbm/ft-h","placement":"Suffix","space":true}}},"poundsMassPerFootSecond":{"defaultSymbol":"lbMassPerFtDashS","unitSystem":"Imperial","parentUnits":{"poundsMassPerFoot":1,"seconds":-1},"symbols":{"lbMassPerFtDashS":{"text":"lb/ft-s","placement":"Suffix","space":true},"lbmPerFtDashS":{"text":"lbm/ft-s","placement":"Suffix","space":true}}},"poundsMassPerHour":{"unitSystem":"Imperial","parentUnits":{"poundsMass":1,"hours":-1},"symbols":{"lbMassPerH":{"text":"lb/h","placement":"Suffix","space":true}}},"poundsMassPerMinute":{"unitSystem":"Imperial","parentUnits":{"poundsMass":1,"minutes":-1},"symbols":{"lbMassPerMin":{"text":"lb/min","placement":"Suffix","space":true}}},"poundsMassPerPoundDegreeFahrenheit":{"unitSystem":"Imperial","parentUnits":{"poundsMass":1,"poundMassDegreesFahrenheit":-1},"symbols":{"lbMassPerLbDegreeF":{"text":"lb/(lb·°F)","placement":"Suffix","space":true}}},"poundsMassPerSecond":{"unitSystem":"Imperial","parentUnits":{"poundsMass":1,"seconds":-1},"symbols":{"lbMassPerS":{"text":"lb/s","placement":"Suffix","space":true}}},"poundsMassPerSquareFoot":{"unitSystem":"Imperial","parentUnits":{"poundsMass":1,"squareFeet":-1},"symbols":{"lbMassPerFtSup2":{"text":"lb/ft²","placement":"Suffix","space":true}}},"radians":{"unitSystem":"Metric","symbols":{"rad":{"text":"rad","placement":"Suffix","space":true}}},"radiansPerSecond":{"unitSystem":"Metric","parentUnits":{"radians":1,"seconds":-1},"symbols":{"radPerS":{"text":"rad/s","placement":"Suffix","space":true}}},"rankine":{"unitSystem":"Imperial","parentUnit":"rankineInterval","symbols":{"degreeR":{"text":"°R","placement":"Suffix","space":true}}},"rankineInterval":{"defaultSymbol":"degreeRInterval","unitSystem":"Imperial","parentFactors":{"nineFifths":-1},"parentUnits":{"kelvinInterval":1},"symbols":{"degreeRInterval":{"text":"°R","placement":"Suffix","space":true},"deltaDegreeR":{"text":"delta°R","placement":"Suffix","space":true}}},"ratioTo1":{"unitSystem":"Metric","symbols":{"colon1":{"text":":1","placement":"Suffix","space":false}}},"ratioTo10":{"unitSystem":"Metric","parentFactors":{"ten":-1},"parentUnits":{"ratioTo1":1},"symbols":{"colon10":{"text":":10","placement":"Suffix","space":false}}},"ratioTo12":{"unitSystem":"Imperial","parentFactors":{"twelve":-1},"parentUnits":{"ratioTo1":1},"symbols":{"colon12":{"text":":12","placement":"Suffix","space":false}}},"revolutionsPerMinute":{"unitSystem":"Imperial","parentUnits":{"turns":1,"minutes":-1},"symbols":{"rpm":{"text":"RPM","placement":"Suffix","space":true}}},"revolutionsPerSecond":{"unitSystem":"Metric","parentUnits":{"turns":1,"seconds":-1},"symbols":{"rps":{"text":"RPS","placement":"Suffix","space":true}}},"riseDividedBy1000Millimeters":{"unitSystem":"Metric","parentUnits":{"perMille":1}},"riseDividedBy10Feet":{"unitSystem":"Imperial","parentUnits":{"ratioTo10":1}},"riseDividedBy120Inches":{"unitSystem":"Imperial","parentFactors":{"ten":-1},"parentUnits":{"riseDividedBy12Inches":1}},"riseDividedBy12Inches":{"unitSystem":"Imperial","parentUnits":{"ratioTo12":1}},"riseDividedBy1Foot":{"unitSystem":"Imperial","parentUnits":{"ratioTo1":1}},"seconds":{"unitSystem":"Metric","dimension":"time","symbols":{"second":{"text":"s","placement":"Suffix","space":true}}},"siemens":{"unitSystem":"Metric","parentUnits":{"mhos":1},"symbols":{"siemens":{"text":"S","placement":"Suffix","space":true}}},"slugs":{"unitSystem":"Imperial","parentUnits":{"poundsForce":1,"seconds":2,"feet":-1},"symbols":{"slug":{"text":"slug","placement":"Suffix","space":true}}},"squareCentimeters":{"defaultSymbol":"cmSup2","unitSystem":"Metric","parentUnits":{"centimeters":2},"symbols":{"cmCaret2":{"text":"cm^2","placement":"Suffix","space":true},"cmSup2":{"text":"cm²","placement":"Suffix","space":true}}},"squareCentimetersPerMeter":{"unitSystem":"Metric","parentUnits":{"squareCentimeters":1,"meters":-1},"symbols":{"cmSup2PerM":{"text":"cm²/m","placement":"Suffix","space":true}}},"squareFeet":{"defaultSymbol":"ftSup2","unitSystem":"Imperial","parentUnits":{"feet":2},"symbols":{"ftCaret2":{"text":"ft^2","placement":"Suffix","space":true},"ftSup2":{"text":"ft²","placement":"Suffix","space":true},"sf":{"text":"SF","placement":"Suffix","space":true}}},"squareFeetPer1000BritishThermalUnitsPerHour":{"defaultSymbol":"ftSup2HPerKbtu","unitSystem":"Imperial","factor":0.001,"parentUnits":{"squareFeet":1,"britishThermalUnitsPerHour":-1},"symbols":{"ftSup2HPerKbtu":{"text":"ft²·h/kBtu","placement":"Suffix","space":true},"ftSup2PerMbh":{"text":"ft²/MBh","placement":"Suffix","space":true},"sfHPerKbtu":{"text":"SF·h/kBtu","placement":"Suffix","space":true},"sfPerMbh":{"text":"SF/MBh","placement":"Suffix","space":true}}},"squareFeetPerFoot":{"unitSystem":"Imperial","parentUnits":{"squareFeet":1,"feet":-1},"symbols":{"ftSup2PerFt":{"text":"ft²/ft","placement":"Suffix","space":true}}},"squareFeetPerKip":{"unitSystem":"Imperial","parentUnits":{"squareFeet":1,"kips":-1},"symbols":{"ftSup2PerKip":{"text":"ft²/kip","placement":"Suffix","space":true}}},"squareFeetPerKipFoot":{"unitSystem":"Imperial","parentUnits":{"squareFeet":1,"kipFeet":-1},"symbols":{"ftSup2PerKipDashFt":{"text":"ft²/kip-ft","placement":"Suffix","space":true}}},"squareFeetPerSecond":{"unitSystem":"Imperial","parentUnits":{"squareFeet":1,"seconds":-1},"symbols":{"ftSup2PerS":{"text":"ft²/s","placement":"Suffix","space":true}}},"squareFeetPerTonOfRefrigeration":{"defaultSymbol":"ftSup2PerTon","unitSystem":"Imperial","parentUnits":{"squareFeet":1,"tonsOfRefrigeration":-1},"symbols":{"ftSup2PerTon":{"text":"ft²/ton","placement":"Suffix","space":true},"sfPerTon":{"text":"SF/ton","placement":"Suffix","space":true}}},"squareHectometers":{"unitSystem":"Metric","parentUnits":{"hectometers":2},"symbols":{"hmSup2":{"text":"hm²","placement":"Suffix","space":true}}},"squareInches":{"defaultSymbol":"inSup2","unitSystem":"Imperial","parentUnits":{"inches":2},"symbols":{"inCaret2":{"text":"in^2","placement":"Suffix","space":true},"inSup2":{"text":"in²","placement":"Suffix","space":true}}},"squareInchesPerFoot":{"unitSystem":"Imperial","parentUnits":{"squareInches":1,"feet":-1},"symbols":{"inSup2PerFt":{"text":"in²/ft","placement":"Suffix","space":true}}},"squareMeterKelvinsPerWatt":{"unitSystem":"Metric","parentUnits":{"squareMeters":1,"kelvinInterval":1,"watts":-1},"symbols":{"mSup2KPerW":{"text":"(m²·K)/W","placement":"Suffix","space":true}}},"squareMeters":{"defaultSymbol":"mSup2","unitSystem":"Metric","parentUnits":{"meters":2},"symbols":{"mCaret2":{"text":"m^2","placement":"Suffix","space":true},"mSup2":{"text":"m²","placement":"Suffix","space":true}}},"squareMetersPerKilonewton":{"unitSystem":"Metric","parentUnits":{"squareMeters":1,"kilonewtons":-1},"symbols":{"mSup2PerKN":{"text":"m²/kN","placement":"Suffix","space":true}}},"squareMetersPerKilonewtonMeter":{"unitSystem":"Metric","parentUnits":{"squareMeters":1,"kilonewtonMeters":-1},"symbols":{"mSup2PerKNDashM":{"text":"m²/kN-m","placement":"Suffix","space":true}}},"squareMetersPerKilowatt":{"unitSystem":"Metric","parentUnits":{"squareMeters":1,"kilowatts":-1},"symbols":{"mSup2PerKw":{"text":"m²/kW","placement":"Suffix","space":true}}},"squareMetersPerMeter":{"unitSystem":"Metric","parentUnits":{"squareMeters":1,"meters":-1},"symbols":{"mSup2PerM":{"text":"m²/m","placement":"Suffix","space":true}}},"squareMetersPerSecond":{"unitSystem":"Metric","parentUnits":{"squareMeters":1,"seconds":-1},"symbols":{"mSup2PerS":{"text":"m²/s","placement":"Suffix","space":true}}},"squareMillimeters":{"defaultSymbol":"mmSup2","unitSystem":"Metric","parentUnits":{"millimeters":2},"symbols":{"mmCaret2":{"text":"mm^2","placement":"Suffix","space":true},"mmSup2":{"text":"mm²","placement":"Suffix","space":true}}},"squareMillimetersPerMeter":{"unitSystem":"Metric","parentUnits":{"squareMillimeters":1,"meters":-1},"symbols":{"mmSup2PerM":{"text":"mm²/m","placement":"Suffix","space":true}}},"squareMils":{"defaultSymbol":"milSup2","unitSystem":"Imperial","parentUnits":{"mils":2},"symbols":{"milCaret2":{"text":"mil^2","placement":"Suffix","space":true},"milSup2":{"text":"mil²","placement":"Suffix","space":true}}},"squareYards":{"unitSystem":"Imperial","parentUnits":{"yards":2},"symbols":{"ydSup2":{"text":"yd²","placement":"Suffix","space":true}}},"standardGravity":{"unitSystem":"Metric","factor":9.80665,"parentUnits":{"metersPerSecondSquared":1},"symbols":{"gravity":{"text":"𝘨","placement":"Suffix","space":true}}},"steradians":{"unitSystem":"Metric","symbols":{"sr":{"text":"sr","placement":"Suffix","space":true}}},"teslas":{"unitSystem":"Metric","parentUnits":{"webers":1,"meters":-2},"symbols":{"tesla":{"text":"T","placement":"Suffix","space":true}}},"therms":{"unitSystem":"Imperial","factor":100000,"parentUnits":{"britishThermalUnits":1},"symbols":{"therm":{"text":"therm","placement":"Suffix","space":true}}},"thousandBritishThermalUnits":{"unitSystem":"Imperial","parentFactors":{"kilo":1},"parentUnits":{"britishThermalUnits":1},"symbols":{"kBtu":{"text":"kBtu","placement":"Suffix","space":true}}},"thousandBritishThermalUnitsPerHour":{"unitSystem":"Imperial","factor":1000,"parentUnits":{"britishThermalUnitsPerHour":1},"symbols":{"mbh":{"text":"MBH","placement":"Suffix","space":true}}},"thousandBritishThermalUnitsPerSquareFoot":{"unitSystem":"Imperial","parentUnits":{"thousandBritishThermalUnits":1,"squareFeet":-1},"symbols":{"kBtuPerFtSup2":{"text":"kBtu/ft²","placement":"Suffix","space":true}}},"tonneForceMeters":{"unitSystem":"Metric","parentUnits":{"tonnesForce":1,"meters":1},"symbols":{"tfDashM":{"text":"Tf-m","placement":"Suffix","space":true}}},"tonneForceMetersPerMeter":{"unitSystem":"Metric","parentUnits":{"tonneForceMeters":1,"meters":-1},"symbols":{"tfDashMPerM":{"text":"Tf-m/m","placement":"Suffix","space":true}}},"tonnes":{"unitSystem":"Metric","factor":1000,"parentUnits":{"kilograms":1},"symbols":{"tonne":{"text":"t","placement":"Suffix","space":true}}},"tonnesForce":{"unitSystem":"Metric","parentUnits":{"tonnes":1,"standardGravity":1},"symbols":{"tf":{"text":"Tf","placement":"Suffix","space":true}}},"tonnesForcePerMeter":{"unitSystem":"Metric","parentUnits":{"tonnesForce":1,"meters":-1},"symbols":{"tfPerM":{"text":"Tf/m","placement":"Suffix","space":true}}},"tonnesForcePerSquareMeter":{"unitSystem":"Metric","parentUnits":{"tonnesForce":1,"squareMeters":-1},"symbols":{"tfPerMSup2":{"text":"Tf/m²","placement":"Suffix","space":true}}},"tonsOfRefrigeration":{"defaultSymbol":"ton","unitSystem":"Imperial","factor":12000,"parentUnits":{"britishThermalUnitsPerHour":1},"symbols":{"ton":{"text":"ton","placement":"Suffix","space":true},"tonOfRefrigeration":{"text":"ton of refrigeration","placement":"Suffix","space":true}}},"turns":{"unitSystem":"Metric","factor":2,"parentFactors":{"pi":1},"parentUnits":{"radians":1},"symbols":{"tr":{"text":"tr","placement":"Suffix","space":true}}},"usGallons":{"unitSystem":"Imperial","factor":231,"parentUnits":{"cubicInches":1},"symbols":{"gal":{"text":"gal","placement":"Suffix","space":true}}},"usGallonsPerHour":{"defaultSymbol":"galPerH","unitSystem":"Imperial","parentUnits":{"usGallons":1,"hours":-1},"symbols":{"galPerH":{"text":"gal/h","placement":"Suffix","space":true},"gph":{"text":"GPH","placement":"Suffix","space":true},"usgph":{"text":"usgph","placement":"Suffix","space":true}}},"usGallonsPerMinute":{"defaultSymbol":"galPerMin","unitSystem":"Imperial","parentUnits":{"usGallons":1,"minutes":-1},"symbols":{"galPerMin":{"text":"gal/min","placement":"Suffix","space":true},"gpm":{"text":"GPM","placement":"Suffix","space":true},"usgpm":{"text":"usgpm","placement":"Suffix","space":true}}},"usSurveyFeet":{"unitSystem":"Imperial","factor":1200,"parentFactors":{"threeThousandNineHundredThirtySeven":-1},"parentUnits":{"meters":1},"symbols":{"usft":{"text":"USft","placement":"Suffix","space":true}}},"usTonnesForce":{"defaultSymbol":"stf","unitSystem":"Imperial","parentUnits":{"usTonnesMass":1,"standardGravity":1},"symbols":{"stf":{"text":"STf","placement":"Suffix","space":true},"tonsf":{"text":"Tonsf","placement":"Suffix","space":true},"usTonnesForceSt":{"text":"ST","placement":"Suffix","space":true},"usTonnesForceT":{"text":"T","placement":"Suffix","space":true},"usTonnesForceTons":{"text":"Tons","placement":"Suffix","space":true}}},"usTonnesMass":{"defaultSymbol":"usTonnesMassSt","unitSystem":"Imperial","factor":2000,"parentUnits":{"poundsMass":1},"symbols":{"usTonnesMassSt":{"text":"ST","placement":"Suffix","space":true},"usTonnesMassT":{"text":"T","placement":"Suffix","space":true},"usTonnesMassTons":{"text":"Tons","placement":"Suffix","space":true}}},"voltAmperes":{"unitSystem":"Metric","parentUnits":{"volts":1,"amperes":1},"symbols":{"vA":{"text":"VA","placement":"Suffix","space":true}}},"voltAmperesPerSquareFoot":{"unitSystem":"Imperial","parentUnits":{"voltAmperes":1,"squareFeet":-1},"symbols":{"vAPerFtSup2":{"text":"VA/ft²","placement":"Suffix","space":true}}},"voltAmperesPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"voltAmperes":1,"squareMeters":-1},"symbols":{"vAPerMSup2":{"text":"VA/m²","placement":"Suffix","space":true}}},"volts":{"unitSystem":"Metric","parentUnits":{"watts":1,"amperes":-1},"symbols":{"volt":{"text":"V","placement":"Suffix","space":true}}},"waterDensity4DegreesCelsius":{"unitSystem":"Metric","parentUnits":{"kilograms":1,"liters":-1}},"watts":{"unitSystem":"Metric","parentUnits":{"joules":1,"seconds":-1},"symbols":{"watt":{"text":"W","placement":"Suffix","space":true}}},"wattsPerCubicFoot":{"unitSystem":"Imperial","parentUnits":{"watts":1,"cubicFeet":-1},"symbols":{"wPerFtSup3":{"text":"W/ft³","placement":"Suffix","space":true}}},"wattsPerCubicFootPerMinute":{"unitSystem":"Imperial","parentUnits":{"watts":1,"cubicFeetPerMinute":-1},"symbols":{"wMinPerFtSup3":{"text":"W·min/ft³","placement":"Suffix","space":true}}},"wattsPerCubicMeter":{"unitSystem":"Metric","parentUnits":{"watts":1,"cubicMeters":-1},"symbols":{"wPerMSup3":{"text":"W/m³","placement":"Suffix","space":true}}},"wattsPerCubicMeterPerSecond":{"unitSystem":"Metric","parentUnits":{"watts":1,"cubicMetersPerSecond":-1},"symbols":{"wSPerMSup3":{"text":"W·s/m³","placement":"Suffix","space":true}}},"wattsPerFoot":{"unitSystem":"Imperial","parentUnits":{"watts":1,"feet":-1},"symbols":{"wPerFt":{"text":"W/ft","placement":"Suffix","space":true}}},"wattsPerMeter":{"unitSystem":"Metric","parentUnits":{"watts":1,"meters":-1},"symbols":{"wPerM":{"text":"W/m","placement":"Suffix","space":true}}},"wattsPerMeterKelvin":{"unitSystem":"Metric","parentUnits":{"watts":1,"meters":-1,"kelvinInterval":-1},"symbols":{"wPerMK":{"text":"W/(m·K)","placement":"Suffix","space":true}}},"wattsPerSquareFoot":{"unitSystem":"Imperial","parentUnits":{"watts":1,"squareFeet":-1},"symbols":{"wPerFtSup2":{"text":"W/ft²","placement":"Suffix","space":true}}},"wattsPerSquareMeter":{"unitSystem":"Metric","parentUnits":{"watts":1,"squareMeters":-1},"symbols":{"wPerMSup2":{"text":"W/m²","placement":"Suffix","space":true}}},"wattsPerSquareMeterKelvin":{"unitSystem":"Metric","parentUnits":{"wattsPerSquareMeter":1,"kelvinInterval":-1},"symbols":{"wPerMSup2K":{"text":"W/(m²·K)","placement":"Suffix","space":true}}},"webers":{"unitSystem":"Metric","parentUnits":{"volts":1,"seconds":1},"symbols":{"wb":{"text":"Wb","placement":"Suffix","space":true}}},"yards":{"unitSystem":"Imperial","factor":3,"parentUnits":{"feet":1},"symbols":{"yd":{"text":"yd","placement":"Suffix","space":true}}},"feetFractionalInches":{"defaultSymbol":"feetAndInches","unitSystem":"Imperial","factor":12,"parentUnits":{"inches":1},"symbols":{"feetAndInches":{"inherits":"symbol"},"footSingleQuote":{"text":"\'","placement":"Suffix","space":false},"ft":{"text":"ft","placement":"Suffix","space":true},"lf":{"text":"LF","placement":"Suffix","space":true}}},"fractionalInches":{"defaultSymbol":"in","unitSystem":"Imperial","factor":2.54,"parentUnits":{"centimeters":1},"symbols":{"in":{"text":"in","placement":"Suffix","space":true},"inchDoubleQuote":{"text":"\\"","placement":"Suffix","space":false}}},"metersCentimeters":{"defaultSymbol":"meter","unitSystem":"Metric","dimension":"length","symbols":{"meter":{"text":"m","placement":"Suffix","space":true},"metersAndCentimeters":{"inherits":"symbol"}}},"degreesMinutes":{"defaultSymbol":"degree","unitSystem":"Metric","parentFactors":{"threeHundredSixty":-1},"parentUnits":{"turns":1},"symbols":{"degree":{"text":"°","placement":"Suffix","space":false},"degreesMinutesSeconds":{"inherits":"symbol"}}},"slopeDegrees":{"defaultSymbol":"slopeDegree","unitSystem":"Metric","parentFactors":{"threeHundredSixty":-1},"parentUnits":{"turns":1},"symbols":{"slopeDegree":{"text":"°","placement":"Suffix","space":false}}},"stationingFeet":{"defaultSymbol":"feetAndInches","unitSystem":"Imperial","factor":12,"parentUnits":{"inches":1},"symbols":{"feetAndInches":{"inherits":"symbol"},"footSingleQuote":{"text":"\'","placement":"Suffix","space":false},"ft":{"text":"ft","placement":"Suffix","space":true},"lf":{"text":"LF","placement":"Suffix","space":true}}},"stationingMeters":{"defaultSymbol":"meter","unitSystem":"Metric","dimension":"length","symbols":{"meter":{"text":"m","placement":"Suffix","space":true},"metersAndCentimeters":{"inherits":"symbol"}}},"stationingSurveyFeet":{"unitSystem":"Imperial","factor":1200,"parentFactors":{"threeThousandNineHundredThirtySeven":-1},"parentUnits":{"meters":1},"symbols":{"usft":{"text":"USft","placement":"Suffix","space":true}}},"dateTime":{"symbols":{"date":{"text":"Date"},"dateTime":{"text":"ISODate","description":"default"},"dateAndTime":{"text":"Date, Time"}}}},"quantity":{"acceleration":{"units":["metersPerSecondSquared","kilometersPerSecondSquared","inchesPerSecondSquared","feetPerSecondSquared","milesPerSecondSquared","standardGravity"]},"angle":{"units":["degrees","radians","gradians","turns"]},"angularLineSpringCoefficient":{"units":["kipFeetPerDegreePerFoot","kilonewtonMetersPerDegreePerMeter"]},"angularPointSpringCoefficient":{"units":["kipFeetPerDegree","kilonewtonMetersPerDegree"]},"angularSpeed":{"units":["radiansPerSecond","revolutionsPerMinute"]},"area":{"units":["squareFeet","squareInches","squareMeters","squareCentimeters","squareHectometers","squareMillimeters","acres","hectares","squareYards","circularMils","squareMils"]},"areaPerLength":{"units":["squareFeetPerFoot","squareCentimetersPerMeter","squareMillimetersPerMeter","squareInchesPerFoot","squareMetersPerMeter"]},"areaPerPower":{"units":["squareFeetPerTonOfRefrigeration","squareMetersPerKilowatt","squareFeetPer1000BritishThermalUnitsPerHour"]},"areaPerTorque":{"units":["squareFeetPerKipFoot","squareMetersPerKilonewtonMeter"]},"colorTemperature":{"units":["kelvin"]},"costPerArea":{"units":["currencyPerSquareFoot","currencyPerSquareMeter"]},"currency":{"units":["currency"]},"density":{"units":["kilogramsPerCubicMeter","poundsMassPerCubicInch","poundsMassPerCubicFoot"]},"diffusivity":{"units":["squareFeetPerSecond","squareMetersPerSecond"]},"dynamicViscosity":{"units":["centipoises","kilogramsPerMeterHour","kilogramsPerMeterSecond","newtonSecondsPerSquareMeter","pascalSeconds","poises","poundForceSecondsPerSquareFoot","poundsMassPerFootHour","poundsMassPerFootSecond"]},"electricCapacitance":{"units":["farads"]},"electricCharge":{"units":["coulombs","ampereHours","ampereSeconds"]},"electricConductance":{"units":["mhos","siemens"]},"electricCurrent":{"units":["amperes","kiloamperes","milliamperes"]},"electricInductance":{"units":["henries"]},"electricPotential":{"units":["volts","kilovolts","millivolts"]},"electricResistance":{"units":["ohms"]},"electricResistivity":{"units":["ohmMeters"]},"energy":{"units":["joules","newtonMeters","kilogramForceMeters","poundForceFeet","kilojoules","britishThermalUnits","calories","kilocalories","kilowattHours","therms","ergs"]},"flow":{"units":["cubicFeetPerMinute","cubicFeetPerHour","cubicMetersPerSecond","cubicMetersPerHour","litersPerHour","litersPerMinute","litersPerSecond","usGallonsPerMinute","usGallonsPerHour"]},"flowPerArea":{"units":["cubicFeetPerMinuteSquareFoot","litersPerSecondSquareMeter"]},"flowPerPower":{"units":["cubicFeetPerMinutePerBritishThermalUnitPerHour","cubicFeetPerMinuteTonOfRefrigeration","cubicMetersPerWattSecond","litersPerSecondKilowatt","squareFeetPerKip","squareMetersPerKilonewton"]},"flowPerVolume":{"units":["cubicFeetPerMinuteCubicFoot","litersPerSecondCubicMeter"]},"force":{"units":["newtons","dekanewtons","kilonewtons","meganewtons","kips","kilogramsForce","tonnesForce","usTonnesForce","poundsForce","dynes","ouncesForce"]},"forceDensity":{"units":["kilonewtonsPerCubicMeter","poundsForcePerCubicFoot","kipsPerCubicInch","kipsPerCubicFoot"]},"forcePerLength":{"units":["newtonsPerMeter","dekanewtonsPerMeter","kilonewtonsPerMeter","meganewtonsPerMeter","kipsPerFoot","kilogramsForcePerMeter","tonnesForcePerMeter","poundsForcePerFoot","kipsPerInch"]},"frequency":{"units":["hertz","cyclesPerSecond"]},"friction":{"units":["pascalsPerMeter","feetOfWater39.2DegreesFahrenheitPer100Feet","inchesOfWater60DegreesFahrenheitPer100Feet"]},"heatCapacity":{"units":["britishThermalUnitsPerDegreeFahrenheit","joulesPerKelvin","kilojoulesPerKelvin"]},"heatTransferCoefficient":{"units":["wattsPerSquareMeterKelvin","britishThermalUnitsPerHourSquareFootDegreeFahrenheit"]},"illuminance":{"units":["lux","footcandles"]},"length":{"units":["centimeters","decimeters","feet","hectometers","inches","kilometers","meters","microinches","microns","miles","millimeters","mils","nanometers","nauticalMiles","usSurveyFeet","yards"]},"lengthPerTorque":{"units":["metersPerKilonewtonMeter","feetPerKipFoot"]},"lightingEfficacy":{"units":["lumensPerWatt"]},"luminance":{"units":["footlamberts","candelasPerSquareFoot","candelasPerSquareMeter"]},"luminousFlux":{"units":["lumens"]},"luminousIntensity":{"units":["candelas"]},"magneticFieldStrength":{"units":["oersteds"]},"magneticFlux":{"units":["webers","maxwells"]},"magneticFluxDensity":{"units":["teslas","gauss","gammas"]},"mass":{"units":["kilograms","tonnes","poundsMass","grams","milligrams","nanograms","grains","usTonnesMass","slugs","ouncesMass"]},"massPerArea":{"units":["kilogramsPerSquareMeter","poundsMassPerSquareFoot"]},"massPerLength":{"units":["kilogramsPerMeter","poundsMassPerFoot"]},"massPerTime":{"units":["poundsMassPerHour","poundsMassPerMinute","poundsMassPerSecond","kilogramsPerHour","kilogramsPerMinute","kilogramsPerSecond"]},"number":{"units":["general","fixed","percentage"]},"permeability":{"units":["nanogramsPerPascalSecondSquareMeter","grainsPerHourSquareFootInchMercury"]},"power":{"units":["watts","kilowatts","britishThermalUnitsPerSecond","britishThermalUnitsPerHour","caloriesPerSecond","kilocaloriesPerSecond","voltAmperes","kilovoltAmperes","horsepower","thousandBritishThermalUnitsPerHour","tonsOfRefrigeration"]},"powerDensity":{"units":["wattsPerCubicFoot","wattsPerCubicMeter","britishThermalUnitsPerHourCubicFoot"]},"powerPerArea":{"units":["wattsPerSquareFoot","wattsPerSquareMeter","britishThermalUnitsPerHourSquareFoot"]},"powerPerFlow":{"units":["wattsPerCubicFootPerMinute","wattsPerCubicMeterPerSecond"]},"powerPerLength":{"units":["wattsPerFoot","wattsPerMeter"]},"pressure":{"units":["pascals","kilopascals","megapascals","poundsForcePerSquareInch","inchesOfMercury32DegreesFahrenheit","millimetersOfMercury","atmospheres","bars","feetOfWater39.2DegreesFahrenheit","inchesOfWater60DegreesFahrenheit"]},"ratio":{"units":["fixed","percentage","perMille","ratioTo1","ratioTo10","ratioTo12","1ToRatio"]},"secondMomentOfArea":{"units":["feetToTheFourthPower","inchesToTheFourthPower","millimetersToTheFourthPower","centimetersToTheFourthPower","metersToTheFourthPower"]},"slope":{"units":["percentage","ratioTo1","ratioTo10","ratioTo12","riseDividedBy12Inches","riseDividedBy1Foot","riseDividedBy1000Millimeters","riseDividedBy120Inches","1ToRatio","riseDividedBy10Feet","perMille"]},"solidAngle":{"units":["steradians"]},"specificEnergy":{"units":["joulesPerGram","joulesPerKilogram","britishThermalUnitsPerPound"]},"specificHeatCapacity":{"units":["joulesPerGramDegreeCelsius","britishThermalUnitsPerPoundDegreeFahrenheit","joulesPerKilogramDegreeCelsius"]},"stress":{"units":["pascals","kilopascals","megapascals","poundsForcePerSquareInch","bars","newtonsPerSquareMeter","dekanewtonsPerSquareMeter","kilonewtonsPerSquareMeter","meganewtonsPerSquareMeter","kipsPerSquareFoot","kilogramsForcePerSquareMeter","tonnesForcePerSquareMeter","poundsForcePerSquareFoot","kipsPerSquareInch","kilonewtonsPerSquareCentimeter","newtonsPerSquareMillimeter","kilonewtonsPerSquareMillimeter"]},"temperature":{"units":["fahrenheit","celsius","kelvin","rankine"]},"temperatureInterval":{"units":["fahrenheitInterval","celsiusInterval","kelvinInterval","rankineInterval"]},"thermalConductivity":{"units":["wattsPerMeterKelvin","britishThermalUnitsPerHourFootDegreeFahrenheit"]},"thermalExpansionCoefficient":{"units":["inverseDegreesFahrenheit","inverseDegreesCelsius","micrometersPerMeterDegreeCelsius","microinchesPerInchDegreeFahrenheit"]},"thermalInsulance":{"units":["hourSquareFootDegreesFahrenheitPerBritishThermalUnit","squareMeterKelvinsPerWatt"]},"time":{"units":["milliseconds","seconds","minutes","hours"]},"torque":{"units":["newtonMeters","dekanewtonMeters","kilonewtonMeters","meganewtonMeters","kipFeet","kilogramForceMeters","tonneForceMeters","poundForceFeet"]},"torquePerLength":{"units":["newtonMetersPerMeter","dekanewtonMetersPerMeter","kilonewtonMetersPerMeter","meganewtonMetersPerMeter","kipFeetPerFoot","kilogramForceMetersPerMeter","tonneForceMetersPerMeter","poundForceFeetPerFoot"]},"velocity":{"units":["feetPerMinute","centimetersPerMinute","inchesPerSecond","metersPerSecond","feetPerSecond","kilometersPerSecond","milesPerSecond","kilometersPerHour","milesPerHour"]},"volume":{"units":["cubicYards","cubicFeet","cubicInches","cubicMeters","cubicCentimeters","cubicMillimeters","liters","usGallons"]},"volumePerForce":{"units":["cubicFeetPerKip","cubicMetersPerKilonewton"]},"warpingCoefficient":{"units":["feetToTheSixthPower","inchesToTheSixthPower","millimetersToTheSixthPower","centimetersToTheSixthPower","metersToTheSixthPower"]}}}')}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={id:e,loaded:!1,exports:{}};return i[e].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(i,n){if(1&n&&(i=this(i)),8&n)return i;if("object"==typeof i&&i){if(4&n&&i.__esModule)return i;if(16&n&&"function"==typeof i.then)return i}var o=Object.create(null);r.r(o);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&i;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>i[e]));return s.default=()=>i,r.d(o,s),o},r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var o=r(72980);LMV=o})(); +//# sourceMappingURL=viewer3D.min.js.map \ No newline at end of file diff --git a/src/hooks/baja/useSystemStatusByBaja.js b/src/hooks/baja/useSystemStatusByBaja.js index 79c08c0..f8432b3 100644 --- a/src/hooks/baja/useSystemStatusByBaja.js +++ b/src/hooks/baja/useSystemStatusByBaja.js @@ -90,7 +90,7 @@ export default function useSystemStatusByBaja(updateHeatBarIsShow) { }); subscribeData.value = sub_data; updateHeatMapData(sub_data); - updateSubscribeDataFromBaja(sub_data); + // updateSubscribeDataFromBaja(sub_data); }); const visibleDbid = computed(() => { @@ -106,10 +106,9 @@ export default function useSystemStatusByBaja(updateHeatBarIsShow) { // return visible; return [ 26, 32, 38, 43, 48, 53, 58, 63, 70, 76, 879, 1068, 1011, 1065, 855, 1109, - 867, - 963,1044,966,1139,936,1136,957,1133,954,610,1130,951,1041,939, - 1145,987,999,1148,1002,1151,981, - 813,1088,825,1091,804 + 867, 963, 1044, 966, 1139, 936, 1136, 957, 1133, 954, 610, 1130, 951, + 1041, 939, 1145, 987, 999, 1148, 1002, 1151, 981, 813, 1088, 825, 1091, + 804, ]; }); diff --git a/src/views/dashboard/components/DashboardAlert.vue b/src/views/dashboard/components/DashboardAlert.vue index a82d043..b0b5d42 100644 --- a/src/views/dashboard/components/DashboardAlert.vue +++ b/src/views/dashboard/components/DashboardAlert.vue @@ -59,17 +59,12 @@ const alarms = ref([ - - - 無資料 + + + - - {{ alarm.timestamp_date }} - {{ alarm.timestamp_time }} - {{ alarm.msg }} - {{ alarm.status }} - +